Accumulo:如何为高效查询索引数据?
Accumulo: How to index data for efficient queries?
我需要一个高效的索引架构来存储警报。每个警报都具有以下属性:
- alertId
- 时间戳
- 类型
- 位置
我需要执行以下查询:
- 在定义的日期范围内创建了多少警报?
- 在定义的日期范围内创建了多少个类型 X 的警报?
- 在定义的日期范围内从位置 Y 创建了多少警报?
我最初的想法是索引如下:
ROWID -> alertId_timestamp,
CF -> attribute (type, location),
CQ -> value
但是我认为查询性能对于我的#2 和#3 查询用例来说会很差。我应该如何索引我的数据?
如果您知道这些将是您唯一的查询,您可以这样插入数据:
RowID | CF | CQ | Value
Timestamp | "TYPE" | <type> | alertID
Timestamp | "LOC" | <loc> | alertID
是的,您正在插入数据 2x,但这是 "Big Data",对,所以存储 space 应该不是什么大问题。您的所有查询都是基于时间的并且只是在进行计数,因此您应该将时间戳记作为您的 RowID,以便您可以对行执行 Range
并使用 [= 在 CF/CQ
上过滤您想要的内容13=] 或 .您也可以尝试将 CF/CQ 组合在一起,例如 "TYPE_Foo" 和 "LOC_Boston",如果您知道您只会寻找特定的 types/locations,但这会限制如果您要查找 all/range 共 types/locations 个,请与您联系。请注意,您可能还想使用某种迭代器来进行服务器端聚合 Does Accumulo support aggregation?
我需要一个高效的索引架构来存储警报。每个警报都具有以下属性:
- alertId
- 时间戳
- 类型
- 位置
我需要执行以下查询:
- 在定义的日期范围内创建了多少警报?
- 在定义的日期范围内创建了多少个类型 X 的警报?
- 在定义的日期范围内从位置 Y 创建了多少警报?
我最初的想法是索引如下:
ROWID -> alertId_timestamp,
CF -> attribute (type, location),
CQ -> value
但是我认为查询性能对于我的#2 和#3 查询用例来说会很差。我应该如何索引我的数据?
如果您知道这些将是您唯一的查询,您可以这样插入数据:
RowID | CF | CQ | Value
Timestamp | "TYPE" | <type> | alertID
Timestamp | "LOC" | <loc> | alertID
是的,您正在插入数据 2x,但这是 "Big Data",对,所以存储 space 应该不是什么大问题。您的所有查询都是基于时间的并且只是在进行计数,因此您应该将时间戳记作为您的 RowID,以便您可以对行执行 Range
并使用 [= 在 CF/CQ
上过滤您想要的内容13=] 或 .您也可以尝试将 CF/CQ 组合在一起,例如 "TYPE_Foo" 和 "LOC_Boston",如果您知道您只会寻找特定的 types/locations,但这会限制如果您要查找 all/range 共 types/locations 个,请与您联系。请注意,您可能还想使用某种迭代器来进行服务器端聚合 Does Accumulo support aggregation?