微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决拥有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);
            }
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?