Accumulo:如何为有效查询索引数据?

时间:2016-05-10 15:29:57

标签: accumulo

我需要一个有效的索引架构来存储警报。每个警报都具有以下属性:

  • alertId
  • 时间戳
  • 位置

我需要执行以下查询:

  • 在定义的日期范围内创建了多少个警报?
  • 在定义的日期范围内创建了多少类型为X的警报?
  • 在定义的日期范围内创建了多少个位置Y的警报?

我最初的想法是索引以下内容:

ROWID -> alertId_timestamp,
CF -> attribute (type, location),
CQ -> value

但是我觉得我的#2& #3查询用例。我应该如何索引我的数据?

1 个答案:

答案 0 :(得分:2)

如果您知道这些将是您唯一的查询,您可以插入您的数据:

RowID     |  CF    |  CQ    | Value 
Timestamp | "TYPE" | <type> | alertID
Timestamp | "LOC"  | <loc>  | alertID

是的,您正在插入数据2x,但这是&#34;大数据&#34;,对,因此存储空间不应该是一个大问题。您的所有查询都是基于时间的,只是在进行计数,因此您应该将时间戳作为RowID,以便对行进行Range并使用{{在CF/CQ上过滤您想要的内容1}}或。您也可以尝试将CF / CQ组合在一起,例如&#34; TYPE_Foo&#34;和&#34; LOC_Boston&#34;如果您知道自己只是在寻找特定的类型/位置,但如果您尝试查找所有类型/位置的所有/范围,这将限制您。请注意,您也可能希望使用某种迭代器来进行服务器端聚合Does Accumulo support aggregation?