我刚刚开始与neo4j评估它是否会成为推荐引擎的良好底层数据库。我想知道在读写操作期间是否有关于实体获得的锁的文档。neo4j锁定交易
E.g.如果节点N分别通过关系R1和R2与节点N1和N2相关,如果正在创建或修改关系R1,那么使用N,N1,N2或R2(可能是关系创建/修改或遍历)的任何操作遇到块?直觉上,我猜测不是,因为它只有R1被写入,并且这是唯一应该被锁定的实体。不过,我想这也取决于底层的实现,特别是因为为每一个关系都提供了双向遍历(也许N和N1会被锁定?)。如果有人能够指出我的一些官方文档,这将是非常棒的。
如果确实发生了这种锁定,我可以想到解决问题的一种方法是将每个节点解析为每个关系目的的子节点,每个节点都连接到根实体。 (说用户是社交用户,用户是产品用户等)
我想这将允许更小数目每个节点的关系,根节点的分辨率为重写入和读取重的孩子,并允许快速检索某些子图。我可以看到的唯一缺点是节点和关系的总数增加n次(我的db大小相对较小,n = 4,所以我没有这个问题)。任何关于这些结论是否正确的意见,如果有的话,如果它们有助于提高性能并减少锁的数量,将不胜感激。
我不太确定起始和结束节点是否被锁定,但似乎不应该,请参阅http://docs.neo4j.org/chunked/snapshot/transactions-locking.html –
感谢您的链接..我看到我在寻找点没有。 3在那个页面上。 – user1925093
不错,很高兴能够提供帮助。随意博客关于您的设置! –