xwr*_*wrs 5 .net powershell devops azure-cosmosdb
最近我遇到了一个场景,我需要在我的 CosmosDB 数据库上执行某种 DDL 和 DML 迁移(我知道这些首字母缩写词不适用于 NoSQL,但无论如何)。这些迁移计划在 CI/CD 管道中自动化和执行。
显然,很难在网上找到有关我想要实现的功能的任何信息。以下是一些标准:
我对最后一点感到非常沮丧,并试图避免创建将使用 SDK 应用 DML 更改的应用程序。在 .net 世界中,AFAIK EntityFramework 不支持 CosmosDB 中的自动迁移。
所以一个好的社区的问题是:有没有什么被认为是自动化 Cosmos DB 数据修改的好做法?
我上面所说的是否有意义,还是像处理 RDBMS 一样处理 NoSQL DBMS 的另一种尝试?
例如,虽然 Cosmos 不强制执行模式,并且会接受您开始提供的任何新字段或格式,但我有时会遇到一种一次性“迁移”有意义的场景,例如重命名字段。我使用的一种方法是创建一次性、按需的 Azure Function,其唯一任务是读取现有数据、验证并进行所需的更改。
这段代码可以非常谨慎地进行更改,并配置安全措施,以确保它仅手动/有意运行,并且具有幂等性,可以安全地多次运行并获得相同的结果。它在逻辑上可以与应用程序的代码库分开,但仍然可以使用共享数据访问代码,例如存储库类。除非您安排停机时间,否则需要考虑迁移窗口期间发生的更改,幂等性通过允许根据需要运行多次传递来解决这一问题。
另一个值得考虑的选择是利用Azure 数据工厂及其集成来读取和转换 Cosmos 数据。