数据量: 5t , 500 亿条数据,以后每年至少 2t , 200 亿条的量增加。
数据内容: id,时间,位置+详细数据
需求大概是两个: 1 、通过 id+时间进行查询。 2 、通过位置范围+时间进行查询。
之前的做法是存 hypertable,数据存储两份.现在想把两份数据存一份。
已经尝试过 hbase+华为的二级索引以及 hbase+phoenix,效果并不尽如人意。所以来 v2 请教下。
ps:节点放 hadoop 不知道对不对
1
yuankui 2015-11-20 20:43:35 +08:00
明显你的数据是基于时间序列的.
可以考虑使用 es 没隔一段时间(比如一个月)建立一个库 场景 1: 可以根据时间,迅速缩小库的范围(比如某几个库).再来根据时间过滤(时间是建了索引的) 场景 2: 还是根据时间,先缩小库的范围,然后再根据位置范围,进行大致过滤(画一个正方形而不是圆).最后在将减少的数据集在客户端做最后筛选. key: 按时间分库 关于画正方形: center.x - distance < dest.x < center.x + distance && center.y - distance < dest.y < center.y + distance 这个条件可以在 es 中用 4 个过滤条件进行表达 关于画圆 (center.x - dest.x) ^2 + (center.y-dest.y) ^2 <= distance ^ 2 这个条件应该暂时没有数据库能实现索引. |
2
yuankui 2015-11-20 20:45:16 +08:00
有些笔误,谅解.
场景一中后面两个时间 -> id |
3
akira 2015-11-20 22:30:56 +08:00
不是 GIS ?
|
5
pixstone 2015-11-21 12:44:29 +08:00 via iPad 1
es 的话 有 地理索引了,可以画奇怪的图案。
5T 的话 有点纠结。最好分库处理下,时间尺度+空间尺度,比如一个城市一个库。 NoSQL 的话 还有 MongoDB , 5T 的量的话,有上集群了,分片+副本,还要根据时间和空间 再做下划分。读有什么额外的要求吗。 |