1

我试图弄清楚如何将关系数据有效地批量插入到 RavenDB 中,特别是在从关系数据转换为聚合的情况下。

假设我们有两个表的两个转储文件:OrdersOrderItems. 它们太大而无法加载到内存中,所以我将它们作为流读取。我可以阅读每个表并在 RavenDB 中创建一个与每一行对应的文档。我可以使用批处理请求作为批量操作来执行此操作。到目前为止简单高效。

然后我想在服务器上转换它,摆脱OrderItems它们并将它们集成到它们的父Order文档中。如果没有数千次往返,我怎么能做到这一点?

答案似乎介于基于集合的更新实时投影非规范化更新之间,但我不知道在哪里。

4

1 回答 1

2

您将需要使用非规范化更新基于集合的更新来执行此操作。查看PATCH API以了解它提供了什么。虽然如果您计划一次更新多个文档,则只需要基于集合的更新,但您可以直接使用 PATCH api 对已知文档进行修补。

实时投影只会在您获得查询/索引的结果时为您提供帮助,它们不会更改文档本身,只会更改从服务器返回到客户端的内容。

但是,如果可能的话,我建议您在将 Order 和内存中相应的 OrderItems 发送到 RavenDB 之前将它们组合起来。您仍然可以从转储文件中流式传输数据,只需在需要时使用一些缓存。这将是最简单的选择。

更新 我已经制作了一些示例代码来展示如何做到这一点。这会修补Comments特定Post文档中的数组/列表,在本例中为“Posts/1”

于 2011-05-24T16:02:07.743 回答