使用 .NET api 的 CosmosDB acid 事务(提交和回滚)
CosmosDB acid transactions (commit and rollback) using .NET api
我想在我的 CosmosDB 数据库上编写一些(可能)复杂的操作,最重要的是,它可以包含多个 CRUD 操作,当然,如果其中一个操作失败,我可以回滚整个操作,这一点非常重要交易。 javascript 存储过程是实现此目的的唯一方法吗?这是否意味着我会将它们写成 javascript 文件并使用 .NET api 执行它们(因为我的代码使用的是 .NET cosmos db api)?这可能吗?
提前致谢
你完全正确。目前它只能通过存储过程实现,因为它必须在服务器端 运行 。您绝对可以通过从 .net api
调用来执行这些存储过程
var sprocBody = File.ReadAllText(@"..\..\StoredProcedures\spHelloWorld.js");
如果你需要逻辑分区键内的交易,你有选择(一个集合中的不同文档类型没有错,记得有一个 属性 作为类型名称来区分 JSON-objects )
1. https://devblogs.microsoft.com/cosmosdb/introducing-transactionalbatch-in-the-net-sdk/ TransactionalBatch
2. https://github.com/Azure/azure-cosmosdb-bulkexecutor-dotnet-getting-started 用于批量 insert/update 操作的库,还支持分区内的事务
我想在我的 CosmosDB 数据库上编写一些(可能)复杂的操作,最重要的是,它可以包含多个 CRUD 操作,当然,如果其中一个操作失败,我可以回滚整个操作,这一点非常重要交易。 javascript 存储过程是实现此目的的唯一方法吗?这是否意味着我会将它们写成 javascript 文件并使用 .NET api 执行它们(因为我的代码使用的是 .NET cosmos db api)?这可能吗?
提前致谢
你完全正确。目前它只能通过存储过程实现,因为它必须在服务器端 运行 。您绝对可以通过从 .net api
var sprocBody = File.ReadAllText(@"..\..\StoredProcedures\spHelloWorld.js");
如果你需要逻辑分区键内的交易,你有选择(一个集合中的不同文档类型没有错,记得有一个 属性 作为类型名称来区分 JSON-objects )
1. https://devblogs.microsoft.com/cosmosdb/introducing-transactionalbatch-in-the-net-sdk/ TransactionalBatch
2. https://github.com/Azure/azure-cosmosdb-bulkexecutor-dotnet-getting-started 用于批量 insert/update 操作的库,还支持分区内的事务