HugeGraph 是一款开源图数据库(Graph Database)系统(GitHub 项目地址),可以存储海量的顶点(Vertex)和边(Edge), 实现了Apache TinkerPop 3 框架,支持Gremlin查询语言。

HugeGraph 介绍

概要

HugeGraph 是一款开源图数据库(Graph Database)系统(GitHub 项目地址),可以存储海量的顶点(Vertex)和边(Edge), 实现了Apache TinkerPop 3 框架,支持Gremlin查询语言。 HugeGraph 支持多用户并行操作,用户可输入 Gremlin 查询语句,并及时得到图查询结果。也可在用户程序中调用 HugeGraph API 进行图分析或查询。

本系统的主要应用场景是解决百度安全事业部所面对的反欺诈、威胁情报、黑产打击等业务的图数据存储和建模分析需求,在此基础上逐步扩展及支持了更多的通用图应用。

HugeGraph 与 TitanDB 的异同

HugeGraph 和 TitanDB 都是基于Apache TinkerPop 3框架的图数据库,均支持[Gremlin](https://tinkerpop.apache .org/gremlin.html)图查询语言,在使用方法和接口方面具有很多相似的地方。然而 HugeGraph 是全新设计开发的,其代码结构清晰,功能较为丰富,接口更为友好等特点。

HugeGraph 相对于 TitanDB 而言,其主要特点如下:

  • HugeGraph 拥有较为完善的工具组件。HugeGraph 目前有 HugeApi、HugeGraph-Client、HugeGraph-Loader、HugeGraph-Studio、HugeGraph-Spark 等完善的工具组件,可以完成系统集成、数据载入、图可视化查询、Spark 连接等功能;
  • HugeGraph 具有 Server 和 Client 的概念,第三方系统可以通过 jar 引用、client、api 等多种方式接入,而 TitanDB 仅支持 jar 引用方式接入。
  • HugeGraph 的 Schema 需要显式定义,所有的插入和查询均需要通过严格的 schema 校验,目前暂不支持 schema 的隐式创建。
  • HugeGraph 充分利用后端存储系统的特点来实现数据高效存取,而 TitanDB 以统一的 Kv 结构无视后端的差异性。
  • HugeGraph 的更新操作可以实现按需操作(例如:更新某个属性)性能更好。TitanDB 的更新是 read and update 方式。
  • HugeGraph 的 VertexId 和 EdgeId 均支持拼接,可实现自动去重,同时查询性能更好。TitanDB 的所有 Id 均是自动生成,查询需要经索引。

特性

HugeGraph 支持在线及离线环境下的图操作,支持批量导入数据,支持高效的复杂关联关系分析,并且能够与大数据平台无缝集成。

本系统具备如下特点:
  • 基于 TinkerPop 3 框架实现,支持 Gremlin 图查询语言
  • 支持从 TXT、CSV、JSON 等格式的文件中批量导入数据
  • 具备独立的 Schema 元数据信息,方便第三方系统集成
  • 具备可视化操作界面,降低用户使用门槛
  • 存储系统采用插件方式,支持 RocksDB、Cassandra、ScyllaDB、HBase 及 MySQL 等多种后端
  • 优化的图接口:最短路径(Shortest Path)、K 步连通子图(K-neighbor)、K 步到达邻接点(K-out)等
  • 支持属性图,顶点和边均可添加属性,支持丰富的属性类型
  • 可以对边和顶点的属性建立索引,支持精确查询、范围查询、全文检索
  • 支持多顶点 ID 策略:支持主键 ID、支持自动生成 ID、支持用户自定义字符串 ID、支持用户自定义数字 ID
  • 与 Hadoop、Spark GraphX 等大数据系统集成,支持 Bulk Load 操作

模块

  • HugeGraph-Server: HugeGraph-Server 是 HugeGraph 项目的核心部分,包含 Core、Backend、API 等子模块;
    • Core:图引擎实现,向下连接 Backend 模块,向上支持 API 模块;
    • Backend:实现将图数据存储到后端,支持的后端包括:Memory、Cassandra、ScyllaDB、RocksDB、HBase 及 MySQL,用户根据实际情况选择一种即可;
    • API:内置 REST Server,向用户提供 RESTful API,同时完全兼容 Gremlin 查询。
  • HugeGraph-Client:HugeGraph-Client 提供了 RESTful API 的客户端,用于连接 HugeGraph-Server,目前仅实现 Java 版,其他语言用户可自行实现;
  • HugeGraph-Loader:HugeGraph-Loader 是基于 HugeGraph-Client 的数据导入工具,将普通文本数据转化为图形的顶点和边并插入图形数据库中;
  • HugeGraph-Spark:HugeGraph-Spark 能在图上做并行计算,例如 PageRank 算法等;
  • HugeGraph-Studio:HugeGraph-Studio 是 HugeGraph 的 Web 可视化工具,可用于执行 Gremlin 语句及展示图;
  • HugeGraph-Tools:HugeGraph-Tools 是 HugeGraph 的部署和管理工具,包括管理图、备份/恢复、Gremlin 执行等功能。

引用参考HugeGraph 官方文档