转载自:https://blog.csdn.net/javeme/article/details/82083617
HugeGraph简介
图数据库(Graph Database)是一种使用顶点、边和属性来表示与存储数据,并以图结构进行语义查询的数据库。图数据库的关键概念是边,通过边将顶点连接在一起,从而进行快速的图检索操作。
HugeGraph是一款开源图数据库系统,可以存储海量的顶点(Vertex)和边(Edge), 实现了Apache TinkerPop 3框架,支持Gremlin查询语言。 HugeGraph支持多用户并行操作,用户可输入Gremlin查询语句,并及时得到图查询结果。也可在用户程序中调用HugeGraph API进行图分析或查询。
下面是一个使用HugeGraph构建的《红楼梦》主要家族成员图谱:
HugeGraph概览
特性
- 易用:HugeGraph支持Gremlin图查询语言与Restful API,同时提供图检索常用接口,具备功能齐全的周边工具,轻松实现基于图的各种查询分析运算。
- 高效:HugeGraph在图存储和图计算方面做了深度优化,提供多种批量导入工具,轻松完成百亿数据快速导入,通过优化过的查询达到图检索的毫秒级响应。支持数千用户并发的在线实时操作。
- 通用:HugeGraph支持Apache Gremlin标准图查询语言和Property Graph标准图建模方法,支持基于图的OLTP和OLAP方案。集成Apache Hadoop及Apache Spark大数据平台。
- 可扩展:支持分布式存储、数据多副本及横向扩容,内置多种后端存储引擎(包括RocksDB、Cassandra、ScyllaDB、HBase、Palo、MySQL以及InMemory等),也可插件式轻松扩展后端存储引擎。
- 开放:HugeGraph代码开源(Apache 2 License),客户可自主修改定制,选择性回馈开源社区。
架构
HugeGraph软件架构图:
HugeGraph功能
优势功能
- 支持百亿边+快速导入,支持横向扩容。HugeGraph针对海量数据场景进行定制化优化,实现大数据环境下的快速导入和高效查询,同时能够对接Hadoop和Spark GraphX等已有大数据平台。
- 支持Gremlin图查询语言,Gremlin提供了标准、灵活、丰富的图查询语法。
- 支持多后端存储引擎,后端存储引擎可配置,可插件式扩展新的后端存储引擎。
- 支持快速的批量导入、批量导出功能,同时用户可灵活定义导入导出格式。
- 支持百度存储系统。
基础功能
- 顶点、边:支持基本增删改查操作,支持有向图,支持两顶点间同一类型多条边。
- 属性:支持属性图、支持多值属性、支持多样化的属性类型、支持顶点属性追加与合并。
- 元数据:支持丰富的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。
- 可视化界面:基于Web的可视化环境,提供图操作界面、图数据展示与分析。参考hugegraph-studio。
- 导入工具:数据导入工具,支持从txt、csv、json等格式文件导入到HugeGraph。参考hugegraph-loader。
- 导出工具:数据导出工具,可将顶点及关联边导出到文件,支持用户实现formatter自定义格式。参考hugegraph-tools/dump。
- 备份恢复工具:数据备份与恢复工具,支持定时备份、手动备份、手动恢复等功能。参考hugegraph-tools/backup&restore。
- Gremlin任务工具:Gremlin任务执行工具,支持同步执行Gremlin查询与分析(OLTP),支持异步执行Gremlin任务(OLAP)。参考hugegraph-tools/gremlin。
- 集成Spark GraphX工具:基于Spark GraphX的大数据环境下的图分析工具。参考hugegraph-spark。
欢迎大家贡献HugeGraph开源社区,下面是GitHub代码仓库地址:
https://github.com/hugegraph/hugegraph