私は NoSQL の動向に関してはまったくの初心者です。MongoDB と CouchDB についてはよく耳にしました。この 2 つには違いがあることは知っています。NoSQL の世界への第一歩として、どちらを学ぶことをお勧めしますか?
ベストアンサー1
以下のリンクを参照してください
アップデート: 素晴らしいものを見つけたNoSQLの比較データベース。
モンゴDB(3.2)
- 言語: C++
- 要点: JSONドキュメントストア
- ライセンス: AGPL (ドライバー: Apache)
- プロトコル: カスタム、バイナリ (BSON)
- マスター/スレーブ レプリケーション (レプリカ セットによる自動フェイルオーバー)
- シャーディングが組み込まれている
- クエリはJavaScript式です
- サーバー側で任意のJavaScript関数を実行する
- 地理空間インデックスとクエリ機能あり
- 異なるパフォーマンス特性を持つ複数のストレージエンジン
- 機能よりもパフォーマンス
- 文書の検証
- ジャーナリング
- 強力な集約フレームワーク
- 32ビットシステムでは、約2.5Gbに制限されます
- テキスト検索を統合
- ビッグデータとメタデータを保存するための GridFS (実際には FS ではありません)
- データセンター対応
最もよく使われる: 動的クエリが必要な場合。map/reduce 関数ではなくインデックスを定義することを好む場合。大規模な DB で優れたパフォーマンスが必要な場合。CouchDB が必要だったが、データの変更が多すぎてディスクがいっぱいになっている場合。
例えば: ほとんどのことは MySQL または PostgreSQL で実行できますが、事前定義された列があると、実際には制限されます。
カウチDB(1.2)
- 言語: Erlang
- 主なポイント: DBの一貫性、使いやすさ
- ライセンス: Apache
- プロトコル: HTTP/REST
- 双方向(!)レプリケーション、
- 継続的またはアドホック、
- 競合検出機能付き
- つまり、マスター-マスターレプリケーションです。(!)
- MVCC - 書き込み操作は読み取りをブロックしません
- 以前のバージョンのドキュメントもご利用いただけます
- 衝突のみ(信頼性)設計
- 時々圧縮する必要がある
- ビュー: 埋め込みマップ/リデュース
- ビューの書式設定: リストとショー
- サーバー側でのドキュメント検証が可能
- 認証可能
- 「_changes」によるリアルタイム更新(!)
- 添付ファイルの処理
最もよく使われる: 事前定義されたクエリを実行する、時々変更されるデータを蓄積します。バージョン管理が重要な場所です。
例えば: CRM、CMS システム。マスター マスター レプリケーションは特に興味深い機能であり、マルチサイト展開を簡単に行うことができます。