可靠的词典性能语义

Reliable Dictionary Performance Semantics

Service Fabric 文档未在枚举期间明确定义 Reliable Dictionary 中键的顺序。无论插入顺序如何,快速测试都会使用键顺序枚举。

  1. 按键顺序是故意的吗?我可以假设第一个键总是最小值来编写我的服务吗?
  2. 支持关键索引的数据结构是什么?
  3. 如果不是众所周知的数据结构,add/delete/get/update的时间复杂度是多少?
  4. 逆向高效枚举是否可行?
  5. 可以进行键范围查询吗?

写入和点获取: 提交最初进入哈希表,然后被移动到排序数据结构 post 检查点。因此,您的 Adds/Updates/Deletes 将具有 O(1) 的最佳情况运行时间和 O(log n) 的最坏情况运行时间(检查密钥是否存在的验证可能会使它成为 O(log n),因为我们不盲目写)

获取可能是 O(1) 或 O(log n),具体取决于您是从最近的提交还是从较旧的提交中读取。

枚举: 为了提高枚举效率,将 hahstable 的内容添加到临时排序数据结构中,直到它被移动到主要排序数据结构 post 检查点。所以它是 O(log n).

键范围查询是可能的。您可以使用接受过滤器的重载。

在我们的下一个版本中,我们将公开 api 以及开始范围和结束范围以及排序(升序和降序)。