Azure cosmosdb 每个分区的CosmosDB事务

Azure cosmosdb 每个分区的CosmosDB事务,azure-cosmosdb,Azure Cosmosdb,我正在研究CosmosDB分区功能,到目前为止,我得到的是它对性能有好处。它确实可以帮助我们避免扇出查询,但我遇到了一个关于分区的问题。对于写分区,如果我有不同类型的文档,可能有数千个,属于同一分区,那么写操作将很慢,但是如果我给它们不同的分区键,那么我将丢失事务行为,因为存储过程的作用域是一个事务 我的用例是,我在同一个集合中拥有不同类型的文档,在某一给定时间,我将更新和插入数千种不同类型的文档,我必须在同一事务中这样做,这意味着我必须使用相同的密钥,但如果我这样做,我将执行不建议的热写操作在

我正在研究CosmosDB分区功能,到目前为止,我得到的是它对性能有好处。它确实可以帮助我们避免扇出查询,但我遇到了一个关于分区的问题。对于写分区,如果我有不同类型的文档,可能有数千个,属于同一分区,那么写操作将很慢,但是如果我给它们不同的分区键,那么我将丢失事务行为,因为存储过程的作用域是一个事务


我的用例是,我在同一个集合中拥有不同类型的文档,在某一给定时间,我将更新和插入数千种不同类型的文档,我必须在同一事务中这样做,这意味着我必须使用相同的密钥,但如果我这样做,我将执行不建议的热写操作在宇宙空间数据库。任何关于如何解决此问题的帮助都将不胜感激。

人们使用存储过程对文档进行批处理,现在它确实将您限制在一个分区内。但是,请注意分区键的其他限制,因为您的文档在不同的分区中扇出。所以,您的一个批可以用于一个分区密钥,而下一批用于另一个分区密钥

在这里阅读更多

希望这有帮助


拉法是个棘手的问题。。我现在在一个分区中有一大组文档,也许以后我需要重新设计集合。现在我正在CosmosDB中使用批量插入/更新库。对于大型数据插入/更新,其Microsoft支持的库的链接速度更快,但它支持事务性行为,但仅使用单个分区。所以现在我很安全

嗨,拉法特,谢谢你的及时回复。我明白你的意思,但为了澄清,我会给你一个例子来帮助我更好地理解它。我有两个分区,一个是城市,一个是乡村。如果我更新或插入国家作为一个批次,城市作为一个批次,正如你所提到的,我认为它不会在一个交易中结束,或者是吗?但是,如果我只为城市和国家创建一个租户分区,那么我可以在一个事务下扭曲它们,但该请求仍然必须在一批中完成,不是吗?您的理解是正确的。两个分区意味着两个事务。也许考虑一个国家的复合密钥:城市将给你一个单一的交易。