问题标签 [titan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3088 浏览

neo4j - 社交网络的 Neo4j 图模型

我已经为社交网络创建了一个图形模型,并且需要一些关于缩放设计的具体建议。请原谅这些问题的n00bness,但我没有找到很多明确的例子......

注意:状态更新和活动节点/关系是链接列表 - 最新条目不断放置在列表顶部。

  1. 链接列表允许生成新闻提要,但每个用户可能有数百条记录——我认为即使数据按日期降序排列,限制子句也不够用。我是否必须有一个单独的链接列表,它只包含最近的 10 个状态/活动更新)并不断替换该列表上的头部以获得更好的活动源生成,或者一个列表正确排序并完成工作(使用限制条款)

  2. 这些节点都有属性(带有内容、ID 等的 json 数据)——“全局”索引如何在这里发挥作用,以便我可以找到喜欢 Depeche 模式的用户,而无需等待终生等待结果?我知道如何将节点添加到索引中,只是想知道我是否在这里遗漏了一部分图片。

  3. 安全性-登录名和密码..我认为图形数据库可以存储它们,但我认为此时这是一个安全风险-将其保存在 postgres 等中会更好吗?

  4. 您将如何改进此模型以处理可扩展性?想象一下有 2000 万用户在这方面大打出手……

  5. 想象一下 4000 万用户——这个模型在可扩展性方面有什么问题?

在此处输入图像描述

0 投票
2 回答
2213 浏览

neo4j - Tinkerpop 蓝图顶点查询

我研究 Tinkerpop 堆栈已经有一段时间了。我想我很清楚它可以做什么以及它适用于哪些数据库。我现在正在考虑几个不同的数据库,但还没有确定。所以我决定把我的代码纯粹写到接口上,现在不考虑任何实现。在我正在查看的数据库中,它们实现了TransactionalGraphKeyIndexableGraph. 我认为这足以满足我的需要,但我只有一个问题。

我有不同的“类”顶点。使用蓝图,我相信通过在每个顶点中包含类名的字段来最好地表示。这样做,我可以做类似的事情graph.getVertices("classname", "User"),它会给我所有的用户顶点。并且由于该getVertices函数指定实现应该使用索引,因此我可以保证快速查找(如果我索引该字段)。

但是假设我想根据两个属性检索一个顶点。顶点必须有className=Usersusername=admin。找到该单个顶点的最佳方法是什么?即使不是所有的顶点都有一个username字段,是否可以对这两个属性进行索引?

仅供参考 - 我目前考虑的数据库是 OrientDB、Neo4j 和 Titan,但我还没有确定。如果有帮助的话,我目前也计划使用 Gremlin。

0 投票
1 回答
286 浏览

clojure - 在 Titan 中创建版本节点

我是图形数据库和 Titan 的新手。我将 Titan 嵌入到 Clojure 应用程序中。当应用程序启动时,它会创建一个 BerkeleyDB 支持的 Titan 存储。

我想知道/做三件事:

  1. 这个数据库是新的吗?如果是这样,请创建版本为 0 的版本节点。运行迁移过程以将“模式”带到最新版本。
  2. 如果没有,它是否有版本节点?如果不是,则抛出异常。
  3. 如果数据库预先存在并且具有版本节点,则运行迁移过程以使“模式”保持最新。

我如何在泰坦中做到这一点?对此有最佳做法吗?

编辑:

好的,经过进一步审查,我认为使用硬编码的顶点 ID 是最有意义的。有一个 TitanTransaction.containsVertex(long vertexid)。这种方法有什么缺点吗?我想我不知道顶点是如何分配的以及它们的保留范围是什么,所以这闻起来很危险。我是图形数据库的新手,但我认为在 Neo4j 中建议从根节点创建参考节点。但是 Titan 不鼓励使用根节点,因为它会成为超级节点。身份证...

0 投票
1 回答
2297 浏览

c# - 将 Titan graph db 与 c# 和 gremlin 一起使用

安装它太难了。我想使用 Berkeley + Elastic Search 配置。我不知道它是否已准备好生产。Rexter 好象是通讯层。我可以通过秘密启动泰坦服务器(?)

命令。db 的位置是 C:\tmp\titan-local。如何远程与 c# + gremlin 通信?

PS:由于gremlin支持,我不得不选择它。如果他们不放弃该项目-具有弹性搜索支持--符合gremlin-它看起来很有希望..

0 投票
4 回答
6586 浏览

graph - 在两个顶点之间找到边的正确方法是什么?

使用 tinkerpop blueprints API,找出两个顶点之间是否存在边的最佳方法是什么?我想避免vertex.getEdges()和迭代,直到找到合适的。

例如:检查是否v1是朋友v2

我应该使用顶点查询吗?


通过 gremlin 我可以这样做:

Neo4j方式:

谢谢您的帮助!我对此还是陌生的。

0 投票
1 回答
119 浏览

titan - 适用于 windows server 2008 的 Titan 服务器配置

io-strategy 在 titan-server-rexter.xml 配置文件中设置为“worker”(默认安装)第二个会话的 Gremlin 查询不适用于它。

我已将 io-strategy 设置为“领导者-跟随者”。它似乎工作。这个配置适合生产环境吗?

为什么第二个 gremlin 查询在“worker”配置中不起作用(挂起)?

存储层是 BerkeleyDB。客户端是:RexProClient (C#) 是不是跟这个问题有关呢?

0 投票
3 回答
11090 浏览

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

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

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

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

使用 Rexster

从此链接,我能够通过以下步骤运行 Titan 服务器:

  1. 下载rexster-server 2.3
  2. 下载泰坦0.3.0
  3. 将所有文件复制titan-all-0.3.0/libsrexster-server-2.3.0/ext/titan
  4. 编辑rexster-server-2.3.0/rexster.xml并添加(在 a 之间):

    /li>

对于 berkeleydb 或:

对于 cassandra 数据库。

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

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

将 Titan 服务器与 cassandra 一起使用

  1. 启动服务器./bin/titan.sh config/titan-server-rexster.xml config/titan-server-cassandra.properties
  2. cassandra.local创建一个名为

    /li>
  3. 启动 Titan Gremlin 并连接g = TitanFactory.open("cassandra-es.local")

这很好用。

将 Titan 服务器与 BerkeleyDB 一起使用

这个链接

  1. 下载泰坦0.3.0
  2. 启动服务器./bin/titan.sh config/titan-server-rexster.xml config/titan-server-berkeleydb.properties
  3. 启动泰坦小精灵:./bin/gremlin.sh
  4. 但是一旦我尝试连接到 gremlin 中的数据库(图形),g = TitanFactory.open('graph')它会在我所在的目录中创建一个名为 graph 的新数据库。如果我在我的目录(已填充)所在的位置执行此操作,我会得到:

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

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

0 投票
2 回答
964 浏览

gremlin - 如何在单个查询中搜索顶点并创建边?

我正在使用 gremlin 查询从给定顶点搜索顶点。

此查询返回一堆顶点。现在我正在通过简单的迭代器创建从“v”到所有返回顶点的边。

现在我的问题是:
是否有任何可用的流程/查询样式可供我搜索这些顶点并在同一查询中创建边?

我已经尝试过这个查询:

但我收到错误:

没有方法签名:groovy.lang.MissingMethodException.addEdge()

我目前正在使用 Gremlin-Groovy ScriptEngine 从 Java 类执行我的查询。

先感谢您。

0 投票
1 回答
1810 浏览

java - 设置 Titan 和 Cassandra - 无法实例化存储管理器类

我已经设置了 cassandra 服务器(Datastax 社区版)并且运行良好。

我的cassandra.yaml有以下设置:

当我在 gremlin shell 中执行此操作时:

和,

我收到此错误:

我究竟做错了什么?

0 投票
2 回答
2152 浏览

graph - Gremlin 循环遍历各种边缘方向

我有图表(见下图)。我使用 A 中的 gremlin,需要在边缘“影响”和“相似”之后循环所有树。

所以我需要类似的东西:

这个查询的问题是,关系“similarTo”有时可能在边缘,有时在边缘(见图),这取决于应用程序目前如何存储数据。我不能简单地使用 "both" (gv(A.id).both('impacts', 'similarTo')...) 来检索边缘,因为另一方面我只需要 out edge 来实现“影响”关系。也有可能,某些顶点(例如 C)缺少“similarTo”边,在这种情况下,循环应该只遵循“影响”关系。

图形

最后我尝试了这样的事情,但我认为我用错了,结果不合适:

我也试图在遍历过程中按方向过滤边缘,但它可能不受支持,所以这也不起作用:

有什么建议么?