DNA*_*DNA 9 neo4j graph-databases
我想表示Neo4j图中节点之间关系的变化强度.
对于静态图,可以通过在关系上设置"strength"属性来轻松完成:
A --knows--> B
|
strength
|
3
Run Code Online (Sandbox Code Playgroud)
但是,对于需要随时间更新的图形,存在一个问题,因为增加属性的值不能通过原子方式(通过REST接口)完成,因为需要先写入读取.如果响应于传入的流数据更新图形,则必须递增(而不仅仅是更新).
我需要确保只有一个REST客户端一次读写(外部同步),或者只关注嵌入式API,因此我可以使用内置事务.这可能是可行的但似乎很尴尬.
另一种解决方案可能是记录多个关系,没有任何属性,因此"强度"实际上是关系的数量,即
A knows B
A knows B
A knows B
Run Code Online (Sandbox Code Playgroud)
意味着力量的关系3.
有没有人尝试过这种方法,是否有可能遇到性能问题,特别是在阅读时?
有没有更好的方法来模拟这个?
好主意.为了减少存储和多次读取,这些关系可以聚合到以事务方式运行的批处理作业中的一个.
每个rel也可以携带单独的权重值,其聚合值用作权重.它不必是基于整数的,也可以是负数来表示减量.
您还可以编写一个小型服务器扩展,以便在事务上更新单个关系的权重值.甚至可能对REST API有意义(因为"set single value"操作的添加具有修改单值操作.
PUT http://localhost:7474/db/data/node/15/properties/mod/foo
Run Code Online (Sandbox Code Playgroud)
正文包含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
Run Code Online (Sandbox Code Playgroud)
在非整数情况下,"增量"意味着什么?
| 归档时间: |
|
| 查看次数: |
2096 次 |
| 最近记录: |