查询 Cosmos DB(表存储 API)以获取存储中的“下一个”项目的好策略是什么?“下一个”定义为上次调用未返回的前 1 项。上次调用返回的项目正在内存中。使用 .NET 框架、C#。表预计将容纳大约 200 万个条目,因此不首选表扫描。:)
表存储如下所示:分区键(多个值的组合):“0000/00/01/2020-01-11”。例如,行键单个 int 值 1。行包含其他字符串数据。
所以键值对(分区键和行键)如下所示。该应用程序读取量很大,但不一定使用 Log Tail Pattern ( https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-design-guide#log-tail-pattern ) .
0000/00/01/2020-01-11,1,aaa,x
0000/00/01/2020-01-11,2,aaa,y
0000/00/01/2020-01-11,3,aaa,z
0000/00/01/2020-01-11,4,bbb,x
0001/00/01/2020-01-11,5,aaa,x
0001/00/01/2020-01-11,6,ddd,x
(注意底部的两个实体将位于不同的分区中,因此“aaa,x”存在于两个分区中)。
所以我认为查询只得到一个项目是
TableQuery<MyClass> query = new TableQuery<MyClass>()
.Where(TableQuery.GenerateFilterCondition("0000/00/01/2020-01-11", QueryComparisons.Equal, "aaa")).Take(1);
如果那是代码是正确的,并返回“aaa,x”如何确保后续查询将获得“aaa,y”,下一个将获得“aaa,z”,下一个将获得“bbb,x”和下一个将在同一个分区中再次获得“aaa,x”?
如果制作丰富的对象没有意义,而是直接查询 REST API 并可能保留上次在另一个表中使用的项目以及两个表之间的外连接或其他过滤条件,我愿意在而是那个方向。
谢谢!