これら 2 つの NoSQL データベースの間で行き詰っています。
私のプロジェクトでは、データベース内にデータベースを作成します。たとえば、動的テーブルを作成するためのソリューションが必要です。
したがって、ユーザーは列と行を含むテーブルを作成できます。これには MongoDB か CouchDB のどちらかが適していると思いますが、どちらかはわかりません。また、効率的なページングも必要になります。
これら 2 つの NoSQL データベースの間で行き詰っています。
私のプロジェクトでは、データベース内にデータベースを作成します。たとえば、動的テーブルを作成するためのソリューションが必要です。
したがって、ユーザーは列と行を含むテーブルを作成できます。これには MongoDB か CouchDB のどちらかが適していると思いますが、どちらかはわかりません。また、効率的なページングも必要になります。
C、A、P(一貫性、可用性、パーティションの許容範囲)のうち、あなたにとってより重要な2つはどれですか。クイックリファレンス、NoSQLシステムのビジュアルガイド
ブログ投稿、Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Membase vs Neo4jの比較では、比較された各NoSQLデータベースに対して「最もよく使用される」シナリオがあります。リンクを引用して、
Riyad Kallaによる最近(2012年2月)のより包括的な比較、
両方を試した人によるブログ投稿(2011年10月)で、MongoDB Guy Learns CouchDBは、CouchDBのページングがそれほど役に立たないとコメントしました。
Kristina Chodorow(MongoDBの背後にあるチームの一部)による日付(2009年6月)のベンチマーク、
私はMongoDBに行きます。
それが役に立てば幸い。
上記の答えは、ストーリーを複雑にします。
それでおしまい。モバイル デバイスやデスクトップ デバイスにレプリケートする CouchDB の (すばらしい) 機能が必要でない限り、現時点では MongoDB がパフォーマンス、コミュニティ、およびツールの利点を備えています。
非常に古い質問ですが、それはGoogleの上にあり、私が見る答えがあまり好きではないので、ここに私自身のものがあります.
CouchDB には、CouchApp を開発する機能以外にも多くの機能があります。ほとんどの人は、従来の 3 層 Web アーキテクチャで CouchDb を使用しています。
実際には、ほとんどの人にとって決定的な要因は、MongoDb では SQL のような構文を使用したアドホック クエリが許可されているのに対し、CouchDb では許可されていないという事実です (map/reduce ビューを作成する必要があり、これらのビューを作成しても一部の人をオフにします)。 Rapid Application Development に適しています。ストアド プロシージャとは関係ありません)。
受け入れられた回答で提起されたポイントに対処するには:CouchDbには優れたバージョン管理システムがありますが、バージョン管理が重要な場所にのみ適している(またはより適している)という意味ではありません。また、couchdb は、その追加専用の性質のおかげで、大量の書き込みに対応しています (データが失われないことを保証しながら、書き込み操作はすぐに戻ります)。
誰にも言及されていない非常に重要なことの 1 つは、CouchDb が B ツリー インデックスに依存しているという事実です。これは、「行」が 1 つであろうと 200 億であろうと、クエリ時間は常に 10 ミリ秒未満のままであることを意味します。これは、CouchDb を低レイテンシで読みやすいデータベースにするゲーム チェンジャーであり、見逃すことはできません。
公平かつ徹底的に言えば、CouchDb に対する MongoDb の利点は、ツールとマーケティングです。彼らはすべての主要な言語とプラットフォーム用の一流のシチズン ツールを持っており、オンボーディングを容易にします。これがアドホック クエリに追加されることで、SQL からの移行がさらに容易になります。
CouchDb には、このレベルのツールはありません (現在利用可能なライブラリは多数ありますが)。ただし、CouchDb は HTTP API として公開されているため、好みの言語でラッパーを作成して対話するのは非常に簡単です。肥大化を回避し、必要なものだけを取得できるため、個人的にはこのアプローチが気に入っています (インターフェイス分離の原則)。
したがって、どちらを使用するかは、主に彼らのパラダイムの快適さと好みの問題だと思います。CouchDb のアプローチは、特定の人にとっては「ぴったり」ですが、データベースの機能について (完全な公式ガイドで) 学習した後、「まあまあ」という瞬間がない場合は、おそらく先に進む必要があります。
「適切な仕事に適切なツール」を使いたいだけなら、CouchDb の使用はお勧めしません。なぜなら、そのままでは使えないことがわかり、腹を立てて「CouchDb の結合はどこにあるの?」などのブログ記事を書くことになるからです。および「トランザクション管理はどこですか?」。実際、Couchdb は - 逆説的に - 非常に透過的ですが、同時にパラダイム シフトと問題へのアプローチ方法の変更を必要とし、真に輝く (そして実際に機能する) 必要があります。
しかし、一度それをやると、それは本当に報われます。個人的には、別のデータベースを選択するには、非常に強力な理由またはプロジェクトでの主要な取引ブレーカーが必要ですが、これまでに会ったことがありません。
その記事で見つかった答えを要約します。
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実行を使用したことがなく(とにかくお勧めしません)、Mongoノードが1つしかない場合、それらのmap/reduceのパフォーマンスはひどいものになります。これらすべての理由により、私は現在CouchDBをチェックアウトすることを検討しています。おそらく、それは私の特定のシナリオにより適しています。
ところで、スパースな一意のインデックスの問題を説明しているそれぞれのMongoの問題へのリンクを誰かが知っている場合は、共有してください。
Mongo (より慣れ親しんでいます) でもできると思いますし、couch でもできると確信しています。
どちらもドキュメント指向 (JSON ベース) であるため、ドキュメントには「列」ではなくフィールドが存在しますが、完全に動的にすることができます。
気になる他の機能、人気など、使用する他の要因を見たいと思うかもしれません.Googleの洞察、indeed.comの求人情報は、人気を見る方法です.
あなたはそれを試すことができます.5分でmongoを実行できるはずです.