Couchdb-quick-guide

提供:Dev Guides
移動先:案内検索

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です。

CouchDB-インストール

この章では、WindowsおよびLinuxシステムにCouchDBをインストールする方法を説明します。

WindowsでのCouchDBのインストール

ダウンロードCouchDB

CouchDBの公式Webサイトはhttps://couchdb.apache.orgです。 指定されたリンクをクリックすると、以下に示すように、CouchDBの公式Webサイトのホームページを取得できます。

CouchDBのダウンロード

ダウンロードボタンをクリックすると、さまざまな形式のCouchDBのダウンロードリンクが提供されるページに移動します。 次のスナップショットは同じことを示しています。

CouchDB形式

Windowsシステムのダウンロードリンクを選択し、提供されているミラーの1つを選択してダウンロードを開始します。

CouchDBのインストール

CouchDBは、* setup-couchdb-1.6.1_R16B02.exeという名前のセットアップファイルの形式でシステムにダウンロードされます。セットアップファイルを実行し、インストールを続行します。

インストール後、次の* link:http://127.0.0.1:5984/.*にアクセスして、CouchDBのビルトインWebインターフェイスを開きます。すべてがうまくいくと、次の出力を持つWebページが表示されます。

{
   "couchdb":"Welcome","uuid":"c8d48ac61bb497f4692b346e0f400d60",
   "version":"1.6.1",
   "vendor":{
      "version":"1.6.1","name":"The Apache Software Foundation"
   }
}

次のURLを使用して、CouchDB Webインターフェイスと対話できます-

http://127.0.0.1:5984/_utils/

これは、CouchDBのWebインターフェイスであるFutonのインデックスページを示しています。

Webインターフェイス

LinuxシステムへのCouchDBのインストール

Linuxフレーバーシステムの多くでは、CouchDBを内部的に提供しています。 このCouchDBをインストールするには、指示に従ってください。

UbuntuとDebianでは次を使用できます-

sudo aptitude install couchdb

Gentoo Linuxでは、CouchDB ebuildが利用可能です-

sudo emerge couchdb

LinuxシステムにCouchDBがない場合は、次のセクションに従ってCouchDBとその依存関係をインストールします。

CouchDB依存関係のインストール

以下は、システムでCouchDBを取得するためにインストールされる依存関係のリストです。

  • アーランOTP
  • ICU
  • OpenSSL
  • Mozilla SpiderMonkey
  • GNU Make
  • GNUコンパイラコレクション
  • libcurl
  • help2man
  • Python for docs
  • Python Sphinx

これらの依存関係をインストールするには、ターミナルで次のコマンドを入力します。 ここではCentos 6.5を使用しており、次のコマンドはCentos 6.5と互換性のある必要なソフトウェアをインストールします。

$sudo yum install autoconf
$sudo yum install autoconf-archive
$sudo yum install automake
$sudo yum install curl-devel
$sudo yum install erlang-asn1
$sudo yum install erlang-erts
$sudo yum install erlang-eunit
$sudo yum install erlang-os_mon
$sudo yum install erlang-xmerl
$sudo yum install help2man
$sudo yum install js-devel
$sudo yum install libicu-devel
$sudo yum install libtool
$sudo yum install perl-Test-Harness
  • 注意-*これらのすべてのコマンドでは、sudoを使用する必要があります。 次の手順は、通常のユーザーをsudoerに変換します。
  • 管理者ユーザーのルートとしてログイン
  • 次のコマンドを使用して sudo ファイルを開きます-
visudo
  • 次に、以下に示すように編集して、既存のユーザーにsudoer権限を付与します-
Hadoop All=(All) All , and press esc : x to write the changes to the file.

システム内のすべての依存関係をダウンロードしたら、所定の指示に従ってCouchDBをダウンロードします。

CouchDBのダウンロード

Apacheソフトウェア財団はCouchDBの完全な.tarファイルを提供しないため、ソースからインストールする必要があります。

新しいディレクトリを作成してCouchDBをインストールし、作成したディレクトリを参照し、次のコマンドを実行してCouchDBソースをダウンロードします-

$ cd
$ mkdir CouchDB
$ cd CouchDB/
$ wget
http://www.google.com/url?q=http%3A%2F%2Fwww.apache.org%2Fdist%2Fcouchdb%2Fsource%2F1.6.1%2Fapache-couchdb-1.6.1.tar.gz

これにより、CouchDBソースファイルがシステムにダウンロードされます。 次に示すように、 apache-couchdb-1.6.1.tar.gz を解凍します。

$ tar zxvf apache-couchdb-1.6.1.tar.gz

CouchDBの構成

CouchDBを設定するには、次のことを行います-

  • CouchDBのホームフォルダーを参照します。
  • スーパーユーザーとしてログインします。
  • 以下に示すように./configureプロンプトを使用して設定します-
$ cd apache-couchdb-1.6.1
$ su
Password:
# ./configure --with-erlang=/usr/lib64/erlang/usr/include/

以下に示す出力に似た次の出力が得られます-* Apache CouchDBを構成しました。リラックスする時間です*。

# ./configure --with-erlang=/usr/lib64/erlang/usr/include/

checking for a BSD-compatible install.../usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p.../bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking how to create a ustar tar archive... gnutar
………………………………………………………..
……………………….
config.status: creating var/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: creating src/snappy/google-snappy/config.h
config.status: src/snappy/google-snappy/config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands

You have configured Apache CouchDB, time to relax.

Run `make && sudo make install' to install.

CouchDBのインストール

次のコマンドを入力して、システムにCouchDBをインストールします。

# make && sudo make install

システムにCouchDBをインストールします-* Apache CouchDBをインストールしました。リラックスする時間です。

CouchDBの開始

CouchDBを起動するには、CouchDBのホームフォルダを参照し、次のコマンドを使用します-

$ cd apache-couchdb-1.6.1
$ cd etc
$ couchdb start

CouchDBを起動し、次の出力を提供します。

Apache CouchDB 1.6.1 (LogLevel=info) is starting.
Apache CouchDB has started. Time to relax.
[info] [lt;0.31.0gt;] Apache CouchDB has started on http://127.0.0.1:5984/
[info] [lt;0.112.0gt;] 127.0.0.1 - - GET/200
[info] [lt;0.112.0gt;] 127.0.0.1 - - GET/favicon.ico 200

検証

CouchDBはWebインターフェースであるため、ブラウザーで次のホームページURLを入力してみてください。

http://127.0.0.1:5984/

それは次の出力を生成します-

{
   "couchdb":"Welcome",
   "uuid":"8f0d59acd0e179f5e9f0075fa1f5e804",
   "version":"1.6.1",
   "vendor":{
      "name":"The Apache Software Foundation",
      "version":"1.6.1"
   }
}

CouchDB-カールと布団

cURLユーティリティ

cURLユーティリティは、CouchDBと通信する方法です。

サポートされているプロトコル(HTTP、HTTPS、FTP、FTPS、TFTP、DICT、TELNET、LDAP、またはFILE)のいずれかを使用して、サーバーとの間でデータを転送するツールです。 このコマンドは、ユーザーの操作なしで機能するように設計されています。 cURLは、プロキシサポート、ユーザー認証、ftpアップロード、HTTPポスト、SSL(https :)接続、Cookie、ファイル転送再開などの便利なトリックを大量に提供します。

cURLユーティリティは、UNIX、Linux、Mac OS X、Windowsなどのオペレーティングシステムで使用できます。 これは、ユーザーがコマンドラインからHTTPプロトコルに直接アクセスできるコマンドラインユーティリティです。 この章では、cURLユーティリティの使用方法について説明します。

cURLユーティリティの使用

以下に示すように、cURLに続けてWebサイトのアドレスを入力するだけで、cURLユーティリティを使用して任意のWebサイトにアクセスできます-

curl www.finddevguides.com/

デフォルトでは、cURLユーティリティは要求されたページのソースコードを返します。 このコードは端末ウィンドウに表示されます。

cURLユーティリティオプション

cURLユーティリティにはさまざまなオプションが用意されており、cURLユーティリティのヘルプで確認できます。

次のコードは、cURLヘルプの一部を示しています。

$ curl --help
Usage: curl [options...] <url>
Options: (H) means HTTP/HTTPS only, (F) means FTP only
      --anyauth Pick "any" authentication method (H)
   -a/--append Append to target file when uploading (F/SFTP)
      --basic Use HTTP Basic Authentication (H)
      --cacert <file> CA certificate to verify peer against (SSL)
-d/--data <data> HTTP POST data (H)
      --data-ascii <data> HTTP POST ASCII data (H)
      --data-binary <data> HTTP POST binary data (H)
      --data-urlencode <name=data/name@filename> HTTP POST data
urlencoded (H)
      --delegation STRING GSS-API delegation permission
      --digest Use HTTP Digest Authentication (H)
      --disable-eprt Inhibit using EPRT or LPRT (F)
      --disable-epsv Inhibit using EPSV (F)

   -F/--form <name=content> Specify HTTP multipart POST data (H)
      --form-string <name=string> Specify HTTP multipart POST data (H)
      --ftp-account <data> Account data to send when requested by server
(F)
      --ftp-alternative-to-user <cmd> String to replace "USER [name]" (F)
      --ftp-create-dirs Create the remote dirs if not present (F)
      --ftp-method [multi cwd/no cwd/single cwd] Control CWD usage (F)
      --ftp-pasv Use PASV/EPSV instead of PORT (F)

   -G/--get Send the -d data with a HTTP GET (H)

   -H/--header <line> Custom header to pass to server (H)
   -I/--head Show document info only
   -h/--help This help text
      --hostpubmd5 <md5> Hex encoded MD5 string of the host public key.
(SSH)
   -0/--http1.0 Use HTTP 1.0 (H)
      --ignore-content-length Ignore the HTTP Content-Length header
   -i/--include Include protocol headers in the output (H/F)

   -M/--manual Display the full manual

   -o/--output <file> Write output to <file> instead of stdout
      --pass <pass> Pass phrase for the private key (SSL/SSH)
      --post301 Do not switch to GET after following a 301
redirect (H)
      --post302 Do not switch to GET after following a 302
redirect (H)
   -O/--remote-name Write output to a file named as the remote file
      --remote-name-all Use the remote file name for all URLs
   -R/--remote-time Set the remote file's time on the local output
   -X/--request <command> Specify request command to use
      --retry <num> Retry request <num> times if transient problems
occur
      --retry-delay <seconds> When retrying, wait this many seconds
between each
      --retry-max-time <seconds> Retry only within this period
   -T/--upload-file <file> Transfer <file> to remote site
      --url <URL> Set URL to work with
   -B/--use-ascii Use ASCII/text transfer

CouchDBとの通信中に、cURLユーティリティの特定のオプションが広範囲に使用されました。 以下は、CouchDBで使用されるオプションを含むcURLユーティリティのいくつかの重要なオプションの簡単な説明です。

-Xフラグ

(HTTP)HTTPサーバーと通信するときに使用されるカスタム要求メソッドを指定します。 指定されたリクエストは、別の方法で使用されるメソッド(デフォルトはGET)の代わりに使用されます。 詳細と説明については、HTTP 1.1仕様をお読みください。

(FTP)FTPでファイルリストを実行するときに、LISTの代わりに使用するカスタムFTPコマンドを指定します。

-H

(HTTP)Webページを取得するときに追加のヘッダーが使用されます。 cURLが使用する内部ヘッダーの1つと同じ名前のカスタムヘッダーを追加すると、内部ヘッダーの代わりに外部で設定されたヘッダーが使用されることに注意してください。 これにより、cURLが通常行うよりもトリッキーな作業を行うことができます。 自分が何をしているかを完全に知らずに、内部で設定されたヘッダーを交換しないでください。 内部ヘッダーをコロンの右側にあるコンテンツのないヘッダーに置き換えると、そのヘッダーが表示されなくなります。

cURLは、追加/置換した各ヘッダーが適切な行末マーカーで送信されることを保証します。 ヘッダーの内容の一部としてそれを追加したり、無秩序なものに改行や改行を追加したりしないでください。

-A/ - user-agentおよび-e/ - refererオプションも参照してください。

このオプションを複数回使用して、複数のヘッダーを追加/置換/削除できます。

-dフラグ

cURLのこのフラグを使用すると、ユーザーがフォームに入力して送信したかのように、データをHTTP POSTリクエストとともにサーバーに送信できます。

以下に示すように、Webサイトがあり、ログインするか、cURLユーティリティの-dフラグを使用してWebサイトにデータを送信するとします。

curl -X PUT http://mywebsite.com/loginl -d userid=001 -d password=finddevguides
*"userid = 001&password = finddevguides"* のような投稿チャンクを送信します。 同様に、-dフラグを使用してドキュメント(JSON)を送信することもできます。

-oフラグ

このフラグを使用して、cURLは要求の出力をファイルに書き込みます。

次の例は、cURLユーティリティの -o フラグの使用を示しています。

$ curl -o examplel www.finddevguides.com/index
% Total % Received % Xferd Average Speed Time Time Time Current
      Dload Upload Total Spent Left Speed
100 81193 0 81193 0 0 48168 0 --:--:-- 0:00:01 --:--:--
58077

これにより、finddevguides.comのホームページのソースコードが取得され、example.comという名前のファイルが作成され、出力がexamplelという名前のファイルに保存されます。

以下は examplel のスナップショットです。

サンプルHTML

-O

このフラグは –o に似ています。唯一の違いは、このフラグとの違いです。リクエストされたURLと同じ名前の新しいファイルが作成され、リクエストされたURLのソースコードがコピーされます。

次の例は、cURLユーティリティの -O フラグの使用を示しています。

$ curl -O www.finddevguides.com/index
% Total % Received % Xferd Average Speed Time Time Time Current
      Dload Upload Total Spent Left
Speed
100 81285 0 81285 0 0 49794 0 --:--:-- 0:00:01 --:--:--
60077

インデックスという名前の新しいファイルを作成し、finddevguides.comのインデックスページのソースコードをその中に保存します。

こんにちは、CouchDB

インストールされたCouchDBインスタンスにGETリクエストを送信することにより、CouchDBのホームページにアクセスできます。 まず、CouchDBがLinux環境にインストールされ、正常に実行されていることを確認してから、次の構文を使用してget要求をCouchDBインスタンスに送信します。

curl http://127.0.0.1:5984/

これにより、CouchDBがバージョン番号、ベンダー名、ソフトウェアのバージョンなどの詳細を指定する、以下に示すJSONドキュメントが提供されます。

$ curl http://127.0.0.1:5984/
{
   "couchdb" : "Welcome",
   "uuid" : "8f0d59acd0e179f5e9f0075fa1f5e804",
   "version" : "1.6.1",
   "vendor" : {
      "name":"The Apache Software Foundation",
      "version":"1.6.1"
   }
}

すべてのデータベースのリスト

文字列 "_ all_dbs string" とともにget要求を送信することにより、作成されたすべてのデータベースのリストを取得できます。 CouchDBのすべてのデータベースのリストを取得する構文は次のとおりです。

curl -X GET http://127.0.0.1:5984/_all_dbs

以下に示すように、CouchDBのすべてのデータベースのリストが表示されます。

$ curl -X GET http://127.0.0.1:5984/_all_dbs
[ "_replicator" , "_users" ]

データベースを作成する

あなたは、次の構文を使用してPUTヘッダーを持つcURLを使用してCouchDBでデータベースを作成することができます-

$ curl -X PUT http://127.0.0.1:5984/database_name

例として、上記の構文を使用して、以下に示すように my_database という名前のデータベースを作成します。

$ curl -X PUT http://127.0.0.1:5984/my_database
{"ok":true}

検証

以下に示すように、すべてのデータベースをリストして、データベースが作成されているかどうかを確認します。 ここでは、新しく作成されたデータベースの名前、リストの "my_database" を確認できます

$ curl -X GET http://127.0.0.1:5984/_all_dbs

[ "_replicator " , "_users" , "my_database" ]

データベース情報の取得

データベース名とともにgetリクエストを使用して、データベースに関する情報を取得できます。 以下は、データベース情報を取得するための構文です。

例として、以下に示すように my_database という名前のデータベースの情報を取得します。 ここでは、応答としてデータベースに関する情報を取得できます。

$ curl -X GET http://127.0.0.1:5984/my_database

{
   "db_name" : "my_database",
   "doc_count" : 0,
   "doc_del_count" : 0,
   "update_seq" : 0,
   "purge_seq" : 0,
   "compact_running" : false,
   "disk_size" : 79,
   "data_size" : 0,
   "instance_start_time" : "1423628520835029",
   "disk_format_version" : 6,
   "committed_update_seq" : 0
 }

布団

Futonは、CouchDBの組み込みのWebベースの管理インターフェイスです。 CouchDBとやり取りできるシンプルなグラフィカルインターフェイスを提供します。 これは単純なインターフェースであり、すべてのCouchDB機能へのフルアクセスを提供します。 以下は、それらの機能のリストです-

データベース-

  • データベースを作成します。
  • データベースを破壊します。

ドキュメント-

  • ドキュメントを作成します。
  • ドキュメントを更新します。
  • ドキュメントを編集します。
  • ドキュメントを削除します。

布団を開始

CouchDBが実行されていることを確認してから、ブラウザで次のURLを開きます-

http://127.0.0.1:5984/_utils/

このURLを開くと、以下に示すようにFutonホームページが表示されます-

布団ホームページ

  • このページの左側で、CouchDBの現在のすべてのデータベースのリストを確認できます。 この図では、システム定義のデータベース _replicator および _user とともに、 my_database という名前のデータベースがあります。
  • 右側には、次を見ることができます-
  • ツール-このセクションには、CouchDBを構成する*構成*、レプリケーションを実行する*レプリケーター*、およびCouchDBのステータスとCouchDBで行われた最近の変更を確認する*ステータス*があります。
  • ドキュメント-このセクションには、CouchDBの最新バージョンの完全なドキュメントが含まれています。
  • 診断-この下で、CouchDBのインストールを確認できます。
  • 最近のデータベース-この下では、最近追加されたデータベースの名前を見つけることができます。

CouchDB-HTTP API

HTTP要求ヘッダーを使用して、CouchDBと通信できます。 これらのリクエストにより、データベースからデータを取得し、データをドキュメントの形式でデータベースに保存し、データベースに保存されたドキュメントを表示およびフォーマットできます。

HTTPリクエストフォーマット

データベースとの通信中に、get、head、post、put、delete、copyなどのさまざまなリクエスト形式を使用します。 CouchDBのすべての操作で、入力データと出力データの構造はJavaScript Object Notation(JSON)オブジェクトの形式になります。

以下は、CouchDBとの通信に使用されるHTTPプロトコルのさまざまなリクエスト形式です。

  • GET -この形式は、特定のアイテムを取得するために使用されます。 さまざまなアイテムを取得するには、特定のURLパターンを送信する必要があります。 このGETリクエストを使用するCouchDBでは、静的アイテム、データベースドキュメントと構成、および統計情報をJSONドキュメントの形式で(ほとんどの場合)取得できます。
  • HEAD -HEADメソッドは、応答の本文なしでGETリクエストのHTTPヘッダーを取得するために使用されます。
  • POST -ポストリクエストはデータのアップロードに使用されます。 POST要求を使用するCouchDBでは、値の設定、ドキュメントのアップロード、ドキュメント値の設定、および特定の管理コマンドの開始を行うことができます。
  • PUT -PUT要求を使用して、新しいオブジェクト、データベース、ドキュメント、ビュー、およびデザインドキュメントを作成できます。
  • DELETE -DELETEリクエストを使用すると、ドキュメント、ビュー、およびデザインドキュメントを削除できます。
  • COPY -COPYメソッドを使用して、ドキュメントとオブジェクトをコピーできます。

HTTPリクエストヘッダー

正しい形式とエンコードを取得するには、HTTPヘッダーを提供する必要があります。 CouchDBサーバーにリクエストを送信するときに、リクエストとともにHttpリクエストヘッダーを送信できます。 次に、さまざまなHttp要求ヘッダーを示します。

  • Content-type -このヘッダーは、リクエストとともにサーバーに提供するデータのコンテンツタイプを指定するために使用されます。 ほとんどの場合、リクエストとともに送信するコンテンツのタイプは、MIMEタイプまたはJSON(application/json)です。 リクエストでContent-typeを使用することを強くお勧めします。
  • Accept -このヘッダーは、サーバー、クライアントが理解できるデータ型のリストを指定するために使用され、サーバーはそれらのデータ型を使用して応答を送信します。 通常、ここでは、クライアントが受け入れるMIMEデータタイプのリストをコロンで区切って送信できます。 + CouchDBのクエリでAcceptを使用する必要はありませんが、返されたデータをクライアントで処理できるようにすることを強くお勧めします。

応答ヘッダー

これらは、サーバーによって送信された応答のヘッダーです。 これらのヘッダーは、サーバーから応答として送信されるコンテンツに関する情報を提供します。

  • Content-type -このヘッダーは、サーバーから返されるデータのMIMEタイプを指定します。 ほとんどのリクエストでは、返されるMIMEタイプはtext/plainです。
  • Cache-control -このヘッダーは、サーバーから送信された情報の処理についてクライアントに提案します。 CouchDBは主にmust-revalidateを返します。これは、可能であれば情報を再検証する必要があることを示します。
  • Content-length -このヘッダーは、サーバーが送信したコンテンツの長さをバイト単位で返します。
  • Etag -このヘッダーは、ドキュメントまたはビューのリビジョンを表示するために使用されます。

状態コード

以下は、httpヘッダーによって送信されるステータスコードの表形式とその説明です。

Sr.No. Status Code & Description
1

200 − OK

このステータスは、リクエストが正常に完了すると発行されます。

2

201 − Created

このステータスは、ドキュメントが作成されるときに発行されます。

3

202 − Accepted

このステータスは、リクエストが受け入れられると発行されます。

4

404 − Not Found

このステータスは、サーバーが要求されたコンテンツを見つけることができない場合に発行されます。

5

405 − Resource Not Allowed

このステータスは、使用されているHTTP要求タイプが無効な場合に発行されます。

6

409 − Conflict

このステータスは、更新の競合があるたびに発行されます。

7

415 − Bad Content Type

このステータスは、要求されたコンテンツタイプがサーバーでサポートされていないことを示しています。

8

500 − Internal Server Error

このステータスは、リクエストで送信されたデータが無効になるたびに発行されます。

HTTP URLパス

特定のURLパスを使用して、データベースと直接対話できます。 以下は、そのようなURLパスの表形式です。

Sr.No. URL & Operation
1

PUT/db

このURLは、新しいデータベースを作成するために使用されます。

2

GET/db

このURLは、既存のデータベースに関する情報を取得するために使用されます。

3

PUT/db/document

このURLは、ドキュメントの作成/既存のドキュメントの更新に使用されます。

4

GET/db/document

このURLは、ドキュメントを取得するために使用されます。

5

DELETE/db/document

このURLは、指定されたドキュメントを指定されたデータベースから削除するために使用されます。

6

GET/db/_design/design-doc

このURLは、デザインドキュメントの定義を取得するために使用されます。

7

GET/db/_design/designdoc/_view/view-name

このURLは、指定されたデータベースのデザインドキュメントのビューview-nameにアクセスするために使用されます。

CouchDB-データベースの作成

データベースは、ドキュメントが保存されるCouchDBの最も外側のデータ構造です。 CouchDBが提供するcURLユーティリティ、およびCouchDBのWebインターフェイスFutonを使用して、これらのデータベースを作成できます。

cURLユーティリティを使用したデータベースの作成

cURLユーティリティを介してPUTメソッドを使用してHTTP要求をサーバーに送信することにより、CouchDBにデータベースを作成できます。 以下は、データベースを作成するための構文です-

$ curl -X PUT http://127.0.0.1:5984/database name
*-X* を使用すると、使用するHTTPカスタムリクエストメソッドを指定できます。 この場合、PUTメソッドを使用しています。 PUT操作/メソッドを使用する場合、urlのコンテンツは、HTTPリクエストを使用して作成しているオブジェクト名を指定します。 ここで、データベースを作成するためにURLのputリクエストを使用してデータベースの名前を送信する必要があります。

*my_database* という名前のデータベースを作成する場合、上記の構文を使用して、次のように作成できます。
curl -X PUT http://127.0.0.1:5984/my_database
{
   "ok":true
}

応答として、サーバーは、操作が成功したことを示すコンテンツ*“ ok” - *true を含むJSONドキュメントを返します。

検証

以下に示すように、すべてのデータベースをリストして、データベースが作成されているかどうかを確認します。 ここでは、新しく作成されたデータベースの名前 "my_database" をリストで確認できます。

$ curl -X GET http://127.0.0.1:5984/_all_dbs

[ "_replicator " , " _users " , " my_database " ]

Futonを使用したデータベースの作成

データベースを作成するには、 http://127.0.0.1:5984/_utils/ を開きます。 以下に示すように、CouchDBの概要/インデックスページが表示されます。

布団ホームページ

このページでは、CouchDBのデータベースのリスト、左側の[データベースの作成]オプションボタンを見ることができます。

次に、データベースの作成リンクをクリックします。 新しいデータベースのデータベース名を尋ねるポップアップウィンドウ Create New Databases が表示されます。 上記の基準に従って名前を選択します。 ここでは、tutorials_pointという名前の別のデータベースを作成しています。 次のスクリーンショットに示すように、作成ボタンをクリックします。

データベースの作成

CouchDB-データベースの削除

cURLユーティリティを使用したデータベースの削除

cURLユーティリティを介してDELETEメソッドを使用してリクエストをサーバーに送信することにより、CouchDBのデータベースを削除できます。 以下は、データベースを作成するための構文です-

$ curl -X DELETE http://127.0.0.1:5984/database name
*-X* を使用すると、HTTPサーバーと通信しながら、使用しているHTTPのカスタムリクエストメソッドを指定できます。 この場合、DELETEメソッドを使用しています。 削除するデータベースを指定して、サーバーにURLを送信します。

CouchDBにmy_database2という名前のデータベースがあると仮定します。 あなたがそれを削除したい場合、上記の与えられた構文を使用して、次のようにそれを行うことができます-

$ curl -X DELETE http://127.0.0.1:5984/my_database2
{
   "ok" : true
}

応答として、サーバーは、操作が成功したことを示す*” ok” - *true のコンテンツを含むJSONドキュメントを返します。

検証

以下に示すように、すべてのデータベースをリストして、データベースが削除されているかどうかを確認します。 ここでは、削除されたデータベースの名前を確認できます。 "my_database" はリストにありません。

$ curl -X GET http://127.0.0.1:5984/_all_dbs

[ "_replicator " , " _users " ]

Futonを使用してデータベースを削除する

データベースを削除するには、 http://127.0.0.1:5984/_utils/ URLを開きます。ここで、以下に示すようにCouchDBの概要/インデックスページを取得します。

データベース1の削除

ここでは、ユーザーが作成した3つのデータベースを見ることができます。 tutorials_point2という名前のデータベースを削除しましょう。 データベースを削除するには、データベースのリストから1つを選択してクリックします。選択したデータベースの概要ページが表示され、データベースに対するさまざまな操作を確認できます。 次のスクリーンショットは同じを示しています-

データベース2の削除

その中には、*データベースの削除*オプションがあります。 それをクリックすると、ポップアップウィンドウが表示され、確認するかどうかを確認できます。 選択したデータベースを削除するには、削除をクリックします。

データベース3の削除

CouchDB-ドキュメントの作成

ドキュメントはCouchDBの中心的なデータ構造です。 データベースの内容は、テーブルではなくドキュメントの形式で保存されます。 これらのドキュメントは、CouchDBとFutonが提供するcURLユーティリティを使用して作成できます。 この章では、データベースにドキュメントを作成する方法について説明します。

CouchDBの各ドキュメントには一意のIDがあります。 文字列の形式である必要がある独自のIDを選択できます。 通常、UUID(Universally Unique IDentifier)が使用されます。これは、重複を作成する可能性が最も少ない乱数です​​。 これらは衝突を避けるために好まれます。

cURLユーティリティを使用してドキュメントを作成する

cURLユーティリティを介してPUTメソッドを使用してHTTP要求をサーバーに送信することにより、CouchDBでドキュメントを作成できます。 ドキュメントを作成する構文は次のとおりです。

$ curl -X PUT http://127.0.0.1:5984/database name/"id" -d ' { document} '
*-X* を使用すると、HTTPサーバーと通信しながら、使用しているHTTPのカスタムリクエストメソッドを指定できます。 この場合、PUTメソッドを使用しています。 PUTメソッドを使用する場合、urlのコンテンツは、HTTPリクエストを使用して作成するオブジェクト名を指定します。 ここでは、次を送信する必要があります-
  • ドキュメントを作成しているデータベース名の名前。
  • ドキュメントID。 ドキュメントのデータ。 -d *オプションは、HTTP要求を介してデータ/ドキュメントを送信するために使用されます。 文書を書いている間、下に示すように花括弧内にコロンで区切られたフィールドと値のペアを入力してください-
{
   Name : Raju
   age : 23
   Designation : Designer
}

*my_database* という名前のデータベースにID *001* のドキュメントを作成する場合、上記の構文を使用して、次のように作成できます。
$ curl -X PUT http://127.0.0.1:5984/my_database/"001" -d
'{ " Name " : " Raju " , " age " :" 23 " , " Designation " : " Designer " }'

{"ok":true,"id":"001","rev":"1-1c2fae390fa5475d9b809301bbf3f25e"}

この要求に対するCouchDBの応答には3つのフィールドが含まれています-

  • *「OK」、*操作が成功したことを示します。
  • * "id"、*文書のidを保存し、
  • * "rev"、これはリビジョンIDを示します。 ドキュメントを修正(更新または変更)するたびに、CouchDBによって *_rev 値が生成されます。 ドキュメントを更新または削除する場合、CouchDBは、変更するリビジョンの _rev フィールドを含めることを想定しています。 CouchDBが変更を受け入れると、新しいリビジョン番号が生成されます。 このメカニズムにより、同時実行制御が保証されます。

検証

作成されたドキュメントを表示する場合は、次のようにドキュメントを使用して取得できます。

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id": "001",
   "_rev": "1-3fcc78daac7a90803f0a5e383f4f1e1e",
   "Name": "Raju",
   "age": 23,
   "Designation": "Designer"
}

Futonを使用してドキュメントを作成する

ドキュメントを作成するには、 http://127.0.0.1:5984/_utils/ URLを開き、以下に示すようにCouchDBのOverview/indexページを取得します。

ドキュメントの作成

ドキュメントを作成するデータベースを選択します。 データベースの概要ページを開き、以下に示すように*新しいドキュメント*オプションを選択します。

新しいドキュメント

[新しいドキュメント]オプションを選択すると、CouchDBは新しいデータベースドキュメントを作成し、新しいIDを割り当てます。 idの値を編集し、文字列の形式で独自の値を割り当てることができます。 次の図では、ID 001の新しいドキュメントを作成しています。

新しいドキュメントID

このページでは、ドキュメントの保存、フィールドの追加、添付ファイルのアップロードの3つのオプションを確認できます。

ドキュメントにフィールドを追加

ドキュメントにフィールドを追加するには、 Add Field オプションをクリックします。 データベースを作成したら、このオプションを使用してデータベースにフィールドを追加できます。 それをクリックすると、一対のテキストボックス、つまり*フィールド、値*が表示されます。これらの値をクリックして編集できます。 これらの値を編集して、目的のフィールドと値のペアを入力します。 緑色のボタンをクリックして、これらの値を保存します。

次の図では、従業員の名前、年齢、および指定の3つのフィールドを作成しました。

フィールドの作成

文書を保存

このオプションをクリックすると、ドキュメントに加えられた変更を保存できます。 保存後、以下に示すように新しいID _rev が生成されます。

ドキュメントの保存

CouchDB-ドキュメントの更新

cURLを使用してドキュメントを更新する

cURLユーティリティを介してPUTメソッドを使用してHTTP要求をサーバーに送信することにより、CouchDBのドキュメントを更新できます。 以下は、ドキュメントを更新するための構文です。

curl -X PUT http://127.0.0.1:5984/database_name/document_id/-d '{ "field" : "value", "_rev" : "revision id" }'

my_databaseという名前のデータベースにID 001のドキュメントがあるとします。 以下に示すように、これを削除できます。

まず、更新するドキュメントのリビジョンIDを取得します。 ドキュメント自体でドキュメントの _rev を見つけることができるため、次のようにドキュメントを取得します。

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id" : "001",
   "_rev" : "2-04d8eac1680d237ca25b68b36b8899d3 " ,
   "age" : "23"
}

ドキュメントのリビジョンID _revを使用して、ドキュメントを更新します。 ここでは、年齢を23から24に更新しています。

$ curl -X PUT http://127.0.0.1:5984/my_database/001/-d
' { " age " : " 24 " , " _rev " : " 1-1c2fae390fa5475d9b809301bbf3f25e " } '

{ " ok " : true , " id " : " 001 " , " rev " : " 2-04d8eac1680d237ca25b68b36b8899d3 " }

検証

ドキュメントを確認するには、以下に示すようにGETリクエストを使用してドキュメントを再度取得します。

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   " _id " : " 001 ",
   " _rev " : " 2-04d8eac1680d237ca25b68b36b8899d3 " ,
   " age " : " 23 "
 }

注意

以下は、ドキュメントを更新する際に注意すべき重要なポイントです。

  • データベース名とドキュメントIDを含むリクエストで送信するURL。
  • 既存のドキュメントの更新は、ドキュメント全体の更新と同じです。 既存のドキュメントにフィールドを追加することはできません。 同じドキュメントIDを使用して、まったく新しいバージョンのドキュメントのみをデータベースに書き込むことができます。
  • JSONリクエストの一部としてリビジョン番号を提供する必要があります。
  • JSONには、成功メッセージ、更新中のドキュメントのID、および新しいリビジョン情報が含まれます。 ドキュメントの新しいバージョンを更新する場合は、この最新のリビジョン番号を引用する必要があります。

Futonを使用してドキュメントを更新する

ドキュメントを削除するには、 http://127.0.0.1:5984/_utils/ のURLを開いて、以下に示すようにCouchDBのOverview/indexページを取得します。

ドキュメントの作成

更新するドキュメントが存在するデータベースを選択してクリックします。 ここでは、 tutorials_point という名前のデータベース内のドキュメントを更新しています。 以下に示すように、データベース内のドキュメントのリストを取得します。

ドキュメントの更新

更新するドキュメントを選択してクリックします。 以下に示すように、ドキュメントの内容を取得します。

ドキュメントの内容

ここで、場所をデリーからハイデラバードに更新するには、テキストボックスをクリックし、フィールドを編集し、緑色のボタンをクリックして、以下に示すように変更を保存します。

変更を保存

CouchDB-ドキュメントの削除

cURLユーティリティを使用してドキュメントを削除する

cURLユーティリティを介してDELETEメソッドを使用してHTTP要求をサーバーに送信することにより、CouchDBのドキュメントを削除できます。 ドキュメントを削除する構文は次のとおりです。

curl -X DELETE http ://127.0.0.1:5984/database name/database id?_rev id
  • -X、を使用すると、HTTPサーバーと通信しながら、使用しているHTTPのカスタムリクエストメソッドを指定できます。 この場合、Deleteメソッドを使用しています。 データベースを削除するには、 `/database_name/database_id/`では不十分です。 URLを通じて最新のリビジョンIDを渡す必要があります。 任意のデータ構造の属性に言及するには、 *"?" が使用されます。

*my_database* という名前のドキュメントにドキュメントID 001のドキュメントがあるとします。 このドキュメントを削除するには、ドキュメントの改訂IDを取得する必要があります。 以下に示すようにドキュメントデータを取得します。
$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   " _id " : " 001 ",
   " _rev " : " 2-04d8eac1680d237ca25b68b36b8899d3 " ,
   " age " : " 23 "
}

次に、以下に示すように、削除するドキュメントのリビジョンID、ドキュメントのID、ドキュメントが属するデータベース名を指定します-

$ curl -X DELETE http://127.0.0.1:5984/my_database/001?rev=1-
3fcc78daac7a90803f0a5e383f4f1e1e

{"ok":true,"id":"001","rev":"2-3a561d56de1ce3305d693bd15630bf96"}

検証

ドキュメントが削除されているかどうかを確認するには、 GET メソッドを使用してドキュメントを取得してみてください。 あなたが削除されたドキュメントを取得しているので、これは以下に示すようにエラーメッセージを提供します-

$ curl -X GET http://127.0.0.1:5984/my_database/001
{"error":"not_found","reason":"deleted"}

Futonを使用してドキュメントを削除する

まず、データベース内のドキュメントを確認します。 以下は、 tutorials_point という名前のデータベースのスナップショットです。

文書の削除

ご覧のとおり、データベースは3つのドキュメントで構成されています。 * 003と言う文書のいずれかを削除するには、以下を実行します-

  • ドキュメントをクリックすると、選択したドキュメントの内容をフィールドと値のペアの形式で示すページが表示されます。
  • このページには、4つのオプション、*ドキュメントの保存、フィールドの追加、添付ファイルのアップロード、ドキュメントの削除*も含まれています。
  • [ドキュメントの削除]オプションをクリックします。
  • *「この文書を削除してもよろしいですか?」というダイアログボックスが表示されます。*削除をクリックして文書を削除します。

Delete Document2

CouchDB-ファイルの添付

cURLを使用したファイルの添付

メールと同様に、CouchDBにファイルを添付できます。 ファイルには、名前などのメタデータが含まれ、MIMEタイプ、添付ファイルに含まれるバイト数が含まれます。 ドキュメントにファイルを添付するには、PUTリクエストをサーバーに送信する必要があります。 以下は、ドキュメントにファイルを添付する構文です-

$ curl -vX PUT http://127.0.0.1:5984/database_name/database_id
/filename?rev=document rev_id --data-binary @filename -H "Content-Type:
type of the content"

リクエストには、以下で説明するさまざまなオプションがあります。

  • *-data-binary @ *-このオプションは、cURLにファイルのコンテンツをHTTPリクエスト本文に読み込むよう指示します。
  • -H -このオプションは、アップロードするファイルのコンテンツタイプを示すために使用されます。

CouchDBにPUTリクエストを送信して、* boy.jpg、という名前のファイルを、 *my_database という名前のデータベース内のID * 001、のドキュメントに添付しましょう。 その前に、以下に示すように、現在の *rev IDを取得するには、ID 001 のドキュメントのデータをフェッチする必要があります。

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id": "001",
   "_rev": "1-967a00dff5e02add41819138abb3284d"
}
*_rev* 値を使用して、以下に示すようにCUTDBサーバーにPUTリクエストを送信します。
$ curl -vX PUT http://127.0.0.1:5984/my_database/001/boy.jpg?rev=1-
967a00dff5e02add41819138abb3284d --data-binary @boy.jpg -H "ContentType:
image/jpg"

検証

添付ファイルがアップロードされているかどうかを確認するには、次のようにドキュメントコンテンツを取得します。

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id": "001",
   "_rev": "2-4705a219cdcca7c72aac4f623f5c46a8",
   "_attachments": {
      "boy.jpg": {
         "content_type": "image/jpg",
         "revpos": 2,
         "digest": "md5-9Swz8jvmga5mfBIsmCxCtQ==",
         "length": 91408,
         "stub": true
      }
   }
}

Futonを使用してファイルを添付する

添付ファイルをアップロード

このオプションを使用すると、ファイル、画像、ドキュメントなどの新しい添付ファイルをデータベースにアップロードできます。 これを行うには、[*添付ファイルをアップロード]ボタンをクリックします。 アップロードするファイルを選択できるダイアログボックスが表示されます。 ファイルを選択し、*アップロード*ボタンをクリックします。

添付ファイルのアップロード

アップロードされたファイルは、_attachmentsフィールドの下に表示されます。 後でファイルをクリックして表示できます。

CouchDB-便利なリソース

以下のリソースには、CouchDBに関する追加情報が含まれています。 このトピックに関する詳細な知識を得るためにそれらを使用してください。

CouchDBの便利なリンク

CouchDBの便利な本

このページにサイトを登録するには、 contact @ finddevguides.com にメールを送信してください。