跳到内容

ScyllaDB

ScyllaDB 是一个 NoSQL 数据库,采用接近硬件的“无共享”方法,优化了原始性能,充分利用了现代多核服务器,并最大限度地减少了 DevOps 的开销。ScyllaDB 与 Cassandra 和 DynamoDB 都兼容 API,但速度更快、更一致,并且总拥有成本更低。

ScyllaDB 主页

ScyllaDB 设置与连接

ScyllaDB 与 Cassandra 完全兼容。要将其用作数据存储层

  1. 启动 Scylla 集群。您可以使用 Scylla Cloud、Docker、在云中或本地运行 Scylla 来完成此操作。您可以在本课程中查看有关如何使用 Docker 启动三节点 Scylla 集群的分步指南。
  2. 使用“cql”作为 storage.backend 运行 JanusGraph。
  3. 将集群中其中一个 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-corecom.scylladb:java-driver-query-builder 的版本应与 org.janusgraph:janusgraph-scyllapom.xml 中找到的版本相同。com.scylladb:scylla-driver-core 的版本应与 org.janusgraph:scylla-hadoop-util 中找到的版本相同。

替换完成后,就可以使用 scylla 作为 storage.backend 选项,它将使用优化的 Scylla 驱动程序。