笔记列表:
CouchDB-快速指南
CouchDB-简介
数据库管理系统提供了用于存储和检索数据的机制。数据库管理系统主要有三种类型,即RDBMS(关系数据库管理系统),OLAP(在线分析处理系统)和NoSQL。
关系数据库管理系统
RDBMS代表关系数据库管理系统。RDBMS是SQL以及所有现代数据库系统(例如MS SQL Server,IBM DB2,Oracle,MySQL和Microsoft Access)的基础。
关系数据库管理系统(RDBMS)是基于EF Codd引入的关系模型的数据库管理系统(DBMS)。
RDBMS中的数据存储在称为表的数据库对象中。该表是相关数据条目的集合,它由列和行组成。它仅存储结构化数据。
OLAP
在线分析处理服务器(OLAP)基于多维数据模型。它使管理人员和分析人员可以通过快速,一致和交互式的信息访问来洞察信息。
NoSQL数据库
NoSQL数据库(有时称为“不仅SQL”)是一种数据库,它提供了一种存储和检索关系数据库中使用的表格关系以外的数据的机制。这些数据库是无模式的,支持简单的复制,具有简单的API,最终是一致的,并且可以处理大量数据(大数据)。
NoSQL数据库的主要目标是具有以下功能-
- 设计简单
- 水平缩放,以及
- 更好地控制可用性。
与关系数据库相比,NoSQL数据库使用不同的数据结构。它使NoSQL中的某些操作更快。给定NoSQL数据库的适用性取决于它必须解决的问题。这些数据库存储结构化数据和非结构化数据,例如音频文件,视频文件,文档等。这些NoSQL数据库分为三种类型,下面将对其进行说明。
关键值存储-这些数据库旨在将数据存储在关键值对中,并且这些数据库将没有任何架构。在这些数据库中,每个数据值都包含一个索引键和该键的值。
示例-BerkeleyDB,Cassandra,DynamoDB,Riak。
列存储-在这些数据库中,数据存储在按数据列分组的单元格中,并且这些列进一步分组为列族。这些列族可以包含任意数量的列。
示例-BigTable,HBase和HyperTable。
文档存储-这些是基于键值存储的基本概念开发的数据库,其中“文档”包含更复杂的数据。在此,为每个文档分配一个唯一的密钥,该密钥用于检索该文档。它们被设计用于存储,检索和管理面向文档的信息,也称为半结构化数据。
示例-CouchDB和MongoDB。
什么是CouchDB?
CouchDB是由Apache软件基金会开发的开源数据库。重点在于网络的易用性。这是一个NoSQL文档存储数据库。
它使用JSON来存储数据(文档),使用Java脚本作为查询语言来转换文档,使用api的http协议访问文档,并使用网络浏览器查询索引。它是2005年发布的多主应用程序,于2008年成为apache项目。
为什么选择CouchDB?
-
CouchDB具有基于HTTP的REST API,可帮助轻松与数据库进行通信。HTTP资源和方法(GET,PUT,DELETE)的简单结构易于理解和使用。
-
由于我们将数据存储在基于文档的灵活结构中,因此无需担心数据的结构。
-
为用户提供了功能强大的数据映射,该数据映射允许查询,组合和过滤信息。
-
CouchDB提供易于使用的复制,您可以使用该复制在数据库和计算机之间复制,共享和同步数据。
资料模型
-
数据库是CouchDB中最外部的数据结构/容器。
-
每个数据库都是独立文档的集合。
-
每个文档都维护自己的数据和独立的架构。
-
文档元数据包含修订信息,这使合并断开数据库时发生的差异成为可能。
-
CouchDB实现了多版本并发控制,以避免在写入过程中锁定数据库字段。
CouchDB的功能:减少内容
文件储存
CouchDB是一个文档存储NoSQL数据库。它提供了存储具有唯一名称的文档的便利,还提供了一个称为RESTful HTTP API的API,用于读取和更新(添加,编辑,删除)数据库文档。
在CouchDB中,文档是数据的主要单位,并且还包含元数据。文档字段具有唯一的名称,并且包含不同类型(文本,数字,布尔值,列表等)的值,并且对文本大小或元素数没有设置限制。
文档更新(添加,编辑,删除)遵循原子性,即它们将被完全保存或根本不保存。该数据库将没有任何部分保存或编辑的文档。
Json文件结构
{ "field" : "value", "field" : "value", "field" : "value", }
酸性质
CouchDB包含ACID属性作为其功能之一。
一致性-一旦提交了CouchDB中的数据,该数据将不会被修改或覆盖。因此,CouchDB确保数据库文件将始终处于一致状态。
CouchDB读取使用多版本并发控制(MVCC)模型,因此,客户端将从读取操作的开始到结束之间看到一致的数据库快照。
每当文档更新时,CouchDB都会将数据刷新到磁盘中,并且将更新的数据库标头写入两个连续且相同的块中,以构成文件的前4k,然后同步刷新到磁盘中。刷新期间的部分更新将被丢弃。
如果在提交标头时发生故障,则将保留先前相同标头的有效副本,以确保所有先前提交的数据的一致性。除标头区域外,在崩溃或电源故障后再也不需要进行一致性检查或修复。
压实
每当数据库文件中的空间浪费超过一定程度时,所有活动数据都将被复制(克隆)到新文件中。复制过程完全完成后,旧文件将被丢弃。所有这些都是通过压缩过程完成的。在压缩期间,数据库保持联机状态,并且所有更新和读取均允许成功完成。
观看次数
CouchDB中的数据存储在半结构化文档中,可以灵活地使用各个隐式结构,但是它是用于数据存储和共享的简单文档模型。如果我们想以许多不同的方式查看数据,则需要一种方法来过滤,组织和报告尚未分解为表的数据。
为了解决这个问题,CouchDB提供了一个视图模型。视图是聚合和报告数据库中文档的方法,并且按需构建以聚合,联接和报告数据库文档。由于视图是动态构建的,并且不会影响基础文档,因此您可以根据需要使用相同数据的尽可能多的不同视图表示形式。
历史
- CouchDB是用Erlang编程语言编写的。
- 它由Damien Katz于2005年创立。
- CouchDB在2008年成为Apache项目。
CouchDB的当前版本为1.61。
CouchDB-安装
本章教您如何在Windows和Linux系统中安装CouchDB。
在Windows中安装CouchDB
下载CouchDB
CouchDB的官方网站是https://couchdb.apache.org。如果单击给定的链接,则可以获取CouchDB官方网站的首页,如下所示。
如果单击下载按钮,将转到一个页面,其中提供了各种格式的CouchDB下载链接。以下快照对此进行了说明。
选择Windows系统的下载链接,然后选择提供的镜像之一开始下载。
安装CouchDB
CouchDB将以名为setup-couchdb-1.6.1_R16B02.exe的安装文件的形式下载到您的系统中。运行安装文件并继续安装。
安装后,通过访问以下链接打开CouchDB的内置Web界面
:http://127.0.0.1:5984/。如果一切正常,这将为您提供一个网页,其中包含以下输出。
{ "couchdb":"Welcome","uuid":"c8d48ac61bb497f4692b346e0f400d60", "version":"1.6.1", "vendor":{ "version":"1.6.1","name":"The Apache Software Foundation" } }
您可以使用以下网址与CouchDB Web界面进行交互-
http://127.0.0.1:5984/_utils/
这显示了Futon的索引页,它是CouchDB的Web界面。
在Linux系统中安装CouchDB
对于许多Linux风格的系统,它们在内部提供CouchDB。要安装此CouchDB,请按照说明进行操作。
在Ubuntu和Debian上,您可以使用-
sudo aptitude install couchdb
在Gentoo Linux上有一个CouchDB ebuild可用-
sudo emerge couchdb
如果您的Linux系统没有CouchDB,请按照下一部分安装CouchDB及其依赖项。
安装CouchDB依赖项
以下是要在系统中获取CouchDB所要安装的依赖项列表:
- Erlang OTP
- 重症监护病房
- 的OpenSSL
- Mozilla SpiderMonkey
- GNU Make
- GNU编译器集合
- libcurl
- help2man
- 适用于文档的Python
- Python狮身人面像
要安装这些依赖项,请在终端中键入以下命令。在这里,我们使用的是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实用程序访问任何网站,只需键入cURL,然后输入网址即可,如下所示-
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实用程序的某些选项。以下是cURL实用程序的一些重要选项的简要说明,包括CouchDB使用的选项。
-X标志
(HTTP)指定与HTTP服务器通信时使用的自定义请求方法。使用指定的请求,而不使用其他方法(默认为GET)。阅读HTTP 1.1规范以获取详细信息和说明。
(FTP)指定使用ftp进行文件列表时要使用的自定义FTP命令而不是LIST。
-H
(HTTP)获取网页时使用额外的标头。请注意,如果添加的自定义标头的名称与cURL使用的内部标头的名称相同,则将使用外部设置的标头,而不使用内部标头。这使您可以比cURL进行更棘手的工作。如果不完全知道自己在做什么,则不应替换内部设置的标题。将内部标头替换为冒号右侧没有内容的标头将防止该标头出现。
cURL确保您添加/替换的每个标头都带有正确的行尾标记。您既不应将其添加为标题内容的一部分,也不应添加换行符或回车符来乱序处理。
另请参见-A /-user-agent和-e /-referer选项。
可以多次使用此选项来添加/替换/删除多个标题。
-d标志
使用此cURL标志,您可以将数据和HTTP POST请求一起发送到服务器,就好像用户在表单中填写并提交了数据一样。
例子
假设有一个网站,您想使用cURL实用程序的–d标志登录到该网站或将一些数据发送到该网站,如下所示。
curl -X PUT http://mywebsite.com/login.html -d userid=001 -d password=tutorialspoint
它发送一个看起来像“ userid = 001&password = tutorialspoint”的帖子块。同样,您也可以使用-d标志发送文档(JSON)。
-o标志
使用该标志,cURL将请求的输出写入文件。
例子
以下示例显示了cURL实用程序的-o标志的使用。
$ 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的源代码复制到该文件。
例子
以下示例显示了cURL实用程序的-O标志的使用。
$ 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请求发送到CouchDB实例。
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" ]
建立资料库
您可以使用cURL和带有以下语法的PUT标头在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当前所有数据库的列表。在此图中,我们有一个名为my_database的数据库,以及系统定义的数据库_replicator和_user。
-
在右侧,您可以看到以下内容-
-
工具-在本节中,你可以找到的配置来配置的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-此格式用于获取特定项目。要获得不同的商品,您必须发送特定的网址格式。在使用此GET请求的CouchDB中,我们可以以JSON文档的形式(在大多数情况下)获取静态项,数据库文档和配置以及统计信息。
-
HEAD -HEAD方法用于获取GET请求的HTTP标头,而没有响应主体。
-
POST-发布请求用于上传数据。在使用POST请求的CouchDB中,您可以设置值,上载文档,设置文档值,还可以启动某些管理命令。
-
PUT-使用PUT请求,您可以创建新的对象,数据库,文档,视图和设计文档。
-
删除-使用DELETE请求,您可以删除文档,视图和设计文档。
-
COPY-使用COPY方法,您可以复制文档和对象。
HTTP请求头
应该提供HTTP标头以获取正确的格式和编码。在将请求发送到CouchDB服务器时,您可以将Http请求标头与请求一起发送。以下是不同的Http请求标头。
-
内容类型-此标头用于指定我们与请求一起提供给服务器的数据的内容类型。通常,与请求一起发送的内容的类型将是MIME类型或JSON(应用程序/ json)。强烈建议对请求使用Content-type。
-
接受-此标头用于指定服务器,客户端可以理解的数据类型列表,以便服务器将使用这些数据类型发送其响应。通常,在这里,您可以发送客户端接受的MIME数据类型列表,以冒号分隔。
尽管不需要在CouchDB的查询中使用Accept,但是强烈建议确保客户端可以处理返回的数据。
响应标题
这些是服务器发送的响应的标头。这些标头提供有关服务器作为响应发送的内容的信息。
-
内容类型-此标头指定服务器返回的数据的MIME类型。对于大多数请求,返回的MIME类型为text / plain。
-
缓存控制-此标头建议客户端处理服务器发送的信息。CouchDB通常返回必须重新验证的信息,这表明信息应尽可能进行重新验证。
-
Content-length-此标头返回服务器发送的内容的长度(以字节为单位)。
-
Etag-此标头用于显示文档或视图的修订。
状态码
以下是http标头发送的状态代码的表格形式及其说明。
序号 | 状态码和说明 |
---|---|
1个 |
200-好 请求成功完成后,将发出此状态。 |
2个 |
201-创建 创建文档时将发出此状态。 |
3 |
202-接受 接受请求后,将发出此状态。 |
4 |
404-找不到 当服务器找不到请求的内容时,将发出此状态。 |
5 |
405-不允许资源 当使用的HTTP请求类型无效时,将发出此状态。 |
6 |
409-冲突 每当有任何更新冲突时,就会发出此状态。 |
7 |
415-错误的内容类型 此状态表明服务器不支持请求的内容类型。 |
8 |
500-内部服务器错误 每当请求中发送的数据无效时,就会发出此状态。 |
HTTP URL路径
使用某些URL路径,您可以直接与数据库进行交互。以下是此类url路径的表格格式。
序号 | 网址和操作 |
---|---|
1个 |
PUT /分贝 该URL用于创建新的数据库。 |
2个 |
GET / db 该URL用于获取有关现有数据库的信息。 |
3 |
PUT / db /文件 该URL用于创建文档/更新现有文档。 |
4 |
GET / db / document 该URL用于获取文档。 |
5 |
删除/ db / document 该URL用于从指定的数据库中删除指定的文档。 |
6 |
GET / db / _design / design-doc 该URL用于获取设计文档的定义。 |
7 |
GET / db / _design / designdoc / _view / view-name 该URL用于从指定数据库访问设计文档中的视图,视图名称。 |
CouchDB-创建数据库
数据库是CouchDB中存储文档的最外层数据结构。您可以使用CouchDB提供的cURL实用程序以及Futon CouchDB的Web界面来创建这些数据库。
使用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” –真正的指示操作成功。
确认
通过列出所有数据库,如下所示,验证是否创建了数据库。在这里,您可以观察到新创建的数据库的名称,即列表中的“ 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中的数据库列表,左侧是一个选项按钮“创建数据库”。
现在单击创建数据库链接。您会看到一个弹出窗口“创建新数据库”,询问新数据库的数据库名称。请遵循上述条件选择任何名称。在这里,我们将创建另一个名称为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 }
作为响应,服务器将返回一个JSON文件的内容“OK” –真正的指示操作成功。
确认
通过列出所有数据库,验证是否删除了数据库,如下所示。在这里,您可以观察到已删除数据库的名称,列表中没有“ 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的Overview / index页面,如下所示。
在这里您可以看到三个用户创建的数据库。让我们删除名为tutorials_point2的数据库。要删除数据库,请从数据库列表中选择一个,然后单击它,这将转到所选数据库的概述页面,您可以在其中查看对数据库的各种操作。以下屏幕截图显示了相同的内容-
其中您可以找到“删除数据库”选项。通过单击它,您将弹出一个窗口,询问您是否确定!单击删除,以删除选定的数据库。
CouchDB-创建文档
文档是CouchDB的中央数据结构。数据库的内容将以文档而不是表的形式存储。您可以使用CouchDB和Futon提供的cURL实用程序来创建这些文档。本章介绍在数据库中创建文档的方法。
CouchDB中的每个文档都有唯一的ID。您可以选择自己的ID,该ID应该采用字符串形式。通常,使用UUID(通用唯一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请求创建的对象名称。在这里,我们必须发送以下内容-
-
我们在其中创建文档的数据库名称的名称。
-
文件编号。
-
文档数据。-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对此请求的响应包含三个字段-
-
“确定”,表示操作成功。
-
“ 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页面,如下所示。
选择要在其中创建文档的数据库。打开数据库的Overview页面,然后选择New Document选项,如下所示。
选择“新建文档”选项时,CouchDB会创建一个新的数据库文档,并为其分配一个新的ID。您可以编辑id的值,并可以以字符串形式分配自己的值。在下图中,我们创建了一个ID为001的新文档。
在此页面中,您可以观察到三个选项-保存文档,添加字段和上传附件。
在文档中添加字段
要将字段添加到文档中,请单击“添加字段”选项。创建数据库后,可以使用此选项向其添加字段。单击它会为您提供一对文本框,即“字段”,“值”。您可以通过单击它们来编辑这些值。编辑这些值,然后输入所需的“字段-值”对。单击绿色按钮以保存这些值。
在下图中,我们创建了三个字段,名称,年龄和雇员名称。
保存文件
您可以通过单击此选项来保存对文档所做的更改。保存后,将生成一个新的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" }'
例子
假设数据库中有一个ID为001的文档,名为my_database。您可以如下所示删除它。
首先,获取要更新的文档的修订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 " }
笔记
以下是更新文档时需要注意的一些重要点。
-
我们在请求中发送的URL,其中包含数据库名称和文档ID。
-
更新现有文档与更新整个文档相同。您不能将字段添加到现有文档。您只能将具有相同文档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的数据库的快照。
在这里您可以观察到,数据库由三个文档组成。要删除任何文档(例如003),请执行以下操作-
-
单击该文档,您将获得一个页面,该页面以字段-值对的形式显示所选文档的内容。
-
该页面还包含四个选项,即“保存文档”,“添加字段”,“上传附件”,“删除文档”。
-
单击删除文档选项。
-
您将看到一个对话框,显示“您确定要删除此文档吗?”。单击删除,以删除文档。
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-此选项用于提及我们将要上传的文件的内容类型。
例子
让我们将已命名的文件boy.jpg,到文档ID为001,在指定的数据库MY_DATABASE通过发送PUT请求到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 } } }
使用Futon附加文件
上传附件
使用此选项,您可以将新附件(例如文件,图像或文档)上载到数据库。为此,请单击“上传附件”按钮。将出现一个对话框,您可以在其中选择要上传的文件。选择文件,然后单击上载按钮。
上传的文件将显示在_attachments字段下。稍后您可以通过单击查看文件。