私はこれら2つのNoSQLデータベース間で立ち往生しています。
私のプロジェクトでは、データベース内にデータベースを作成します。たとえば、動的テーブルを作成するためのソリューションが必要です。
そのため、ユーザーは列と行を含む表を作成できます。私はMongoDBかCouchDBのどちらかがこれに適していると思いますが、私はどちらがいいかわかりません。効率的なページングも必要になります。
C、A&P(一貫性、可用性、パーティション許容値)のうち、あなたにとってより重要な2つはどれですか?クイックリファレンス、 NoSQLシステムのビジュアルガイド
ブログ投稿、 Cassandra対MongoDB対CouchDB対Redis対Riak対HBase対Membase対Neo4j比較 has 'Best Used '各NoSQLデータベースの比較シナリオ。リンクを引用して、
最近(2012年2月)など 包括的な比較 リヤドカラ、
両方を試した誰かによるブログ投稿(2011年10月)、MongoDB Guy Learns CouchDBはCouchDBのページングではないことについてコメントしました便利です。
日付(2009年6月) ベンチマーク by Kristina Chodorow (MongoDBの背後にあるチームの一部)、
MongoDBに行きます。
それが役に立てば幸い。
とりわけ答えは物語を複雑にします。
それでおしまい。モバイルデバイスやデスクトップデバイスに複製するためのCouchDBの(素晴らしい)機能が必要でない限り、MongoDBには現在のところパフォーマンス、コミュニティ、およびツールの利点があります。
非常に古い質問ですが、それはグーグルの上にあります、そして、私は私が見る答えをとても好きではありません。
Couchdbには、CouchAppを開発する機能以外にもたくさんの機能があります。ほとんどの人は古典的な3層WebアーキテクチャでCouchDbを使います。
実際には、ほとんどの人にとって決定的な要素は、CongDbではできないがMongoDbがSQLのような構文でアドホックなクエリを実行できることです(これらのビューを作成しても一部の人は無効にするmap/reduceビューを作成する必要があります)。 Rapid Application Developmentにやさしいです - 彼らはストアドプロシージャとは関係ありません)。
受け入れられた答えで提起されたポイントに対処するために:CouchDbは素晴らしいバージョン管理システムを持っていますが、それがバージョン管理が重要な場所にのみ適している(またはより適している)という意味ではありません。また、couchdbは追記のみの性質を持つため、大量の書き込みが可能です(書き込み操作はすぐに戻り、データが失われることはないことが保証されます)。
誰も言及していない非常に重要なことの1つは、CouchDbがBツリーインデックスに依存しているという事実です。つまり、「行」が100億であろうと200億であろうと、照会時間は常に10ミリ秒未満になります。これはCouchDbを低レイテンシーで読みやすいデータベースにするゲームチェンジャーです、そしてこれは本当に見落とされるべきではありません。
公正で網羅的であるために、MongoDbがCouchDbよりも優れている利点は、ツールとマーケティングです。彼らはすべての主要な言語とプラットフォームのための一流の市民ツールを持っています。そして、これは彼らの特別な質問に加えられてSQLからの移行をさらに簡単にします。
CouchDbにはこのレベルのツールはありません - 今日利用可能なライブラリはたくさんありますが - CouchDbはHTTP APIとして公開されているので、お好みの言語でラッパーを作成するのは簡単です。私は個人的には膨張を避け、あなたが望むものだけを取ることができるようにするのでこのアプローチが好きです(インターフェース分離の原則)。
したがって、どちらか一方を使用することは、主に彼らのパラダイムでは快適さと好みの問題です。 CouchDbのアプローチは、ある人にとっては「ぴったり」ですが、データベース機能について学んだ後(完全な 公式ガイド )、「地獄のような」瞬間がない場合は、先に進むべきです。
あなたが「正しい仕事のための正しいツール」を使いたいだけならば、CouchDbの使用はお勧めできません。なぜなら、それをそのまま使用することはできず、「CouchDbの結合はどこにあるのでしょうか」などの怒ってブログ記事を書くことになるからです。そして "トランザクション管理はどこにありますか?"確かにCouchdbは - 逆説的に - 非常に透明ですが同時にあなたが本当に輝く(そして実際に働く)ためにパラダイムシフトとあなたが問題に取り組む方法の変更を必要とします。
しかし、それが済んだら、それは本当に成果を上げます。私は個人的に別のデータベースを選択するためにプロジェクトに非常に強い理由や大きな取引ブレーカーを必要としますが、今のところ私は何も会っていません。
自分でこの質問をしますか?そして、あなたはあなたのDBの選択を決定します。
その記事で見つかった答えを要約します。
http://www.quora.com/How-does-MongoDB-compare-to-CouchDB-What-are-the-ad-de-ments-disadvantage-of-各 /
MongoDB:より良い問い合わせ、BSONでのデータストレージ(より速いアクセス)、より良いデータの一貫性、複数のコレクション
CouchDB:マスターからマスターへのレプリケーションと競合解決、JSONでのデータストレージ(人間が読める、RESTサービスを介したアクセスの向上)、map-reduceによるクエリで、より優れたレプリケーション。
結論として、MongoDBは速いです、CouchDBは安全です。
また: http://nosql.mypopescu.com/post/298557551/couchdb-vs-mongodb
MongoDBのスパースユニークインデックスに関する問題に注意してください。私はそれを打ったし、それを回避するのは非常に面倒です。
問題はこれです - あなたが存在するならばユニークであり、あなたはフィールドが存在しないところにあるすべてのオブジェクトを見つけたいと思うあなたはフィールドを持っています。 Mongoで疎固有索引が実装される方法は、そのフィールドが欠落しているオブジェクトはまったく索引にないということです - それらはそのフィールドに対する照会では検索できません - {$exists: false}
は機能しません。
私が思いついた唯一の回避策は、空の値が( null: のような)特別な接頭辞に変換されてuuidにされる、特別なnullファミリーの値を持つことです。これは本当の頭痛の種です。書き込み/クエリ/読み取り時に空の値との間で変換を行う必要があるからです。大きな迷惑です。
私はMongoDBでサーバーサイドのJavaScriptの実行を使用したことは一度もありません(とにかくお勧めできません)。それらのmap/reduceは、Mongoノードが1つしかない場合はひどいパフォーマンスになります。私が今CouchDBをチェックアウトすることを検討しているこれらのすべての理由のために、多分それは私の特定のシナリオにより適しているかもしれません。
ところで、誰もがスパースなユニークインデックス問題を説明しているそれぞれのMongo号へのリンクを知っているなら - 共有してください。
私はあなたがMongo(もっとよく知っている)を使うことができると確信しています、そしてあなたもソファを使うことができることをかなり確実にします。
どちらもドキュメント指向(JSONベース)であるため、「列」ではなく、むしろ文書内にフィールドがあります - しかし、それらは完全に動的にすることができます。
彼らは両方ともあなたが使う他の要素を見たいと思うかもしれません:あなたが気にする他の機能、人気など。Googleの洞察、indeed.comの求人は人気を見るための方法でしょう。
あなたはそれを試すことができます私はあなたが5分で実行することができるはずだと思います。