如何启动 Titan 图形服务器并与 gremlin 连接?

Posted

技术标签:

【中文标题】如何启动 Titan 图形服务器并与 gremlin 连接?【英文标题】:How to start Titan graph server and connect with gremlin? 【发布时间】:2013-04-30 03:08:00 【问题描述】:

我玩Titan graph server 已经有一段时间了。我的感觉是,尽管有大量文档,但缺少从头开始教程

我的最终目标是让一个泰坦在 cassandra 上运行并使用 StartTheShift/thunderdome 进行查询。

我见过几种启动 Titan 的方法:

使用 Rexster

来自this link,我能够通过以下步骤运行一个 Titan 服务器:

    下载rexster-server 2.3 下载titan 0.3.0 将所有文件从titan-all-0.3.0/libs复制到rexster-server-2.3.0/ext/titan

    编辑 rexster-server-2.3.0/rexster.xml 并添加(在 a 之间):

    <graph>
        <graph-name>geograph</graph-name>
        <graph-type>com.thinkaurelius.titan.tinkerpop.rexster.TitanGraphConfiguration</graph-type>
        <graph-read-only>false</graph-read-only>
        <graph-location>/Users/vallette/projects/DATA/gdb</graph-location>
        <properties>
              <storage.backend>local</storage.backend>
              <storage.directory>/Users/vallette/projects/DATA/gdb</storage.directory>
              <buffer-size>100</buffer-size>
        </properties>
        <extensions>
          <allows>
            <allow>tp:gremlin</allow>
          </allows>
        </extensions>
    </graph>
    

对于 berkeleydb 或:

    <graph>
      <graph-name>geograph</graph-name>
      <graph-type>com.thinkaurelius.titan.tinkerpop.rexster.TitanGraphConfiguration</graph-type>
      <graph-location></graph-location>
      <graph-read-only>false</graph-read-only>
      <properties>
            <storage.backend>cassandra</storage.backend>
            <storage.hostname>77.77.77.77</storage.hostname>
      </properties>
      <extensions>
        <allows>
          <allow>tp:gremlin</allow>
        </allows>
      </extensions>
    </graph>

对于 cassandra 数据库。

    使用./bin/rexster.sh -s -c rexster.xml启动服务器 下载 rexster 控制台并使用bin/rexster-console.sh 运行它 您现在可以使用g = rexster.getGraph("geograph") 连接到您的图表

此方法的问题在于您是通过 rexster 而不是 gremlin 连接的,因此您没有自动完成功能。优点是您可以命名您的数据库(此处为地理)。

将 Titan 服务器与 cassandra 一起使用

    ./bin/titan.sh config/titan-server-rexster.xml config/titan-server-cassandra.properties启动服务器

    创建一个名为 cassandra.local 的文件

    storage.backend=cassandrathrift
    storage.hostname=127.0.0.1
    

    启动 titan gremlin 并连接到 g = TitanFactory.open("cassandra-es.local")

这很好用。

在 BerkeleyDB 中使用 Titan 服务器

来自this link:

    下载titan 0.3.0 用./bin/titan.sh config/titan-server-rexster.xml config/titan-server-berkeleydb.properties启动服务器 启动泰坦小精灵:./bin/gremlin.sh

    但是一旦我尝试使用g = TitanFactory.open('graph') 连接到 gremlin 中的数据库(图形),它就会在我所在的目录中创建一个名为 graph 的新数据库。如果我在我的目录(已填充)所在的位置执行此操作,我会得到:

    无法实例化实现:com.thinkaurelius.titan.diskstorage.berkeleyje.BerkeleyJEStoreManager

有人可以澄清这些过程,并告诉我我做错了什么。 谢谢

【问题讨论】:

【参考方案1】:

根据文档TitanFactory.open() 采用配置文件的名称或要在其中打开或创建数据库的目录的名称。

如果 steven 说的是真的,有两种方法可以通过 BerkelyDB 后端连接到数据库:

    通过bin/titan.sh 启动数据库。通过 rexster 控制台连接到数据库。

    不要使用bin/titan.sh 启动数据库。请改用 gremlin 控制台:TitanFactory.open("database-location")。这将打开数据库。但这没有 rexster 服务器。除了 gremlin 控制台,没有其他东西可以访问数据库。

【讨论】:

【参考方案2】:

对于 Titan Server/BerkeleyDB,您应该尝试通过 RexPro 或 REST 进行连接(Thunderdome 应该通过 REST 进行连接)。您无法打开另一个与 BerkeleyDB 的基于 Titan 的连接,因为 Titan 服务器已经拥有它。

这与 Titan Server/Cassandra 不同,后者通过 RexPro 或 REST 进行连接,但也通过嵌入式 Cassandra 实现连接,通过 TitanFactory.open('graph') 实现连接

【讨论】:

【参考方案3】:

也可以使用这两个库从 python 访问 Titan:

https://github.com/StartTheShift/thunderdome

https://github.com/espeed/bulbs.

Thunderdome 目前是 Titan 专用的,而灯泡是通用的。 Thunderdome 的 wiki 上给出了 Thunderdome 和 Bulbs 之间的(可能有偏见的)比较:https://github.com/StartTheShift/thunderdome/wiki/Bulbs-VS-thunderdome

如果您需要自动完成,您可以使用 iPython 并在您的 iPython 配置中启用自动完成。

【讨论】:

以上是关于如何启动 Titan 图形服务器并与 gremlin 连接?的主要内容,如果未能解决你的问题,请参考以下文章

Neo4j和Titan的对比

如何在 .net mvc 中使用 c# 创建和删除边缘属性(Titan 1.0)?

Java 的嵌入式和分布式键值存储或图形数据库

为啥 Rexster Server(和 Titan)停止响应?

如何使用 Gremlin/Titan/TinkerPop3 更新特定的边缘属性?

Titan Gremlin 服务器给出错误“不是 WebSocket 握手请求:缺少升级”