バックグラウンド:
作成中のアプリの最小要件を把握しようとしています。私は開発者として MySQL と PostgreSQL にかなり精通していますが、DBA ではないので質問します。リモート API と通信するモバイル アプリを構築しており、この API の要件を把握する必要があります。現時点では、趣味のプロジェクトとしてこれを行っており、モバイル アプリは無料になる予定です。そのため、大きな予算はありません。要件をできる限り正確に把握する必要があります。
アプリケーションの要件:
リモート API は、postgresql クラスターにデータを格納する web および json インターフェイスを提供する Rails で行われます。モバイル アプリは多くの短い書き込みを送信します ~ 毎分約 1 * 20,000 アプリのインストール。ほとんどの読み取りは、レポート スタイルなので、読み取りが長くなるため、それほど頻繁には発生しません。おそらく、ユーザーごとに 1 日に 1 回か 2 回です。そのため、DB は主に書き込み用に最適化する必要があります。読み取りアクションは、現時点ではリアルタイムである必要がないため、常にレプリカ クラスター/サーバーにリダイレクトできます。1日遅れでも大丈夫です。
コメントの質問ごとの詳細:
1) 書き込みは非常に小さい: 認証トークン (API キーなど) とほんの少しのデータを送り返します。しかし、私はそれを疑います。写真などの大きなデータは想定していません。ランニング/ジョギング/サイクリング追跡アプリに似ています。
2) スケールアップ?うーん。最初の 2 年以内に実際に軌道に乗れば、最大 200,000 ~ 400,000 個のアプリ。
3) データはかなり重要です。要点は、データが収集されたら正確なレポートを実行できるようにすることです。ただし、問題を軽減するためのオプションが 2 つあります。
- Google マップのデータと最後の既知のポイント (データが失われる直前、および接続が再確立された直後) に基づいて推定できます。
- データは最初に電話機の sqlite ストレージに保存され、1 日 1 回 (またはアプリの起動時)、サーバーと同期されて検証されます。検証/同期が成功すると、電話のデータをローテーションできます (1 か月以上前のものは電話から消去できます)。
実際の質問の詳細
この規模のアプリを扱ったことのある方に質問です。最初の PostgreSQL のセットアップはどのようなものでしたか? クラスター構成とハードウェア (クラウド) の両方で、またスケーリングがどれほど簡単/困難でしたか?
無関係な提案や回答を防ぐには:
NoSQL の代替手段
CouchDB、MongoDB などの NoSQL の代替案を検討しました。Riak は実際に勝者になりました.1 人のチームにとっては管理が容易であり、レプリケーション クラスタを機能させるために 3 台の db サーバーしか必要としないことを考えると. しかし、自分のアプリをマッピングした後、NoSQL はこのアプリには適していないことがわかりました。これは RDBMS の領域に属しています。
NoSQL の代替と SQL オプション
予算がなかったことを考えると、SQL サーバーや Oracle などについても考えていませんでした。MySQL は他の唯一の代替手段ですが、私には hstore が必要であり、レプリケーションは PostgreSQL IMHO で今すぐ実装する方が簡単です。