同时变化的变量之和

时间:2014-12-15 19:48:24

标签: database concurrency distributed

我想跟踪用户控制变量的总和。 每个用户都可以添加/删除/更新他/她自己的变量。 用户应该能够在自己更新后看到总和更改。

随着用户数量的增加,系统将被分发并同时进行更新。 我想避免更新总和的瓶颈。 追踪这笔金额的最佳方法是什么? 是一个可以处理这个问题的现有数据库,还是我需要自己实现一些东西?

1 个答案:

答案 0 :(得分:0)

一般来说,如果您知道每个值的变化程度,您就知道总和的变化情况,并且您可以使用这些增量变更来更新总和。

  1. 在集中式中,您可以使用任何支持触发器和事务的SQL数据库。您将拥有一个表,其中包含不同客户端/数字及其值的所有描述,以及另一个用于缓存总和的表。我们的想法是触发器将在更新/删除/插入时运行,并且只更新缓存的总和。这种方式对于大量数据来说会快得多,但也容易出错(你也可以只重新总结触发器中的所有值并将其存储在缓存中,它可以轻松地为几千个值工作)

  2. 在分散的系统中,您可以做类似的事情。在这里,您可以共享所有客户端之间的所有值,或者(因为这可能太多)只是更改。因此,每个客户都要对某些价值观负责,并且在他分享的每一项变更中,总和已经因变更而发生变化。 - 示例:如果用户将值修改为5到3,则客户端将广播-2。假设初始状态为0,并且只是在客户端进入时总结所有数字。由于加法运算的可交换属性,顺序无关紧要。您只需要确保每个人都会收到数据,但您可以通过reliable multicast实现此目的。