2

我目前正在为我们的组织了解 MS Orleans。我知道,只要所有数据库更新都通过谷物进行,奥尔良谷物就会与数据库保持同步。

但是,如果有一些批量处理过程(如数据文件的处理)更新/插入/删除数据库中的记录,会发生什么?

Orleans 是否有一些流程或模式可以解决这个问题?还是我们需要通过 Grains 处理所有批量过程?如果我们通过谷粒处理批量操作 - 我们是通过更新每个谷粒来解决这个问题(如果每个谷粒都将自己更新到数据库中,这似乎非常昂贵)还是有一些批量模式可以用来强制所有受影响的谷粒“刷新”?

答案可能很明显。我在文档中没有找到关于这些场景的任何内容。

我们将使用 Orleans 作为 MS-SQL 服务器的本地安装。

编辑:

我指的是更新 N 个颗粒数据的过程。对于 sql 来说,一次更新 1000 条记录的调用比更新一条记录的 1000 次调用要好得多。一个具体的例子是库存更新:每个产品库存都是一粒谷物。每隔 15 分钟左右,第 3 方会收到一份文件,通知应用程序之外发生的库存数量变化。这应该在数据库中更新并反映在颗粒中。文件可能有 10k 的记录...

4

1 回答 1

5

你有几个选择。

1)通过grains上传-grains将缓存数据并存储在数据库中。这部分违背了您高效上传数据库的目标,因此可能不是您想要的。

2)直接批量上传到数据库,但使用grains访问和处理/服务数据。谷物将在第一次请求时从数据库中读取数据,缓存它,为进一步的请求服务。此外,所有未来的数据更新都将通过谷粒进行。这通常是最常见的模式。

3)如果你也需要周期性的数据处理,即使没有服务请求,那么在批量上传grain后,你可以“bulk-kick”grain开始周期性处理。在此选项中,您将编写一个控制器循环(例如客户端逻辑),它将一个一个地调用“Init”到一组颗粒中(但并行:并行调用 X (X ~ 100) 上的 Init 并等待它们一起),然后做下一批。Grains 将在 Init 时启动计时器或提醒。

于 2017-10-20T15:17:55.723 回答