HugeGraph 发布 0.12.0 版本
HugeGraph 0.12.0 版本增加功能 20+,改进问题 200+,该版本在权限功能、OLTP 查询性能、稳定性等方面都有较大提升。在要求 10 ms 以内低延迟的场景下,服务吞吐进一步提升、99%分位请求延迟进一步降低。
此外,HugeGraph 大规模图计算平台 2021 年在紧张开发中,预计 2022 年会发布个版本,感谢大家关注。HugeGraph-Computer 是一个大规模分布式的并行图计算平台,核心痛点是为解决在十亿~百亿以上规模图上运行图算法的稳定性与资源消耗问题、以及解决在百亿~千亿以上规模图上运行非聚合类图算法的可用性问题。
新增功能主要包括:
支持动态创建图实例
支持多集群使用同一个图权限服务,以共享权限信息
支持跨多节点的 Cache 缓存同步
支持对新增的 Raft 节点打快照或恢复快照
支持对集合属性建立二级索引 Collection Secondary Index(感谢来自科大讯飞@pengjiaqi同学的贡献)
支持审计日志,及其压缩、限速等功能
支持通过 Gremlin 调用 OLTP 算法
全面支持 HTTPS 协议
Loader 支持导入 Parquet 格式文件、以及支持 Kerberos 验证方式(感谢来自新智认知@tianmingliang同学的贡献)
性能方面提升:
支持 OLTP 算法使用原生集合以降低 GC 压力提升性能
支持 OLTP 算法使用高性能并行无锁原生集合以提升性能
在开启权限场景下,大幅度提升了读写性能,控制启用权限对性能的影响在5%以内
在 Raft 模式下,提升了读写性能以及快照性能
改进 RocksDB 删除数据带来的查询性能下降问题
稳定性方面提升:
提升了MySQL 存储后端在持续高并发场景下的稳定性,HugeGraph on MySQL 存储后端已达到生产环境可用状态(感谢来自虎牙直播@zoulei同学的贡献)
提升了开启权限 + 多Server节点场景下的稳定性
提升了 Raft 模式下的稳定性,特别是提升了在 SSD 满负载的场景下的健壮性
点击底部【阅读原文】可进入下载页面,以下是本次发版的详细内容:
HugeGraph 0.12 Release Notes
API & Client
接口更新
支持 https + auth 模式连接图服务
统一 kout/kneighbor 等 OLTP 接口的参数命名及默认值
支持 RESTful 接口利用 P.textcontains() 进行属性全文检索
增加 graph_read_mode API 接口,以切换 OLTP、OLAP 读模式
支持 list/set 类型的聚合属性 aggregate property
权限接口增加 METRICS 资源类型
权限接口增加 SCHEMA 资源类型
增加手动 compact API 接口,支持 rocksdb/cassandra/hbase 后端
权限接口增加 login/logout API,支持颁发或回收 Token
权限接口增加 project API
增加 OLAP 回写接口,支持 cassandra/rocksdb 后端
增加返回一个图的所有 Schema 的 API 接口
变更 property key 创建与更新 API 的 HTTP 返回码为 202
增强 Text.contains() 支持3种格式:"word"、"(word)"、"(word1|word2|word3)"
统一了属性中特殊字符的行为
支持动态创建图实例、克隆图实例、删除图实例
其它修改
修复在恢复 index label 时 IndexLabelV56 id 丢失的问题
为 Edge 类增加 name() 方法
Core & Server
功能更新
支持动态创建图实例
支持通过 Gremlin 调用 OLTP 算法
支持多集群使用同一个图权限服务,以共享权限信息
支持跨多节点的 Cache 缓存同步
支持 OLTP 算法使用原生集合以降低 GC 压力提升性能
支持对新增的 Raft 节点打快照或恢复快照
支持对集合属性建立二级索引 Secondary Index
支持审计日志,及其压缩、限速等功能
支持 OLTP 算法使用高性能并行无锁原生集合以提升性能
BUG修复
修复带权短路径算法(weighted shortest path)NPE问题 (hugegraph #1250)
增加 Raft 相关的安全操作白名单(hugegraph #1257)
修复 RocksDB 实例未正确关闭的问题(hugegraph #1264)
在清空数据 truncate 操作之后,显示的发起写快照 Raft Snapshot(hugegraph #1275)
修复 Raft Leader 在收到 Follower 转发请求时未更新缓存的问题(hugegraph #1279)
修复带权短路径算法(weighted shortest path)结果不稳定的问题(hugegraph #1280)
修复 rays 算法 limit 参数不生效问题(hugegraph #1284)
修复 neighborrank 算法 capacity 参数未检查的问题(hugegraph #1290)
修复 PostgreSQL 因为不存在与用户同名的数据库而初始化失败的问题(hugegraph #1293)
修复 HBase 后端当启用 Kerberos 时初始化失败的问题(hugegraph #1294)
修复 HBase/RocksDB 后端 shard 结束判断错误问题(hugegraph #1306)
修复带权短路径算法(weighted shortest path)未检查目标顶点存在的问题(hugegraph #1307)
修复 personalrank/neighborrank 算法中非 String 类型 id 的问题(hugegraph #1310)
检查必须是 master 节点才允许调度 gremlin job(hugegraph #1314)
修复 g.V().hasLabel().limit(n) 因为索引覆盖导致的部分结果不准确问题(hugegraph #1316)
修复 jaccardsimilarity 算法当并集为空时报 NaN 错误的问题(hugegraph #1324)
修复 Raft Follower 节点操作 Schema 多节点之间数据不同步问题(hugegraph #1325)
修复因为 tx 未关闭导致的 TTL 不生效问题(hugegraph #1330)
修复 gremlin job 的执行结果大于 Cassandra 限制但小于任务限制时的异常处理(hugegraph #1334)
检查权限接口 auth-delete 和 role-get API 操作时图必须存在(hugegraph #1338)
修复异步任务结果中包含 path/tree 时系列化不正常的问题(hugegraph #1351)
修复初始化 admin 用户时的 NPE 问题(hugegraph #1360)
修复异步任务原子性操作问题,确保 update/get fields 及 re-schedule 的原子性(hugegraph #1361)
修复权限 NONE 资源类型的问题(hugegraph #1362)
修复启用权限后,truncate 操作报错 SecurityException 及管理员信息丢失问题(hugegraph #1365)
修复启用权限后,解析数据忽略了权限异常的问题(hugegraph #1380)
修复 AuthManager 在初始化时会尝试连接其它节点的问题(hugegraph #1381)
修复特定的 shard 信息导致 base64 解码错误的问题(hugegraph #1383)
修复启用权限后,使用 consistent-hash LB 在校验权限时,creator 为空的问题(hugegraph #1385)
改进权限中 VAR 资源不再依赖于 VERTEX 资源(hugegraph #1386)
规范启用权限后,Schema 操作仅依赖具体的资源(hugegraph #1387)
规范启用权限后,部分操作由依赖 STATUS 资源改为依赖 ANY 资源(hugegraph #1391)
规范启用权限后,禁止初始化管理员密码为空(hugegraph #1400)
检查创建用户时 username/password 不允许为空(hugegraph #1402)
修复更新 Label 时,PrimaryKey 或 SortKey 被设置为可空属性的问题(hugegraph #1406)
修复 ScyllaDB 丢失分页结果问题(hugegraph #1407)
修复带权短路径算法(weighted shortest path)权重属性强制转换为 double 的问题(hugegraph #1432)
统一 OLTP 算法中的 degree 参数命名(hugegraph #1433)
修复 fusiformsimilarity 算法当 similars 为空的时候返回所有的顶点问题(hugegraph #1434)
改进 paths 算法,当起始点与目标点相同时应该返回空路径(hugegraph #1435)
修改 kout/kneighbor 的 limit 参数默认值 10 为 10000000(hugegraph #1436)
修复分页信息中的 '+' 被 URL 编码为空格的问题(hugegraph #1437)
改进边更新接口的错误提示信息(hugegraph #1443)
修复 kout 算法 degree 未在所有 label 范围生效的问题(hugegraph #1459)
改进 kneighbor/kout 算法,起始点不允许出现在结果集中(hugegraph #1459 #1463)
统一 kout/kneighbor 的 Get 和 Post 版本行为(hugegraph #1470)
改进创建边时顶点类型不匹配的错误提示信息(hugegraph #1477)
修复 Range Index 的残留索引问题(hugegraph #1498)
修复权限操作未失效缓存的问题(hugegraph #1528)
修复 sameneighbor 的 limit 参数默认值 10 为 10000000(hugegraph #1530)
修复 clear API 不应该所有后端都调用 create snapshot 的问题(hugegraph #1532)
修复当 loading 模式时创建 Index Label 阻塞问题(hugegraph #1548)
修复增加图到 project 或从 project 移除图的问题(hugegraph #1562)
改进权限操作的一些错误提示信息(hugegraph #1563)
支持浮点属性设置为 Infinity/NaN 的值(hugegraph #1578)
修复 Raft 启用 safe_read 时的 quorum read 问题(hugegraph #1618)
修复 token 过期时间配置的单位问题(hugegraph #1625)
修复 MySQL Statement 资源泄露问题(hugegraph #1627)
修复竞争条件下 Schema.getIndexLabel 获取不到数据的问题(hugegraph #1629)
修复 HugeVertex4Insert 无法系列化问题(hugegraph #1630)
修复 MySQL count Statement 未关闭问题(hugegraph #1640)
修复当删除 Index Label 异常时,导致状态不同步问题(hugegraph #1642)
修复 MySQL 执行 gremlin timeout 导致的 statement 未关闭问题(hugegraph #1643)
改进 Search Index 以兼容特殊 Unicode 字符:\u0000 to \u0003(hugegraph #1659)
修复 #1659 引入的 Char 未转化为 String 的问题(hugegraph #1664)
修复 has() + within() 查询时结果异常问题(hugegraph #1680)
升级 Log4j 版本到 2.17 以修复安全漏洞(hugegraph #1686 #1698 #1702)
修复 HBase 后端 shard scan 中 startkey 包含空串时 NPE 问题(hugegraph #1691)
修复 paths 算法在深层环路遍历时性能下降问题 (hugegraph #1694)
改进 personalrank 算法的参数默认值及错误检查(hugegraph #1695)
修复 RESTful 接口 P.within 条件不生效问题(hugegraph #1704)
修复启用权限时无法动态创建图的问题(hugegraph #1708)
配置项修改:
共享 SSL 相关配置项命名(hugegraph #1260)
支持 RocksDB 配置项 rocksdb.level_compaction_dynamic_level_bytes(hugegraph #1262)
去除 RESFful Server 服务协议配置项 restserver.protocol,自动提取 URL 中的 Schema(hugegraph #1272)
增加 PostgreSQL 配置项 jdbc.postgresql.connect_database(hugegraph #1293)
增加针对顶点主键是否编码的配置项 vertex.encode_primary_key_number(hugegraph #1323)
增加针对聚合查询是否启用索引优化的配置项 query.optimize_aggregate_by_index(hugegraph #1549)
修改 cache_type 的默认值 l1 为 l2(hugegraph #1681)
增加 JDBC 强制重连配置项 jdbc.forced_auto_reconnect(hugegraph #1710)
其它修改
增加默认的 SSL Certificate 文件(hugegraph #1254)
OLTP 并行请求共享线程池,而非每个请求使用单独的线程池(hugegraph #1258)
修复 Example 的问题(hugegraph #1308)
使用 jraft 版本 1.3.5(hugegraph #1313)
如果启用了 Raft 模式时,关闭 RocksDB 的 WAL(hugegraph #1318)
使用 TarLz4Util 来提升快照 Snapshot 压缩的性能(hugegraph #1336)
升级存储的版本号(store version),因为 property key 增加了 read frequency(hugegraph #1341)
顶点/边 vertex/edge 的 Get API 使用 queryVertex/queryEdge 方法来替代 iterator 方法(hugegraph #1345)
支持 BFS 优化的多度查询(hugegraph #1359)
改进 RocksDB deleteRange() 带来的查询性能问题(hugegraph #1375)
修复 travis-ci cannot find symbol Namifiable 问题(hugegraph #1376)
确保 RocksDB 快照的磁盘与 data path 指定的一致(hugegraph #1392)
修复 MacOS 空闲内存 free_memory 计算不准确问题(hugegraph #1396)
增加 Raft onBusy 回调来配合限速(hugegraph #1401)
升级 netty-all 版本 4.1.13.Final 到 4.1.42.Final(hugegraph #1403)
支持 TaskScheduler 暂停当设置为 loading 模式时(hugegraph #1414)
修复 raft-tools 脚本的问题(hugegraph #1416)
修复 license params 问题(hugegraph #1420)
提升写权限日志的性能,通过 batch flush & async write 方式改进(hugegraph #1448)
增加 MySQL 连接 URL 的日志记录(hugegraph #1451)
提升用户信息校验性能(hugegraph# 1460)
修复 TTL 因为起始时间问题导致的错误(hugegraph #1478)
支持日志配置的热加载及对审计日志的压缩(hugegraph #1492)
支持针对用户级别的审计日志的限速(hugegraph #1493)
缓存 RamCache 支持用户自定义的过期时间(hugegraph #1494)
在 auth client 端缓存 login role 以避免重复的 RPC 调用(hugegraph #1507)
修复 IdSet.contains() 未复写 AbstractCollection.contains() 问题(hugegraph #1511)
修复当 commitPartOfEdgeDeletions() 失败时,未回滚 rollback 的问题(hugegraph #1513)
提升 Cache metrics 性能(hugegraph #1515)
当发生 license 操作错误时,增加打印异常日志(hugegraph #1522)
改进 SimilarsMap 实现(hugegraph #1523)
使用 tokenless 方式来更新 coverage(hugegraph #1529)
改进 project update 接口的代码(hugegraph #1537)
允许从 option() 访问 GRAPH_STORE(hugegraph #1546)
优化 kout/kneighbor 的 count 查询以避免拷贝集合(hugegraph #1550)
优化 shortestpath 遍历方式,以数据量少的一端优先遍历(hugegraph #1569)
完善 rocksdb.data_disks 配置项的 allowed keys 提示信息(hugegraph #1585)
为 number id 优化 OLTP 遍历中的 id2code 方法性能(hugegraph #1623)
优化 HugeElement.getProperties() 返回 Collection<Property>(hugegraph #1624)
增加 APACHE PROPOSAL 文件(hugegraph #1644)
改进 close tx 的流程(hugegraph #1655)
当 reset() 时为 MySQL close 捕获所有类型异常(hugegraph #1661)
改进 OLAP property 模块代码(hugegraph #1675)
改进查询模块的执行性能(hugegraph #1711)
Loader
支持导入 Parquet 格式文件(hugegraph-loader #174)
支持 HDFS Kerberos 权限验证(hugegraph-loader #176)
支持 HTTPS 协议连接到服务端导入数据(hugegraph-loader #183)
修复 trust store file 路径问题(hugegraph-loader #186)
处理 loading mode 重置的异常(hugegraph-loader #187)
增加在插入数据时对非空属性的检查(hugegraph-loader #190)
修复客户端与服务端时区不同导致的时间判断问题(hugegraph-loader #192)
优化数据解析性能(hugegraph-loader #194)
当用户指定了文件头时,检查其必须不为空(hugegraph-loader #195)
修复示例程序中 MySQL struct.json 格式问题(hugegraph-loader #198)
修复顶点边导入速度不的问题(hugegraph-loader #200 #205)
当导入启用 check-vertex 时,确保先导入顶点再导入边(hugegraph-loader #206)
修复边 Json 数据导入格式不统一时数组溢出的问题(hugegraph-loader #211)
修复因边 mapping 文件不存在导致的 NPE 问题(hugegraph-loader #213)
修复读取时间可能出现负数的问题(hugegraph-loader #215)
改进目录文件的日志打印(hugegraph-loader #223)
改进 loader 的的 Schema 处理流程(hugegraph-loader #230)
Tools
支持 HTTPS 协议(hugegraph-tools #71)
移除 --protocol 参数,直接从URL中自动提取(hugegraph-tools #72)
支持将数据 dump 到 HDFS 文件系统(hugegraph-tools #73)
修复 trust store file 路径问题(hugegraph-tools #75)
支持权限信息的备份恢复(hugegraph-tools #76)
支持无参数的 Printer 打印(hugegraph-tools #79)
修复 MacOS free_memory 计算问题(hugegraph-tools #82)
支持备份恢复时指定线程数hugegraph-tools #83)
支持动态创建图、克隆图、删除图等命令(hugegraph-tools #95)
来自:https://mp.weixin.qq.com/s/oBOuTMCO8Z4AOv8xOFsivg
相关文章