Skip to main content

附录

版本及对应 Docker 镜像

版本号镜像发布时间
v2.1.2- X86_64 架构:
docker-reg.infra.fabarta.com:5000/fabarta-ga/engine-arcgraph-tp:v2.1.2-20240925-x86_64
- ARM 架构:
docker-reg.infra.fabarta.com:5000/fabarta-ga/engine-arcgraph-tp:v2.1.2-20240925-arm64
2024 年 9 月 25 日
v2.1.1- X86_64 架构:
docker-reg.infra.fabarta.com:5000/fabarta-ga/engine-arcgraph-tp:v2.1.1-20240428-x86_64
- ARM 架构:
docker-reg.infra.fabarta.com:5000/fabarta-ga/engine-arcgraph-tp:v2.1.1-20240428-arm64
2024 年 5 月 1 日
v2.1.0- X86_64 架构:
docker-reg.infra.fabarta.com:5000/fabarta-ga/engine-arcgraph-tp:v2.1.0-20240301-x86_64
- ARM 架构:
docker-reg.infra.fabarta.com:5000/fabarta-ga/engine-arcgraph-tp:v2.1.0-20240301-arm64
2024 年 3 月 1 日

v2.1.2

重大功能与架构升级

  • 全新支持 Online DDLDDL 与 Online DDL
  • 增强和优化执行引擎,支持 Arrow 格式的计算结果(列式数据集)
  • 兼容部分 GQL 查询语句
  • 支持 TiKV 作为存储引擎

图数据库(语法、命令、函数、存储、事务等)

  • 新增 ALTER ADD/MODIFY/DROP COLUMN 等属性变更命令,详情请参见 修改点类型修改边类型 等章节
  • 新增 CREATE VERTEX/EDGE INDEX 命令,详情请参见 创建索引 章节
  • 新增 Data/Time/DateTime/Byte/BigInt 数据类型的索引
  • 新增查询语句中的类型推导,根据查询上下文优化查询计划
  • 新增查询中使用边的顺序扫描
  • 新增图缓存中邻接边的动态结构,根据邻接边数量动态选择向量或者集合
  • 新增列存结构的 Dataset
  • 新增算子传递和处理列存结构的 Dataset
  • 新增 SHOW GRAPHS STATUS/STATS/CACHE 等命令,详情请参见 SHOW GRAPHS 章节

图计算

  • 新增从图数据库读取 Arrow 格式的计算结果
  • 新增从图数据库中物理导出数据进行算法运算
  • 整合 GLT(graphlearn-for-torch)
  • 新增 Node2Vec 算法

客户端及周边工具

  • ArcPump: 支持 Geo 类型导入导出
  • Java Driver:支持以下三种新数据类型
    • BigDecimalValue
    • DateValue/TimeValue/DateTimeValue/TimeStampValue
    • IntegerValue/LongValue/UnsignedIntegerValue/UnsignedLongValue

性能优化

  • 利用 rocksdb checkpoint 功能,加速数据的备份和恢复
  • Disable rocksdb wal,加速数据的持久化
  • 优化执行计划输出的计算方法,减少中间计算结果中的冗余

兼容性说明

  • 存储层添加 namespace id 字段,不支持已有集群直接升级
  • 1 跳的查询结果中边的返回结果改变为 Array<EdgeKey>, 修改前为 EdgeKey,需要调整 Client 代码
  • SHOW GRAPH EDGE STATS 添加 FULL 关键字,支持以关联点类型维度(from_vertexto_vertex)展示边的统计详情
  • SHOW tso 输出结果展示时区 TimeZone 信息
  • LOAD GRAPHS 时,检查目标图是否可以被加载;另外可以通过 FORCE 关键字,强制加载目标图到 Memory Engine

修复Bug

修复若干 bug

遗留问题

暂无

v2.1.1

ArcGraph OLTP (语法、命令、函数、存储、事务等)

  • 新增 ALTER {VERTEX|EDGE} .. ADD 语法,支持为点类型/边类型增加属性,详情请见 增加属性 章节。
  • 新增 SHOW CREATE 语句,用于查看图、点类型或边类型的创建语句,方便导出 Schema,详情请见 SHOW CREATE 章节。
  • 更新 DESC GRAPH/VERTEX/EDGE/INDEX 语法,通过在查询语句中添加或省略 ALLFULL 字段,灵活选择查询图/点类型/边类型/索引的基本信息或详细信息。
  • 更新 SHOW GRAPHS/VERTEXES/EDGES/INDEXES/CONFIG/USERS 语法,通过在查询语句中添加或省略 FULL 字段,灵活选择查询图/点类型/边类型/索引等的列表或详细信息。
  • 新增 BigDecimal 数据类型,详情请见 数据类型 章节。
  • 更新查询图 LEADER 信息语法,详情请见 查询图 LEADER 信息 章节。
  • 新增 SHOW MALLOC STATS 语法,用于查看系统目前收集的内存使用统计信息,详情请见 SHOW MALLOC STATS 章节。
  • 新增默认角色,创建用户时系统会自动为新用户生成一个与之对应的默认角色(命名为 DEFAULT_ROLE<USER_NAME>,初始无权限),并自动绑定至该用户,详情请见 角色 章节。
  • 新增修改超级用户密码功能,更新修改普通用户密码,详情请见 修改用户密码 章节。
  • 更新权限管理,删除了 MATCHMERGEWRITE 权限,以简化权限体系并提高安全性,详情请见 权限 章节。
  • 新增 is_trail_path() 函数,详情请见 is_trail_path() 章节。
  • 更新命名规则,详细描述普通对象和系统对象的命名规则,详情请见 命名规则 章节。
  • 新增 ARRAY 等保留关键字,详情请见 保留关键字 章节。
  • 优化事务写日志方式,保证同一个事务中的日志不再跨 raft proposal,减少系统异常场景。
  • 新增 ALTER SYSTEM 控制命令
    • ALTER SYSTEM LOAD GRAPH GRAPH_NAME 强制加载该图数据到内存,详情请参见 加载图到内存 章节。
    • ALTER SYSTEM UNLOAD GRAPH GRAPH_NAME 从内存中清理该图数据,详情请参见 清除内存中的图 章节。
    • ALTER SYSTEM CHECKPOINT 手动触发数据落盘,详情请参见 ALTER SYSTEM CHECKPOINT 章节。

ArcGraph OLAP(图计算)

  • 增强图模式匹配功能 - 支持通过 cypher/gremlin 定义图模式,支持点边属性过滤。
  • 新增支持基于单份内存数据的分布式图计算任务的并行执行,CPU 利用率提升至 95% 左右,集群吞吐可翻数倍。
  • 完善 Java 自定义算法支持,支持 Java 自定义算法的 SDK 与 RESTful API 调用。
  • 新增图计算任务内存使用量评估功能。
  • 新增支持基于外存的图计算缓存
    • 支持全图缓存至磁盘,并支持对磁盘缓存按图或点边类型加载至内存。
    • 支持内存中的多图快速切换。
    • 缓存文件载图性能比 csv 等原始数据文件提升50%以上。
  • 新增接口支持算法列表获取和当前任务 id 获取等。
  • 优化内存使用,unload graph 后的内存资源占用降低 60% 左右。
  • 优化 Louvain 算法,内存占用降低约 90%。
  • 新增支持图计算结果的本地流式输出,降低结果处理的内存消耗。
  • 增强和完善算法执行过程中出现异常后的集群自我恢复功能。

客户端及周边工具

  • 逻辑导入导出工具新增了 -merge(用于指定合并数据操作)、-timeout(用于指定超时时长)和 -direct(用于指定通信地址)等参数,增强了工具的灵活性和功能性,详情请见 逻辑导入导出工具 章节。
  • 物理导入支持 rankable 数据导入,详情请见 物理导入工具 章节。

性能优化

  • 优化读写链路中锁的使用,包括:细化锁的范围,将互斥锁替换为读写锁等,降低线程上下文切换次数。
  • 优化读写逻辑,针对事务无修改的读场景,进行短路径处理,提高处理速度。
  • 支持 memory tracker 的编译开关,避免过多的内部校验影响性能。
  • 实验室测试,单机场景下,写 TPS 提升 5 倍,点查 QPS 提升 10 倍。

兼容性说明(废除的功能)

  • 废除 CALL DATAIO.LOADGRAPHCALL DATAIO.UNLOADGRAPH 命令,请使用 ALTER SYSTEM 命令代替。
  • 废除 MATCHMERGEWRITE 权限,您可能需要修改对应的 GRANT 语句,使用 TRAVERSEREADCREATEDELETSET PROPERTY 这些权限代替。
  • 修改 DESC GRAPH/VERTEX/EDGE/INDEX 等命令的返回格式,使其更简洁、易读。若需获取原格式,请在这些命令后加 FULL 关键字,例如:DESC GRAPH graph001 FULL;

修复Bug

修复若干 bug。

遗留问题

暂无。

v2.1.0

重大功能与架构升级

  • 支持 TEMPORAL 时态图模式 时态图,用于存储时态关系数据,特色能力,在金融等场景具备强烈需求。
  • 新增 JSON 数据类型 JSON 语句,用于存储非结构化数据,同时扩展 JSON 字段的查询,存储和 Index 功能。具备多模态数据处理能力,同时兼顾 Schema 与 Schema Less 两种设计方式。
  • 支持 RocksDB 存储引擎,和多副本一致性敏捷交付架构 架构介绍
  • 语法覆盖 LDBC 90%以上,具备 LDBC 业务数据处理能力,且语句级的支持,业内领先。
  • 客户端 SDK (ArcGraph Java SDKArcGraph Python SDK)与生态链工具支持逻辑导入导出 arc_pump,物理导入工具支持。
  • 图计算全面支持 CSV 和在线 OLTP 的离在线一体化数据导入模式,并且支持 HTAP Cypher Call。
  • 大量补充可运维性能力与可观测性数据。
  • 去除三方依赖(etcd),让交付更敏捷。

图数据库(语法、命令、函数、存储、事务等)

  • 新增数据类型
  • 新增语句与 Cypher 语法
  • 稳定性与性能优化
    • 重写 Raft 实现,支持高可用切换,宕机恢复并进行了一系列容灾测试。
    • 支持备库读,分担主库的读压力。
  • 统计信息增强
    • 支持 Session,Query,事务,DML,DDL 多种类型、多级别性能统计指标 计数器指标介绍
    • 增加虚拟系统表,透出更多的统计信息。
    • 支持 Profile 功能 PROFILE,查看语句的执行计划与耗时。
  • 部署架构
    • 支持 单机分布式一体化架构,引入基于 Raft 的 ReplicaSet 运行模式。

客户端

  • 提供 Java/Python SDK ArcGraph Java SDK/ArcGraph Python SDKHTTP RESTful API ArcGraph RESTful Service,JAVA SDK 自适应 Server Leader 切换功能。
  • 提供逻辑导出导入工具 arc_pump,支持将 CSV 文件导入数据库或备份数据库到 CSV 文件,用于日常任务。
  • 提供物理导入工具,常用于数据库迁移、大规模数据导入(50G 以上)。
  • 支持全量备份恢复工具 arc_br,可以将当前全量数据备份到文件目录,恢复功能可以从文件目录中指定的备份镜像恢复到引擎。

修复缺陷

修复若干 bug。

不再支持的功能

对于 EDGE TYPE,不再支持 PRIMARY KEY。因为 FROM VERTEXTO VERTEX 可以唯一确定一条边。

系统图

在 ArcGraph 图数据库中,系统图特指图名称以“_”(下划线)作为前缀的图,目前主要涵盖 _SYSTEM 和 _SYSTEM_INFORMATION 两个核心系统图。这些系统图的设计旨在提供数据库管理的关键功能和特性。请注意,普通用户若无相关权限,将无法感知系统图的存在。

_SYSTEM

在 ArcGraph 中 _SYSTEM 系统图特指 graph_name 为“_SYSTEM”且 graph_id 为“1”的图,它是数据库的核心组成部分。该图主要存储 ArcGraph 运行期间产生的元数据和状态数据,包括图,点,边,索引,及内部 TSO 和 ID 等信息,是系统稳定运行的基础服务模块。通过对 _SYSTEM 图的严格控制与灵活管理确保了数据库的稳定性和安全性。

为了保护 _SYSTEM 图,防止因不当操作引发系统崩溃,同时保留紧急情况下的特殊操作能力,我们制定了以下操作策略:

  • 普通用户
    对于普通用户,若无特殊授权,将严格禁止对 _SYSTEM 系统图进行任何操作,包括但不限于读、写、查询等。这确保了系统图的数据不会被非授权用户访问或修改。
  • 超级用户
    • 允许具有超级权限的用户(如 arcgraph 用户)在 _SYSTEM 图上进行查询操作,详情请参见 基本查询 章节。仅支持查询操作,若需通过 DQL 执行修改数据,如 MATCH ... DELETE 等,则暂不支持。
    • 允许具有超级权限的用户(如 arcgraph 用户)在本地(即 client_ip 为“127.0.0.1”)进行 DML 操作,但此类操作强烈不推荐,非紧急情况请勿使用。DML 操作详情请参见 DML(增|删|改) 章节,待 Server 重启后,这些操作才会对系统生效。

示例 1
报错示例,删除 _SYSTEM 系统图,命令如下:

DROP GRAPH _SYSTEM;

返回结果示例如下:

+----------------------------------------------------------------------------+
| error |
+============================================================================+
| Code: 9000, AuthError: DROP GRAPH Operation on SYSTEM graph isn't allowed. |
+----------------------------------------------------------------------------+

示例 2
在 _SYSTEM 图中查询所有的点类型,命令如下:

SHOW VERTEXES;

返回结果示例如下:

+-------------------+----------------+------------------------+
| vertex_type_name | vertex_type_id | location |
+===================+================+========================+
| _CLUSTER_INFO | 13 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _CLUSTER_TS | 16 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _EDGE | 3 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _EDGE_STATISTIC | 11 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _GRAPH | 1 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _ID_POOL | 14 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _INDEX | 4 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _INDEX_PROPERTY | 5 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _JOB | 15 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _PRIVILEGE | 9 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _ROLE | 7 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _USER | 6 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _USER_ROLE_MAP | 8 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _VARIABLE | 12 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _VERTEX | 2 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+
| _VERTEX_STATISTIC | 10 | [127.0.0.1:50051([0])] |
+-------------------+----------------+------------------------+

_SYSTEM_INFORMATION

在 ArcGraph 中 _SYSTEM_INFORMATION 图特指 graph_name 为“_SYSTEM_INFORMATION”且 graph_id 为“3”的图,这个图主要是面向开发者,为其提供一个便捷的途径来查询和分析系统的信息。

_SYSTEM_INFORMATION 图具有以下特点:

  • 该图的 Schema 仅在内存中存在,其数据只在执行该图的查询时进行组织与生成,不占用持久化存储空间。
  • 用户在该图中只能进行查询操作,不支持 DDL 和 DML 操作。
  • 该图中点类型的名称通常以下划线(“_”)作为前缀。

虽然 _SYSTEM_INFORMATION 图为查询和分析系统信息提供了便利,但由于无法保证其兼容性,使用时需谨慎。

示例
在 _SYSTEM_INFORMATION 图中查询所有点类型,命令如下:

SHOW VERTEXES;

返回结果示例如下:

+-----------------------------+----------------+------------------------+
| vertex_type_name | vertex_type_id | location |
+=============================+================+========================+
| _ALL_GRAPH_PARTITION_LEADER | 9 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _CHARSETS | 10 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _COLLATIONS | 11 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _CONFIG | 3 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _GLOBAL_VARIABLE | 2 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _GRAPH_PARTITION | 18 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _INFRAS | 14 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _KEYWORDS | 12 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _LOCKS | 19 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _METRICS | 5 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _ROLE_PRIVILEGES | 16 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _SERVERS | 6 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _SESSIONS | 4 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _SESSION_VARIABLES | 1 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _SYSTEM_VIEWS | 7 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _TRANSACTIONS | 13 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _TSO | 8 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _USERS | 17 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+
| _USER_ROLES | 15 | [127.0.0.1:50051([0])] |
+-----------------------------+----------------+------------------------+

命名规则

在 ArcGraph 图数据库中,对象的命名规则对于确保数据的准确性和一致性至关重要。自 ArcGraph v2.1.1 版本起我们对命名规则进行了调整。以下将详细阐述系统对象和普通对象的命名规范,以确保图数据库结构的清晰和易于维护。

普通对象命名规则

普通对象,即除系统对象外的其他对象,在命名时应遵循以下规范,以确保名称的一致性和可读性。

  • 支持使用非解析器关键字(即未在 token.rs 中定义且 TokenKind == Ident)。
  • 支持使用部分 Unicode 字符串,如中文字符、英文字母(“az”、“AZ”)、数字(“0~9”)、下划线(“_”)等。
  • 名称不得以数字或下划线(“_”)开头。
  • 不建议使用系统预留的特殊词汇,否则可能会导致系统报错且命名失败。
  • 除用户名及系统预留的特殊词汇(如函数名称)外,其他对象的命名区分大小写,即大小写不同的名称被视为不同对象。
  • 默认长度限制在 2 ~ 128 个字符之间。如需调整,可通过设置 compiler_max_object_name_lencompiler_min_object_name_len 参数来设定最大和最小长度的限制,详情请参见 更改系统配置项 章节。

系统对象命名规则

系统对象,包括系统图、系统图中的点类型、边类型和属性,其命名规则如下:

  • 系统图的名称以及系统图中定义的点类型和边类型的名称,应由大写字母和下划线组成(即“_”、“A ~ Z”),且必须以下划线开头。
  • 系统图中的属性命名应由小写字母和下划线组成(即“_”、“a ~ z”)。如果是普通属性,则无需下划线开头。
  • 特定的系统属性,如当前已存在的 _oid_ts 属性,则应使用小写字母和下划线组成(即“_”、“a ~ z”),且必须以下划线开头。

保留关键字

保留关键字在 ArcGraph 中有重要的意义,不建议作为对象名称使用。

保留关键字不区分大小写,详情如下:

ADD
ALL
AND
ARRAY
AS
ASC
ASCENDING
BIGDECIMAL
BIGINT
BLOB
BOOL
BOOLEAN
BY
BYTE
CALL
CASE
CHARSET
COMMIT
CONSTRAINT
CONTAINS
COUNT
CREATE
DATE
DATETIME
DELETE
DESC
DESCENDING
DETACH
DISTINCT
DO
DOUBLE
DROP
EDGE
ELSE
END
ENDS
EXCEPT
EXISTS
FALSE
FLOAT
FOR
FUNCTION
GRANT
GRAPH
IF
IN
INDEX
INT32
INT64
INTERSECT
IS
LIMIT
MANDATORY
MATCH
NOT
NULL
OF
ON
OPTIONAL
OR
ORDER
REMOVE
REQUIRE
RETURN
REVOKE
SCALAR
SET
SKIP
STARTS
STRING
TEMPORAL
TEXT
THEN
TIME
TIMESTAMP
TRUE
UNION
UNIQUE
UNWIND
USE
VERTEX
WHEN
WHERE
WITH
XOR
YIELD

其中,ArcGraph 图数据库 v2.1.1 版本新增保留关键字如下:

ARRAY
BIGDECIMAL
BIGINT
BLOB
BOOL
BOOLEAN
BYTE
CALL
CHARSET
COMMIT
DATE
DATETIME
DOUBLE
EDGE
FLOAT
FUNCTION
GRANT
GRAPH
IF
INT32
INT64
INDEX
REVOKE
STRING
TIME
TIMESTAMP
TEXT
TEMPORAL
USE
VERTEX
YIELD

功能介绍

ArcGraph 主要功能如下。

大类小类名称描述
图数据库系统信创(国产化)操作系统兼容支持常见国产操作系统
芯片兼容支持常见国产ARM和X86芯片
容灾与可用性容忍软件故障单点软件故障时,可持续为业务提供服务
容忍网卡故障单点网卡故障时,可持续为业务提供服务
容忍磁盘故障单点磁盘故障时,可持续为业务提供服务
容忍节点故障单点服务器故障时,可持续为业务提供服务
容忍机房故障当一个机房故障时,可持续为业务提供服务
故障时的可用性发生以上故障时,不影响备份、监控、扩容等主要的运维操作
分布式扩展能力分布式计算支持在多个节点中分布式查询和计算,支持计算层单独扩展,以提升性能;对于高开销的查询,比如全图遍历,支持MPP多机并行查找;
对于图的AI计算,比如PageRank,支持多节点分布式计算
分布式存储支持将数据按照一定算法分布在多个存储节点中,分摊I/O压力,同时避免单机容量和性能瓶颈,支持存储层单独扩展;内置分布式K/V存储,数据容量可以横向扩展
分布式事务支持跨数据库节点的分布式事务(比如插入一个Path,需要多个节点参与完成),满足ACID要求
运维安装部署支持自动化安装部署,通过命令行、Web等可视化的方式完成数据库集群的安装和部署
机器扩容、上线添加一台新的机器到数据库集群中,数据或负载自动均衡;图查询引擎、执行引擎、计算引擎和存储引擎均支持在线扩缩容
机器缩容、下线从数据库集群中剔除一台机器;图查询引擎、执行引擎、计算引擎和存储引擎均支持在线扩缩容
管理平台支持用可视化的方式来查看数据库的集群拓扑、服务器状态、数据库性能、日志等信息,以及实施一些常见的运维操作(比如kill掉大查询)
性能监控提供40+Metrics性能指标监控,提供SHOW命令、RESTful等方式查询和集成
性能诊断提供Profile命令、Kill命令等常见的性能诊断与应急处理机制
执行计划支持通过Explain来查询执行计划
慢查询提供慢查询日志的查询和展示
升级升级软件版本支持在线升级软件版本,采用 rolling upgrade 来升级数据库软件以及其他相关软件
数据导入和导出逻辑导入和导出提供arc_pump逻辑导入和导出工具,可以将CSV文件导入到数据库中,也支持将图或子图导出为CSV文件;
物理导入提供direct_load物理导入工具,用于批量快速加载上T的数据集
数据备份和恢复逻辑备份和恢复支持逻辑备份,即用MATCH语句导出指定的图或子图,灵活性高,可选择部分Graph、Vertex、Edge备份或恢复
物理备份和恢复支持物理备份,基于分布式存储的Snapshot实现,效率较高
增量备份支持数据库的Redo Log备份,用于增量恢复(按时间点恢复);
物理恢复支持基于物理备份文件恢复数据
安全体系用户支持创建多个用户,且具有基本的认证能力
角色支持创建多个角色,支持对用户设置角色
权限支持对不同的用户或者角色,设置不同的访问权限,支持对图、点、边、点属性、边属性进行读、写权限控制
传输加密客户端连接数据库时,是否支持SSL/TLS加密
图数据库开发与使用Schema强Schema支持强Schema定义
多图支持在一个数据库集群中,存储、使用多个图
复杂图支持两个节点之间多条相同类型关系相互连接,如转账关系
时态图支持Temporal Graph,可以存储时间维度的数据
Schema管理可以创建、修改Schema,包含点和边
已使用Schema的更新有了数据以后,仍然允许对Schema进行修改,包括属性的添加、修改、删除
点数据类型支持Int、Double、Long、String、DateTime等数据类型
边数据类型支持Int、Double、Long、String、DateTime等数据类型
点主键和索引支持对点的属性添加、修改、删除索引;
支持 Primary Key、Unique 、非Unique索引;
支持 联合索引(多属性);
支持 RANGE、FULLTEXT 索引;
边主键和索引支持对边的属性添加、修改、删除索引
事务事务ACID支持完整的事务ACID要求
事务隔离级别支持Read committed 、Repeatable read 这两种事务隔离级别;
事务开关是否支持关闭事务以提升性能
字符集和排序规则字符集支持字符集 UTF8、GBK/GB18030等字符集
排序规则支持gb18030_bin等排序规则
图查询语言(GQL)Cypher支持Cypher查询语言,兼容 ISO-GQL 标准
DDL支持对图、点类型、边类型的Schema管理
DML支持对点、边数据的操作
DQL支持常见的图查询语法,包括但不限于:
支持 带WHERE的多跳K-Hop查询
支持 排序,取TOP N
支持 并集 UNION、交集 INTERSECT、差集 EXCEPT 运算
支持 SUM、COUNT、MAX、MIN、AVG聚合函数
支持 常见的函数xxx
支持 EXPLAIN 命令
UDF自定义函数支持自定义函数
图计算内置算法支持常见的图计算算法,包括路径搜索算法(Pathfinding and Graph Search Algorithms)、中心性算法(Centrality Algorithms)、社区发现算法(Community Detection Algorithms)、关联性分析(correlation analysis)、子图挖掘算法(Graph Mining)等,包含Louvain、连通图、标签传播算法,挖掘算法等30多种算法
自定义算法支持使用Python和C++开发自定义算法。
GNN支持图神经网络GNN, GAT, GraphSage, DeepWalk, LINE, TransE, Bipartite GraphSage, sample-based GCN and GAT等模型。
实时图查询HTAP一个语句完成查询数据之后直接调用图计算算法,支持Match...Call语句
客户端命令行CLI提供在Linux、Mac上使用的客户端命令行工具
可视化Web支持可视化的方式修改 Schema,操作数据、呈现数据
APIJava Driver(SDK)Java 客户端驱动程序,以编程的方式访问图数据和调用图算法
Python Driver(SDK)Python 客户端驱动程序,以编程的方式访问图数据和调用图算法
RESTful API支持通过RESTful API访问图数据或调用图算法

FAQ

1. Docker 中如何设置 insecure-registries

本文档中使用的 Docker 镜像仓库地址是: http://docker-reg.infra.fabarta.com.

由于没有使用 HTTPS,因此为了允许 Docker 客户端连接并下载镜像,需要设置 Docker 的 insecure-registries

在 Linux 和 Mac 上设置 Docker的 insecure-registries 需要编辑 Docker 的配置文件。这里是如何操作的步骤。

在 Linux 上设置

  1. 编辑 Docker 的 daemon 配置文件: 打开或创建 Docker 的配置文件 daemon.json。通常这个文件位于/etc/docker/目录下。可以使用文本编辑器来编辑,比如使用 nano 或 vi:

    sudo vi /etc/docker/daemon.json
  2. 添加或更新 insecure-registries 设置:

    在 daemon.json 文件中,添加或更新 insecure-registries 键。示例如下:

    {
    "insecure-registries" : ["docker-reg.infra.fabarta.com:5000"]
    }

    如果文件中已有其他设置,请确保在 JSON 结构中正确地添加这个键值对。

  3. 保存文件并重启 Docker 服务:

    保存对 daemon.json 的更改,并重启 Docker 服务以使更改生效:

    sudo systemctl restart docker

在 Mac 上设置

在 Mac 上,Docker 设置通常通过 Docker Desktop 应用进行配置:

  1. 打开 Docker Desktop:

    点击菜单栏中的设置图标。

  2. 修改 Docker Engine 配置:

    在设置界面中,找到“Docker Engine”标签页。这里会显示一个类似于 Linux的daemon.json 配置文件。

  3. 添加或更新 insecure-registries 设置:

    在 JSON 配置中添加或更新 insecure-registries 键,如下所示:

    {
    "insecure-registries" : ["docker-reg.infra.fabarta.com:5000"]
    }
  4. 应用更改并重启 Docker:

    点击“Apply & Restart”按钮,使更改生效。

    确保在进行这些更改时,有足够的权限,并且在 Linux 上的操作需要 root 权限。如果在操作过程中遇到任何问题,请根据错误信息进行相应的调整。

2. 如何查看 ArcGraph 运行模式 ?

在 ArcGraph 上执行 SHOW SERVERS; 命令,查询当前 ArcGraph 的部署模式,详情请参见 查看当前部署模式

文档说明

本文档全面、详细的介绍了 ArcGraph 图数据库的功能、特点和使用方法,旨在为使用 ArcGraph 图数据库的用户提供详尽的操作指导和参考信息。本文档相关说明如下:

  • 本文档提供的示例仅作参考,旨在帮助您更好地理解 ArcGraph 图数据库的功能和使用方法。在实际应用中,请根据具体情境和需求进行相应调整与操作,并以系统实际返回的结果为准。
  • ArcGraph 图数据库的不同版本在部分语法和结果展示形式上可能略有不同,请以实际为准。

我们衷心感谢您对 ArcGraph 图数据库产品的关注和支持。如果您在使用过程中遇到任何问题或需要进一步的帮助,请随时与 我们 联系。我们将竭诚为您提供专业的技术支持和服务。