网站首页 > 技术文章 正文
JanusGraph图形数据库集群由一个或多个JanusGraph实例组成。要打开JanusGraph实例,必须提供一个配置,指定如何设置JanusGraph。JanusGraph配置指定JanusGraph应该使用哪些组件,控制JanusGraph部署的所有操作方面,并提供许多调优选项,以从JanusGraph集群获得最大性能。从源码的组织形式上来看,无论是后端选型还是对应的索引引擎的选择方式还是比较灵活的。同时这业务后续的拓展提供了便利。
从简单实用上来看,janusgraph必须配置一种后端持久化引擎,而索引为非必选项。但是通常生产环境,处于性能的考量都会搭建索引集群以优化janusgraph的查询性能。
JanusGraph配置至少必须定义JanusGraph应用作存储后端的持久性引擎。存储后端列出了所有支持的持久性引擎以及如何分别配置它们。如果需要高级图形查询支持(例如全文搜索、地理搜索或范围查询),则必须配置额外的索引后端。如果查询性能是一个问题,那么应该启用缓存。JanusGraph缓存中介绍了缓存配置和调整。缓存是另一篇文章的重点,后续展开。
配置化
Cassandra+ElasticSearch
storage.backend=cql
storage.hostname=localhost
index.search.backend=elasticsearch
index.search.hostname=127.xxx.xxx.1, 127.xxx.xxx.2
index.search.elasticsearch.client-only=true
HBase+Caching
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
Berkeleyje+ElasticSearch
storage.backend=berkeleyje
storage.directory=/tmp/graph
# 嵌入式elasticsearch, 通常es集群大家都自建调优
index.search.backend=elasticsearch
index.search.directory=/tmp/searchindex
index.search.elasticsearch.client-only=false
index.search.elasticsearch.local-mode=true
使用
如何将配置提供给JanusGraph取决于安装模式。
- JanusGraph发行版包含一个命令行 Gremlin Console,使其易于入门并与JanusGraph交互。调用bin/gremlin.sh(Unix/Linux)或bin/gremin.bat(Windows)以启动控制台,内部原理使用到了一个JanusGraphFactory的类,用于装载配置。
graph = JanusGraphFactory.open('path/to/configuration.properties')
- JanusGraph Embedded(嵌入式JanusGraph), JanusGraphFactory还可以用于从基于JVM的用户应用程序中打开嵌入式JanusGraph图形实例。在这种情况下,JanusGraph是用户应用程序的一部分,应用程序可以通过其公共API直接调用JanusGraph。
JanusGraph Server
JanusGraph本身只是一组没有执行线程的jar文件。连接和使用JanusGraph数据库有两种基本模式:
- JanusGraph可以通过在客户端程序中嵌入JanusGraph调用来使用,该程序提供执行线程。
- JanusGraph打包了一个长时间运行的服务器进程,该进程在启动时允许远程客户端或在单独程序中运行的逻辑进行JanusGraph调用。这个长时间运行的服务器进程称为JanusGraph服务器。
这个动作其实和之前启动本地JanusGraphServer效果是一样的。
配置JanusGraph服务器是通过位于中的JanusGraph Server yaml配置文件完成的/JanusGraph发行版中的conf/gremlin服务器目录。要使用图形实例(JanusGraph)配置JanusGraph Server,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]}}}}
...
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
Note:要更改GLOBAL_OFFLINE选项,请执行以下步骤:
- 关闭集群中除一个JanusGraph实例外的所有实例
- 连接到单个实例
- 确保关闭所有正在运行的事务
- 确保没有启动新事务(即集群必须脱机)
- 打开管理API
- 更改配置选项
- 调用commit,它将自动关闭图形实例
- 重新启动所有实例
猜你喜欢
- 2024-10-26 读图数据库实战笔记01_初识图 图数据库查询
- 2024-10-26 (一)图数据库概览第一讲 图数据库教程
- 2024-10-26 一、图数据库系统简介 图数据库原理是什么
- 2024-10-26 「图」完全托管的图形数据库服务Amazon Neptune上线
- 2024-10-26 (十四) JanusGraph 索引管理 索引图英文翻译
- 2024-10-26 (十六) JanusGraph部署架构 jgrapht
- 2024-10-26 (十) JanusGraph事务机制 事务型结构数据流图的特点是
- 2024-10-26 (十三) JanusGraph 本体管理高级特性
- 2024-10-26 浅谈图数据库 图数据库原理
- 2024-10-26 高薪程序员必备知识:图数据库 图数据库 入门
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)