3

我们的团队目前正在开发一些我们害怕“爆炸”的杀手级 ios 定位应用程序,因此我们希望努力考虑可扩展性和可用性。

在我们读到 draw something 是基于 couchbase NoSQL 之后,我们扫描了 couch base api(特别是 .net api)并找到了我们所有应用程序需求的解决方案,除了一个,我们描述了这个场景:

  1. 假设我们在全球有 1,000,000 个用户,他们的位置由经度和纬度指定;
  2. 我们有一个用户圈范围 c:它的位置(由经度和纬度指定)和半径 rc
  3. 我们希望有效地确定哪些用户在圈子中。

如果我们像现在这样在sql server中编写它,它是这样的:

CREATE TABLE UserLocations
[UserId] [bigint] NOT NULL,
[CurrentLocation] [geography] NOT NULL

ALTER PROCEDURE sp_GetCurrentUsersInRange
@userPoint geography, 
@RangeInMeters int
AS
BEGIN

select  UserId from UserLocations
where @userPoint.STDistance(CurrentLocation) <= @RangeInMeters
and UserId <> @userId

END

但这是 NoSQL,只有键(例如经度键和纬度键),但我们无法获取所有值并在内存中全部查询,不是吗?

所以你的问题是:有没有一种方法你知道如何在 NoSQL 中完成这样的事情?

谢谢

ps我们在Stackoverflow中的相关问题:如何有效地确定圆内的n个位置?

编辑:Couchbase 支持已经回答了我!他们引用的答案:

“我们的地理空间索引是在 2.0(计划于今年晚些时候推出)中作为实验性首次推出的功能,并将在以后的版本中完全支持。我们还在为其构建必要的客户端界面, “但目前没有可用的。最后,距离和边界圆(以及其他)是我们将在前进过程中开发的功能。”

4

1 回答 1

3

我不知道用 couchbase 做这件事,但 MongoDB 有地理空间索引。

http://www.mongodb.org/display/DOCS/Geospatial+Indexing

编辑看起来沙发也有地理空间,通过 GeoCouch。 http://www.couchbase.com/docs/couchbase-geocouch-guide/

于 2012-04-29T22:47:54.303 回答