Neo4j 如何提高超级节点的OrientDB图形的写入性能?

Neo4j 如何提高超级节点的OrientDB图形的写入性能?,neo4j,orientdb,graph-databases,Neo4j,Orientdb,Graph Databases,我目前看到,在向已经有许多边的顶点添加边时,并发写入性能较低。聚集具有许多边的其他顶点的顶点称为超级节点 超级节点会导致多个问题: 写性能下降 添加新边将随着每个添加边的增加而逐渐减慢 OrientDB说明了原因: 不幸的是,没有加载所有连接的结构,就无法向顶点添加边 处理并发请求时的争用 同时添加新顶点时,超级节点也需要更新。这可以通过检查哪些节点具有较高的版本号来快速确定 选择@version、@rid、@class from V其中@version>40 order by@version

我目前看到,在向已经有许多边的顶点添加边时,并发写入性能较低。聚集具有许多边的其他顶点的顶点称为超级节点

超级节点会导致多个问题:

写性能下降 添加新边将随着每个添加边的增加而逐渐减慢

OrientDB说明了原因:

不幸的是,没有加载所有连接的结构,就无法向顶点添加边

处理并发请求时的争用 同时添加新顶点时,超级节点也需要更新。这可以通过检查哪些节点具有较高的版本号来快速确定

选择@version、@rid、@class from V其中@version>40 order by@version DESC

相同元素上的并发更新将导致预期错误,这需要用户再次重试事务。这是由于OrientDB使用和预期的MVCC模式造成的

这将需要重试事务。这将导致写入速度显著降低

选择权 在这种情况下,有哪些选项可以提高性能

我发现的选项:

  • 删除超级节点(并非总是可能)
  • 通过将边和顶点添加到实际聚合的顶点可以连接到的顶点来分割超级节点
  • 删除超级节点并将其替换为索引属性 子顶点包含标识它们所属的“集合”的属性。因此,可以使用索引快速查找此集合中的所有顶点
问题 我还不知道OrientDB如何处理添加索引项时可能发生的索引争用。我假设可以更有效地处理此类争用,并且可能不会导致需要tx重试的错误

我知道可以使用OrientDB添加显式锁。这些锁是否有助于处理争用问题?这些锁是否分布到其他群集节点

还有其他我忽略的因素吗

像Neo4j这样的数据库如何处理争用和超级节点?类似的限制是否适用