sql >> データベース >  >> NoSQL >> MongoDB

EC2サーバーまたはAWSSimpleDB上のMongoDB?

    SimpleDBにはいくつかのスケーラビリティの制限があります。シャーディングによってのみスケーリングでき、mongodbやcassandraよりもレイテンシーが高く、スループット制限があり、他のオプションよりも価格が高くなります。スケーラビリティは手動です(シャーディングする必要があります)。

    より幅広いクエリオプションが必要で、読み取り率が高く、データがそれほど多くない場合は、mongodbの方が適しています。ただし、耐久性を確保するために、マスター/スレーブとして少なくとも2つのmongodbサーバーインスタンスを使用する必要があります。そうしないと、データの最後の1分が失われる可能性があります。スケーラビリティは手動です。 simpledbよりもはるかに高速です。自動シャーディングは1.6バージョンで実装されています。

    Cassandraには弱いクエリオプションがありますが、postgresqlと同じくらい耐久性があります。これはmongoと同じくらい高速で、データサイズが大きいほど高速です。書き込み操作は、cassandraでの読み取り操作よりも高速です。 ec2インスタンスを起動することで自動的にスケーリングできますが、構成ファイルを少し変更する必要があります(私が正しく覚えている場合)。テラバイトのデータがある場合は、cassandraが最善の策です。データをシャーディングする必要はありません。1日目から配布されるように設計されています。すべてのデータのコピーをいくつでも持つことができ、一部のサーバーが停止している場合は、稼働中のサーバーからの結果が自動的に返され、停止したサーバーのデータが他のサーバーに配布されます。フォールトトレラント性が高いです。インスタンスはいくつでも含めることができ、他のオプションよりもはるかに簡単にスケーリングできます。強力な.netおよびjavaクライアントオプションがあります。接続プール、負荷分散、停止したサーバーのマーキングなどがあります...

    もう1つのオプションは、ビッグデータ用のHadoopですが、他のオプションほどリアルタイムではありません。データウェアハウジングにHadoopを使用できます。 cassandraもmongoにもトランザクションがないため、トランザクションが必要な場合はpostgresqlの方が適しています。もう1つのオプションはAmazonRDSですが、パフォーマンスが悪く、価格が高くなっています。データベースまたはsimpledbを使用する場合は、データキャッシュ(例:memcached)も必要になる場合があります。

    Webアプリの場合、データが小さい場合はmongoをお勧めします。大きい場合は、cassandraの方が適しています。 mongoやcassandraのキャッシングレイヤーは必要ありません。それらはすでに高速です。 simpledbはお勧めしません。また、あなたが言ったように、Amazonにロックされます。

    c#、java、またはscalaを使用している場合は、インターフェースを記述して、mongo、mysql、cassandra、またはその他のデータアクセス層に実装できます。動的言語(rub、python、phpなど)ではより簡単です。必要に応じて、そのうちの2つにプロバイダーを作成できます。また、構成を変更するだけで、実行時にストレージを変更できます。これらはすべて可能です。 mongo、cassandra、simpledbを使用した開発はデータベースよりも簡単で、スキーマがなく、使用しているクライアントライブラリ/コネクタにも依存します。最も単純なものはmongoです。 cassandraにはテーブルごとに1つのインデックスしかないため、他のインデックスを自分で管理する必要がありますが、私が知っているように、cassandraの0.7リリースではセカンダリインデックスが可能になります。また、それらのいずれかから始めて、必要に応じて将来的に置き換えることもできます。



    1. Mongodb接続に対処する正しい方法は何ですか?

    2. Mongoose.jsでオブジェクトスキーマの配列の配列を作成する方法

    3. pymongoを使用して既存のドキュメントコレクション/dbに接続するにはどうすればよいですか?

    4. MongoDBドキュメントを直接変換する方法JavaでJacksonJsonNodeを実行する