8

現在、MongoDB を使用して単一のサーバーで Web サイトを実行しています。私のサーバーには、2 つのコンポーネント (1) 1 時間ごとに実行され、MongoDB インスタンスにデータを追加するクローラー (2) クローラー インデックスから読み取り、ユーザー パーソナライゼーション DB に書き込む Web サイトがあります。自動スケーリングのために Amazon EC2 に移行しています。これにより、ウェブサーバーが自動スケーリングできるようになり、ウェブトラフィックの増加に合わせてサーバーの数を増やすことができます。クローラーの自動スケーリングは必要ありません。これは、MongoDB の使用方法に課題をもたらします。最適化するための最良のオプションは何だろうと思っています

  • 私のコードへの最小限の変更 (コードは perl です)
  • DB 内のデータを失うことを心配することなく、Web サーバーをシームレスに追加/削除する機能
  • 低価格

短期的には、DB は 2 GB 未満になるため、すべてのマシンのメモリに確実に収まります。ユーザーのパーソナライズ DB は再構築できないため、これを持つことがより重要になりますが、インデックスは簡単に再構築できます。現在の MongoDB クロール インデックスには、約 15 の異なる列をキーとする約 10 万のエントリがあります。私はオンラインの出会い系サイト (さまざまな方法で検索可能) で作業しているため、これは速度を重視して構築されています。

いくつかのオプションを考えることができます

  1. ユーザーのパーソナライズ ストアには SimpleDB を使用し、インデックスには MongoDB を使用します。すべてのマシンでインデックスを複製しますが、MongoDB の複製についてはよくわかりません。
  2. すべてをSimpleDBに移動
  3. すべてを DynamoDB に移動

SimpleDB や DynamoDB についてはよくわかりません。記事に基づくと、DynamoDB が自然な選択であるように思われますが、すべての列、インデックスなどを使用できるかどうかにかかわらず、適切な perl サポートについてはわかりません。経験がある人やアドバイスはありますか?

4

4 に答える 4

3

現在、MongoDB を使用して単一のサーバーで Web サイトを実行しています。

まず、これは大きな危険信号です。運用環境で実行する場合は、少なくとも 3 つのフル ノードでレプリカ セットを実行することを常にお勧めします。

レプリケーションは、自動冗長性とフェイルオーバーを提供します。

DB 内のデータを失うことを心配することなく、Web サーバーをシームレスに追加/削除する機能

MongoDB は、シャーディングと呼ばれる概念をサポートしています。シャーディングは、データを自動的に分割することにより、水平方向にスケーリングする方法を提供します。パーティショニングは、シャード キーを介して行われます。

シャーディングを使用する予定がある場合は、そのリンクを注意深く読み、制限を認識してください。MongoDB シャーディングでは、シャード間でクエリを均等に分散できる正しいキーを選択する必要があります。

現在の MongoDB クロール インデックスには、約 15 の異なる列をキーとする約 10 万のエントリがあります。

これは、シャーディングの問題になります。シャーディングは、シャード キーを使用するクエリのみをスケーリングできます。シャード キーに対するクエリは、単一のマシンに直接ルーティングできます。セカンダリ インデックスに対するクエリは、すべてのマシンに送信されます。

15 の異なるインデックスがあるため、基本的にこれらのクエリはすべてすべてのシャードに送信されます。それはまったく「自動スケーリング」しません。

于 2012-02-20T19:06:39.703 に答える
3

Web ファーム内の各ボックスが接続する EC2 上の単一サーバーで Mongo をホストできます。その後、同じ DB ボックスを使用する別の Web インスタンスを簡単にスピンアップできます。

レプリカ セットを実行しているため、現在 3 台の Mongo サーバーがあり、Mongo で水平方向にスケーリングする必要がある段階に達したら、いくつかの新しいインスタンスをスピンアップし、より大きなコレクションを分割します。

于 2012-02-19T23:30:35.890 に答える
1

私は SimpleDB で非常に悪い経験をしたことがあり、根本的に欠陥があると考えているので、避けたいと思います。

Three は、Amazon EC2 で MongoDB をセットアップする方法に関する優れたホワイト ペーパーです: http://d36cz9buwru1tt.cloudfront.net/AWS_NoSQL_MongoDB.pdf

EC2 で MongoDB をセットアップすることが、DynamoDB の書き換え/移行よりも最速のソリューションであると思います。

頑張ってください!

于 2012-02-29T03:54:52.700 に答える
1

現時点では、EC2 には 64 ビットの小さなインスタンスがないため、レプリケーションが高価になる可能性があることに注意してください。MongoDB メモリはファイルをマップするため、32 ビット OS は推奨されません。

于 2012-02-21T16:41:42.717 に答える