我有一个要求,我想在其中存储以下内容:
- Mac 地址 // PKEY
- 时间戳 // PKEY
- 位置 ID
- 所有者名称
- 信号强度
插入逻辑如下:
- 在每个位置 (LocationID) 每小时存储一次每个活动设备 (MacAddress) 的上述统计信息
- 条目在每小时结束时创建,因此主键将始终为 MAC+TimeStamp
没有更新,只有插入
可以执行的查询如下:
- 给我最后 'N' 小时的所有条目,其中 MacAddress = "...."
- 给我最近'N'小时的所有条目 Where LocationID IN (locID1, locID2, ..);
不用说,有数十亿个条目,我想使用 HBASE 或 Cassandra。我尝试过探索,似乎Cassandra可能不是正确的选择。
原因是如果我在 cassandra 中有以下内容:
< < RowKey > MacAddress:TimeStamp > >
+ LocationID
+ OwnerName
+ 信号强度
这两个查询都会扫描整个数据库,对吧?即使我在 LocationID 上添加一个索引,这也只会在一定程度上有助于第二次查询,因为时间戳上没有索引(我相信时间戳上的搜索并不快,因为 MacAddress:TimeStamp 复合键不会允许我们仅搜索时间戳,而是进行完整扫描,对吗?)。
我被困在这里很长时间了,如果我们应该选择 HBase 或 Cassandra,任何见解都会有帮助。