NoSQL-MongoDB対CouchDB [終了]


154

NoSQLの動きに関しては、私はまったくの初心者です。MongoDBとCouchDBについてはよく聞いています。両者には違いがあることを知っています。NoSQLの世界への第一歩として、どちらを学ぶことをお勧めしますか?


最初のステップとして、mongoDBの方が学習しやすいためより良いのですが、いくつかの問題があります。特定のnoSQLデータベースを使用するのに最適な選択はありません。何をする必要があるかによって異なります。ドキュメント指向、キーバリュー、グラフ指向、列指向をチェックしてください。
Chris

回答:


148

次のリンクを参照してください

更新NoSQLデータベースの優れた比較が見つかりました。

MongoDB(3.2)

  • 作成者:C ++
  • 主なポイント:JSONドキュメントストア
  • ライセンス:AGPL(ドライバー:Apache)
  • プロトコル:カスタム、バイナリ(BSON)
  • マスター/スレーブレプリケーション(レプリカセットによる自動フェイルオーバー)
  • 組み込みのシャーディング
  • クエリはJavaScript式です
  • サーバーサイドで任意のJavaScript関数を実行する
  • 地理空間インデックスとクエリがあります
  • パフォーマンス特性が異なる複数のストレージエンジン
  • 機能に対するパフォーマンス
  • 文書検証
  • ジャーナリング
  • 強力な集約フレームワーク
  • 32ビットシステムでは、2.5Gb以下に制限
  • 統合されたテキスト検索
  • ビッグデータ+メタデータ(実際にはFSではない)を格納するためのGridFS
  • データセンター対応

最適な使用法:動的クエリが必要な場合。関数をマップ/リデュースするのではなく、インデックスを定義したい場合。大きなDBで優れたパフォーマンスが必要な場合。CouchDBが必要だが、データの変更が多すぎると、ディスクがいっぱいになります。

:MySQLまたはPostgreSQLで行うほとんどのことに対して、事前定義された列があることは本当に妨げになります。

CouchDB(1.2)

  • 記述:Erlang
  • 主なポイント:DBの一貫性、使いやすさ
  • ライセンス:Apache
  • プロトコル:HTTP / REST
  • 双方向(!)レプリケーション、
  • 継続的または臨時的、
  • 競合を検出すると、
  • したがって、マスターマスターレプリケーション。(!)
  • MVCC-書き込み操作は読み取りをブロックしません
  • ドキュメントの以前のバージョンが利用可能です
  • クラッシュのみの(信頼できる)設計
  • 時々圧縮が必要
  • ビュー:埋め込まれた地図/縮小
  • ビューのフォーマット:リストとショー
  • サーバーサイドのドキュメント検証が可能
  • 認証可能
  • '_changes'(!)によるリアルタイム更新
  • 添付ファイルの処理

最適な使用法:事前定義されたクエリが実行されるデータを蓄積し、時々変更するため。バージョン管理が重要な場所。

:CRM、CMSシステム。マスターマスターレプリケーションは特に興味深い機能であり、簡単にマルチサイト展開が可能です。


1
MongoDBのサーバーライセンスがAGPLであることに関心がある場合は、mongodbのライセンスポリシーを確認すると、多少の安心が得られる場合があります。
Patrick

@amraつまり、私がデータを保存してそれのみを読み取る場合、couchdbを使用するのが最善の選択でしょうか。
verystrongjoe

@verystrongjoeデータとクエリの複雑さによって異なります。一般的にどちらが最適かはわかりません。
amra

@amra OK。しかし、それがデータを蓄積してデータを選択し、mongoとcouchのどちらかを選択する必要がある場合、どちらが良いですか?
verystrongjoe 2015年


123

MySQLの世界から来ている場合、MongoDBはクエリに似た言語をサポートしているため、より自然に「感じる」ことができます。

それが多くの人にとってとてもフレンドリーな理由だと思います。

CouchDBは、マルチノードセットアップで非常に優れたマスターマスターレプリケーションサポートを、おそらく異なるデータセンターなどで利用したい場合に最適です。

MongoDBのレプリケーション(レプリカセット)はmaster-slave-slave-slave- *セットアップであり、レプリカセット内のマスターにのみ書き込み、それらから読み取ることができます。

標準のサイト構成の場合は問題ありません。MySQLの使用法に非常によく対応しています。

ただし、CDNのようなグローバルサービスを作成しようとしている場合、すべてのグローバルノードの読み取り/書き込みを行っても、すべてのグローバルノードの同期を維持する必要がある場合は、CouchDBでのレプリケーションなどが非常に役立ちます。

MongoDBにはクエリのような言語があり、それを使用して非常に直感的に感じることができますが、CouchDBは「map-reduce」アプローチとビューのこの概念を採用しています。最初は奇妙に感じますが、こつこつになると、直感的に感じ始めます。

ここに簡単な概要がありますので、いくつかの意味があります:

  • CouchDBはすべてのデータをBツリーに格納します
  • 「SELECT * FROM user WHERE ...」のように動的に「クエリ」することはできません。
  • 代わりに、データの個別の「ビュー」を定義します。「ここにすべてのユーザーのビューがあります」、「10歳以上のすべてのユーザーのビューです」、「30歳以上のすべてのユーザーのビューです」、など。
  • これらのビューはmap-reduceアプローチを使用して定義され、JavaScript関数として定義されます。
  • ビューを定義すると、DBはビューを割り当てたDBのすべてのドキュメントのフィードを開始し、それを介して、関数の結果をそのデータの「インデックス」として記録します。
  • map / reduce関数の動作に関係なく、特定のキー(ID)またはIDの範囲を要求するなど、ビューに対して実行できるいくつかの基本的なクエリがあります。
  • これらのスライドを読んでください。これは、私が見たカウチでのmap / reduceの最も明確な説明です。

したがって、これらのソースはどちらもJSONドキュメントを使用しますが、CouchDBはこの「すべてのサーバーがマスターであり、世界と同期できる」というアプローチに従います。これは、MongoDBが実際にはNoSQLの世界のMySQLである一方で、必要な場合に最適です。

だからそれがあなたが必要とするもの/望んでいるもののように聞こえるなら、それのために行きます。

MongoのバイナリプロトコルとCouchDBのRESTfulインターフェースのような小さな違いは、すべて細かい部分です。

生の速度が必要で、データの安全性を確保したい場合は、メモリ不足で動作し、疎な間隔を除いてディスクにコミットしないように指示できるため、MongoをCouchDBよりも高速に実行できます。

Couchでも同じことができますが、HTTPベースの通信プロトコルは、Mongoとのrawバイナリ通信よりも2〜4倍遅くなります。シナリオ。

サーバークラッシュまたはディスク障害が破損してDBを破壊して忘却に陥らせた場合、生のクレイジーな非常識な速度は役に立たないため、データポイントは見かけほど驚くべきものではありません(Wallでリアルタイムトレーディングシステムを実行している場合を除く)ストリート、その場合はRedisを見てください)。

すべてが役立つことを願っています!


「MongoDBは実際にはNoSQLの世界のMySQLです」-状況が変わったかどうかはわかりませんが、2014年のこの記事は同意しません:sarahmei.com/blog/2013/11/11/why-you-should-never-use- MongoDBは
オヌルユルドゥルム

大まかに言って、コメントはまだ機能していると思いますが、そうです、MUCHは過去5年間で変化しており、私のコメントは簡単に却下されます。
Riyad Kalla


1

現在、市場にはこれまで以上に多くのNoSQLデータベースがあります。サポート、拡張性、管理、コストに基づくエンタープライズアプリケーションにも最適なデータベースをお探しの場合は、ガートナーマジッククアドラントをご覧になることをお勧めします。

http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb

Couchbaseをまだ試していない人に提案したいと思いますが、レポートに示されているバージョン(2.5.1)に基づいていません。これは、CB Serverが今日のところ2リビジョン近く遅れており、2H15のリリース4.0に近づいているためです。 。

http://www.couchbase.com/coming-in-couchbase-server-4-0

ベンダー/製品としてのCouchbaseのもう1つの部分は、それが多目的タイプのDBであることです。純粋なK / Vストア、多次元スケーリングを備えたドキュメント指向データベース、Memcached、永続性を備えたキャッシュアサイドとして機能し、自動結合を備えたANSI 92準拠のSQL、ボタンを押すことによるDRクラスターへのレプリケーション、およびエコシステムに組み込まれたモバイルコンポーネントさえあります。

他に何もない場合は、最新のベンチマークをチェックする価値があります。

http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.