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

时间:2015-03-17 15:33:37

标签: postgresql geolocation redis hbase postgis

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

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

我的主要业务:

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

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

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

所以我看了看:

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

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

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

Hbase:为大表格构建接缝。没有流星的司机。

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

1 个答案:

答案 0 :(得分:5)

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

在空间查询方面,PostGIS可能是最佳选择。它经过严格测试,维护得当,可用于许多应用中。

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

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