我一直在测试neo4j的图形项目1个月或2个月,它真的很有效率,但我很难找到如何解决我的问题而且我正在寻找建议。
我使用neo4j存储图形数据库并检查它们是否遵循一些结构要求,例如,我在项目之间有一个db建模依赖项:节点是项目,链接标记为"需要& #34;或"不兼容"模拟依赖项,我希望neo4j检查数据的一致性。
我在服务器插件中对检查器进行了编码,效果非常好。但是现在我想允许用户连接数据库,修改数据(不保存修改),检查修改是否破坏了连贯性,然后保存修改。
我找到了一个可以保持事务处于打开状态的http端点,它完全适合"修改数据库而不保存"需要,但我无法找到如何在修改后的数据上运行我的检查器:有没有办法运行除了使用http端点进行Cypher查询之外的其他操作,还是我必须考虑另一种方法来解决这个问题?
我现在可以使用TransactionEventHandler beforeCommit运行我的检查程序,但这意味着用户无法在不启动提交的情况下知道他的数据是否正常,以及数据在db之间分割的事实没有修改,存储修改的TransactionData使得检查器很难应用。
所以,如果有人知道如何解决这个问题,那就太好了。 谢谢。
答案 0 :(得分:0)
您的选择是使用非托管扩展和事务事件API。
您可以处理传入的事务并读取其中的所有数据。如果交易违反了您的规则,那么您可以放弃该交易。
我建议您使用GraphAware framework。
以下是关于http://graphaware.com/neo4j/transactions/2014/07/11/neo4j-transaction-event-api.html
的精彩文章