标签: titan

Tinkerpop - Titan/Cassandra 项目设置

我正在设置一个 Java Enterprise 1.7 项目,该项目将 TinkerPop 3 和 Titan 0.5 与 Cassandra 一起使用。

一般的想法是:

  1. 运行 Titan 0.5 的专用数据库服务器,
  2. Tinkerpop 3某处
  3. 运行与数据库服务器分离的 Java EE 7 应用程序的应用程序服务器。

我有很多悬而未决的问题,我想寻求最佳实践建议示例

  1. Tinkerpop 3 应该在哪里?在应用程序服务器中还是在数据库服务器中?
  2. Tinkerpop 如何与泰坦沟通?
  3. Tinkerpop with Titan 这种环境的最佳配置是什么?
  4. Java Enterprise 应用程序应该如何与 Tinkerpop 通信?
  5. Tinkerpop API 应该如何与 Java EE 集成?请记住同时多个用户和一般企业环境问题(缓存、交易、多次调用数据库等)
  6. 你有任何项目设置示例吗?

这个基本配置最终会放在 github ot bitbucket 中,为其他项目做好准备。

architecture cassandra titan tinkerpop jakarta-ee

2
推荐指数
1
解决办法
1804
查看次数

TITAN- 并行查询 - org.apache.tinkerpop.gremlin.driver.Client.submit 处的并发超时异常

作为容量和性能测试的一部分,我尝试使用 java 线程并行执行多个 gremlin 请求(图形遍历)。它在较少数量的线程中工作得很好。

当我增加线程数(例如 500)时,出现以下错误

线程“Thread-34”中出现异常 java.lang.RuntimeException:java.lang.RuntimeException:java.util.concurrent.TimeoutException:等待可用主机超时。在 org.apache.tinkerpop.gremlin.driver.Client.submit(Client.java:146) 在 com.tests.java.titan.Vertices.exists(Vertices.java:37) 在 com.tests.java.titan.Complex com.tests.java.perfTests.TitanThread.run(ParallelGraphTraversal.java:112) 处的.searchNodesRelatedByRelation(Complex.java:110) 引起:java.lang.RuntimeException: java.util.concurrent.TimeoutException: 等待超时可用的主机。在 org.apache.tinkerpop.gremlin.driver.Client.submitAsync(Client.java:194) 在 org.apache.tinkerpop.gremlin.driver.Client.submitAsync(Client.java:174) 在 org.apache.tinkerpop.gremlin .driver.Client.submit(Client.java:144) ... 3 个以上

我尝试将 threadPoolWorker 的值从 1 增加到 2,将 gremlinPool 从 8 增加到 16(在文件 gremlin-server.yaml 中)。但我没有注意到任何区别。

有人遇到过这个问题吗?您能否告诉我最大同时连接数是否有限制?

我们的环境:CDH 5.7.1、Titan 1.1.0-SNAPSHOT、Solr 4.10.3、HBase 1.2.0、titan-tp3-driver,用于创建与 gremlin 服务器的远程连接并进行查询

gremlin titan tinkerpop gremlin-server

2
推荐指数
1
解决办法
778
查看次数

Titan/Janus 中的索引

我有两个问题:

  1. 如何索引这个查询?

    g.V(vertexId).repeat(out().hasLabel('location')).emit().tree().next()
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在 Titan 1.0 文档中,仅给出了在数据已插入时对图进行索引一次的方法。然而,在此处的generate-modern.groovy文件中 ,我们看到索引是在创建顶点之前完成的,这似乎是合理的。然而,当我尝试使用时,我无法做到这一点,因为它让我失望
    buildMixedIndex

    非法参数异常:未知外部索引后端搜索

我的方法是

def location = mgmt.makeVertexLabel("location").make()
def displayName = mgmt.makePropertyKey("displayName").dataType(String.class).cardinality(Cardinality.SINGLE).make()
def shortName = mgmt.makePropertyKey("shortName").dataType(String.class).cardinality(Cardinality.SINGLE).make()
def description = mgmt.makePropertyKey("description").dataType(String.class).cardinality(Cardinality.SINGLE).make()
def latitude = mgmt.makePropertyKey("latitude").dataType(String.class).cardinality(Cardinality.SINGLE).make()
def longitude = mgmt.makePropertyKey("longitude").dataType(String.class).cardinality(Cardinality.SINGLE).make()

def locationByName = mgmt.buildIndex("displayNameAndShortNameAndDescriptionAndLatitudeAndLongitude", Vertex.class).addKey(displayName).addKey(shortName).addKey(description)
.addKey(latitude).addKey(longitude).indexOnly(location).buildMixedIndex('search')
Run Code Online (Sandbox Code Playgroud)

我哪里理解错了?

gremlin titan tinkerpop3 janusgraph

2
推荐指数
1
解决办法
523
查看次数

顶点'type'应该是属性还是另一个顶点?

在这里,他们将类型设置为每个顶点上的属性.但是,如果我想给类型一些属性呢?在这种情况下,创建一个顶点来表示一个类型并让每个其他顶点都有一个"类型"边缘会不会更有意义?否则我最终会复制一个类型的属性.

如果我想要检索特定类型的所有顶点,这个额外的间接层是否会对性能产生重大影响?

graph-databases gremlin titan

1
推荐指数
1
解决办法
139
查看次数

如何将Tinkerpop3图形映射到递归数据结构?

我有一个像这样的递归数据结构:

@Canonical
static class Person {
    String name
    Set<Person> knows
}
Run Code Online (Sandbox Code Playgroud)

我有一个代表这种结构的Tinkerpop图:

(Jon) -- knows --> (Billy) -- knows --> (Jane) -- ... -->
                           \- knows --> (Suzy) -- ... -->
Run Code Online (Sandbox Code Playgroud)

将任意深度的Tinkerpop图映射到数据结构的最有效方法是什么?

我可以想象使用PathStep它,但似乎应该有一个更好的方法,而且我不是很好地看待TP3.

def 'build recursive person object'() {
    when:
    def g = TinkerGraph.open()
    def jon = g.addVertex(T.label, 'person', 'name', 'jon')
    def bill = g.addVertex(T.label, 'person', 'name', 'bill')
    def jane = g.addVertex(T.label, 'person', 'name', 'jane')

    jon.addEdge('knows', bill)
    bill.addEdge('knows', jane)

    Multimap<String, Person> relationships = HashMultimap.create()

    g.V().has('name', 'jon')
        .as('a')
        .jump('b', …
Run Code Online (Sandbox Code Playgroud)

gremlin titan tinkerpop3

1
推荐指数
1
解决办法
519
查看次数

Gremlin:在单个gremlin查询中添加多个顶点?

我正在使用Titan 0.4 + Cassandra。我的用例需要一次插入多个顶点。(aprrox批处理大小一次是100个顶点。)例如:

v01 = g.addVertex(["UC":"B","i":2]); v02 = g.addVertex(["UC":"H","i":1])
v03 = g.addVertex(["LC":"a"]); v04 = g.addVertex(["LC":"a"]);
v05 = g.addVertex(["LC":"d"]); v06 = g.addVertex(["LC":"h"]); 
v07 = g.addVertex(["LC":"i"]); v08 = g.addVertex(["LC":"p"]);
Run Code Online (Sandbox Code Playgroud)

是否有任何gremlin命令添加全部Eight vertices in a single request。(类似 g.addVertices()??)

graph-databases gremlin titan

1
推荐指数
2
解决办法
2993
查看次数

如何增加Titan图数据库边缘标签中的访问次数?

我有顶点User1和User2.当User1访问User2配置文件时,添加一个带有count变量的边(即已访问).

当User1再次访问User2配置文件时,如何增加计数变量.

graph graph-databases gremlin titan

1
推荐指数
1
解决办法
320
查看次数

提供的开始不会映射到值

我有一个遍历如下:

g.V().hasLabel("demoUser")
.as("demoUser","socialProfile","followCount","requestCount")
.select("demoUser","socialProfile","followCount","postCount")
.by(__.valueMap())
.by(__.out("socialProfileOf").valueMap())
.by(__.in("followRequest").hasId(currentUserId).count())
.by(__.outE("postAuthorOf").count())
Run Code Online (Sandbox Code Playgroud)

我正在尝试选择用户顶点,它们链接的社交配置文件顶点以及其他一些计数.问题是所有用户可能没有socialProfile优势.在这种情况下,遍历失败并出现以下错误:

提供的开始不映射到值:v [8280] - > [TitanVertexStep(OUT,[socialProfileOf],vertex),PropertyMapStep(value)]

我确实从gremlin团队找到了这个帖子.我尝试.by()用a 包装逻辑内部coalesce(),并且.fold()在没有运气的情况下将a附加到语句的末尾.

如何使该选择可选?我想选择一个socialProfile是否存在,但总是选择demoUser.

gremlin titan

1
推荐指数
1
解决办法
490
查看次数

gremlin查询是否遍历图

我一直试图在Gremlin查询中弄清楚这个if-else。假设gV({0})是下面的组顶点。

    var q = "g.V({0}).as('groupName', 'groupId', 'ownerId').inE(eIsAdminOf, eIsMemberOf).as('rel', 'joinDate').outV().hasLabel(userLabel).as('memberId')";
  //TODO:var q = "g.V({0}).as('groupName', 'groupId', 'ownerId').inE(eIsAdminOf";
  //if .has('mCanList',true).inE(eIsAdminOf, eIsMemberOf)
  //if .has('mCanList',false).inE(eIsAdminOf)

  //, eIsMemberOf).as('rel', 'joinDate').outV().hasLabel(userLabel).as('memberId')";
Run Code Online (Sandbox Code Playgroud)

我希望.inE(eIsAdminOf, eIsMemberOf)基于以上评论中的true或false属性值mCanList。

一直尝试无济于事:

var q = "g.V({0}).as('groupName', 'groupId', 'ownerId','mCanList');
  q += ".by(values('mCanList').choose(is(true),.inE(eIsAdminOf, eIsMemberOf), .inE(eIsAdminOf))";
  q += '.as('rel', 'joinDate').outV().hasLabel(userLabel).as('memberId')”;
Run Code Online (Sandbox Code Playgroud)

我正在使用node.js与gremlin库一起构建gremlin查询。对我而言,最糟糕的选择是构建2个独立的异步查询,这些查询分别基于

if .has('mCanList',true).inE(eIsAdminOf, eIsMemberOf) or
 if .has('mCanList',false).inE(eIsAdminOf) 
Run Code Online (Sandbox Code Playgroud)

TIA

gremlin titan gremlin-server

1
推荐指数
1
解决办法
1171
查看次数

Titan gremlin console和java为group().by()查询返回不同的结果

我使用cassandra 2.1.7支持的Titan 1.0.0作为后端存储.在尝试在gremlin控制台和java程序上执行相同的查询时,我得到了两种不同格式的输出.我正在使用titan-1.0.0-hadoop1提供的gremlin控制台,对于java我正在使用TinkerPop Gremlin 3.0.1-incubating.

Gremlin控制台:

gremlin> g.V().has('msid',within(-2128958273, 2147477890)).as('in').local(outE('hie_child').has('hostid_e',within(153,83)).order().by('hrank',incr).limit(5)).group().by(outV().id()).by(inV().id().fold())
Run Code Online (Sandbox Code Playgroud)

==> [77467688:[1531850904,4742561976,1009049792,1010020408,1053356264],73363640:[2060075072,3698942184,6776295608,7030726848,35401920]]

我得到了预期的输出类型,即 Map<VertexId, List<VertexId>>

但是在java程序中执行相同的查询时,我得到了Map<VertexId, BulkSet>.的BulkSet包括计数器指示的时间的特定条目在结果集增加的号码.有人可以告诉我是否有办法在java中获得与gremlin控制台类似的结果.

Java的:

List<Map<Object, Object>> list = g.V().has("msid", P.within(-2128958273,2147477890)).as("in").local(__.outE("hie_child").has("hostid_e", P.within(153,83)).order().by("hrank", Order.incr).limit(5)).group().by(__.outV().id()).by(__.inV().id().fold()).fold().next();

System.out.println(list);
Run Code Online (Sandbox Code Playgroud)

[{77467688 = {1531850904 = 1,4742561976 = 1,1009049792 = 1,1010000408 = 1,1053356264 = 1},73363640 = {2060075072 = 1,3698942184 = 1,6776295608 = 1,7030726848 = 1,35401920 = 1}} ]

java gremlin titan tinkerpop3

1
推荐指数
1
解决办法
461
查看次数