附录
版本及对应 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_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
,可以将当前全量数据备份到文件目录,恢复功能可以从文件目录中指定的备份镜像恢复到引擎。