我想在 Neo4j 图中表示节点之间关系的变化强度。
对于静态图,这很容易通过在关系上设置“强度”属性来完成:
A --knows--> B
|
strength
|
3
但是,对于需要随时间更新的图形,存在一个问题,因为增加属性的值不能原子地(通过 REST 接口)完成,因为需要先读后写。如果图形正在更新以响应传入的流数据,则需要递增(而不仅仅是更新)。
我需要确保只有一个 REST 客户端一次读取和写入(外部同步),或者只使用嵌入式 API,以便我可以使用内置事务。这可能是可行的,但似乎很尴尬。
另一种解决方案可能是记录多个关系,没有任何属性,因此“强度”实际上是关系的计数,即
A knows B
A knows B
A knows B
表示强度关系 3。
- 缺点:只能记录整数强度
- 优点:无需先读后写
- 缺点:(可能)需要更多存储空间
- 缺点:(可能)提取值要慢得多,因为必须提取和计算多个关系
有没有人尝试过这种方法,是否可能会遇到性能问题,尤其是在阅读时?
有没有更好的方法来建模这个?