Apache CouchDB(ibm.com外部へのリンク)は、オープンソースのNoSQLドキュメント・データベースで、JSONベースのドキュメント・フォーマットでデータを収集して保存します。 リレーショナル・データベースとは異なり、CouchDBではスキーマ・フリーのデータ・モデルを使用しており、さまざまなコンピューティング・デバイス、携帯電話、Webブラウザーでのレコード管理を簡素化します。
CouchDBは2005年に発表され、その後2008年にApache Software Foundation(ibm.com外部へのリンク)のプロジェクトになりました。 CouchDBは、オープンソース・プロジェクトとして、活発な開発者のコミュニティーによってサポートされており、そのソフトウェアは、使いやすさとWebへの対応に重点を置いて継続的に改善されています。
多くの企業にとって、データ管理テクノロジーを調達する際にどのベンダーを使用するかを決定するのは難しいことです。 プロプラエタリー・ソフトウェアでは、テクノロジーの使用に特定のライセンス制限が課されるだけでなく、すべてのエンタープライズ・データを、内部構造を把握できない「汎用型」のデータベース管理システム(DBMS)に移行する場合に、事業の継続性の問題にも懸念が生じます。
しかし、CouchDBは違います。 「ベンダーの囲い込み」のリスクを伴うプロプラエタリー・ソフトウェアとは異なり、CouchDBはオープンソースであり、自由に使用することができ、現在のデータ管理インフラストラクチャーに容易に統合できます。 ソフトウェアをより細かく制御できるため、ビジネス固有のニーズに合わせてソフトウェアを柔軟に適応させることができます。 CouchDBは、汎用のドキュメント・ストアが必要な場合でも、効率的なデータ同期を可能にする場合でも、あるいは「オフライン・ファースト」の考え方を採用する場合でも、耐久性、信頼性、拡張性に優れたインフラストラクチャーを構築するのに必要な柔軟性を企業にもたらしてくれます。
次の動画では、CouchDBの詳細とその仕組みを説明しています。
CouchDBの開発の動機は、「リラックス」という一言で定義できます。 CouchDBには、弾力性のある分散システムを実行する労力を軽減するために設計された一連の機能が備わっています。 ここでは、CouchDBの主な機能と、他のNoSQLデータベースとの違いについて説明します。
レプリケーション。 CouchDBの特徴の1つは、双方向レプリケーションです。双方向レプリケーションによって複数のサーバーやデバイス間でデータの同期が可能になります。 このレプリケーションにより、企業はシステムの可用性を最大化し、データのリカバリー時間を短縮し、地理的にエンド・ユーザーに最も近い場所にデータを配置し、バックアップ・プロセスを簡素化することができます。
CouchDBでは、データが1つのサーバーに格納されているか、複数のサーバーに格納されているかによる違いは発生しません。 むしろ、CouchDBは、あらゆるソースから発生するドキュメントの変更を識別し、すべてのデータベース・コピーが最新の情報と同期した状態を確実に維持できるようにします。 これにより、複数のデータベース・レプリカを自己完結型で管理しながら、複数のコンピューティング環境にわたって正確でリアルタイムな情報を格納することができます。
ビュー。 CouchDBでは、照会を実行したり、保管されているドキュメント・ファイルからレポートを作成したりするための1次ツールとして、ビューを使用します。 ビューを使用すると、ドキュメントをフィルタリングして、特定のデータベース・プロセスに関連する情報を検索することができます。 この情報は、ユーザーの好みに応じてマッピングし、特定の順序で抽出することができます。
CouchDBの優れている点は、情報の表示方法に自由度があることです。 CouchDBのビューは動的に構築され、基礎となるドキュメント・ストアに直接影響を及ぼさないため、同じデータに対して実行できる異なるビューの数に制限はありません。 これらのビューは、特別な設計ドキュメント内に作成され、通常の保存データのように複数のデータベース・インスタンスに複製できます。
CouchDBのもう1つの優れた機能は、Apache MapReduceを使用して、ドキュメント内の任意の値に基づいてドキュメントを簡単に検索できる強力なインデックスを作成できることです。 さらに、これらのインデックスを使用して、あるドキュメントから次のドキュメントへの関係を確立し、それらの関連付けに基づいてさまざまな計算を行うことができます。
HTTP API。 CouchDBは、REST APIを使用してどこからでもデータベースにアクセスすることができ、すべてのCRUD(作成、読み取り、更新、削除)操作を柔軟に行うことができます。 このシンプルで効果的なデータベース接続の方法によって、CouchDBは柔軟、高速、かつ強力な使用が可能になる一方で、高いアクセス性も維持しています。
オフライン用に構築。 データベースの使いやすさとアクセシビリティーを向上させるには、オフラインでもオンラインと同様に機能するアプリケーションを構築できることが不可欠です。 CouchDBを使用すると、アプリケーションは収集したデータをモバイル・デバイスやブラウザーにローカルに保存し、オンラインに戻ったときにデータを同期することができます。
効率的なドキュメント・ストレージ。 CouchDBでは、ドキュメントはJSONで使用される主要なデータ単位であり、さまざまなフィールドと添付ファイルで構成されているため、保管が容易です。 各ドキュメントのテキスト・サイズや要素数に制限はありません。また、データは複数のデータベース・ソースやグローバルに分散したサーバー・クラスターからアクセスして更新することができます。
互換性。 CouchDBは非常に使いやすく、現在のインフラストラクチャーと統合すれば、さまざまな互換性のメリットが得られます。 CouchDBはErlang(汎用、並行、ガーベッジ・コレクションのプログラミング言語とランタイム・システム)で作成されているため、開発者にとって信頼性が高く、扱いやすいものとなっています。
CouchDBはオープンソースの機能を備えているため、非常に柔軟で、さまざまなオペレーティング・システムや仮想化ツールにインストールして実行することができます。 また、モバイル・デバイスのブラウザーで動作するように設計された軽量データベースであるPouchDBとも互換性があります。
CouchDBは、ユーザーと開発者に同様のメリットを提供します。
拡張性。 CouchDBのアーキテクチャー設計は、データベースをパーティショニングし、データを複数のノードにスケーリングする場合に、非常に高い適応性があります。 CouchDBは、水平パーティショニングとレプリケーションの両方をサポートしており、データベース導入時に読み取りと書き込みの両方の負荷のバランスを取るための、容易に管理できるソリューションを構築します。
CouchDBは、マルチクラウドとマルチデータベースのインフラストラクチャー向けにゼロから構築された、非常に耐久性と信頼性の高いストレージ・エンジンを備えています。 NoSQLデータベースであるCouchDBは、非常に細かくカスタマイズすることができ、データ・ボリュームやユーザー数に関係なく、予測可能でパフォーマンス重視のアプリケーションの開発を可能にします。
読み取りロックなし。 データがテーブルに格納されているほとんどのリレーショナル・データベースでは、テーブルを更新または変更する必要がある場合、変更されるデータの行は、変更要求が処理されるまで他のユーザーに対してロックされます。 これにより、顧客のアクセシビリティーの問題や、データ管理プロセスの全体的なボトルネックが発生する可能性があります。
CouchDBは、MVCC(Multi-Version Concurrency Control)を使用して、データベースへのアクセスを同時に管理しています。 これは、CouchDBでは、現在のデータベースの負荷に関係なく、ユーザーに制限をかけることなくフルスピードで実行できることを意味します。 CouchDB内のドキュメントはリアルタイムでバージョン管理および追加されるため、データベース読み取り要求では、最初にドキュメントにアクセスしたユーザーに関係なく、常に最新の更新されたデータベース・スナップショットが表示されます。
オープンソース開発。 CouchDBは、オープンソース・コミュニティーでの強力な支援とサポートのおかげで、エンタープライズ・データベース管理のための強力で信頼性の高い基盤を維持しています。 スキーマレス・ソリューションとして数年をかけて開発されたCouchDBは、大部分のプロプラエタリー・データベース・ソリューションでは見られない、比類のない柔軟性を提供します。