什么是在Neo4j中存储交易的最佳方法?

时间:2015-09-16 16:52:08

标签: transactions neo4j store

我在图形世界中更新,今天,在我为一些图表建模以控制帐户交易时,我遇到了以下问题:"当我们存储交易时,最好的方法是什么?谈论约会?"

我考虑了两个节点,帐户和事务,以及事务的日期,比如节点事务的属性。

我想到了两个节点,帐户和交易,以及交易的日期,比如关系的属性。

现在,我正在考虑一个帐户节点,其他多年,其他几个月,其他几天,然后其他用于交易,如树。

哪一种(或者如果我们还有另一种情况)哪一种最适合在Neo4j中使用?哪一个具有最佳性能?如果我有10亿笔交易,哪一笔最好?

谢谢大家! 阿兰奥利维拉

P.S。:对我的英语很好。

1 个答案:

答案 0 :(得分:1)

正如Cyber​​sam所提到的,有很多方法可以对数据进行建模。

由于Neo4j是无模式的,这通常是一个优势,有时在建模方面则相反。

在阅读评论后我会给两美分:

  1. 交易是绑定到多个帐户的事件,并且在它们之间有路径。
  2. 要检索帐户的最后一笔交易,通常的做法是使用链接列表

    (account)<-[:LAST_TRANSACTION]-(transaction)<-[:PREVIOUS_TRANSACTION]-(transaction)
    

    当你想在图形中的多方之间进行模式匹配时,这有一些优点,但是当使用Cypher时,这对写入时间来说是一个繁重的操作(虽然你需要在达到它之前有很大的写入吞吐量但是我达到了它在一个应用程序已经),在Java中没关系。

    此处提供了一些文档:http://neo4j.com/docs/stable/cypher-cookbook-newsfeed.html

    1. William建议使用TimeTree插件来管理日期,这是一个不错的选择,我感谢他(Nb:我在为产品背后的公司工作)。这使您能够在时间树和图中的其他方之间进行一些额外的模式匹配。这可以支持非常高的写入吞吐量而没有任何问题。
    2. Nb:我见过有人使用TimeTree来计算每日,每月,每年的事件。如果您的用例不再,则Timetree和Neo4j不会让您对此类基本操作感到满意,Redis的表现会明显更好。

      1. 拿一篇论文,问你一个关于你想对图表提出什么要求并将问题描述为节点和关系的问题,所以要声明一下,确切地询问你想要检索的内容而不是如何。做10,20,30次,你会看到,通过可视化你画的东西,新的问题将自然而然地出现。然后测试它,尝试加载一些数据并进行一些查询。

      2. 如果事情仍然不清楚,请扫描您的图纸并在此处根据您找到的问题修改问题,我们非常乐意为您提供帮助。

相关问题