可靠的词典性能语义
Reliable Dictionary Performance Semantics
Service Fabric 文档未在枚举期间明确定义 Reliable Dictionary 中键的顺序。无论插入顺序如何,快速测试都会使用键顺序枚举。
- 按键顺序是故意的吗?我可以假设第一个键总是最小值来编写我的服务吗?
- 支持关键索引的数据结构是什么?
- 如果不是众所周知的数据结构,add/delete/get/update的时间复杂度是多少?
- 逆向高效枚举是否可行?
- 可以进行键范围查询吗?
写入和点获取:
提交最初进入哈希表,然后被移动到排序数据结构 post 检查点。因此,您的 Adds/Updates/Deletes 将具有 O(1) 的最佳情况运行时间和 O(log n) 的最坏情况运行时间(检查密钥是否存在的验证可能会使它成为 O(log n),因为我们不盲目写)
获取可能是 O(1) 或 O(log n),具体取决于您是从最近的提交还是从较旧的提交中读取。
枚举:
为了提高枚举效率,将 hahstable 的内容添加到临时排序数据结构中,直到它被移动到主要排序数据结构 post 检查点。所以它是 O(log n).
键范围查询是可能的。您可以使用接受过滤器的重载。
在我们的下一个版本中,我们将公开 api 以及开始范围和结束范围以及排序(升序和降序)。
Service Fabric 文档未在枚举期间明确定义 Reliable Dictionary 中键的顺序。无论插入顺序如何,快速测试都会使用键顺序枚举。
- 按键顺序是故意的吗?我可以假设第一个键总是最小值来编写我的服务吗?
- 支持关键索引的数据结构是什么?
- 如果不是众所周知的数据结构,add/delete/get/update的时间复杂度是多少?
- 逆向高效枚举是否可行?
- 可以进行键范围查询吗?
写入和点获取: 提交最初进入哈希表,然后被移动到排序数据结构 post 检查点。因此,您的 Adds/Updates/Deletes 将具有 O(1) 的最佳情况运行时间和 O(log n) 的最坏情况运行时间(检查密钥是否存在的验证可能会使它成为 O(log n),因为我们不盲目写)
获取可能是 O(1) 或 O(log n),具体取决于您是从最近的提交还是从较旧的提交中读取。
枚举: 为了提高枚举效率,将 hahstable 的内容添加到临时排序数据结构中,直到它被移动到主要排序数据结构 post 检查点。所以它是 O(log n).
键范围查询是可能的。您可以使用接受过滤器的重载。
在我们的下一个版本中,我们将公开 api 以及开始范围和结束范围以及排序(升序和降序)。