使用变更Feed将数据从旧容器迁移到新的分区容器

时间:2019-05-08 13:29:36

标签: azure-cosmosdb

1。是否使用azure cosmosdb changefeed right方法将数据从旧容器迁移到新的分区容器?
2.Azure cosmosdb changefeed是否会有甚至直到现在都没有被修改过的文档?
3.如果上述情况均成立,那么使用azure cosmosdb change feed迁移数据涉及哪些步骤。

1 个答案:

答案 0 :(得分:0)

您当然可以使用Change Feed来实现所有这一切。 Cosmos DB有consume the Change Feed的多个选项,其中一个是using Azure Functions

如果使用“功能”选项,则可以像这样将Cosmos DB Trigger(从StartFromBeginningtrue)和Cosmos DB Output binding混合在一起,进行快速迁移,< / p>

[FunctionName("Migration")]
public static async Task Run(
    [CosmosDBTrigger(
        databaseName: "your-source-database",
        collectionName: "your-source-collection",
        ConnectionStringSetting = "Connection-String-Setting-Name-For-Source-Account",
        StartFromBeginning = true,
        CreateLeaseCollectionIfNotExists = true,
    )] IReadOnlyList<Document> source,
    [CosmosDB(
        databaseName: "your-destination-database",
        collectionName: "your-destination-collection",
        ConnectionStringSetting = "Connection-String-Setting-Name-For-Destination-Account" // In case your destination is on a different account, otherwise, it could be the same value as the Trigger
    )] IAsyncCollector<Document> destination,
    ILogger log)
{
    foreach(var doc in source){
          await destination.AddAsync(doc);
    }
}

有些优化可以应用于多主数据库或地理分布的应用程序(例如,如果您的函数在其他区域运行,则使用PreferredLocations)。

请记住,该功能可作为实时迁移。它会开始迁移部署之前存在的文档,然后如果您的源集合不断获取插入/更新,它将继续迁移新文档,同时继续运行。

如果您需要的是迁移,则也可以使用Data Migration Tool