拥有Cosmos DB容器100%复制的最简单方法

问题描述

我希望Cosmos DB数据库中的两个不同容器始终都包含完全相同的数据。唯一的区别是容器的分区键。

最简单的方法是什么?我正在寻找一种几乎没有代码方法,因此我不喜欢互联网似乎推荐的Data Factory解决方案。也许Azure中有另一项服务或第三方服务-也许可以通过简单的触发器来可靠地完成它?

编辑:澄清-我需要不断对其进行更新。一个容器是在正常使用期间更改所有数据的容器,而另一个容器应在发生这种情况时保持同步。

解决方法

如果您不想编写自己的代码来执行此操作,则可以使用具有Cosmos DB Live Data Migrator的此存储库。

这可以通过Azure部署按钮进行部署。部署后,您可以打开网站并输入所有必需的信息。然后单击另一个按钮,它将使两个容器与不同的分区键保持同步。

,

这是它的功能代码:

Total_SA = 
VAR insSA = CONVERT(SUBSTITUTE([Incremental SA],"RM",""),INTEGER)
VAR refSA = CONVERT(SUBSTITUTE([Referral SA],INTEGER)


VAR PreviousRow =
    TOPN (
        1,FILTER (
            'Table','Table'[Index] < EARLIER('Table'[Index]) && 
             'Table'[Pol No.] = EARLIER ( 'Table'[Pol No.])
        ),[Index],DESC
    )
 
VAR PreviousValue =  MAXX( PreviousRow,CONVERT(SUBSTITUTE('Table'[Referral SA],INTEGER)  )  

RETURN  PreviousValue +    CONVERT(SUBSTITUTE('Table'[Incremental SA],INTEGER) + 500

以及必须配置的设置 local.settings.json:

using System;
using System.Collections.Generic;
using Microsoft.Azure.Documents;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace CosmosDBSyncFunction
{
    public static class SyncCosmosDb
    {
        [FunctionName(nameof(Sync))]
        public static void Sync(
            [CosmosDBTrigger(
                databaseName: "evaluation",collectionName: "lorem",ConnectionStringSetting = "cosmos-mm-eval",LeaseCollectionName = "leases",CreateLeaseCollectionIfNotExists=true
            )]IReadOnlyList<Document> input,[CosmosDB(
                databaseName: "evaluation",collectionName: "ipsum",ConnectionStringSetting = "cosmos-mm-eval")] IAsyncCollector< Document> output,ILogger log)

        {

            foreach(var item in input)
            {
                output.AddAsync(item);
            }
        }
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...