如何批量上载关系数据并将其转换为RavenDB中的聚合?

问题描述

| 我正在设法弄清楚如何将关系数据高效地批量插入RavendB,尤其是在从关系数据转换为聚合的地方。 假设我们有两个表的两个转储文件:“ 0”和“ 1”。它们太大,无法加载到内存中,因此我将它们读取为流。我可以通读每个表,并在RavendB中创建与每个行相对应的文档。我可以使用批处理请求将其作为批量操作来执行。到目前为止简单高效。 然后,我想在服务器上进行转换,摆脱
OrderItems
并将其集成到其父
Order
文档中。没有成千上万的往返次数怎么办? 答案似乎介于基于集合的更新,实时投影和非规范化更新之间,但我不知道在哪里。     

解决方法

您将需要使用非规范化更新和基于集合的更新来执行此操作。看一下PATCH API,看看它提供了什么。尽管如果您计划一次更新多个文档,则只需要基于集合的更新,但是您可以直接使用PATCH API直接对已知文档进行修补。 实时投影只会在获取查询/索引结果时为您提供帮助,它们不会更改文档本身,只会更改从服务器返回到客户端的文档。 但是,我建议,如果可能的话,在将订单和对应的OrderItems内存中合并之前,将它们发送到RavenDB。您仍然可以从转储文件中流式传输数据,仅在需要时使用一些缓存。这将是最简单的选择。 更新 我已经编写了一些示例代码来演示如何执行此操作。这将修补特定
Post
文档中的
Comments
数组/列表,在本例中为\“ Posts / 1 \”