use*_*891 2 persistent-storage orleans
我目前正在为我们的组织了解 MS Orleans。我知道只要所有数据库更新都是通过谷粒来的,奥尔良谷粒将与数据库保持同步。
但是如果有一些批量处理过程(如处理数据文件)更新/插入/删除数据库中的记录会发生什么?
是否有一些流程或模式可以与奥尔良一起使用来满足这一点?还是我们需要通过 Grains 处理所有批量处理?如果我们通过谷粒处理批量操作 - 我们是通过更新每个谷粒(如果每个谷粒将自身更新到数据库中似乎非常昂贵)或者是否有一些批量模式用于强制所有受影响的谷粒“刷新”?
答案可能很明显。我在文档中没有找到关于这些场景的任何内容。
我们将使用 Orleans 作为带有 MS-SQL 服务器的本地安装。
编辑:
我指的是更新 N 粒数据的过程。对于 sql 来说,一次更新 1000 条记录的调用比更新一条记录的 1000 次调用要好得多。一个具体的例子是库存更新:每个产品库存都是一个谷物。每隔 15 分钟左右,第 3 方就会收到一份文件,通知在应用程序之外发生的库存数量变化。这应该在数据库中更新并反映在谷物中。文件可能有 10k 条记录...
你有几个选择。
1) 通过谷物上传 - 谷物将缓存数据并存储在数据库中。这在一定程度上违背了您高效上传数据库的目标,因此可能不是您想要的。
2) 直接批量上传到数据库,但使用grain 来访问和处理/提供数据。谷物将在第一次请求时从数据库读取数据,缓存它,为进一步的请求服务。此外,所有未来的数据更新都将通过谷物进行。这通常是最常见的模式。
3)如果你还需要周期性的数据处理,即使在没有服务请求的情况下,那么在批量上传grain后,你可以“bulk-kick”grain开始周期性的处理。在此选项中,您将编写一个控制器循环(例如客户端逻辑),该循环将一个一个地调用“Init”到一组grain中(但并行:在X(X~100)上并行调用Init并等待它们一起),然后做下一批。Grains 将在初始化时启动计时器或提醒。
| 归档时间: |
|
| 查看次数: |
285 次 |
| 最近记录: |