图数据库JanusGraph实战[1]: JanusGraph简介
图数据库JanusGraph实战是一个系列文章,将全面介绍JanusGraph的各个方面。
本文是该系列的篇《图数据库JanusGraph实战[1]: JanusGraph简介》,主要包括JanusGraph的介绍、JanusGraph与Tinkerpop的关系以及JanusGraph与Neo4j的简单对比。
JanusGraph介绍
JanusGraph是一个开源的分布式图数据库。它的前身是的开源图数据库Titan,但Titan被DataStax收购之后就不再开源了。JanusGraph是在原Titan的基础上继续以开源的形式开发和发布,它的授权许可是Apache2 license,具有很好的商用友好性。
JanusGraph于2017年发布0.1.0版本,当前(截止2018-12-06)新版本为0.3.1。JanusGraph 具有很好的扩展性,通过多机集群可支持存储和查询数百亿的顶点和边的图数据。JanusGraph是一个事务数据库,支持大量用户高并发地执行复杂的实时图遍历。
它提供了如下特性:
支持数据和用户增长的弹性和线性扩展;
通过数据分发和复制来提升性能和容错;
支持多数据中心的高可用和热备份;
支持ACID 和终一致性;
支持多种后端存储:
Apache Cassandra
Apache HBase
Google Cloud Bigtable
Oracle BerkeleyDB
支持全局的图数据分析,报表以及和如下大数据平台的ETL集成:
Apache Spark
Apache Giraph
Apache Hadoop
支持geo, 数值范围以及通过如下工具进行全文检索:
ElasticSearch
Apache Solr
Apache Lucene
支持与Apache TinkerPop图栈进行原生集成:
Gremlin 图查询语言
Gremlin 图服务器
Gremlin 应用
在Apache 2 license下开源
可以通过如下工具来可视化存储在JanusGraph中的图数据:
Cytoscape
Apache TinkerPop的Gephi插件
Graphexp
KeyLines by Cambridge Intelligence
Linkurious
详细参见文末JanusGraph官网链接
JanusGraph与Tinkerpop
经常有朋友询问这两者之间的关系,这里简单聊一下。
想要深入了解JanusGraph,必须了解Tinkerpop。Tinkerpop是Apache基金会下的一个开源的图数据库与图计算框架(OLTP与OLAP),JanusGraph与Tinkerpop的关系可以认为是JanusGraph是基于Tinkerpop这个框架来开发的。
Tinkerpop有个组件叫Gremlin,它是一门用于图操作和图遍历的语言(也称查询语言)。Gremlin Console 和Gremlin Server分别提供了控制台和远程执行Gremlin查询语言的方式。Gremlin Server在JanusGraph中被成为JanusGraph Server。
Tinkerpop这个图数据库与图计算框架被很多厂商采用,比如百度开源的HugeGraph,华为的图引擎服务GES等。详细参见文末Tinkerpop官网链接
JanusGraph与Neo4j
相同点
Neo4j和JanusGraph都是非常的图数据库,都支持ACID,都是基于Java语言开发等等。
不同点
[1] 市场占比
Neo4j目前图数据库市场份额排的图数据库,占比达45%。
JanusGraph是图数据库中的一颗新星,发展速度很快,目前已经从2017年第13名上升到第7名,占比1.26%。详细排名参考文末链接。
[2] 技术特点
Neo4j为用户提供了一站式服务,生态成熟、工具齐全,而JanusGraph由于其灵活的架构,对后端存储和索引提供了很多选择,需要用户自己组合。从某种程度上来说,使用JanusGraph对团队的技术能力要求更高。
[3] 查询语言
Neo4j使用Cypher查询语言操作和遍历图数据,而JanusGraph用Gremlin语言。
[4] 开源情况
Neo4j区分社区版和企业版,社区版开源,企业版闭源。而JanusGraph无版本区分,均开源。
[5] 分布式
Neo4j支持高可用集群,但不支持分布式。JanusGraph是一个分布式的图数据库。
参考资料:
[1] http://janusgraph.org/
[2] http://tinkerpop.apache.org/
[3] https://db-engines.com/en/ranking/graph+dbms
相关文章