繁体   English   中英

复制 CosmosDB 集合并按物理分区保留项目顺序的最有效方法是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM