1M +条目的哪个(近)实时空间数据库?

dag*_*oin 2 postgresql hbase postgis geolocation redis

我正在启动一个分析项目,该项目将处理数百万个地理定位数据.数据可能是这样的:

id{ userId, long, lat, time, appId }

我的主要业务:

  • 获取区域中包含的所有数据
  • 找到所有属于userId的点
  • pub/sub显示所有新条目
  • 在所有数据上添加/删除字段(或只是几个)

我想使用Meteor.js并且需要近乎实时的性能(最多~0.5s到3s).

也许这很重要:我的结果需要3-15米之间的精度.

所以我看了看:

Redis:接缝简单易用,有一个Redis Geo插件.另外还有一个流星驱动程序.

PostGIS: M +条目的实时表现?没有流星的司机.

PostGre:有一个流星驱动程序.

Hbase:为大桌子构建接缝.没有流星的司机.

你会用哪一个?(任何其他建议将不胜感激.)

Mat*_*nde 5

nodejs有一个postgres-client,这应该可以用于meteor.当它涉及PostGIS(在一些项目中自己使用它)时,它就像一个魅力.您必须处理输出(使用postGIS-output-functions(例如ST_AsGeoJSON),结合ARRAY,同时设计您的查询).

在空间查询方面,PostGIS可能是最佳选择.它经过了彻底的测试,得到了适当的维护,并在许多应用中得到了应用.

我不能对你的性能限制做出任何断言.空间查询本质上是复杂的(例如:多边形交集最多具有O(n ^ 2)复杂度).您可以通过索引和缓存来缓解性能问题.总是为我工作,但我从来没有处理严格的查询时间限制.

关于你的操作:除了第一个之外的所有操作都应该几乎没有成本(数据库性能明智).第一个查询可能有点棘手,因为您必须使用以下函数之一:ST_Intersects(),ST_Contains()ST_Covers().所有这些都具有大于O(n)的复杂性.您的查询可以设计,以便它运行得非常快,但正如我所说:我不知道您的约束是否得到尊重.