NoSQLデータベースは、従来のリレーショナルデータベースに代わる魅力的な選択肢を提示し、ビッグデータの世界を揺るがしていますが、CouchDB と MongoDB は、このタイプのデータベースとしてよく選ばれている2つです。そこで本記事では、MongoDB と CouchDB の詳しい比較を作成し、皆さんの決断のお手伝いができればと思います。
1.技術的な詳細
CouchDB と MongoDB はどちらもドキュメント指向の NoSQL データベースですが、その実装で大きな違いがあります。
CouchDB では、データを格納するのに半構造化 JSON 形式が使われます。CouchDB データベースへのクエリは、HTTP または JavaScript を使って、RESTful HTTP API を介して行われます。一方、MongoDB では、バイナリ形式でデータを格納する JSON の変種である「 BSON」 が使われます。また、いくつかの類似点はあるものの、SQLとは異なる独自のクエリ言語が使われます。
他の領域では、CouchDBと MongoDB には共通した特徴がいくつかあります。この2つのデータベースでは、ドキュメントがデータの主要な単位となっています。また、どちらもスキーマレスで、つまり最初にそのドキュメントのスキーマや構造を確定することなく、データベースにドキュメントを格納できるということになります。この機能により、CouchDB や MongoDB に保存されているデータをより柔軟に扱うことができるのです。
2.CAP定理
CAP定理とは、「分散データベースは、【一貫性】、【可用性】、【分断耐性】の3つのうち、最大で2つしか望ましい品質を持つことができない」というものです。
- 一貫性:全クライアントに常に同じデータビューがある。
- 可用性: 全クライアントが、常にデータベースからの読み取りとデータベースへの書き込みが可能である。
- 分断耐性: ノード間の通信が途絶えた場合でも、データベースクラスタは動作し続けることができる。
CouchDB と MongoDB は、CAP定理に対するアプローチが異なります。CouchDB は【可用性】と【分断耐性】を優先し、MongoDB は【一貫性】と【分断耐性】を優先しています。
また、CouchDBは、最終的な一貫性を使用し、クライアントは1つのデータベースノードに書き込むことができ、その情報は最終的にデータベースの残りの部分に伝搬することが保証されています。一方、MongoDB は厳格な一貫性を採用しており、データベースはレプリカセットを使って冗長性を提供しますが、可用性は犠牲になります。
3.スケーラビリティとパフォーマンス
MongoDB は通常、巨大なデータセットや高速な読み取り速度などの高性能な要件を扱う場合に、CouchDBよりも優位に立つことができます。また、リソースの消費量が不透明な場合や、将来的に急成長が見込まれる場合にも、このデータベースが適しています。
また、CouchDB は【マスター同士】と【マスターとスレーブ間】両方のレプリケーションを提供していますが、MongoDB は【マスターとスレーブ間】の構成のみをカバーしています。マスター同士(マルチマスターとも呼ばれる)のレプリケーションでは、クラスタ内の任意のノードがマスターとして機能し、読み取りおよび書き込み要求を受け入れることができ、この機能によって、自動的なフェイルオーバーが可能になります。
4.人気
MongoDB と Couch DB の評価は、人気で決めるべきではありませんが、一番人気のデータベースを選択すると、大きな二次的利点があります。例えば、より大きなコミュニティがある方のテクノロジーを使うと、そのサポートを見つけたり、ソリューションの経験者を雇ったりしやすくなります。
ちなみに、データベース技術の人気を追跡する人気リソースである DB-Engines のランキングチャートによると、MongoDB はデータベース管理システムの人気リストで5位であり、NoSQL データベースとしては初のランクインとなります。CouchDB は39位で、ドキュメント指向の NoSQL データベースとしては4番人気です。
5.価格
CouchDB と MongoDB はオープンソースのプロジェクトであり、完全に無料で使えますが、このデータベースをビジネスに不可欠なワークロードのために本番で使用する場合、デプロイの総コストを考慮する必要があります。
クラウドベースのインフラや高品質なサポート、合理的なメンテナンス、その他の便利な機能を利用できるため、お好みのテクノロジーを採用したマネージドデータベースのサービスを購入するのが一般的です。
CouchDB
CouchDB は、AWS(Amazon Web Services)および GCP(Google Cloud Platform)でフルマネージドサービスとして利用できます。本記事の執筆時点で、Google は GCP 上 で CouchDB を導入するコストを月額34.72ドルと予測しています。この見積もりは、米国中部地域で30日間、1日24時間使用し、2つの vCPU と 8GB のメモリを持つ VM インスタンス、および 10GB の標準永続ディスクを使用した場合に基づきます。
AWS マーケットプレースでは、CouchDB のマネージドサービスがいくつか提供されており、US East(ノースバージニア)の t3a.small でホストされているデータベースの場合、1時間あたり0.019ドルからの価格となっています。
IBM Cloudant は、IBMが構築したフルマネージドでクローズドソースのCouchDB のフォーク(派生したもの)です。Web やモバイルのアプリケーションの重いワークロードを処理するためにデータベース技術を最適化し、無料、標準、トランザクションエンジンの3つのプラン階層が用意されています。無料層には1GBのストレージが含まれ、固定提供のスループット容量は、読み取り20回/秒、書き込み10回/秒、グローバルクエリ5回/秒です。標準階層は、100リード/秒、50ライト/秒、5グローバルクエリー/秒、20GBのストレージを提供し、月額価格は75ドルからです。また、トランザクションエンジンは、1秒間に50回の読み取りと50回の書き込み、25GBのストレージが提供され、22ドルからの利用が可能です。
MongoDB
MongoDB Atlas は、MongoDB のマネージドクラウドデータベースサービスです。共有ティアは最小容量で無料、ストレージは512MBからで、最大5GBまで利用でき、共有 RAM も備えています。専用階層は月額57ドルからで、10GBから4TBのストレージ、2GBから768GBの RAM、弾性スケーラビリティ、自動スケーリング、ポイントインタイムデータリカバリーを提供します。マルチリージョン層は月額95ドルからで、クロスリージョンレプリケーション、マルチクラウドクラスター、ジオパーティションドデータストレージを提供します。
Xplentyによるデータベース移行の簡素化
CouchDB と MongoDB の最も重要な違いは以下の4つです:
- CouchDB は RESTful な HTTP API でクエリを受け付け、MongoDB は独自のクエリ言語を使用する。
- CouchDB は可用性を優先し、MongoDB は一貫性を優先する。
- MongoDB には、CouchDB よりもはるかに大きなユーザーベースがあることから、データベースソリューションのサポートを見つけたり、従業員を雇ったりしやすい。
- 両データベースとも無料のオープンソースプロジェクトであるが、本番のワークロードをデプロイするには有料のフルマネージドサービスが必要になる可能性がある。
どのデータベースを選んだとしても、大量のデータを新しい展開先にスムーズに移行するためのプランが必要です。Xplenty は、ユーザーに優しいドラッグ&ドロップのビジュアルインターフェースがある、業界をリードするデータ統合プラットフォームを提供しており、MongoDB のコネクタが内蔵されているほか、100種類の統合機能があらかじめ用意されており、企業のデータを簡単に準備・処理することができます。
Xplenty で ETL プロセスがどのように強化されるかをお知りになりたい方は、コチラにお問い合わせいただき、ぜひ今すぐ14日間のデモをお試し下さい。