CouchDB-はじめに

データベース管理システムは、データの保存と取得のためのメカニズムを提供します。データベース管理システムには、RDBMS(リレーショナルデータベース管理システム)、OLAP(オンライン分析処理システム)、NoSQLの3つの主要なタイプがあります。

RDBMS

RDBMSは、リレーショナルデータベース管理システムの略です。RDBMSは、SQLの基盤であり、MS SQL Server、IBM DB2、Oracle、MySQL、MicrosoftAccessなどの最新のデータベースシステムすべての基盤です。

リレーショナルデータベース管理システム(RDBMS)は、EF Coddによって導入されたリレーショナルモデルに基づくデータベース管理システム(DBMS)です。

RDBMSのデータは、と呼ばれるデータベースオブジェクトに保存されます。 tables。このテーブルは、関連するデータエントリのコレクションであり、列と行で構成されています。構造化データのみを格納します。

OLAP

Online Analytical Processing Server(OLAP)は、多次元データモデルに基づいています。これにより、マネージャーとアナリストは、情報への高速で一貫性のあるインタラクティブなアクセスを通じて、情報の洞察を得ることができます。

NoSQLデータベース

NoSQLデータベース(SQLだけでなく呼ばれることもあります)は、リレーショナルデータベースで使用される表形式の関係以外のデータを格納および取得するメカニズムを提供するデータベースです。これらのデータベースはスキーマフリーで、簡単なレプリケーションをサポートし、シンプルなAPIを備え、結果整合性があり、大量のデータ(ビッグデータ)を処理できます。

NoSQLデータベースの主な目的は、次のことです。

  • デザインのシンプルさ、
  • 水平スケーリング、および
  • 可用性のより細かい制御。

NoSQLデータベースは、リレーショナルデータベースとは異なるデータ構造を使用します。これにより、NoSQLでの一部の操作が高速になります。特定のNoSQLデータベースの適合性は、解決する必要のある問題によって異なります。これらのデータベースには、構造化データと、オーディオファイル、ビデオファイル、ドキュメントなどの非構造化データの両方が格納されます。これらのNoSQLデータベースは、3つのタイプに分類され、以下で説明します。

Key-value Store−これらのデータベースは、キーと値のペアでデータを格納するように設計されており、これらのデータベースにはスキーマがありません。これらのデータベースでは、各データ値はインデックス付きキーとそのキーの値で構成されます。

例-BerkeleyDB、Cassandra、DynamoDB、Riak。

Column Store−これらのデータベースでは、データはデータの列にグループ化されたセルに格納され、これらの列はさらに列ファミリーにグループ化されます。これらの列ファミリーには、任意の数の列を含めることができます。

例-BigTable、HBase、およびHyperTable。

Document Store−これらは、「ドキュメント」にさらに複雑なデータが含まれるKey-Valueストアの基本的な考え方に基づいて開発されたデータベースです。ここで、各ドキュメントには、ドキュメントの取得に使用される一意のキーが割り当てられます。これらは、半構造化データとも呼ばれるドキュメント指向の情報を保存、取得、および管理するために設計されています。

例-CouchDBとMongoDB。

CouchDBとは何ですか?

CouchDBは、Apacheソフトウェアファウンデーションによって開発されたオープンソースデータベースです。焦点は、ウェブを取り入れた使いやすさにあります。これはNoSQLドキュメントストアデータベースです。

JSONを使用してデータ(ドキュメント)を保存し、クエリ言語としてJavaScriptを使用してドキュメントを変換し、APIがドキュメントにアクセスするためのhttpプロトコルを使用し、Webブラウザでインデックスをクエリします。2005年にリリースされたマルチマスターアプリケーションであり、2008年にApacheプロジェクトになりました。

なぜCouchDBなのか?

  • CouchDBにはHTTPベースのRESTAPIがあり、データベースとの通信を容易にします。また、HTTPリソースとメソッド(GET、PUT、DELETE)の単純な構造は、理解と使用が簡単です。

  • 柔軟なドキュメントベースの構造でデータを保存するため、データの構造について心配する必要はありません。

  • ユーザーには強力なデータマッピングが提供され、情報のクエリ、結合、およびフィルタリングが可能になります。

  • CouchDBは、データベースとマシン間でデータをコピー、共有、同期できる、使いやすいレプリケーションを提供します。

データ・モデル

  • データベースは、CouchDBの最も外側のデータ構造/コンテナーです。

  • 各データベースは、独立したドキュメントのコレクションです。

  • 各ドキュメントは、独自のデータと自己完結型のスキーマを維持します。

  • ドキュメントメタデータにはリビジョン情報が含まれているため、データベースの切断中に発生した差異をマージできます。

  • CouchDBは、書き込み中にデータベースフィールドをロックする必要をなくすために、マルチバージョン同時実行制御を実装しています。

CouchDBの機能:コンテンツを減らす

ドキュメントストレージ

CouchDBは、ドキュメントストレージのNoSQLデータベースです。一意の名前でドキュメントを保存する機能を提供し、データベースドキュメントを読み取って更新(追加、編集、削除)するためのRESTful HTTPAPIと呼ばれるAPIも提供します。

CouchDBでは、ドキュメントはデータの主要な単位であり、メタデータも含まれています。ドキュメントフィールドには一意の名前が付けられ、さまざまなタイプ(テキスト、数値、ブール値、リストなど)の値が含まれ、テキストサイズや要素数に制限はありません。

ドキュメントの更新(追加、編集、削除)はAtomicityに従います。つまり、完全に保存されるか、まったく保存されません。データベースには、部分的に保存または編集されたドキュメントはありません。

Jsonドキュメントの構造

{
   "field" : "value",
   "field" : "value",
   "field" : "value",
}

ACIDプロパティ

CouchDBには、その機能の1つとしてACIDプロパティが含まれています。

一貫性-CouchDBのデータが一度コミットされた場合、このデータは変更または上書きされません。したがって、CouchDBは、データベースファイルが常に一貫した状態になることを保証します。

マルチバージョン同時実行制御(MVCC)モデルは、CouchDB読み取りによって使用されます。そのため、クライアントは、読み取り操作の開始から終了まで、データベースの一貫したスナップショットを確認できます。

ドキュメントが更新されるたびに、CouchDBはデータをディスクにフラッシュし、更新されたデータベースヘッダーは、ファイルの最初の4kを構成する2つの連続した同一のチャンクに書き込まれ、同期的にディスクにフラッシュされます。フラッシュ中の部分的な更新は破棄されます。

ヘッダーのコミット中に障害が発生した場合、以前の同一のヘッダーのコピーが残り、以前にコミットされたすべてのデータの一貫性が保証されます。ヘッダー領域を除いて、クラッシュまたは電源障害後の整合性チェックまたは修正は必要ありません。

圧縮

データベースファイルのスペースがある程度無駄になると、すべてのアクティブなデータが新しいファイルにコピー(複製)されます。コピープロセスが完全に完了すると、古いファイルは破棄されます。これはすべて、圧縮プロセスによって行われます。圧縮中、データベースはオンラインのままであり、すべての更新と読み取りは正常に完了することができます。

ビュー

CouchDBのデータは、個々の暗黙的な構造に柔軟に対応できる半構造化ドキュメントに格納されますが、データの格納と共有のための単純なドキュメントモデルです。データをさまざまな方法で表示したい場合は、テーブルに分解されていないデータをフィルタリング、整理、およびレポートする方法が必要です。

この問題を解決するために、CouchDBはビューモデルを提供します。ビューは、データベース内のドキュメントを集約およびレポートする方法であり、データベースドキュメントを集約、結合、およびレポートするためにオンデマンドで構築されます。ビューは動的に構築され、基になるドキュメントに影響を与えないため、同じデータのさまざまなビュー表現を好きなだけ持つことができます。

歴史

  • CouchDBはErlangプログラミング言語で書かれています。
  • それは2005年にダミアンカッツによって開始されました。
  • CouchDBは2008年にApacheプロジェクトになりました。

CouchDBの現在のバージョンは1.61です。