有没有成熟的基于空间的 nosql 存储方案

2015-11-20 17:57:06 +08:00
 sacuba

数据量: 5t , 500 亿条数据,以后每年至少 2t , 200 亿条的量增加。
数据内容: id,时间,位置+详细数据
需求大概是两个: 1 、通过 id+时间进行查询。 2 、通过位置范围+时间进行查询。
之前的做法是存 hypertable,数据存储两份.现在想把两份数据存一份。
已经尝试过 hbase+华为的二级索引以及 hbase+phoenix,效果并不尽如人意。所以来 v2 请教下。

ps:节点放 hadoop 不知道对不对

3450 次点击
所在节点    Hadoop
6 条回复
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
这个条件应该暂时没有数据库能实现索引.
yuankui
2015-11-20 20:45:16 +08:00
有些笔误,谅解.
场景一中后面两个时间 -> id
akira
2015-11-20 22:30:56 +08:00
不是 GIS ?
sacuba
2015-11-20 22:50:32 +08:00
@akira 你说对了 是 GIS
pixstone
2015-11-21 12:44:29 +08:00
es 的话 有 地理索引了,可以画奇怪的图案。
5T 的话 有点纠结。最好分库处理下,时间尺度+空间尺度,比如一个城市一个库。

NoSQL 的话 还有 MongoDB , 5T 的量的话,有上集群了,分片+副本,还要根据时间和空间 再做下划分。读有什么额外的要求吗。
sacuba
2015-11-21 14:41:12 +08:00
@pixstone 地理范围是全球的,查询的话两种查阅万条记录达到毫秒级别,万条以上的查阅并不做太多要求 es 还没搞透 数据必须在集群上,为了面对以后可能会出现的各种数据分析的需求

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/237678

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX