我正在启动一个分析项目,它将处理数以百万计的地理本地化数据。数据可能是这样的: id{ userId, long, lat, time, appId }
我的主要业务:
获取区域中包含的所有数据
查找属于某个用户标识的所有点
发布/订阅以显示所有新条目
在所有数据(或仅FEW)上添加/删除字段
我想使用meteor.js,需要接近实时的性能(~0,5s到3s最大)。
也许这很重要:我需要一个精度在3-15米之间的结果。
所以我看着:
redis:seams简单易用,有一个redis-geo插件。另外还有一个流星的司机。
postgis:m+条目的实时性能?流星没有司机。
有一个流星的司机。
hbase:为大table构建接缝。流星没有司机。
你会用哪一个(如有其他建议,我们将不胜感激。)
1条答案
按热度按时间noj0wjuj1#
有一个用于nodejs的postgres客户端,应该可以与meteor一起使用。当涉及到postgis(我自己在一些项目中使用它)时,它就像一个魅力。但是,在设计查询时,您必须注意输出(使用postgis输出函数(例如,st\u asgeojson)和数组相结合)。
当涉及到空间查询时,postgis可能是最好的选择。它经过深思熟虑的测试,妥善维护,并在许多应用中使用。
不过,我不能对你的业绩限制作任何Assert。空间查询本身就很复杂(例如:多边形交集的复杂度至多为o(n^2)。不过,您可能可以通过索引和缓存来缓解性能问题。一直对我有效,但我从不需要处理严格的查询时间限制。
关于您的操作:除了第一个操作之外,其他操作的成本几乎为零(就数据库性能而言)。第一个查询可能有点棘手,因为您必须使用以下函数之一:
ST_Intersects()
,ST_Contains()
或者ST_Covers()
. 所有这些都比o(n)复杂。您的查询可以被设计成运行非常快,但是正如我所说的:我不知道您的约束是否得到了尊重。