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以一致性为代价优先考虑可用性。