HBase架构设计存储查询日志

时间:2014-01-22 09:41:02

标签: search schema hbase

最近,我正在努力制定一个解决方案,将用户的search log / query log存储到HBase表中。

让我们简单的原始查询日志:

query timestamp req_cookie req_ip ... 

数据访问模式:

  1. 在一个时间范围内扫描所有查询。
  2. 使用指定的查询扫描所有搜索记录
  3. 我提出了以下行键设计:

    <query>_<timestamp>
    

    但是查询可能很长或编码不同,将query直接放入rowkey似乎是不明智的。

    我正在寻求优化此架构的帮助,以前是否有人处理此场景?

1 个答案:

答案 0 :(得分:1)

1-您可以使用时间范围进行全表扫描。如果您需要实时响应,则必须维护反向行键表<timestamp>_<query>(首先仔细规划您的区域拆分策略)。

  

请注意,顺序行键前缀将获得一些   区域非常热,如果你有很多的同意,所以这是明智的   缓冲写入该表。此外,如果您获得的写入数量超过单个区域可以处理的数量,那么您将实现某种分片前缀(即时间戳的模数),尽管这会使您的   检索要复杂得多(你必须合并结果)   多次扫描)。

2-以一种总是有一个固定长度的行键的方式散列查询字符串,而不必关心编码(可能是MD5?)