pipe理数据库中不断变化的数据

我需要一些关于如何在monogoDB中构build数据的build议。 我有这个应用程序,用户可以查看,添加,编辑和删除信用卡和借记卡交易。 以下是数据的外观。 交易表

这里的余额栏是dynamic的。 例如,如果某人添加了一个交易date10-09-2017,那么此时余额字段中的所有金额都需要更改以反映新的交易。 现在,我并没有在数据库中保存这个平衡字段,每当用户加载页面,重新加载页面,以及编辑,删除,添加事务时,都会计算它。 现在速度很快,但是我认为,将来当用户有很多交易时,他们会变慢,因为这些计算需要在用户显示数据表之前完成。 有没有更有效的方法来做到这一点?

另外我在客户端进行计算,所以负载在客户端的设备上,而不是在服务器上。 我认为,如果它在服务器端,并且许多用户开始使用它,那么API请求将会变得更慢并且在一段时间之后不会无法使用。 这是正确的吗?

PS:也很难确保读者理解我的问题,但我已经尽力了。 请让我知道,如果我应该更详细地解释这个或者如果我应该添加更多的细节。

这不是关于MongoDB的问题,这是关于用户界面的问题。 你真的会一次显示交易的全部历史? 您应该使用分页(最简单)或滚动重新加载加载您的数据。

在由于平衡单元计算而出现问题之前,由于以下原因,您更有可能遇到问题:

  • 从networking缓慢加载(几乎肯定)
  • 缓慢的页面交互,因为DOM大小(也许)

显示前100到500个事务,并以某种方式提供用户加载早期的条目。

更新 – 关于服务器端的平衡计算:

您可以在服务器端计算余额,并将其存储到另一个用作caching的集合中。 如果事务插入发生在过去,则重新计算caching。 为了加快速度,您可以使用快照:在第三个集合中,您可以按照一定的时间间隔存储当前余额,例如使用以下数据结构:

{ Balance: 150000, Date: 2017-02-03, LastTransactionId: 546 } 

当过去插入一个事务时,在这个过去的时刻之前采取最近的快照,并基于此来重新计算caching。 这样,你。 可以保持重新计算的交易数量相当小。