現在、MongoDB を使用して単一のサーバーで Web サイトを実行しています。私のサーバーには、2 つのコンポーネント (1) 1 時間ごとに実行され、MongoDB インスタンスにデータを追加するクローラー (2) クローラー インデックスから読み取り、ユーザー パーソナライゼーション DB に書き込む Web サイトがあります。自動スケーリングのために Amazon EC2 に移行しています。これにより、ウェブサーバーが自動スケーリングできるようになり、ウェブトラフィックの増加に合わせてサーバーの数を増やすことができます。クローラーの自動スケーリングは必要ありません。これは、MongoDB の使用方法に課題をもたらします。最適化するための最良のオプションは何だろうと思っています
- 私のコードへの最小限の変更 (コードは perl です)
- DB 内のデータを失うことを心配することなく、Web サーバーをシームレスに追加/削除する機能
- 低価格
短期的には、DB は 2 GB 未満になるため、すべてのマシンのメモリに確実に収まります。ユーザーのパーソナライズ DB は再構築できないため、これを持つことがより重要になりますが、インデックスは簡単に再構築できます。現在の MongoDB クロール インデックスには、約 15 の異なる列をキーとする約 10 万のエントリがあります。私はオンラインの出会い系サイト (さまざまな方法で検索可能) で作業しているため、これは速度を重視して構築されています。
いくつかのオプションを考えることができます
- ユーザーのパーソナライズ ストアには SimpleDB を使用し、インデックスには MongoDB を使用します。すべてのマシンでインデックスを複製しますが、MongoDB の複製についてはよくわかりません。
- すべてをSimpleDBに移動
- すべてを DynamoDB に移動
SimpleDB や DynamoDB についてはよくわかりません。記事に基づくと、DynamoDB が自然な選択であるように思われますが、すべての列、インデックスなどを使用できるかどうかにかかわらず、適切な perl サポートについてはわかりません。経験がある人やアドバイスはありますか?