JanusGraph图数据库系统简介

JanusGraph简介
  • JanusGraph是一个可扩展的图数据库,可以把包含数千亿个顶点和边的图存储在多机集群上。它支持事务,支持数千用户实时、并发访问存储在其中的图。
我们可以将图数据库系统的应用领域划分成以下两部分:
  • 用于联机事务图的持久化技术(通常直接实时地从应用程序中访问)。这类技术被称为图数据库,它们和“通常的”关系型数据库世界中的联机事务处理(Online Transactional Processing,OLTP)数据库是一样的。
  • 用于离线图分析的技术(通常都是按照一系列步骤执行)。这类技术被称为图计算引擎。它们可以和其他大数据分析技术看做一类,如数据挖掘和联机分析处理(Online Analytical Processing,OLAP)。
JanusGraph的功能
  • JanusGraph最大的一个好处就是:可以扩展图数据的处理,能支持实时图遍历和分析查询
  • JanusGraph是分布式的,可以自由的扩展集群节点的,因此,它可以利用很大的集群,也就可以存储很大的包含数千亿个节点和边的图。由于它又支持实时、数千用户并发遍历图和分析查询图的功能。以上这两个特点是它显著的优势。
它支持以下功能:

(1)分布式部署,因此,支持集群。
(2)可以存储大图,比如包含数千亿Vertices和edges的图。
(3)支持数千用户实时、并发访问。(并发访问肯定是实时的,这个唉,没必要强调好像)
(4)集群节点可以线性扩展,以支持更大的图和更多的并发访问用户。
(5)数据分布式存储,并且每一份数据都有多个副本,因此,有更好的计算性能和容错性。
(6)支持在多个数据中心做高可用,支持热备份。
(7)支持各种后端存储系统,目前标准支持以下四种,当然也可以增加第三方的存储系统:
Apache Cassandra®
Apache HBase®
Google Cloud Bigtable
Oracle BerkeleyDB
(8)通过集成大数据平台,比如Apache Spark、Apache Giraph、Apache Hadoop等,支持全局图数据分析、报表、ETL
(9)支持geo(Gene Expression Omnibus,基因数据分析)、numeric range(这个的含义不清楚)
(10) 集成ElasticSearch、Apache Solr、Apache Lucene等系统后,可以支持全文搜索。
(11) 原生集成Apache TinkerPop图技术栈,包括Gremlin graph query language、Gremlin graph server、Gremin applications。
(12) 开源,基于Apache 2 Licence。
(13) 通过使用以下系统可以可视化存储在JanusGraph中的图数据:
Cytoscape
Gephi plugin for Apache TinkerPop
Graphexp
KeyLines by Cambridge Intelligence
Linkurious

JanusGraph的体系结构(architecture,架构)
  • JanusGraph是模块化的体系结构(JanusGraph has a modular architecture)。

  • 它使用hadoop来做图的分析和图的批处理,使用模块化接口来做数据持久化、索引和客户端访问。在JanusGraph和磁盘之间有多个后端存储系统和多个索引系统。

它支持的外部存储系统,目前标准支持的有(当然也可以将第三方的存储系统作为JanusGraph的后端存储系统):

Apache Cassandra
Apache HBase
Oracle Berkeley DB Java Edition
Google Cloud BigTable

支持的外部索引系统:

Elasticsearch
Apache Solr
Apache Lucene

体系结构图:

在这里插入图片描述

应用使用JanusGraph的方法
  • 作为一个数据库系统,它是要用来为应用程序存储数据用的,那么应用程序应该如何使用JanusGraph来为自己存储数据呢?
一般来说,应用程序可以通过两种不同的方式来使用JanusGraph:

(1)第一种方式:可以把JanusGraph嵌入到应用程序中去,JanusGraph和应用程序处在同一个JVM中。应用程序中的客户代码(相对JanusGraph来说是客户)直接调用Gremlin去查询JanusGraph中存储的图,这种情况下外部存储系统可以是本地的,也可以处在远程。
(2)第二种方式:应用程序和Janus Graph处在两个不同JVM中,应用通过给JanusGraph提交Gremlin查询给GremlinServer,来使用JanusGraph,因为JanusGraph原生是支持Gremlin Server的。(Gremlin Server是Apache Tinkerpop中的一个组件)。

JanusGraph的配置文件
  • JanusGraph集群包含一个、或者多个JanusGraph实例。每次启动一个JanusGraph实例的时候,都必须指定JanusGraph的配置。在配置中,可以指定JanusGraph要用的组件,可以控制JanusGraph运行的各个方面,还可以指定一些JanusGraph集群的调优选项。

  • 最小的JanusGraph配置只需要指定一下JanusGraph的后端存储系统,也就是它的持久化引擎。

  • 如果要JanusGraph支持高级的图查询,就需要为JanusGraph指定一个索引后端。

  • 若果要提升JanusGraph的查询性能,就必须为JanusGraph指定缓存,指定性能调优的选项。

以上提到的后端存储系统、索引后端、缓存、调优选项等都可以在JanusGraph的配置文件中进行指定。默认情况下它的配置文件存放在JanusGraph_home/conf目录下,在JanusGraph_home/conf目录下有一些JanusGraph的示例配置文件。

下面是一个JanusGraph的示例配置文件的内容,这个文件中为JanusGraph指定了cassandra作为后端存储引擎,并且指定了elasticsearch作为索引后端。

storage.backend=cassandra
storage.hostname=localhost

index.search.backend=elasticsearch
index.search.hostname=100.100.101.1, 100.100.101.2
index.search.elasticsearch.client-only=true
JanusGraph配置文件的加载方法
  • JanusGraph的配置文件如何加载呢?

(1)对于单独安装的JanusGraph,可以在Gremlin中使用JanusGraphFactory类的方法来加载配置文件

    graph = JanusGraphFactory.open('path/to/configuration.properties')

(2)对于嵌入到应用中的JanusGraph来说,应用可以直接调用JanusGraph的公共API,只要在应用中调用JanusGraph的JanusGraphFactory就可以加载配置文件了

(3)还可以在JanusGraphFactory中使用简写来加载配置。

    graph = JanusGraphFactory.open('cassandra:localhost');
    graph = JanusGraphFactory.open('berkeleyje:/tmp/graph');
JanusGraph分布式集群的安装方法
  • JanusGraph作为一个图数据库系统,其实还是比较复杂的,它的安装可以是很简单的单机安装,也可以是很复杂的分布式安装,最不可理解的是官网(janusgraph.org)上没有专门介绍安装的文档。这里的安装方法是从IBM Developer works搜索来的,下面着重介绍单机安装
    在这里插入图片描述

(1)外部存储系统,上图左下的橙色方框,JP也集成了一个Cassandra,可以用于单一数据库使用
(2)外部索引系统,上图右下的橙色方框,JP本身集成了一个ES,这个是可选的。
(3)启动JanusGraph Server,上图中部的橙色方框,它是从Apache Tinkpop项目中的Gremlin Server来的。
(4)启动Gremlin客户端去连接JanusGraph Server,上图中部橙色方框中的小框Tinkpop API-Gremlin指的是Gremlin console这个客户端是调用了Tinkpop API去访问JanusGraph Server的。

由以上的架构分析可以看出,安装JP的过程中最少要安装一个外部存储系统。这里按照以下顺序安装:

1、安装后端存储系统。这里下载了Cassandra,同时启动Cassandra和thrift。
$cassandra_home/bin/cassandra
$cassandra_home/bin/nodetool enablethrift #开启thrift,或者也可以在启动cassandra之前,在conf/cassandra.yaml中修改start_rpc选项的值为true,那么启动cassandra同时就启动了thrift了,不需要单独启动thrift
2、安装JanusGraph。它的安装很简单,就是解压即可。
$janusgraph_home/bin/gremlin-server.sh #启动JanusGraph Server
$janusgraph_home/bin/gremlin.sh #启动gremlin console
3、在gremlin console中输入gremlin query language,新建图数据库,在其中存入vertexs,edges、vertex labels、edge labels、property key等元素,来存入图的组成元素。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值