标签: graph-databases

在OrientDB的shortestPath()中获取访问边

我是OrientDB的新手,我想使用新的shortestPath()方法来获取两个顶点之间的边.

我所做的是:

[#-2:1{shortestpath:[#8:1, #8:3]} v0]

asString()

而我只能得到的是[#-2:1{shortestpath:[#8:1, #8:3]} v0].

所以,我想知道如何从这个输出或我得到的输出中提取边缘(好吧,在这种情况下只有一条边,因为这两个顶点是直接连接的)asString():

[#-2:1{shortestpath:[#8:1, #8:3]} v0]

提前致谢!

java graph-theory graph-databases orientdb

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

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

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

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

Vertex v1 = g.addVertex(null);
Vertex v2 = g.addVertex(null);
Edge edge = g.addEdge(null, v1, v2, "friends");
Edge edge = g.addEdge(null, v1, v2, "follows");

// Node with lots of edges - Supernode - problem?
List<Edge> edges = new ArrayList<Edge>();
for(Edge edge : g.getVertex(v1.getId()).getEdges(Direction.OUT, "friends")){
   if(edge.getVertex(Direction.IN).getId().equals(v2.getId()){
      edges.add(edge);
  }
}
Run Code Online (Sandbox Code Playgroud)

我应该使用顶点查询吗?


通过gremlin我能做到:

g.v(v1.getID()).outE("friends").inV.filter{it.id == v2.getID}
Run Code Online (Sandbox Code Playgroud)

Neo4j方式:

IndexHits<Relationship> relationships = relationshipIndex().get("type", edgeType, node1, node2);
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!我还是新手.

graph neo4j graph-databases titan tinkerpop

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

MongoDb:用作图形数据库来查找"朋友"的"朋友"?

我一直在调查一个图形数据库,我找到了neo4j,虽然这看起来很理想,但我也遇到了mongodb.

Mongodb不是官方的图形数据库,但我想知道它是否可以用于我的场景?

我在写一个应用程序,用户可以有朋友,这些朋友可以有朋友等...社交网络的典型社交部分.

我想知道我的情况可以mongodb足够吗?

实现起来有多容易,或者我真的需要专注于REAL图形数据库.

我注意到foursquare正在使用mongodb所以我认为它支持那里的基础设施.

但是,找到朋友中也有朋友的所有朋友是多么容易 - 例如

任何帮助真的很感激.

mongodb graph-databases

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

在neo4j属性上将数据存储为数组/列表

我是Neo4j的新手,手头有以下问题.我正在尝试开发一个社交网站,其中我想将两个用户之间交换的消息存储在他们的关系属性中.为此,我试图以关系属性的数组/列表的形式存储他们的所有消息.你能否建议Neo4j是否提供此类操作.

我还想知道我是否可以在这个关系属性和数组/列表更新中插入我的消息(即在下一个索引上添加新消息)

例如:

User1 -> User2 : Hi, whats up 
User2 -> User1 : Hi, I am in college

So the relationship property stores the message in the form of list such as:
["Hi,Whats up", "Hi, I am in college"]
Run Code Online (Sandbox Code Playgroud)

这样的事......谢谢

graph neo4j graph-databases cypher

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

Neo4j中的存储过程

我想知道是否有任何Neo4j等效的存储过程?当我研究这个时,我遇到了events,但我发现它们更像是触发器而不是存储过程.

neo4j nosql graph-databases

6
推荐指数
2
解决办法
3684
查看次数

Neo4j总线路由应用程序建模

我的问题是我有一个图表,其中有很多节点代表公交车的停靠点.我应该如何包含总线信息,例如节点之间可用的总线.

我正在考虑在节点之间创建一个总线关系,它将包含两个节点之间所有总线的信息以及两个站点之间的关系属性标记距离.

      buses[500A,182A],distance:500m     buses[121B,542W,222A,111Z],distance:400m
Run Code Online (Sandbox Code Playgroud)

像一个 - - - - - - - - - - - - - - - - - - - - - - - - ------->乙----------------------------------------- ------------------>ç

那么如何找到总线或公共汽车(如果没有直达路径)从A到达M?

首先,我将找出路径(neo4j查询),如何从A到达M.

说我的路径是

buses[11A],distance:1000m    buses[11A],distance:250m   buses[13B,100A],distance:2000m
Run Code Online (Sandbox Code Playgroud)

甲----------------------------------------->→------ ----------------------------->ñ------------------- ------------------------>中号

问题是我如何以编程方式检查到M的直接总线是否可用,或者我如何在两者之间交换总线.

根据上述情况,我可以通过采用13B或100A从A到N到11A,然后从N到M.

我必须以编程方式执行此操作.

我想检索两个站之间的所有可能路径以及路径的总距离以及总线信息.

neo4j graph-databases

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

orientdb sql查询选择边和顶点字段属性.

我确实有以下数据库结构.

用户 - >评论 - >产品

一个.用户和产品是包含一些信息等的顶点:user_name,product_name和.... b.comment是包含注释和创建/修改日期的边缘.

什么是sql查询可能看起来像是为了显示以下结果.

注意:我必须显示可能有或没有评论的所有产品.

  1. product_name,user_name,comment,comment_created_date,comment_modified_date
  2. product_name,user_name,'','',''
  3. product_name,user_name,comment,comment_created_date,comment_modified_date

sql graph-databases orientdb

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

Neo4J - 在现有节点上创建关系

我是Neo4J的新手,我希望在现有节点和新节点之间建立新的关系.

我有一个大学节点和人员节点.

我正在尝试为现有大学指派一个新人.

我想跟随代码:

MATCH (p:Person {name:'Nick'}), (u:University {title:'Exeter'}) CREATE (p)-[:LIKES]->(u)

所以在上面的代码中:MATCH (p:Person {name:'Nick'})是新用户

而且(u:University {title:'Exeter'})是现存的大学.

但它又回来了 (no changes, no rows)

我甚至尝试过没有MATCH部分的查询,但也没有运气.

我看过几个类似的答案,但它们似乎也没有用.

任何帮助将非常感谢.谢谢.

neo4j graph-databases cypher

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

哪个社区版图数据库支持高可用集群并具有良好的在线查询性能?

我目前正在为电子商务公司构建知识图,它主要包括产品类别层次结构,属性和它们之间的关系.除了常见的关系查询,我们非常关注以下几点:

  1. 主从集群支持.此图形数据库将用于在线搜索查询处理,因此高可用性对我们至关重要.数据量不会像数百万个节点那么大,因此我们不需要可以跨多台机器跨越数据的分布式集群,而是我们可能需要同时读取多台机器,而且服务不会去即使其中一台机器处于脱机状态.

  2. 快速的在线查询性能.关系的推理可以离线完成,因此表现并不重要.但我们需要做很多在线查询,比如"查找属性P等于V值的节点",因此我们需要在线查询处理的良好性能.该数据库将是读取密集型的,并且在初始化后不会发生太大变化.

  3. 社区和文件.由于我们的团队是图形数据库领域的新手,因此我们期望用于部署和开发的用户友好文档以及用于解决问题的活动社区.

根据上述要求,我调查了一些候选人:

  1. Neo4j的.我们首先尝试过Neo4j,因为它是该领域最受欢迎的,实际上我非常喜欢它,尤其是Cypher查询语言.但我们即将放弃它,因为社区版不支持任何类型的集群,目前我们没有预算来支付企业版.
  2. OrientDB.OrientDB就像市场上第二个最受欢迎的东西,它似乎在其社区版本中支持集群.我使用"似乎"这个词,因为它的网站上没有明确说明.任何人都可以清除这个吗?此外,我发现了一篇关于OrientDB的非常负面的文章让我非常犹豫:http://orientdbleaks.blogspot.jp/2015/06/the-orientdb-issues-that-made-us-give-up.html

  3. 泰坦.Titan也很棒,但由于其最初的公司已经被收购,并且它的原始开发商正在开发不同的产品,其未来的开发和维护是有疑问的.

  4. ArangoDB.根据性能报告(https://www.arangodb.com/2015/10/benchmark-postgresql-mongodb-arangodb/),这个似乎非常快,但我不知道它的在线查询处理能力已经足够了,它对集群的支持对我来说也是未知的.

至于文档和社区,我真的不知道,因为这些是你开始做之后才会知道的事情.

总而言之,根据我的要求,我认为OrientDB和ArangoDB可能是我的候选人,但由于我上面提到的要点,我不知道选择哪一个.或者也许还有其他任何我缺席的优秀候选人?

谢谢.

graph-databases

6
推荐指数
2
解决办法
928
查看次数

Gremlin - 如果它不存在,只添加一个顶点

我有一组用户名(例如['abc','def','ghi'])要添加到图表中的"用户"标签下.

现在我首先要检查用户名是否已经存在(g.V().hasLabel('user').has('username','def')),然后仅添加"用户"标签下用户名属性不匹配的用户名.

此外,这可以在单个gremlin查询或groovy脚本中完成吗?

我正在使用titan graph数据库,tinkerpop3和gremlin REST服务器.

groovy graph-databases gremlin titan tinkerpop3

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