开放式 DBMS Nebula Graph 3.2 已发布,旨在高效存储大量互连数据,形成包含数十亿个节点和数万亿个连接的图。 该项目是用 C++ 编写的,并根据 Apache 2.0 许可证分发。 用于访问 DBMS 的客户端库是为 Go、Python 和 Java 语言准备的。
DBMS采用分布式架构,不共享资源(shared-nothing),这意味着启动独立且自给自足的图形查询处理进程和存储存储进程。 元服务协调数据的移动并提供有关图的元信息。 为了保证数据的一致性,采用了基于RAFT算法的协议。
Nebula Graph的主要特点:
- 通过将访问限制为仅经过身份验证的用户(其权限通过基于角色的访问控制 (RBAC) 系统设置)来确保安全。
- 能够连接不同类型的存储引擎。 支持使用新算法扩展查询生成语言。
- 确保读取或写入数据时的延迟最小并保持高吞吐量。 在一个图形节点和三个存储节点的集群、一个 632 GB 的数据库(包括 1.2 亿个顶点和 8.4 亿条边的图形)中进行测试时,延迟为几毫秒,吞吐量高达每秒 140 万个请求。
- 线性可扩展性。
- 一种类似于 SQL 的查询语言,功能强大且易于理解。 支持的操作包括 GO(图形顶点的双向遍历)、GROUP BY、ORDER BY、LIMIT、UNION、UNION DISTINCT、INTERSECT、MINUS、PIPE(使用先前查询的结果)。 支持索引和用户定义的变量。
- 确保高可用性和故障恢复能力。
- 支持使用数据库状态片段创建快照,以简化备份副本的创建。
- 适合工业用途(已在京东、美团、小红书的基础设施中使用)。
- 能够更改数据存储方案并更新它,而不会停止或影响正在进行的操作。
- TTL 支持以限制数据生命周期。
- 用于管理设置和存储主机的命令。
- 用于管理工作和安排工作启动的工具(当前支持的工作是 COMPACT 和 FLUSH)。
- 查找给定顶点之间的完整路径和最短路径的操作。
- 用于与第三方分析平台集成的 OLAP 接口。
- 用于从 CSV 文件或 Spark 导入数据的实用程序。
- 使用 Prometheus 和 Grafana 导出用于监控的指标。
- Nebula Graph Studio Web 界面,用于可视化图形操作、图形导航、设计数据存储和加载方案。
在新版本中:
- 添加了对 extract() 函数的支持,以提取与给定表达式匹配的子字符串。
- 优化配置文件中的设置。
- 添加了优化规则以删除无用的 AppendVertices 运算符并禁用边缘和顶点过滤器的应用。
- 为 JOIN 操作以及 Traverse 和 AppendVertices 运算符复制的数据量已减少。
- SHORTEST PATH 和 SUBGRAPH 的性能优化
- 改进了内存分配(启用 Arena Allocator)。
来源: opennet.ru