跳到内容

配置

JanusGraph图数据库集群由一个或多个JanusGraph实例组成。要打开一个JanusGraph实例,必须提供一个配置,指定如何设置JanusGraph。

JanusGraph配置指定JanusGraph应使用哪些组件,控制JanusGraph部署的所有操作方面,并提供许多调优选项,以从JanusGraph集群获得最大性能。

至少,JanusGraph配置必须定义JanusGraph应作为存储后端使用的持久性引擎。存储后端列出了所有支持的持久性引擎以及如何分别配置它们。如果需要高级图查询支持(例如全文搜索、地理搜索或范围查询),则必须配置一个额外的索引后端。有关详细信息,请参阅索引后端。如果查询性能是关注点,则应启用缓存。缓存配置和调优在JanusGraph缓存中描述。

配置示例

下面是一些示例配置文件,以演示如何配置最常用的存储后端、索引系统和性能组件。这只涵盖了可用配置选项的一小部分。有关所有选项的完整列表,请参阅配置参考

Cassandra+Elasticsearch

设置JanusGraph使用本地运行的Cassandra持久性引擎和远程Elasticsearch索引系统。

storage.backend=cql
storage.hostname=localhost

index.search.backend=elasticsearch
index.search.hostname=100.100.101.1, 100.100.101.2
index.search.elasticsearch.client-only=true

HBase+缓存

设置JanusGraph使用远程运行的HBase持久性引擎,并使用JanusGraph的缓存组件以获得更好的性能。

storage.backend=hbase
storage.hostname=100.100.101.1
storage.port=2181

cache.db-cache = true
cache.db-cache-clean-wait = 20
cache.db-cache-time = 180000
cache.db-cache-size = 0.5

BerkeleyDB

设置JanusGraph使用BerkeleyDB作为嵌入式持久性引擎,Elasticsearch作为嵌入式索引系统。

storage.backend=berkeleyje
storage.directory=/tmp/graph

index.search.backend=elasticsearch
index.search.directory=/tmp/searchindex
index.search.elasticsearch.client-only=false
index.search.elasticsearch.local-mode=true

配置参考详细描述了所有这些配置选项。JanusGraph分发版的conf目录包含额外的配置示例。

更多示例

conf/目录中有几个示例配置文件,可用于快速开始使用JanusGraph。可以将这些文件的路径传递给JanusGraphFactory.open(...),如下所示

// Connect to Cassandra on localhost using a default configuration
graph = JanusGraphFactory.open("conf/janusgraph-cql.properties")
// Connect to HBase on localhost using a default configuration
graph = JanusGraphFactory.open("conf/janusgraph-hbase.properties")

使用配置

如何向JanusGraph提供配置取决于实例化模式。

JanusGraphFactory

Gremlin控制台

JanusGraph分发版包含一个命令行Gremlin控制台,可以轻松开始使用JanusGraph并与其交互。调用bin/gremlin.sh(Unix/Linux)或bin/gremlin.bat(Windows)启动控制台,然后使用工厂打开一个JanusGraph图,配置存储在可访问的属性配置文件中。

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

JanusGraph嵌入式

JanusGraphFactory还可以用于从基于JVM的用户应用程序中打开嵌入式JanusGraph图实例。在这种情况下,JanusGraph是用户应用程序的一部分,应用程序可以直接通过其公共API调用JanusGraph。

短代码

如果JanusGraph图集群之前已配置和/或只需要定义存储后端,JanusGraphFactory接受存储后端名称和主机名或目录的冒号分隔字符串表示。

graph = JanusGraphFactory.open('cql:localhost')
graph = JanusGraphFactory.open('berkeleyje:/tmp/graph')

JanusGraph 服务器

JanusGraph本身只是一组jar文件,没有执行线程。连接和使用JanusGraph数据库有两种基本模式

  1. 可以通过将JanusGraph调用嵌入到客户端程序中来使用JanusGraph,其中程序提供执行线程。

  2. JanusGraph打包了一个长时间运行的服务器进程,启动后允许远程客户端或在单独程序中运行的逻辑进行JanusGraph调用。这个长时间运行的服务器进程被称为JanusGraph服务器

对于JanusGraph服务器,JanusGraph使用Apache TinkerPop栈的Gremlin服务器来处理客户端请求。JanusGraph为JanusGraph服务器提供了一个开箱即用的配置,用于快速启动,但可以更改配置以提供广泛的服务器功能。

JanusGraph服务器的配置通过JanusGraph分发版中位于./conf/gremlin-server目录下的JanusGraph服务器yaml配置文件完成。要使用图实例(JanusGraph)配置JanusGraph服务器,JanusGraph服务器配置文件需要以下设置

...
graphs: {
  graph: conf/janusgraph-berkeleyje.properties
}
scriptEngines: {
  gremlin-groovy: {
    plugins: { org.janusgraph.graphdb.tinkerpop.plugin.JanusGraphGremlinPlugin: {},
               org.apache.tinkerpop.gremlin.server.jsr223.GremlinServerGremlinPlugin: {},
               org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin: {},
               org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin: {classImports: [java.lang.Math], methodImports: [java.lang.Math#*]},
               org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: {files: [scripts/empty-sample.groovy]}}}}
...

graphs的条目定义了到特定JanusGraph配置的绑定。在上述情况下,它将graph绑定到conf/janusgraph-berkeleyje.properties的JanusGraph配置。plugins条目启用JanusGraph Gremlin插件,该插件启用JanusGraph类的自动导入,以便可以在远程提交的脚本中引用它们。

JanusGraph服务器中了解更多关于配置和使用JanusGraph服务器的信息。

服务器分发

JanusGraph zip文件包含一个快速启动服务器组件,有助于更容易地开始使用Gremlin Server和JanusGraph。调用bin/janusgraph.sh start以启动带有Cassandra和Elasticsearch的Gremlin Server。

注意

出于安全原因,Elasticsearch以及因此janusgraph.sh必须在非root帐户下运行

注意

从0.5.1开始,这仅包含在完整软件包版本中。

全局配置

JanusGraph区分本地和全局配置选项。本地配置选项适用于单个JanusGraph实例。全局配置选项适用于集群中的所有实例。更具体地说,JanusGraph区分以下五种配置选项范围

  • LOCAL:这些选项仅适用于单个JanusGraph实例,并在初始化JanusGraph实例时提供的配置中指定。

  • MASKABLE:这些配置选项可以通过本地配置文件为单个JanusGraph实例覆盖。如果本地配置文件未指定该选项,则其值从全局JanusGraph集群配置中读取。

  • GLOBAL:这些选项始终从集群配置中读取,并且不能在实例基础上覆盖。

  • GLOBAL_OFFLINE:与GLOBAL类似,但更改这些选项需要重启集群以确保整个集群中的值相同。

  • FIXED:与GLOBAL类似,但一旦JanusGraph集群初始化,该值就无法更改。

当集群中的第一个JanusGraph实例启动时,全局配置选项从提供的本地配置文件中初始化。随后更改全局配置选项通过JanusGraph的管理API完成。要访问管理API,请在打开的JanusGraph实例句柄g上调用g.getManagementSystem()。例如,要更改JanusGraph集群上的默认缓存行为

mgmt = graph.openManagement()
mgmt.get('cache.db-cache')
// Prints the current config setting
mgmt.set('cache.db-cache', true)
// Changes option
mgmt.get('cache.db-cache')
// Prints 'true'
mgmt.commit()
// Changes take effect

更改离线选项

更改配置选项不影响正在运行的实例,仅适用于新启动的实例。更改GLOBAL_OFFLINE配置选项需要重启集群,以便更改立即对所有实例生效。要更改GLOBAL_OFFLINE选项,请遵循以下步骤

  • 关闭集群中除一个JanusGraph实例外的所有实例
  • 连接到单个实例
  • 确保所有正在运行的事务都已关闭
  • 确保没有启动新事务(即集群必须处于离线状态)
  • 打开管理API
  • 更改配置选项
  • 调用commit,它将自动关闭图实例
  • 重启所有实例

有关更多信息,包括每个选项的配置范围,请参阅配置参考中的完整配置选项列表。