在可靠集合(特别是 IReliableDictionary)中,实现“常见”查询的一种方法是更新二级字典,该字典以特定方式在枚举中对键进行排序。对于大型数据集,我想避免在.
为了实现这一点,我想实现某种延续令牌,调用者可以在请求数据时提供给我。我目前正在通过首先生成一个有序枚举并返回前 n 个项目来实现这一点,其中 n = MAX_PAGE 大小。 延续本质上是 n 个项目列表中的最后一个键。下次调用者传入 continuation 令牌时,我会使用 filter 函数生成有序可枚举,指定 key 应该大于 continuation。
这有两个问题(我可以看到):
- 集合可能会在调用者第一次请求页面和后续请求之间发生变化。这一点,我不确定我是否可以避免,因为无论谁试图翻阅数据,都需要能够随时更新集合。
- 我不确定如何使用过滤器功能。我假设由于开发人员可以过滤任何内容,因此GetEnumerableAsync() 方法必须在返回 enumerable 之前提供字典中的所有键。对于足够大的数据集,这似乎很慢。
有没有规定的方法来分页这样的数据? 我开始觉得我可能会在我的一些用例中使用 Reliable Collections 找出错误的树。