[英]Most efficient way to query across partition with CosmosDB for bulk operations
[英]What is the most efficient way to copy a CosmosDB collection and retain the order of items by physical partition?
我使用 Azure 数据工厂尝试了许多不同的组合来创建 CosmosDB 集合的克隆,该集合维护写入分区的项目的顺序,但除非我指定批量写入大小为 1,否则它不会保持顺序。 即使从映射数据流中源的更改源触发也不会保留顺序。 我们编写了一个简单的工具,可以一次复制一条记录,但很明显,这很慢。
我们将 Cosmos 用作事件存储,更改馈送处理器为我们的投影仪提供数据 - 这一切都运行良好,但我们希望将事件复制到不同的环境中以测试更改。 这需要保留原始写入顺序。
提前致谢。
更改馈送处理器确实以_ts
顺序从每个物理分区中读取。
当然,我已经能够使用它在几个小时内成功复制非常大的 collections (> 1TB)。
为此,我使用了跨多个实例扩展的 function 应用程序,确保租约集合具有足够的最大 RU 配置,不会成为瓶颈,并且在配置目标时扩大了 RU,足以预先创建所需数量的物理分区,而不是而不是在导入期间拆分分区。
不过,我一直使用批量插入,因此在更改馈送处理器交付的每个批次中,我猜_ts
可能会变得无序。 这对我来说从来都不重要。
将集合复制到新集合并保留_ts
顺序的最有效方法当然是恢复备份。
它还具有您不必编写任何代码并提供任何资源来执行此操作的好处。 如果您还没有使用连续备份 model,您应该考虑切换到它,因为这允许恢复是自助服务并可以在指定的时间点进行。
获得像 cerebrata 这样的工具,它会在 collections 等之间进行复制,如果你认为合适的话,如果你正在做很多 Azure 专门与 CosmosDB 一起工作,它是一个非常方便使用的工具,这些天我不能没有它。
免责声明:我不为 cerebrata 工作,也没有因为推荐他们的工具而获得任何好处,这纯粹是基于我自己的经验。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.