奥尔良 - 批量数据导入

Orleans - Bulk Data Import

我目前正在为我们的组织学习 MS Orleans。 我知道只要所有数据库更新都通过谷物进行,Orleans Grains 将与数据库保持同步。

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

Orleans 是否有一些流程或模式可以满足这一要求? 或者我们是否需要通过 Grains 处理所有批量过程? 如果我们通过 grains 处理批量操作——我们是通过更新每个 grain 来解决这个问题(如果每个 grain 都将自身更新为 DB 似乎非常昂贵)还是有一些批量模式可以用来强制所有受影响的 grains 到 'refresh'?

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

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

编辑:

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

你有几个选择。

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

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

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