在HBase中使用扫描时我应该依赖TTL(生存时间)还是应该使用时间戳作为密钥的一部分

时间:2013-04-30 10:29:41

标签: hbase

我正在使用TTL参与我参与的项目。 我明白这一功能,当我执行扫描时,我不会得到过期的数据。 我只是想知道过期数据的性能影响是什么(主要压缩之间)。 我们有10分钟的TTL和收集(和过期)的大量数据,所以我想知道使用TTL是正确的方法还是使用时间戳作为密钥的一部分并进行实际上不包含的扫描过期范围。

1 个答案:

答案 0 :(得分:0)

您可以在扫描中使用HBase过滤器来过滤掉HBase服务器端过期的行。从内存中,我不记得单元格时间戳是否可以作为过滤器表达式的一部分使用。

  • 如果是的话,你可以直接用它们做任何过滤器(我想可能没有)。
  • 如果没有,您可以向列族添加时间戳列,然后使用ValueFilter过滤掉时间戳小于或等于阈值时间戳的行。此选项存储冗余时间戳,但如果它允许您使用过滤器,那么这将是一个好的权衡。

您绝对不应该选择的一件事是使用看起来像"{timestamp}{other data}"的行键。这将使你的HBase表像一个庞大的队列一样工作,这会破坏性能。