gpt4 book ai didi

nosql - 文档/NoSQL 数据库是存储 Assets 负债表的理想选择吗?

转载 作者:行者123 更新时间:2023-12-04 01:49:59 26 4
gpt4 key购买 nike

如果我要创建一个基本的个人会计系统(因为我就是这样 - 这是一个关于我足够熟悉的领域的业余项目,以避免陷入需求的泥潭),像 RavenDB 这样的 NoSQL/文档数据库会是存储帐户的好候选人,更重要的是,针对这些帐户的交易?我如何选择哪个实体是“文档”?

我怀疑这是其中一种情况,实际上 SQL 数据库是合适的,而尝试使用 NoSQL 是错误的,但是当我想到我对 CQRS 和事件溯源知之甚少时,我想知道实体/文档是否是实际上是帐户,交易是针对它存储的事件,当这些“事件”发生时,也许我的应用程序也会写出到一个易于查询的读取存储,如 SQL 数据库。

非常感谢提前。

最佳答案

个人认为这是个好主意,但我有点偏见,因为我的全职工作是构建一个基于 CQRS、事件溯源和文档数据库的会计系统。

原因如下:

事件溯源和会计基于相同的原则。你不会删除任何东西,你只是修改。如果您添加了错误的交易,则不会删除它。您创建一个抵消交易。事件也是一样,你不会删除它们,你只是创建一个取消第一个事件的事件。这意味着您要发布大量 TransactionAddedEvent。

接下来,如果您在进行复式记账,记录交易的方式与您在屏幕上(尤其是在 Assets 负债表中)查看的方式不同。因此,我再次喜欢 cqrs。我们可以使用正确的会计原则来存储数据,但我们可以优化读取模型以按照您希望查看的方式显示数据。

在 Assets 负债表中,您希望查看给定帐户的所有条目。您不想看到交易,因为交易有两个方面。您只想查看影响该帐户的条目。

所以在你的文档数据库中你会有一个条目集合。

这使得查询非常容易。如果您想查看一个帐户的所有条目,您只需说 SELECT * FROM Entries WHERE AccountId = 1。我知道这是 SQL,但每个人都理解这个查询的简单性。它在文档数据库中同样简单。另外,它会快如闪电。

然后,您可以使用按 accountid 分组的查询创建 Assets 负债表,并设置日期限制。注意根本不需要连接,这使得文档数据库成为一个很好的选择。

关于nosql - 文档/NoSQL 数据库是存储 Assets 负债表的理想选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7584184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com