0

我使用 Azure 数据工厂尝试了许多不同的组合来创建 CosmosDB 集合的克隆,该集合维护写入分区的项目的顺序,但除非我指定批量写入大小为 1,否则它不会保持顺序。即使从映射数据流中源的更改源触发也不会保留顺序。我们编写了一个简单的工具,可以一次复制一条记录,但很明显,这很慢。

我们将 Cosmos 用作事件存储,更改馈送处理器为我们的投影仪提供数据 - 这一切都运行良好,但我们希望将事件复制到不同的环境中以测试更改。这需要保留原始写入顺序。

提前致谢。

4

2 回答 2

1

更改馈送处理器会按顺序从每个物理分区中读取_ts

当然,我已经能够使用它在几个小时内成功复制非常大的集合(> 1TB)。

为此,我使用了一个跨多个实例扩展的函数应用程序,确保租约集合具有足够的最大 RU 配置以不会成为瓶颈,并且在配置目标时扩展了 RU 足以预先创建所需数量的物理分区而不是而不是在导入期间拆分分区。

不过,我一直使用批量插入,因此在更改馈送处理器交付的每批中,我猜这_ts可能会变得无序。这对我来说从来都不重要。

将集合复制到新集合并保留_ts顺序的最有效方法当然是恢复备份。

它还具有您不必编写任何代码并提供任何资源来执行此操作的好处。如果您尚未使用连续备份模型,则应考虑切换到它,因为这允许还原是自助服务并可以及时恢复到指定的时间点。

于 2022-01-10T08:47:14.380 回答
0

获得一个像 cerebrata 这样的工具,它会在你认为合适的时候在集合之间进行复制等,如果你正在做大量的 Azure 工作,特别是使用 CosmosDB,它是一个非常方便的工具,这些天我不能没有它。

免责声明:我不为 cerebrata 工作,也没有因为推荐他们的工具而获得任何好处,这纯粹是基于我自己的经验。

于 2022-01-12T04:23:28.887 回答