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を使用してデータ(ドキュメント)を保存し、クエリ言語としてjavaスクリプトを使用してドキュメントを変換し、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です。

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

WindowsへのCouchDBのインストール

CouchDBをダウンロードする

CouchDBの公式ウェブサイトは https://couchdb.apache.org。所定のリンクをクリックすると、以下のようにCouchDB公式ウェブサイトのホームページが表示されます。

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

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

CouchDBのインストール

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

インストール後、以下にアクセスして、CouchDBの組み込みWebインターフェースを開きます。 link: http://127.0.0.1:5984/. すべてがうまくいけば、これはあなたに次の出力を持つウェブページを与えるでしょう。

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

次のURLを使用して、CouchDBWebインターフェースを操作できます。

http://127.0.0.1:5984/_utils/

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

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

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

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

sudo aptitude install couchdb

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

sudo emerge couchdb

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

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

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

  • Erlang OTP
  • ICU
  • OpenSSL
  • Mozilla SpiderMonkey
  • GNU Make
  • GNUコンパイラコレクション
  • libcurl
  • help2man
  • ドキュメント用のPython
  • Python Sphinx

これらの依存関係をインストールするには、ターミナルで次のコマンドを入力します。ここではCentos6.5を使用しており、次のコマンドはCentos6.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

Note −これらすべてのコマンドには、sudoを使用する必要があります。次の手順では、通常のユーザーをsudoerに変換します。

  • adminユーザーでrootとしてログインします

  • 開いた sudo 次のコマンドを使用してファイル-

visudo
  • 次に、以下に示すように編集して、既存のユーザーにsudoer特権を付与します-
Hadoop All=(All) All , and press esc : x to write the changes to the file.

システム内のすべての依存関係をダウンロードした後、指定された手順に従ってCouchDBをダウンロードします。

CouchDBのダウンロード

Apache Software Foundationは、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/

これは、以下に示すものと同様の次の出力を提供します。 You have configured Apache CouchDB, time to relax

# ./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をインストールします。 You have installed Apache CouchDB, time to relax

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"
   }
}

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.tutorialspoint.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)の代わりに、指定された要求が使用されます。詳細と説明については、HTTP1.1仕様をお読みください。

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

-H

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

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

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

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

-dフラグ

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

Example

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

curl -X PUT http://mywebsite.com/login.html -d userid=001 -d password=tutorialspoint

次のような投稿チャンクを送信します "userid=001&password=tutorialspoint"。同様に、-dフラグを使用してドキュメント(JSON)を送信することもできます。

-oフラグ

このフラグを使用して、cURLはリクエストの出力をファイルに書き込みます。

Example

次の例は、 -o cURLユーティリティのフラグ。

$ curl -o example.html www.tutorialspoint.com/index.htm 
% 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

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

以下はのスナップショットです example.html

-O

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

Example

次の例は、 -O cURLユーティリティのフラグ。

$ curl -O www.tutorialspoint.com/index.htm
% 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

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

こんにちはCouchDB

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

curl http://127.0.0.1:5984/

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

$ 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"
   }
}

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

文字列とともにgetリクエストを送信することで、作成されたすべてのデータベースのリストを取得できます。 "_all_dbs string "。以下は、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機能へのフルアクセスを提供します。以下はそれらの機能のリストです-

Databases −
  • データベースを作成します。
  • データベースを破棄します。
Documents −
  • ドキュメントを作成します。
  • ドキュメントを更新します。
  • ドキュメントを編集します。
  • ドキュメントを削除します。

布団を始める

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

http://127.0.0.1:5984/_utils/

このURLを開くと、以下のような布団ホームページが表示されます。

  • このページの左側には、CouchDBの現在のすべてのデータベースのリストが表示されます。この図では、という名前のデータベースがありますmy_database、システム定義のデータベースとともに _replicator そして _user

  • 右側に次のように表示されます-

    • Tools −このセクションでは、 Configuration CouchDBを構成するには、 Replicator 複製を実行し、 Status CouchDBのステータスとCouchDBで行われた最近の変更を確認します。

    • Documentation −このセクションには、最新バージョンのCouchDBの完全なドキュメントが含まれています。

    • Diagnostics −この下で、CouchDBのインストールを確認できます。

    • Recent Databases −この下に、最近追加されたデータベースの名前を見つけることができます。

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リクエストはデータのアップロードに使用されます。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は主に再検証が必要なものを返します。これは、可能であれば情報を再検証する必要があることを示しています。

  • Content-length −このヘッダーは、サーバーから送信されたコンテンツの長さをバイト単位で返します。

  • Etag −このヘッダーは、ドキュメントまたはビューのリビジョンを示すために使用されます。

ステータスコード

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

シニア番号 ステータスコードと説明
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

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

HTTPURLパス

データベースを直接操作できる特定のURLパスがあります。以下は、そのようなURLパスの表形式です。

シニア番号 URLと操作
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は、指定されたデータベースの設計ドキュメントからビュー、ビュー名にアクセスするために使用されます。

データベースは、ドキュメントが保存される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
}

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

検証

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

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

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

布団を使ったデータベースの作成

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

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

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

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

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

$ curl -X DELETE http://127.0.0.1:5984/database name

使用する −XHTTPサーバーとの通信中に、使用しているHTTPのカスタムリクエストメソッドを指定できます。この場合、DELETEメソッドを使用しています。削除するデータベースを指定して、URLをサーバーに送信します。

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

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

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

検証

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

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

[ "_replicator " , " _users " ]

布団を使用したデータベースの削除

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

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

それらの中であなたは見つけることができます Delete Databaseオプション。それをクリックすると、ポップアップウィンドウが表示され、確信があるかどうかを尋ねられます。選択したデータベースを削除するには、[削除]をクリックします。

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

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
}

IDを使用してドキュメントを作成する場合は、上記の構文を使用します 001 名前のあるデータベース内 my_database、以下のように作成できます。

$ 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を示します。ドキュメントを改訂(更新または変更)するたびに_rev値はCouchDBによって生成されます。ドキュメントを更新または削除する場合、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"
}

布団を使ったドキュメントの作成

ドキュメントを作成するには、 http://127.0.0.1:5984/_utils/ 以下に示すように、CouchDBの概要/インデックスページを取得するためのURL。

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

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

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

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

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

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

ドキュメントを保存

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

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という名前のデータベースにID001のドキュメントがあるとします。以下のように削除できます。

まず、更新するドキュメントのリビジョン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 "
 }
Note

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

  • データベース名とドキュメントIDを含むリクエストで送信するURL。

  • 既存のドキュメントを更新することは、ドキュメント全体を更新することと同じです。既存のドキュメントにフィールドを追加することはできません。まったく新しいバージョンのドキュメントのみを、同じドキュメントIDでデータベースに書き込むことができます。

  • JSONリクエストの一部としてリビジョン番号を指定する必要があります。

  • 代わりに、JSONには成功メッセージ、更新されるドキュメントのID、および新しいリビジョン情報が含まれます。ドキュメントの新しいバージョンを更新する場合は、この最新のリビジョン番号を引用する必要があります。

布団を使用したドキュメントの更新

ドキュメントを削除するには、 http://127.0.0.1:5984/_utils/ 以下に示すように、CouchDBの概要/インデックスページを取得するためのURL。

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

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

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

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/だけでは不十分です。最近のリビジョンIDをURLに渡す必要があります。データ構造の属性について言及する"?" 使用されている。

データベースにという名前のドキュメントがあるとします。 my_databaseドキュメントID001。このドキュメントを削除するには、ドキュメントのリビジョン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"}

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

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

ここでは、データベースが3つのドキュメントで構成されていることがわかります。ドキュメントのいずれかを削除するには、003, 次のことを行います-

  • ドキュメントをクリックすると、選択したドキュメントの内容がフィールドと値のペアの形式で表示されるページが表示されます。

  • このページには、4つのオプションも含まれています。 Save Document, Add Field, Upload Attachment, Delete Document.

  • クリック Delete Document オプション。

  • 次のようなダイアログボックスが表示されます "Are you sure you want to delete this document?" ドキュメントを削除するには、[削除]をクリックします。

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@ −このオプションは、ファイルの内容をHTTPリクエスト本文に読み込むようにcURLに指示します。

  • -H −このオプションは、アップロードするファイルのコンテンツタイプを示すために使用されます。

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

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id": "001",
   "_rev": "1-967a00dff5e02add41819138abb3284d"
}

今使用している _rev 値の場合、以下に示すように、PUTリクエストをCouchDBサーバーに送信します。

$ 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
      }
   }
}

布団を使ったファイルの添付

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

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

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