目的
JanusGraph是目前使用率较高的开源图数据库。它的架构如下图:

从图上我们可以看到JanusGraph具备如下特点:
1. 提供OLTP图遍历查询功能。
2. 提供OLAP图计算分析功能。
3. 图存储数据的事务管理。
4. 可以兼容多种三方存储(Cassandra,HBase等)。
5. 可以兼容多种三方索引(Elasticsearch,Solr等)。
JanusGraph HBase存储
Apache HBase是一个分布式的和可扩展的大数据仓库,能很容易存储数十亿行的数据。而且在大数据存储的情况下HBase依然能够保持很高的实时精准查询效率。所以非常适合作为JanusGraph的Storage。
JanusGraph HBase行存储结构
HBase作为JanusGraph的Storage,每一行可以存储图顶点的属性以及其相邻边和顶点的信息。这个主要利用HBase的ColumFamliy以及Cell的动态添加特性。HBase的rowkey可以包含顶点ID信息,定义property和edge两个ColumnFamliy分别用于存储属性和相邻顶点和边的信息,如下图:

JanusGraph HBase行存储结构
Edge ColumnFamliy的Column由边的标签、方向、相邻顶点id以及相邻边的id组成。Column的值可以存储一些相邻节点或者边的属性。
Property ColumnFamliy的Column由边属性的key值组成。Column的值可以存储一些属性。如下图:

说明:图中的属性名称都是采取key值存储,Key值就是代表属性名称的数值,这样存的化有利于节约存储空间。

网友评论