我们的团队目前正在开发一些我们害怕“爆炸”的杀手级 ios 定位应用程序,因此我们希望努力考虑可扩展性和可用性。
在我们读到 draw something 是基于 couchbase NoSQL 之后,我们扫描了 couch base api(特别是 .net api)并找到了我们所有应用程序需求的解决方案,除了一个,我们描述了这个场景:
- 假设我们在全球有 1,000,000 个用户,他们的位置由经度和纬度指定;
- 我们有一个用户圈范围 c:它的位置(由经度和纬度指定)和半径 rc
- 我们希望有效地确定哪些用户在圈子中。
如果我们像现在这样在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(计划于今年晚些时候推出)中作为实验性首次推出的功能,并将在以后的版本中完全支持。我们还在为其构建必要的客户端界面, “但目前没有可用的。最后,距离和边界圆(以及其他)是我们将在前进过程中开发的功能。”