3

私たちのチームは現在、良い方法で「爆発」することを恐れているいくつかのキラーiosロケーションアプリに取り組んでいるので、スケーラビリティと可用性について考えて努力したいと思います。

何かを描くことがcouchbaseNoSQLに基づいていることを読んだ後、couch base api(具体的には.netのもの)をスキャンし、1つを除くすべてのアプリ要件の解決策を見つけ、シナリオを説明します。

  1. 世界中に100万人のユーザーがいて、その場所が経度と緯度で指定されているとします。
  2. ユーザーサークルの範囲cがあります:それは場所(経度と緯度で指定)と半径rcです
  3. どのユーザーがサークルに入っているかを効率的に判断したいと思います。

今行ったようにSQLサーバーに書き込むと、次のようになります。

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

編集CouchにはGeoCouchを介してGeoSpatialもあるようです。 http://www.couchbase.com/docs/couchbase-geocouch-guide/

于 2012-04-29T22:47:54.303 に答える