Cosmos DB支持多项目 write 事务(在snapshop隔离下)。但是,有什么方法可以执行事务性多项 read (即SELECT
)吗?
要弄清为什么Cosmos DB查询通常不是事务性的:
假设您有一个包含成对的文档的集合,这些文档总是成对地创建和删除,让我们将它们称为 A s和 B s。因此,一个写事务可以创建文档A1
和 B1
,而另一个写事务可以删除A2
和 B2
,因此您永远都不会看到没有相应A
的{{1}},反之亦然。
但是,如果您对此集合进行B
查询,则结果将始终会被分页。无法避免分页。因此,获取查询的结果集意味着检索所有页面。现在,假设第一页包含SELECT
但不包含A1
。在获得第一页之后,B1
和A1
在单个事务中被删除。现在B1
将永远不会出现在随后检索到的任何页面上,从而导致包含B1
但不 A1
的答案集。这是一个事务不一致的视图。
有什么解决方法吗?