JanusGraph 旨在提供不止一台机器的图数据的存储和计算能力。实时的图数据遍历和分析查询是JaunsGraph的基本特性。本节将讲解JanusGraph的特性和所支持的底层持久性解决方案。
-
JanusGraph 基本特性
- 支持海量的图数据。 JanusGraph所支持的图的大小取决于集群中机器的数量。
- 支持大并发下图的事务和操作处理。 JanusGraph的事务处理能力与集群中的机器数量成正比,并且能够毫秒级的响应在海量图数据上的复杂的遍历查询操作。
- 通过Hadoop框架支持全量图分析和批量图处理。
- 支持对大图的顶点和边进行地理位置,数值范围和全文的检索。
- 原生支持Apache TinkerPop图数据模型。
- 原生支持图形遍历语言Gremlin。
- 易于使用,通过Gremlin Server实现与编程语言无关的连接。
- 根据不同图数量级的配置来调整性能。
- 以节点为中心的索引提供节点级别的查询,来解决超级节点问题。
- 提供优化的磁盘存储方式,来提高磁盘的存储效率和访问速度。
- 源代码遵循Apache 2 license的开源许可。
-
JanusGraph基于Apache Cassandra的优势
- 持续可用,没有单点故障。
- 没有主从架构下的图读写瓶颈。
- 弹性扩展,支持增加和减少机器。
- 使用缓存来确保数据持续可用。
- 可以通过增加集群中的机器来扩大缓存。
- 基于Apache Hadoop。
- 源代码遵循Apache 2 license的开源许可。
-
JaunsGraph基于Hbase的优势
- 基于Apache Hadoop的生态系统。
- 支持强一致性。
- 支持更多机器的线性扩展。
- 读写严格一致。
- 基于Hbase tables便于Hadoop MapReduce计算。
- 支持通过JMX查看性能指标。
- 源代码遵循Apache 2 license的开源许可。
-
JanusGraph和CAP理论
Despite your best efforts, your system will experience enough faults that it will have to make a choice between reducing yield (i.e., stop answering requests) and reducing harvest (i.e., giving answers based on incomplete data). This decision should be based on business requirements.
– Coda Hale
当我们使用数据库时,需要充分考虑CAP理论(C =一致性,A =可用性,P =可分区性)。 JanusGraph支持了3种后端存储:Apache Cassandra,Apache HBase和Oracle Berkeley DB Java Edition。 注意,BerkeleyDB JE是一个非分布式数据库,通常仅用来测试和学习JanusGraph。
HBase以可用性为代价优先考虑强一致性。 Cassandra以一致性为代价优先考虑可用性。