Couchdb-introduction
CouchDB-はじめに
データベース管理システムは、データの保存と取得のためのメカニズムを提供します。 データベース管理システムには、RDBMS(リレーショナルデータベース管理システム)、OLAP(オンライン分析処理システム)、NoSQLの3つの主要なタイプがあります。
RDBMS
RDBMSはRelational Database Management Systemの略です。 RDBMSは、SQLの基盤であり、MS SQL Server、IBM DB2、Oracle、MySQL、Microsoft Accessなどのすべての最新のデータベースシステムの基盤です。
リレーショナルデータベース管理システム(RDBMS)は、Eによって導入されたリレーショナルモデルに基づくデータベース管理システム(DBMS)です。 F. コッド。
RDBMSのデータは、 tables と呼ばれるデータベースオブジェクトに格納されます。 テーブルは関連するデータエントリのコレクションであり、列と行で構成されます。 構造化データのみを保存します。
OLAP
オンライン分析処理サーバー(OLAP)は、多次元データモデルに基づいています。 これにより、マネージャーやアナリストは、情報への高速で一貫した対話型のアクセスを通じて情報の洞察を得ることができます。
NoSQLデータベース
NoSQLデータベース(Not Only SQLと呼ばれることもあります)は、リレーショナルデータベースで使用される表形式の関係以外のデータを格納および取得するメカニズムを提供するデータベースです。 これらのデータベースはスキーマフリーで、簡単なレプリケーションをサポートし、シンプルなAPIを持ち、最終的に一貫性があり、大量のデータ(ビッグデータ)を処理できます。
NoSQLデータベースの主な目的は、次のものを持つことです-
- デザインのシンプルさ、
- 水平スケーリング、および
- 可用性をより細かく制御します。
NoSQLデータベースは、リレーショナルデータベースとは異なるデータ構造を使用します。 NoSQLの一部の操作を高速化します。 特定のNoSQLデータベースの適合性は、解決しなければならない問題によって異なります。 これらのデータベースには、構造化データと、オーディオファイル、ビデオファイル、ドキュメントなどの非構造化データの両方が保存されます。 これらのNoSQLデータベースは3つのタイプに分類され、以下で説明します。
キーと値のストア-これらのデータベースは、キーと値のペアでデータを保存するために設計されており、これらのデータベースにはスキーマがありません。 これらのデータベースでは、各データ値はインデックス付きキーとそのキーの値で構成されています。
例-BerkeleyDB、Cassandra、DynamoDB、Riak。
列ストア-これらのデータベースでは、データの列にグループ化されたセルにデータが保存され、これらの列はさらに列ファミリにグループ化されます。 これらの列ファミリには、任意の数の列を含めることができます。
例-BigTable、HBase、およびHyperTable。
ドキュメントストア-これらは、「ドキュメント」がより複雑なデータを含むキーバリューストアの基本的なアイデアに基づいて開発されたデータベースです。 ここでは、各ドキュメントに一意のキーが割り当てられ、ドキュメントの取得に使用されます。 これらは、半構造化データとも呼ばれるドキュメント指向の情報を保存、取得、管理するために設計されています。
例-CouchDBおよびMongoDB。
CouchDBとは何ですか?
CouchDBは、Apacheソフトウェア財団によって開発されたオープンソースデータベースです。 使いやすさに重点を置いており、ウェブを採用しています。 これは、NoSQLドキュメントストアデータベースです。
JSONを使用してデータ(ドキュメント)を保存し、ドキュメントを変換するためのクエリ言語としてのJavaスクリプト、ドキュメントにアクセスするためのapiのhttpプロトコル、Webブラウザーでインデックスをクエリします。 2005年にリリースされたマルチマスターアプリケーションであり、2008年にApacheプロジェクトになりました。
なぜCouchDBですか?
- CouchDBにはHTTPベースのREST APIがあり、データベースと簡単に通信できます。 また、HTTPリソースとメソッド(GET、PUT、DELETE)の単純な構造は、理解しやすく使いやすいです。
- 柔軟なドキュメントベースの構造にデータを保存するため、データの構造を心配する必要はありません。
- ユーザーには強力なデータマッピングが提供され、情報のクエリ、結合、フィルタリングが可能になります。
- CouchDBは、データベースとマシン間でデータをコピー、共有、同期できる使いやすいレプリケーションを提供します。
データ・モデル
- データベースは、CouchDBで最も外側のデータ構造/コンテナーです。
- 各データベースは、独立したドキュメントの集合です。
- 各ドキュメントは、独自のデータと自己完結型のスキーマを保持しています。
- ドキュメントのメタデータには改訂情報が含まれているため、データベースが切断されている間に発生した差異をマージできます。
- CouchDBは、書き込み中にデータベースフィールドをロックする必要を回避するために、複数バージョンの同時実行制御を実装しています。
CouchDBの機能:コンテンツの削減
文書保管
CouchDBは、ドキュメントストレージのNoSQLデータベースです。 一意の名前のドキュメントを保存する機能を提供し、データベースドキュメントの読み取りと更新(追加、編集、削除)のためのRESTful HTTP APIと呼ばれるAPIも提供します。
CouchDBでは、ドキュメントはデータの主要な単位であり、メタデータも含まれています。 ドキュメントフィールドには一意の名前が付けられ、さまざまなタイプ(テキスト、数値、ブール値、リストなど)の値が含まれ、テキストサイズや要素数に制限はありません。
ドキュメントの更新(追加、編集、削除)はAtomicityに従います。つまり、完全に保存されるか、まったく保存されません。 データベースには、部分的に保存または編集されたドキュメントはありません。
JSONドキュメントの構造
{
"field" : "value",
"field" : "value",
"field" : "value",
}
ACIDプロパティ
CouchDBには、その機能の1つとしてACIDプロパティが含まれています。
一貫性-CouchDBのデータが一度コミットされた場合、このデータは変更または上書きされません。 したがって、CouchDBはデータベースファイルが常に一貫した状態になるようにします。
CouchDBの読み取りでは、マルチバージョン同時実行制御(MVCC)モデルが使用されます。これは、クライアントが読み取り操作の最初から最後までデータベースの一貫したスナップショットを見るためです。
ドキュメントが更新されるたびに、CouchDBはデータをディスクにフラッシュし、更新されたデータベースヘッダーは、ファイルの最初の4kを構成する2つの連続した同一のチャンクに書き込まれ、ディスクに同期的にフラッシュされます。 フラッシュ中の部分的な更新は破棄されます。
ヘッダーのコミット中に障害が発生した場合、以前の同一ヘッダーの残存コピーが残り、以前にコミットされたすべてのデータの一貫性が確保されます。 ヘッダー領域を除き、クラッシュまたは電源障害後の整合性チェックまたは修正は必要ありません。
圧縮
データベースファイルのスペースが一定の範囲を超えて浪費されると、アクティブなデータはすべて新しいファイルにコピー(クローン)されます。 コピープロセスが完全に完了すると、古いファイルは破棄されます。 これらはすべて圧縮プロセスによって行われます。 データベースは圧縮中もオンラインのままであり、すべての更新と読み取りは正常に完了できます。
ビュー
CouchDBのデータは、個々の暗黙的な構造に柔軟に対応できる半構造化ドキュメントに保存されますが、データの保存と共有のためのシンプルなドキュメントモデルです。 データをさまざまな方法で表示する場合は、テーブルに分解されていないデータをフィルタリング、整理、およびレポートする方法が必要です。
この問題を解決するために、CouchDBにはビューモデルが用意されています。 ビューは、データベース内のドキュメントを集約およびレポートする方法であり、データベースドキュメントを集約、結合、およびレポートするためにオンデマンドで構築されます。 ビューは動的に構築され、基礎となるドキュメントに影響を与えないため、同じデータのさまざまなビュー表現を好きなだけ持つことができます。
歴史
- CouchDBはErlangプログラミング言語で書かれています。
- 2005年にDamien Katzによって開始されました。
- CouchDBは2008年にApacheプロジェクトになりました。
CouchDBの現在のバージョンは1.61です。