问题标签 [tinkergraph]
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.
gremlin - 使用 gremlin 的遍历和来自 Graph 的方法之间的区别
假设我有以下简单的图表。
我看到了两种遍历此图的方法
选项1
我可以使用Graph类提供的以下 API
选项 2
我还可以使用此处记录的GremlinPipeline API
我的问题是
- 为什么有两个 API?
- 什么时候用哪一个?
- GremlinPipeline 是否利用了使用TnkerGraph 的索引相关方法创建的索引?
graph - com.tinkerpop.blueprints.Graph 对象是线程安全的吗?
我有一个用例,我根据从多个数据存储中检索到的数据构建图表。这些数据存储中的每一个都有自己的客户端库,用于构建表示该特定数据存储数据的子图。
当前实现 因为我没有任何并发要求,所以我在服务层构建了一个 Graph 对象并将其传递给每个客户端库,它们将使用相同的 Graph 实例
新实施 - 满足 SLA
为了满足 SLA,我想同时从这些数据存储中提取数据。
- 在这种情况下,每个客户端库是否可以使用从服务层传递的相同 Graph 实例来构建子图?
- 或者有没有更好的方法来处理这个?
编辑
如何使用对象
- 客户端发送 REST 请求以提取人员数据
- 人员数据存储在 3 个不同的数据存储中
- 服务层创建一个实例
com.tinkerpop.blueprints.impls.tg.TinkerGraph
并在 3 个不同的线程之间共享它,同时在 3 个不同的线程上从 3 个不同的存储中检索数据。每个线程还负责将拉取的数据添加到共享Graph 实例中。
orientdb - 基于 Java 的 OrientDB 边缘索引
有没有办法使用 Java API 访问 OrientDB 中的边索引以确定具有给定标签的边是否存在于两个已知顶点之间?
Afaik tinkergraph 没有为此公开任何方法?
我相信 Neo4j 提供了这样的 API:
java - 从 tinkergraph 进行多线程读取
尝试从 tinkergraph 进行多线程读取时,我遇到了非常奇怪的行为。我有以下情况:
verticesAdded
是我在此randomGraph(graph)
过程中添加的一组顶点。一旦有了这个列表,我就会检查这个顶点的内部属性,并根据该属性将顶点传递给线程以进行一些额外的工作。我遵循的过程大致是:
上面的代码在完全是单线程的情况下可以工作,但是一旦我引入了线程池,我就会遇到各种奇怪的错误。包含:
- 顶点属性
"type"
不存在。 java.lang.IndexOutOfBoundsException: Index: 0, Size: -1
尝试访问某些顶点属性时。- 验证规则在最初通过时失败。
从 tinkergraph 进行多线程读取时有什么微妙之处吗?
编辑:
我将尝试简化问题:以下工作:
虽然上面的多线程版本因 TinkerGraph 失败(同样适用于支持事务的 Titan),但在从图中读取时返回不一致的结果。
java - 删除 Gremlin 顶点时出现 NegativeArraySizeException
从 Gremlin (TinkerGraph) 图中删除顶点时,我间歇性地遇到以下异常:
导致问题的代码是(下面的最后一行是 172,抛出异常的地方):
难道我做错了什么?我正在努力可靠地重现此错误以进行调试,因为它似乎是间歇性的(并且不同的数据集在不同版本的 Java 下工作)。
gremlin - gremlin 服务器中 TinkerGraph 的容量是多少?
我已经为修补图运行了一个 gremlin 服务器会话。
在会话期间,我创建了许多顶点和边。目前,当我达到 180k 顶点和 350k 边时,服务器表现不佳。例如,它无法执行简单的查询:> g.V(999).values('name')
。
此外,当我关闭服务器时,它并没有成功地将内容写入graphLocation=data/db.kryo
,如上所定义。所以我丢失了到目前为止创建的 180k 顶点和 350k 边的所有信息。
我想知道 TinkerGraph 和 gremlin 服务器的容量:
- 它可以处理多少个图的边、顶点和大小?
- 有什么办法可以避免在关闭服务器并将内容写入文件时丢失数据?
- 我应该考虑使用非内存图吗?例如,neo4j。
java - 在 Gremlin 中,map() 是如何工作的?
为什么这两个会产生不同的结果?
相比
为什么我更喜欢 map 而不是直接调用 .out() 方法?通过这种方式,我可以组织我的代码,在那里我可以从方法和“映射”到现有遍历的遍历。
gremlin - 如何在 Tinkerpop 中替换、合并或插入新边
当我尝试添加当前存在的边缘时,例如:
我收到这样的错误
在设置 gremlin 服务器或 tinkergraph 属性时,我是否可以使用任何设置来允许合并、更新或忽略重复的边?
graph - 无法通过 ID 访问特定顶点,在 Gremlin 控制台中使用 TinkerGraph
我无法通过执行来选择特定的顶点g.V(3640).valueMap(true).unfold()
。任何在命令的括号之间包含 ID 的g.V()
命令似乎都不起作用。
这就是我所做的:
我是图形数据库的新手,正在尝试使用 Gremlin 控制台。我首先创建了一个实例:
.graphml
并通过导入数据库文件加载示例数据:
这似乎工作正常,因为计数给出了一个很好的结果
不幸的是,以下方法不起作用:
我认为这很奇怪,因为通过执行以下操作
ID似乎确实存在。任何想法为什么我无法访问特定 ID?我尝试了不同的命令,但g.V()
似乎工作正常,g.V(3640)
但没有。是因为我使用 TinkerGraph 而不是 Gremlin 数据库,这可能是什么问题?
编辑:
似乎我的 id 被保存为字符串,因为g.V("2").valueMap(true).unfold()
确实给了我结果。