web-dev-qa-db-ja.com

NoSQL-MongoDBとCouchDB

NoSQLの動きに関しては、私は完全な初心者です。 MongoDBとCouchDBについてたくさん聞いたことがあります。 2つの間に違いがあることを知っています。 NoSQLの世界への第一歩として、どの学習をお勧めしますか?

148
mpenrow

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

Update:素晴らしい NoSQLの比較 データベースが見つかりました。

MongoDB(3.2)

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

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

:MySQLまたはPostgreSQLを使用して行うほとんどの場合、事前定義された列があると、実際には妨げられます。

CouchDB(1.2)

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

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

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

146
amra

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の範囲を要求するなど、ビューで実行できる基本的なクエリがいくつかあります。
  • これらのスライド を読んでください。これは、私が見たCouchのmap/reduceの最も明確な説明です。

そのため、これらのソースは両方ともJSONドキュメントを使用しますが、CouchDBはこの「サーバーはすべてマスターであり、世界と同期できる」というアプローチに従います。

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

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

生の速度でデータの安全性を確保したい場合は、canを使用すると、メモリ不足でなくスパース間隔を除き、ディスクにコミットします。

Couchでも同じことができますが、HTTPベースの通信プロトコルは、この「すべてを超える速度」でMongoとの生のバイナリ通信よりも2〜4倍遅くなります。シナリオ。

サーバーがクラッシュしたり、ディスク障害が発生してDBを忘却の対象にした場合、データポイントは見た目ほど驚くほどではありません(Wallでリアルタイムトレーディングシステムを実行している場合を除き) Street、この場合はRedisをご覧ください)。

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

120
Riyad Kalla

現在、市場にはかつてないほど多くのNoSQLデータベースがあります。サポート、拡張性、管理、およびコストに基づいたエンタープライズアプリケーションにも最適なデータベースを探している場合は、Gartner Magic Quadrantをご覧になることをお勧めします。

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

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

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

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

それ以外の場合は、最新のベンチマークを確認する価値があります。

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

2
Austin Gonyou

NoSQLに関するYouTubeのEdurekaビデオは、最高のビデオチュートリアルの一部です。これらのビデオを見た後、MongoDbとCassandraを開始しました。

https://www.youtube.com/watch?v=gJFG04Sy6NY
https://www.youtube.com/watch?v=KSq6tMMXZ8s
https://www.youtube.com/watch?v=3z1KFA2qcSo

Slideshare.netで優れたプレゼンテーションを利用できます

http://www.slideshare.net/quipo/nosql-databases-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=1

http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 

SlideshareのEdurekaプレゼンテーションは、youtubeのビデオを拡張したものです。このプレゼンテーションは、YouTubeビデオの要約として扱うことができます。

1
Ravindra babu