我正在研究CosmosDB分区工具,到目前为止我所获得的是它对性能有益。它可以真正帮助我们避免扇出查询,但我已经陷入了一个分区问题。对于写入中的分区,如果我有不同类型的文档,可能是数千个,属于同一个分区,写入操作会很慢但如果我给它们不同的分区键,那么我将失去事务行为,因为存储过程的范围是一笔交易。
我的用例是我在同一个集合中有不同类型的文档,并且在一个给定时间我将更新并插入数千种不同类型的文档,我必须在同一个事务中执行此操作,这意味着我必须使用相同的密钥,但如果我这样做,那么我将进行热写操作,这在CosmosDB中没有建议。任何帮助如何解决这个问题将不胜感激。
答案 0 :(得分:1)
人们使用存储过程批处理他们的文档,而今天它确实将你限制在一个分区。但是,请注意您的分区键应具有的其他限制,以使您的文档在不同的分区中散开。因此,您的一个批处理可以用于一个分区键,而下一个批处理用于另一个。
在这里阅读更多内容 https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data
希望这有帮助。拉法特
答案 1 :(得分:0)
这很棘手。.目前,我确实在单个分区中有大量文档,也许以后我需要重新设计该集合。现在,我正在CosmosDB中使用批量插入/更新库。链接https://docs.microsoft.com/en-us/azure/cosmos-db/bulk-executor-overview是Microsoft支持的库,用于大数据插入/更新的方式更快,但是它支持事务行为,但仅具有单个分区。所以目前,我很安全。