ScyllaDB
ScyllaDB 是一个 NoSQL 数据库,采用接近硬件的“无共享”方法,优化了原始性能,充分利用了现代多核服务器,并最大限度地减少了 DevOps 的开销。ScyllaDB 与 Cassandra 和 DynamoDB 都兼容 API,但速度更快、更一致,并且总拥有成本更低。
ScyllaDB 设置与连接
ScyllaDB 与 Cassandra 完全兼容。要将其用作数据存储层
- 启动 Scylla 集群。您可以使用 Scylla Cloud、Docker、在云中或本地运行 Scylla 来完成此操作。您可以在本课程中查看有关如何使用 Docker 启动三节点 Scylla 集群的分步指南。
- 使用“cql”作为 storage.backend 运行 JanusGraph。
- 将集群中其中一个 Scylla 节点的 IP 地址指定为 storage.hostname。
分步教程
这门 Scylla 大学课程提供了使用 JanusGraph 和 ScyllaDB 作为数据存储层的分步说明。课程中的主要步骤是
- 启动虚拟机
- 安装先决条件
- 运行 JanusGraph 服务器(使用 Docker)
- 运行 Gremlin 控制台连接到新服务器(也在 Docker 中)
- 启动三节点 Scylla 集群并将其设置为 JanusGraph 服务器的数据存储
- 执行一些基本的图操作
Scylla 优化驱动程序的使用
除了通用的 cql 选项之外,JanusGraph 还提供了 scylla storage.backend 选项。
ScyllaDB 可以使用任何这些存储选项,但专用的 scylla 后端针对 ScyllaDB 进行了更好的优化。因此,建议尽可能将 scylla 后端选项与 ScyllaDB 一起使用。
scylla 存储选项包含在 janusgraph-scylla 库中,但此库未通过 janusgraph-all 发布,并且此库不是所提供的 JanusGraph 分发版的一部分。
要在 JanusGraph 中启用 scylla 选项,如果 JanusGraph 在嵌入模式下使用,则需要将 org.janusgraph:janusgraph-cql 替换为 org.janusgraph:janusgraph-scylla。
如果使用 janusgraph-all 依赖项而不是显式 JanusGraph 依赖项,则可以如下所示将 org.janusgraph:janusgraph-scylla 替换掉。
<dependencies>
<!-- Exclude `janusgraph-cql` from `janusgraph-all` -->
<dependency>
<groupId>org.janusgraph</groupId>
<artifactId>janusgraph-all</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>org.janusgraph</groupId>
<artifactId>janusgraph-cql</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Include `janusgraph-scylla` -->
<dependency>
<groupId>org.janusgraph</groupId>
<artifactId>janusgraph-scylla</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
/* Exclude `janusgraph-cql` from `janusgraph-all` */
compile("org.janusgraph:janusgraph-all:1.0.0") {
exclude group: 'org.janusgraph', module: 'janusgraph-cql'
}
/* Include `janusgraph-scylla` */
compile "org.janusgraph:janusgraph-scylla:1.0.0"
在通过标准发行版构建提供的 JanusGraph 服务器中使用 Scylla 驱动程序
注意
下面描述的手动过程是临时的,在解决问题 janusgraph/janusgraph#3580 后应替换为自动化过程。
如果需要在 JanusGraph 分发版中使用 scylla 存储选项,则需要将下一个 DataStax 提供的 CQL 驱动程序替换为 Scylla 提供的 CQL 驱动程序。默认的 JanusGraph 分发版构建只包含 DataStax 驱动程序,而不包含 Scylla 驱动程序,因为它们存在冲突。但是,可以构建相同的分发版构建,但启用 Scylla 驱动程序。为此,您可以在 JanusGraph 存储库中使用以下命令
mvn clean install -Pjanusgraph-release -Puse-scylla -DskipTests=true --batch-mode --also-make -Dgpg.skip=true
此命令将在以下目录中生成分发版构建(普通和完整分发版构建):janusgraph-dist/target/,并构建本地 JanusGraph Docker 镜像。
如果您未安装 Docker 或希望避免 Docker 镜像构建过程,您可以传递 -Pskip-docker(请注意,使用此标志时所有测试都会自动禁用)。
否则,如果您无法自行构建分发版,则可以使用 JanusGraph 提供的分发版并替换 lib 目录中的以下库(所有库都可以通过 Maven 中央仓库下载)。 - 将 org.janusgraph:janusgraph-cql 替换为 org.janusgraph:janusgraph-scylla - 将 org.janusgraph:cassandra-hadoop-util 替换为 org.janusgraph:scylla-hadoop-util - 将 com.datastax.oss:java-driver-core 替换为 com.scylladb:java-driver-core - 将 com.datastax.oss:java-driver-query-builder 替换为 com.scylladb:java-driver-query-builder - 将 com.datastax.cassandra:cassandra-driver-core 替换为 com.scylladb:scylla-driver-core
com.scylladb:java-driver-core 和 com.scylladb:java-driver-query-builder 的版本应与 org.janusgraph:janusgraph-scylla 的 pom.xml 中找到的版本相同。com.scylladb:scylla-driver-core 的版本应与 org.janusgraph:scylla-hadoop-util 中找到的版本相同。
替换完成后,就可以使用 scylla 作为 storage.backend 选项,它将使用优化的 Scylla 驱动程序。