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

何を選択すればよいですか:MongoDB / Cassandra / Redis / CouchDB?

    空間スケール(1000以上のデバイス)が計算および/またはストレージスケールに関して誤解を招かないようにしてください。ローエンドのハードウェアで実行されている場合でも、1秒あたり数十の35バイトの挿入は、主流のDBMSにとっては些細な作業負荷です。同様に、1か月あたり1億4200万レコードは、インデックスを含む圧縮なしで、1か月あたり1〜10ギガバイトのストレージのオーダーにすぎません。

    質問のコメントで、あなたは次のように述べました:

    「信頼性、スケーラビリティ、速度がすべてです。ソリューションがより多くのノードを投入するだけで簡単に拡張できることが非常に重要です(MongoDB自動シャーディング?)。速度も非常に重要です

    信頼性?主流のDBMSならどれでもこれを保証できます(データが破損することはなく、クラッシュすることもないと仮定します。この回答の下部にあるCAP定理の説明を参照してください)。スピード?単一のマシンでも、このワークロードの10〜100倍は問題になりません。スケーラビリティ?現在のレートでは、圧縮されていない、完全にインデックス付けされた1年間のデータは、100ギガバイトのディスクスペースに簡単に収まります(同様に、挿入レートは問題ではないことをすでに確立しています)。

    そのため、NoSQLのようなエキゾチックなソリューションや、分散データベースでさえも明確に必要とは思われません。MySQLのような単純で古いリレーショナルデータベースで十分です。フェイルオーバーが心配な場合は、マスタースレーブ構成でバックアップサーバーをセットアップするだけです。現在の規模の数百倍または数千倍の話をしている場合は、データ収集デバイスのIDに基づいていくつかのインスタンスを水平方向に分割します( {パーティションインデックス}={デバイスID}モジュロ{パーティション数})。

    リレーショナルデータベースの世界の安全で快適な範囲を離れることは、その表現モデルの両方を放棄することを意味することを覚えておいてください。 およびその豊富なツールセット 。これにより、「複雑なデータマイニング」がはるかに困難になります。データベースにデータを入れるだけでなく、データを取り出す必要もあります。

    そうは言っても、MongoDBとCouchDBは、展開と操作が非常に簡単です。彼らはまた非常に楽しいです、そしてあなたをどんな数の人々にとってもより魅力的にするでしょう(プログラマーだけでなく-エグゼクティブも!)。

    一般的な知識は、あなたが提案した3つのNoSQLソリューションの中で、Cassandraが大量の挿入に最適であるということです(もちろん、比較的言えば、あなたが持っているとは思わない 挿入量が多い-これはFacebookで使用するために設計されました );これは、操作がより困難になることで対処されます。したがって、言及していない奇妙な要件がない限り、ユースケースとしては反対することをお勧めします。

    NoSQLの導入に積極的に取り組んでいる場合は、CAP定理を検討することをお勧めします。これは、MongoDBとCouchDBのどちらを使用するかを決定するのに役立ちます。ここに良いリンクがあります:http://blog.nahurst.com/visual-guide-to-nosql-systems。それはすべて、「信頼性」の意味に帰着します。 MongoDBは一貫性と可用性を交換しますが、CouchDBは可用性と一貫性を交換します 。 (Cassandraでは、書き込み/読み取りを成功させるために書き込み/読み取りが必要なサーバーの数を指定することで、クエリごとにこのトレードオフを調整できます。更新:CouchDBもBigCouchで実行できます!非常にエキサイティングです...)

    >

    プロジェクトで頑張ってください。



    1. 条件付きのMongodb集計ルックアップ

    2. 合計16MBの制限を回避する

    3. v4より前のMongoDBがACIDに準拠していなかったとはどういう意味ですか?

    4. マングースで分類する方法は?