哪个(近)实时空间数据库用于 1M+ 条目?
Which (near) realtime spatial database for 1M+ entries?
我正在启动一个分析项目,该项目将处理数百万个地理定位数据。
数据可能是这样的:
id{
userId,
long,
lat,
time,
appId
}
我的主要操作:
- 获取区域中包含的所有数据
- 找到属于一个userId的所有点
- pub/sub 显示所有新条目
- add/remove 所有数据(或少数)的字段
我想使用 Meteor.js 并且需要接近实时的性能(~0.5s 到 3s 最大值)。
也许这很重要:我的结果需要 3-15 米的精度。
所以我看了:
Redis : seams使用简单,有一个Redis Geo插件。另外还有meteor的驱动。
PostGIS : M+ 条目的实时性能?没有流星的驱动程序。
PostGre : meteor 有驱动。
Hbase : 为大表构建接缝。没有流星的驱动程序。
你会用哪一个? (任何其他建议将不胜感激。)
有一个postgres-client for nodejs,这个应该可以用在meteor上。当涉及到 PostGIS 时,它就像一个魅力(我自己在一些项目中使用过)。不过,您必须注意输出(在设计查询时结合 ARRAY 使用 postGIS 输出函数(例如 ST_AsGeoJSON))。
就空间查询而言,PostGIS 可能是最佳选择。它经过全面测试、妥善维护并在许多应用程序中使用。
不过我无法对您的性能限制做出任何断言。空间查询本质上是复杂的(例如:多边形交集最多具有 O(n^2) 复杂度)。不过,您也许可以通过索引和缓存来缓解性能问题。一直为我工作,但我从来不必处理严格的查询时间限制。
关于您的操作:除了第一个操作之外,所有操作都应该几乎没有成本(数据库性能方面)。第一个查询可能有点棘手,因为您必须使用以下函数之一:ST_Intersects()
、ST_Contains()
或 ST_Covers()
。所有这些都具有大于 O(n) 的复杂性。可以设计您的查询,使其运行得相当快,但正如我所说:我不知道您的约束是否得到尊重。
我正在启动一个分析项目,该项目将处理数百万个地理定位数据。 数据可能是这样的:
id{
userId,
long,
lat,
time,
appId
}
我的主要操作:
- 获取区域中包含的所有数据
- 找到属于一个userId的所有点
- pub/sub 显示所有新条目
- add/remove 所有数据(或少数)的字段
我想使用 Meteor.js 并且需要接近实时的性能(~0.5s 到 3s 最大值)。
也许这很重要:我的结果需要 3-15 米的精度。
所以我看了:
Redis : seams使用简单,有一个Redis Geo插件。另外还有meteor的驱动。
PostGIS : M+ 条目的实时性能?没有流星的驱动程序。
PostGre : meteor 有驱动。
Hbase : 为大表构建接缝。没有流星的驱动程序。
你会用哪一个? (任何其他建议将不胜感激。)
有一个postgres-client for nodejs,这个应该可以用在meteor上。当涉及到 PostGIS 时,它就像一个魅力(我自己在一些项目中使用过)。不过,您必须注意输出(在设计查询时结合 ARRAY 使用 postGIS 输出函数(例如 ST_AsGeoJSON))。
就空间查询而言,PostGIS 可能是最佳选择。它经过全面测试、妥善维护并在许多应用程序中使用。
不过我无法对您的性能限制做出任何断言。空间查询本质上是复杂的(例如:多边形交集最多具有 O(n^2) 复杂度)。不过,您也许可以通过索引和缓存来缓解性能问题。一直为我工作,但我从来不必处理严格的查询时间限制。
关于您的操作:除了第一个操作之外,所有操作都应该几乎没有成本(数据库性能方面)。第一个查询可能有点棘手,因为您必须使用以下函数之一:ST_Intersects()
、ST_Contains()
或 ST_Covers()
。所有这些都具有大于 O(n) 的复杂性。可以设计您的查询,使其运行得相当快,但正如我所说:我不知道您的约束是否得到尊重。