ある種の位置情報ベースの機能を提供するモバイル アプリケーションに使用する Node.js を利用した RESTful Web サービスを作成する予定です。最も基本的な使用例は次のようになります。
- ユーザーは、リソースの名前とユーザーの現在の場所 (緯度と経度) を含む要求を Web サービスに送信することで、リソースを作成できます。
- Web サービスは、このリソースに関するメタデータをある種のコレクションに内部的に保存します。
- ユーザーは、現在の場所から 5 km 以内にあるリソースのリストを Web サービスに照会できます。
私の頭に浮かんだ最初の問題の 1 つは、スケーラビリティでした。将来のある時点で、サーバーが 100 万個のリソースのメタデータを保持するとします。ユーザーが近くの結果を照会する場合、距離を計算するために 100 万のエントリをループすると、永遠に時間がかかります。
世の中には同じ流れのサービスがたくさんあるので、このようなものを実装するのにそれほど時間はかからないと思いました。私は間違っていたかもしれません。
私は現在、実証済みの方法とアルゴリズムの研究に 2 日間取り組んでいます。今では、QuadTrees、Geohases、空間インデックスをサポートするデータベース、数式などについて手に入れることができるすべてのものを読んでいます。ただし、すべてがどのように機能するかの全体像はまだ把握できていません。
似たようなことに取り組んだことがある人が、このユースケースと私が使用する予定のテクノロジーを考慮して、どのアプローチが最も適しているかについての洞察を共有できることを望んでいました. また、それを実装する方法の簡単な説明は、私を大いに助けてくれます!