会计系统:如何实现账户关闭,管理多个用户创建的数十亿笔交易?

Accounting System: How to Implement of Account Closing, Manage Billions of Transactions created by multiple users?

我正在使用 MySQL 关系数据库在 Codeigniter 中实现会计系统。我面临一些问题。我在“Transaction Table" which can be seen as General Ledger in accounting terms. As there could be more than thousand users of the system and there could be billions of transactions in my "Transaction Table”中记录所有交易。 为了提取余额 Sheet 等会计报告,我需要搜索该特定用户的所有交易,然后执行其他操作以形成 "Accounting Report"

现在来谈谈这个问题,因为交易增长太快,这肯定会减慢我的系统。我该如何处理这个问题?

我找到了一个解决方案 "account closing",如果我每个月关闭帐户,限制用户执行创建、更新和删除功能,那么我将能够使用预先计算的帐户值我的会计报告,但我不能限制用户查看以前的交易,所以在这种情况下,系统将不得不从数十亿笔交易中搜索他的交易,这不能解决我的问题。

我正在考虑将已关闭的事务转移到可以解决问题的每个用户的单独 table,但我的数据库是规范化的 (3NF)。在创建用户帐户时为每个用户创建单独的 table 并管理新创建的 table 关系是否是个好主意?

Transaction Table Image

您的模型可能有误。您假设每笔交易有一个贷记账户和一个借记账户。经常有3个或更多的账户参与交易。

关于您的体重秤问题 - 现在不要担心。 让您的产品获得成功。如果您接近 bilion 条目,请聘请顾问来帮助您,他或她可以使用许多技术,分片是关键字之一。

如果您不认为能够为多用户会计系统支付 10 亿个条目的咨询费用,那么您的商业模式就有缺陷,您将在未来遇到大麻烦。如果是这样的话,最好现在重新考虑一下。

根据我对您当前结构的估计,table 每十亿个条目将容纳大约 0.5 GB。 MySQL 应该可以毫无问题地处理这个问题,除非您的服务器有 space 限制。