HugeGraph是由百度安全团队自主研发并于2018年8月开源的大规模图数据库系统,基于Apache 2.0 License协议发布。其研发源于安全业务场景中对百亿级关联数据分析的需求,初期尝试改造Titan未果后选择重新开发,现已进入Apache孵化器成为孵化项目。
该系统采用Property Graph数据模型,兼容Apache TinkerPop3框架并支持Gremlin查询语言,具备OLTP在线事务处理和OLAP离线分析能力。支持百亿级顶点和边的快速导入与毫秒级关联查询,提供RESTful API、可视化IDE及多种数据导入工具,可集成Hadoop、Spark等大数据平台进行分布式计算。应用于网络安全、金融风控、社交分析等领域,包括威胁情报分析、设备关系图谱构建和欺诈检测等场景。2024年发布的1.5.0版本需Java11运行环境,早期版本最高支持到Java8。
图数据库简介
图数据库(Graph Database)是一种以图结构进行语义查询,并使用节点、边和属性来表示和存储数据的数据库。图数据库的关键概念是边,通过边将顶点连接在一起,从而进行快速的图检索操作。
图数据库优势
与传统关系型数据库相比,图数据库的优势有:
1.可以很自然的表达现实世界中的实体及其关联关系(对应图的顶点及边);
2.灵活的数据模型可以适应不断变化的业务需求;
3.灵活的图查询语言,轻松实现复杂关系网络的分析;
4.关系型数据库在遍历关系网络并抽取信息的能力非常弱,图数据库则为此而生;
5.关系型数据库在规模庞大时很难做多层关联关系分析(Join操作往往消耗过长时间而失败),图数据库则天然把关联数据连接在一起,无需耗时耗内存的Join操作,可以保持常数级时间复杂度。
HugeGraph图查询示例
多层关联:查询一个人的好友的好友有哪些?
最短路径:查询两个点之间的最短路径。
连通子图:查询一个点在K步以内相连接的所有邻接点(K=1,2,3…)。
集中度测量:如PageRank、PersonalRank、特征向量集中度、亲密度等。
HugeGraph图数据库由何而来
HugeGraph是百度安全于2017年自主研发的国内首个开源图数据库,源于解决反欺诈、威胁情报、黑产打击等安全业务场景中百亿级关联数据分析的需求。
百度安全团队初期尝试了几个图数据库均无法满足百亿级以上关联数据分析的需求,开始时基于Titan改造来实现,但发现Titan代码难以修改及维护,因此决定参考Titan重新开发HugeGraph图数据库,并于2018年8月开放源代码回馈给社区,成为国内首个开源的图数据库。项目于2022年1月正式通过世界顶级开源组织Apache软件基金会的投票决议,以全票通过成为全球首个加入Apache孵化的图数据库项目,并于同年5月正式入驻Apache开启孵化。
HugeGraph采用Apache 2.0开源协议,代码完全开源。开发采用GitHub上的Pull Request工作流程,欢迎新用户和贡献者加入。社区提供ASF Slack频道和邮件列表(dev@hugegraph.apache.org)供讨论。
HugeGraph提供开源版本用于单机研究探索,并提供商业版本用于提供稳定的企业级服务。
HugeGraph项目由百度安全团队孵化并主导开发。
项目拥有活跃的开源社区,截至2023年3月,总贡献者(Contributors)数量超过80名,其中50%以上为外部贡献者。
社区通过GitHub进行代码协作,并设有邮件列表(如dev@hugegraph.apache.org)供开发者与用户讨论。
支持百亿边+快速导入,支持横向扩容。HugeGraph针对百亿级数据场景进行定制化优化,实现大数据环境下的快速导入和高效查询,同时能够对接Hadoop和Spark GraphX等已有大数据平台。
支持Gremlin图查询语言,Gremlin提供了标准、灵活、丰富的图查询语法。
支持多后端存储引擎,后端存储引擎可配置,可插件式扩展新的后端存储引擎。
支持快速的批量导入、批量导出功能,同时用户可灵活定义导入导出格式,支持CSV、TXT、JSON等格式,支持从HDFS、MySQL、SQL Server、Oracle、PostgreSQL等数据源直接导入数据。
支持厂内存储系统。
顶点、边:支持基本增删改查操作,支持有向图,支持两顶点间同一类型多条边,支持超级点。
属性:支持属性图、支持多值属性、支持多样化的属性类型、支持顶点属性追加与合并。
元数据:支持丰富的Schema校验,如属性是否可空(可选),支持Schema动态修改。
索引:支持二级索引、范围索引、全文索引,支持联合索引。
事务:遵循Tinkerpop事务规范,支持Read Committed级别事务。
多顶点ID策略:支持主键ID、支持自动生成ID、支持用户自定义字符串ID、支持用户自定义数字ID。
大规模数据:支持批量插入顶点/边、支持超级顶点、支持流式分页获取、支持Shard并行获取。
优化的图接口:最短路径(Shortest Path)、K步连通子图(K-neighbor)、K步到达邻接点(K-out)等。
其它:支持图变量(Graph Variables)、兼容性上已通过Apache Tinkerpop官方测试用例90%兼容测试。
多图实例:支持多个图实例,图之间数据相互隔离。
用户认证:支持多用户,支持用户权限认证,支持用户角色访问控制。可轻松对接现有用户认证系统。
监控接口:支持系统状态监控、API访问时间监控、性能数据监控等。
备份恢复:支持在线备份、支持备份数据的恢复。
云环境适应:兼容多个云厂商平台,轻松对接公有云、私有云和混合云等多种云环境。
商业版本:商业版本提供技术咨询、解决方案、定制化需求等服务。
接口支持
Gremlin接口:支持标准、灵活的Gremlin查询接口。
Restful API接口:支持功能丰富、简单易用的HTTP Restful接口。提供顶点、边、元数据等的基本操作接口;此外提供各种高级查询接口,包括最短路径、多路径、交叉点、N步可达邻居等。
Java Client客户端:支持Java语言客户端,用户可根据自身需求实现其它语言客户端。
周边工具
一键部署(hugegraph-tools/deploy):通过部署工具简单轻松的一键部署所有组件。
可视化界面(hugegraph-studio):基于Web的可视化环境,提供图操作界面、图数据展示与分析。
导入工具(hugegraph-loader):数据导入工具,支持从txt、csv、json等格式文件导入到HugeGraph。
导出工具(hugegraph-tools/dump):数据导出工具,可将顶点及关联边导出到文件,支持用户实现formatter自定义格式。
备份恢复工具(hugegraph-tools/backup&restore):数据备份与恢复工具,支持定时备份、手动备份、手动恢复等功能。
Gremlin任务工具(hugegraph-tools/gremlin):Gremlin任务执行工具,支持同步执行Gremlin查询与分析(OLTP),支持异步执行Gremlin任务(OLAP)。
集成Spark GraphX工具(hugegraph-spark):基于Spark GraphX的大数据环境下的图分析工具。
HugeGraph采用Property Graph数据模型,实现了Apache TinkerPop3框架并完全兼容Gremlin查询语言。自1.0.0版本起新增支持Cypher查询语言,目前已同时支持Gremlin与Cypher两大主流图查询语言。
HugeGraph采用EdgeCut分区方案,并支持基于Raft共识机制的分布式后端HStore以提供高可用性。系统支持水平扩容和分布式部署,可实现从单机到PB级集群的无缝迁移。HugeGraph内置并支持插件式扩展多种后端存储引擎,包括RocksDB、Cassandra、MySQL、PostgreSQL等。
通过HugeGraph-AI组件集成大语言模型,支持GraphRAG智能问答和自动化知识图谱构建,并内置20余种图机器学习算法。系统支持大规模并行图计算,可与Hadoop、Spark等大数据平台集成进行离线分析。
HugeGraph支持事务操作,服务端通过线程绑定实现隔离,底层依赖后端数据库保证原子性。