【发布时间】:2013-10-06 03:22:07
【问题描述】:
我有一个带有整数键(时间戳)的表,其中包含应从数据库中删除特定记录的时间。还有一个清理查询,它从这个表中取出过期时间比现在短的记录并删除它们。
Erlang 文档说,有四种类型的表类型:set、ordered_set、bag 和 duplicate_bag。
-
set是使用哈希表实现的,因此读取需要 O(1) 时间复杂度。 -
ordered_set是使用树实现的,因此读取需要 O(log(n)) 时间复杂度,但它更好地处理后续间隔。 - 我没有找到有关
bag实施的信息。
ordered_set 看起来很理想,但我不能使用它,因为两条记录可以有相同的时间戳。所以问题是:
bag 表是如何实现的,它是否适合查询后续间隔?如果没有,如何获得“ordered_bag”功能?
【问题讨论】:
-
我认为排序对于时间相关的应用程序非常重要。表操作仅发生在行中的特定范围内。如果没有排序,您必须使用整个表(好的,有索引)。那么,为什么不使用像 {Timestamp,ID} 这样的元组键,其中 ID 是任意值(在元组中的第二个位置以保留时间戳排序)。为什么必须有时间戳作为键?