我想表示Neo4j图中节点之间关系的变化强度。

对于静态图,可以通过在关系上设置“strength”属性来轻松完成:

  A --knows--> B
       |
     strength
       |
       3

但是,对于需要随时间更新的图形,存在一个问题,因为增加属性的值不能通过原子方式(通过REST接口)完成,因为需要先写入读取。 如果响应于传入的流数据更新图形,则必须递增(而不仅仅是更新)。

我需要确保只有一个REST客户端一次读写(外部同步),或者只关注嵌入式API,因此我可以使用内置事务。 这可能是可行的但似乎很尴尬。

另一种解决方案可能是记录多个关系,没有任何属性,因此“强度”实际上是关系的数量,即

A knows B
A knows B
A knows B

意味着力量的关系3。

  • 缺点:只能记录整数强度
  • 优点:不需要先读后读
  • 缺点:(可能)需要更多存储空间
  • 缺点:(可能)提取值要慢得多,因为必须提取和计算多个关系

有没有人尝试过这种方法,是否有可能遇到性能问题,特别是在阅读时?

有没有更好的方法来模拟这个?

===============>>#1 票数:5 已采纳

好主意。 为了减少存储和多次读取,这些关系可以聚合到以事务方式运行的批处理作业中的一个。

每个rel也可以携带单独的权重值,其聚合值用作权重。 它不必是基于整数的,也可以是负数来表示减量。

您还可以编写一个小型服务器扩展,以便在事务上更新单个关系的权重值。 甚至可能对REST API有意义(因为“set single value”操作的添加具有修改单值操作。

PUT http://localhost:7474/db/data/node/15/properties/mod/foo 

正文包含delta值(1.5,-10)。 另一个想法是通过实际操作替换mode关键字。

PUT http://localhost:7474/db/data/node/15/properties/add/foo 
PUT http://localhost:7474/db/data/node/15/properties/or/foo 
PUT http://localhost:7474/db/data/node/15/properties/concat/foo 

在非整数情况下,“增量”意味着什么?

===============>>#2 票数:2

嗯有点不同的方法,但你可以考虑使用排队系统。 我也在使用Neo4j REST界面,并且正在考虑存储不断变化的关系强度。 该项目在Rails中并使用Resque。 每当需要更新Neo4j数据库时,它都会被Resque队列抛出,由工作人员完成。 我只有一名工作人员在Neo4j Resque队列上工作,因此它永远不会尝试同时执行多个Neo4j更新。

这样做的另一个好处是,当用户执行触发更新的操作时,不会让用户等待neo4j更新。 但是,如果您不需要立即使用/显示Neo4j更新(尽管取决于您的工作人员的速度和队列的大小,它应该只需要几秒钟),它只是一个可行的解决方案。

===============>>#3 票数:1

取决于您所针对的读写加载量。 总图表有多大?

  ask by DNA translate from so

未解决问题?本站智能推荐:

1回复

如何显示neo4j中的关系

我已经附上了示例输入逗号分隔值文件和一张手绘图,下面显示了我的预期输出。 我有一个CSV文件,其中包含节点列表,其中每行表示第[0]行的节点与其他所有节点列表的关系line [2],line [2],line [3] ..... line [ 4500] 防爆。 样本输入文
1回复

neo4j中的复合关系

我正在与neo4j玩耍-在建议将其用于一些严肃的事情之前,先看看我能做什么和不能做什么。 我要解决的一件事是,如果您可以拥有我所说的复合关系。 在玩游戏时,我正在做一棵家谱-看起来很合适。 我想表达一个人生事件发生在两个人之间-例如结婚-发生了什么。 两个PERSON节点之间的MAR
1回复

neo4j中的关系计数重复

自最近三天以来,我一直在尝试解决此查询。 但找不到合适的解决方案。 我之前曾问过这个问题。 比我减少查询到一个数字,看看是什么问题。 问题是最终我收到了具有两种方式关系的7个节点。 这意味着7个节点共有17个关系。 在图形视图中,它是14,但在计数表中,关系计数是28。这意味着它的计
1回复

在neo4j中创建关系

我已经读了很多书,但似乎找不到答案。 如果某处有重复的帖子,请指向我! 无论如何,就这样。 我正在尝试将数据导入Neo4J并创建关系,以便轻松绘制数据图。 我现在可以使用LOAD CSV WITH HEADERS命令导入数据而不会出现问题,现在我不确定如何创建关系片。 我的
1回复

使用Scala在Neo4j中建立索引关系

假设两个节点之间存在如下关系 我想创建一个名为“ Relations”的索引,并将上述关系添加到索引中。 如何在Scala或Java中做到这一点? 我试图这样做: 但是,正在收到类型不匹配错误。
2回复

如何统计neo4j中的关系总数?

我正在尝试以下查询, start n=node(*) match (n)-[r]->(m) return count(r) 我不确定这个查询是否正常。
1回复

neo4j nodejs的强度或属性的关系已修改:怎么办?

我遇到了带有nodejs的neo4j计数请求的问题。 这是我的问题:当我插入数据时,它将显示为: 因为它是唯一节点,所以如果存在相同的节点,则不会插入新节点。 但是,我想计算调用此查询的请求数量。 例如: 添加其他数据: 再次调用: 我读过关于强度的任何
1回复

Neo4j中关系属性的数组替换

所以,假设我与r.myarray属性有关系r: 我需要编写一个查询来替换数组中的项 - 最多包含一个保证在数组中的任意成员(在本例中假设为3) - 使用另一个数组 - 让我们说: 得到结果: 我看到你可以使用RANGE或子集符号来表示数组(egrmyarray [0..x
1回复

计算Neo4j中的关系对

我正在开始处理Neo4j,所以我对这个话题并不十分精通。 在下图中,我有2模式(二分图),其中绿色节点呈现“文档”,红色节点呈现在特定文档中出现的“术语”。 (真实世界的图形实际上是巨大的:大约20.000.000个文档和25.000个术语)。 我想知道如何计算neo4j中的共现术语对
1回复

Neo4j:节点和关系对象中的属性

我正在尝试通过代码进行调试,在该代码中,我具有使用neo4j实现的社交网络图。 调试时,我想知道节点或关系中包含的应用程序属性(及其值)。 我附加了一个Relationship对象的屏幕截图。 我以为它会在PropertIndexManager中出现,但是在那里我只有属性Keys