1

ユーザーの場所を取得し、REST api を介して近くにいる他のユーザーのバックエンドをクエリする iOS アプリを構築しようとしています。

  • Django - geodjango を使用したピストン。おそらく webfaction でのホスティング。
  • グーグルアプリエンジン。

Google App Engine はそれほどオープンではないようで、最初は学習曲線が急勾配であるため、私は最初の選択肢に傾倒しています。

現在、mysql データベースでロケーション クエリを実行するのは、非常に威圧的です。私の直感では、もっと良いものがあるはずです。結局、車輪の再発明はしたくありません!!

誰か光を当ててくれませんか

  • どのように正確に場所のクエリを実行するのですか?
  • どのデータベースを使用すればよいですか?...非リレーショナルまたはリレーショナル?
  • リレーショナルの場合...データベースは場所ごとにインデックスを作成する必要がありますか?
  • 位置データを別のテーブルに保存するか、他のユーザー データと同じテーブルに保存する必要がありますか?
  • タイムスタンプを使用して古い位置の更新を無効にする必要がありますか?それを行うためのより良い方法はありますか?(たとえば、データベース自体が位置の更新を定期的に削除する可能性があります)。

私はこれまで主に iOS 開発者であり、Web アプリの構築の経験はほとんどありません。どんな提案でも大歓迎です。

以前に同様の質問があった場合は、遠慮なく指摘してください。

前もって感謝します。- サミージー!

4

1 に答える 1

2

有用な回答を得るには、あまりにも多くの一般的な質問をしすぎていると思います。私が試してみます:

非常に単純な地理空間的なことをしたい場合は、バウンディング ボックスの操作に固執してみてください。問題に適合する最も単純なテクノロジは、検討する価値があります。ただし、おそらくすぐにもっと必要なことに気付くでしょう...

geodjango を使用する場合は、PostGIS データベースを使用し、非リレーショナル データベースは忘れてください。あなたはバックエンドを開発する予定であり、Web アプリケーション以外のプログラマーにとって学習曲線は急勾配です。geodjango のチュートリアルから始めて、徐々に使い慣れたテクノロジ スタックを開発してください (geodjango を使用すると、REST サービスは十分に簡単になります)。

非リレーショナル データベースを選択する理由は、特定のユース ケース (ドキュメント、グラフを格納する必要がある、または事前定義されたスキーマが必要ない) か、スケーリングの目的 (大量のデータを同時に読み書きする必要がある) のいずれかです。 、したがって複数のノードを使用するなど)。あなたが Web アプリ プログラマーではない場合は、経験のある人 (「ソフトウェア アーキテクティング」を行うことができる人) を雇って、この道のりを手伝ってもらいます。

  • 位置データを別のテーブルに保存するか、他のユーザー データと同じテーブルに保存する必要がありますか?
  • タイムスタンプを使用して古い位置の更新を無効にする必要がありますか?それを行うためのより良い方法はありますか?(たとえば、データベース自体が位置の更新を定期的に削除する可能性があります)。

データベースの設計を行った人に助けを求めてください。User(id, name)これまでの問題の説明では、テーブルとテーブルの 2 つのテーブルを操作できましたUserLocation(id, timestamp, user_id, xCoordinate, yCoordinate)UserLocationユーザーに対して取得するすべてのサンプルに対して行を追加するよりも。次のように、UserLocation テーブルの解釈に関する規則を後で設計 (および変更) できます。

  • 最新の UserLocation は有効なものです
  • タイムスタンプが 4 時間より古い場合、使用できません

あなたの質問の仕方からすると、あなたは少し的外れな気がします。ただし、単純なテクノロジに固執し、実用的に作業できる場合は、サービスを機能させることができます。mysql+php とバウンディング クエリから始めてみませんか? そして、他のすべてが機能するようになったら、それを別のものに交換しますか?

于 2011-06-05T21:02:41.783 に答える