附录
版本及对应 Docker 镜像
版本号 | 镜像 | 发布时间 |
---|---|---|
v2.1.3 | - X86_64 架构:docker-reg.infra.fabarta.com:5000/fabarta-ga/engine-arcgraph-tp:v2.1.3-20241108-x86_64 - ARM 架构: docker-reg.infra.fabarta.com:5000/fabarta-ga/engine-arcgraph-tp:v2.1.3-20241108-arm64 | 2024 年 11 月 08 日 |
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.3
重大功能与架构升级
- 支持空间数据索引
- 支持流式导入功能,可以把 Mysql、Kafka 数据入图
- 支持弱类型检查模式,查询语句编写更灵活
图数据库(语法、命令、函数、存储、事务等)
- 支持空间数据索引
- 支持弱类型检查模式
客户端及周边工具
- ArcGraph Studio
- 支持 csv 导入功能
- 支持流式导入功能
优化及重构
- 优化 server 前端模块,节省内存开销,加快查询请求处理速度
- 修复功能缺陷,增强系统稳健性
- 修复 unwind 嵌套数组时的 panic 问题
- 修复 oid 过滤时不兼容不同 vertex type 的问题
- 修复重新创建点/边时会查询到旧的 Schema 的问题
- 修复 like 过滤条件下推的问题
- 修复 PK 函数和 nodes 函数一起使用时返回错误结果的问题
- 修复不存在点/边 schema 时查询 count(*) 会 panic 的问题
- 修复多层嵌套结构解析时栈溢出的问题
兼容性说明
无
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_vertex
和to_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
语法,通过在查询语句中添加或省略ALL
或FULL
字段,灵活选择查询图/点类型/边类型/索引的基本信息或详细信息。 - 更新
SHOW GRAPHS/VERTEXES/EDGES/INDEXES/CONFIG/USERS
语法,通过在查询语句中添加或省略FULL
字段,灵活选择查询图/点类型/边类型/索引等的列表或详细信息。 - 新增 BigDecimal 数据类型,详情请见 数据类型 章节。
- 更新查询图 LEADER 信息语法,详情请见 查询图 LEADER 信息 章节。
- 新增
SHOW MALLOC STATS
语法,用于查看系统目前收集的内存使用统计信息,详情请见 SHOW MALLOC STATS 章节。 - 新增默认角色,创建用户时系统会自动为新用户生成一个与之对应的默认角色(命名为
DEFAULT_ROLE<USER_NAME>
,初始无权限),并自动绑定至该用户,详情请见 角色 章节。 - 新增修改超级用户密码功能,更新修改普通用户密码,详情请见 修改用户密码 章节。
- 更新权限管理,删除了
MATCH
、MERGE
、WRITE
权限,以简化权限体系并提高安全性,详情请见 权限 章节。 - 新增
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.LOADGRAPH
及CALL DATAIO.UNLOADGRAPH
命令,请使用ALTER SYSTEM
命令代替。 - 废除
MATCH
、MERGE
、WRITE
权限,您可能需要修改对应的GRANT
语句,使用TRAVERSE
、READ
、CREATE
、DELET
、SET 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 SDK、ArcGraph Python SDK)与生态链工具支持逻辑导入导出 arc_pump,物理导入工具支持。
- 图计算全面支持 CSV 和在线 OLTP 的离在线一体化数据导入模式,并且支持 HTAP Cypher Call。
- 大量补充可运维性能力与可观测性数据。
- 去除三方依赖(etcd),让交付更敏捷。
图数据库(语法、命令、函数、存储、事务等)
- 新增数据类型
- 新增 JSON 数据类型 JSON数据类型介绍。
- 支持 Array 类型 Array数据类型介绍。
- 新增支持 GBK,GB18030 字符编码,Collation 扩展支持拼音排序,对中文更友好 字符集和排序规则介绍。
- 新增内部 oid 能力,大幅度优化内存使用,并且提升内部数据检索性能。
- 新增语句与 Cypher 语法
- 新增点/边的 Insert ... Overwrite (Upsert) 功能 DML(增|删|改)操作。
- 支持 WITH 子句 WITH子句。
- 支持多个 MATCH/OPTIONAL MATCH 的连接查询。
- 支持 UNWIND 子句 UNWIND子句。
- 支持 COLLECT 聚合函数 collect()函数。
- 支持列表推导和 reduce 函数 列推导、reduce()函数。
- 支持路径函数 路径函数。
- 支持在 WHERE 子句中使用路径表达式过滤中间结果 WHERE 子句。
- 支持 shortestPath,allShortesetPaths 算法 ShortestPath() 和 allShortestPaths()函数。
- 支持使用属性索引的查询和范围查询。
- 稳定性与性能优化
- 重写 Raft 实现,支持高可用切换,宕机恢复并进行了一系列容灾测试。
- 支持备库读,分担主库的读压力。
- 统计信息增强
- 部署架构
- 支持 单机分布式一体化架构,引入基于 Raft 的 ReplicaSet 运行模式。
客户端
- 提供
Java/Python SDK
ArcGraph Java SDK/ArcGraph Python SDK,HTTP RESTful API
ArcGraph RESTful Service,JAVA SDK 自适应 Server Leader 切换功能。 - 提供逻辑导出导入工具
arc_pump
,支持将 CSV 文件导入数据库或备份数据库到 CSV 文件,用于日常任务。 - 提供物理导入工具,常用于数据库迁移、大规模数据导入(50G 以上)。
- 支持全量备份恢复工具
arc_br
,可以将当前全量数据备份到文件目录,恢复功能可以从文件目录中指定的备份镜像恢复到引擎。
修复缺陷
修复若干 bug。
不再支持的功能
对于 EDGE TYPE
,不再支 持 PRIMARY KEY
。因为 FROM VERTEX
和 TO 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 重启后,这些操作才会对系统生效。
- 允许具有超级权限的用户(如 arcgraph 用户)在 _SYSTEM 图上进行查询操作,详情请参见 基本查询 章节。仅支持查询操作,若需通过 DQL 执行修改数据,如
示例 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 字符串,如中文字符、英文字母(“a~z”、“A~Z”)、数字(“0~9”)、下划线(“_”)等。
- 名称不得以数字或下划线(“_”)开头。
- 不建议使用系统预留的特殊词汇,否则可能会导致系统报错且命名失败。
- 除用户名及系统预留的特殊词汇(如函数名称)外,其他对象的命名区分大小写,即大小写不同的名称被视为不同对象。
- 默认长度限制在 2 ~ 128 个字符之间。如需调整,可通过设置
compiler_max_object_name_len
和compiler_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,操作数据、呈现数据 | ||
API | Java 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 上设置
-
编辑 Docker 的 daemon 配置文件: 打开或创建 Docker 的配置文件 daemon.json。通常这个文件位于/etc/docker/目录下。可以使用文本编辑器来编辑,比如使用 nano 或 vi:
sudo vi /etc/docker/daemon.json
-
添加或更新 insecure-registries 设置:
在 daemon.json 文件中,添加或更新 insecure-registries 键。示例如下:
{
"insecure-registries" : ["docker-reg.infra.fabarta.com:5000"]
}如果文件中已有其他设置,请确保在 JSON 结构中正确地添加这个键值对。
-
保存文件并重启 Docker 服务:
保存对 daemon.json 的更改,并重启 Docker 服务以使更改生效:
sudo systemctl restart docker
在 Mac 上设置
在 Mac 上,Docker 设置通常通过 Docker Desktop 应用进行配置:
-
打开 Docker Desktop:
点击菜单栏中的设置图标。
-
修改 Docker Engine 配置:
在设置界面中,找到“Docker Engine”标签页。这里会显示一个类似于 Linux的daemon.json 配置文件。
-
添加或更新 insecure-registries 设置:
在 JSON 配置中添加或更新 insecure-registries 键,如下所示:
{
"insecure-registries" : ["docker-reg.infra.fabarta.com:5000"]
} -
应用更改并重启 Docker:
点击“Apply & Restart”按钮,使更改生效。
确保在进行这些更改时,有足够的权限,并且在 Linux 上的操作需要 root 权限。如果在操作过程中遇到任何问题,请根据错误信息进行相应的调整。
2. 如何查看 ArcGraph 运行模式 ?
在 ArcGraph 上执行 SHOW SERVERS;
命令,查询当前 ArcGraph 的部署模式,详情请参见 查看当前部署模式。
文档说明
本文档全面、详细的介绍了 ArcGraph 图数据库的功能、特点和使用方法,旨在为使用 ArcGraph 图数据库的用户提供详尽的操作指导和参考信息。本文档相关说明如下:
- 本文档提供的示例仅作参考,旨在帮助您更好地理解 ArcGraph 图数据库的功能和使用方法。在实际应用中,请根据具体情境和需求进行相应调整与操作,并以系统实际返回的结果为准。
- ArcGraph 图数据库的不同版本在部分语法和结果展示形式上可能略有不同,请以实际为准。
我们衷心感谢您对 ArcGraph 图数据库产品的关注和支持。如果您在使用过程中遇到任何问题或需要进一步的帮助,请随时与 我们 联系。我们将竭诚为您提供专业的技术支持和服务。