相比于著名的结构化数据库或者是NoSQL数据库而言,文档数据库CouchDB并不算太知名。但是在其应用领域之中,它的优势则是非比一般。
不同于结构化数据库事先定义了数据的每一个字段,CouchDB认为数据并不需要非要拥有它并不需要的字段,例如对于名片这个实体而言,有些人的名片上有微信号,而有些人的名片上则没有。因此,微信号对于名片而言,并不是一个必选项。而结构化数据库认为应该有一个允许为空的微信号字段,对于那些没有微信号的名片,可以不填写此项。而对于CouchDB来说,则这个字段是并不需要的。
文档数据库的出现并不是为了替代结构化数据库,而是适用于那些更适用于面向文档模型,而不是面向实体关系模型的那些应用,例如wiki、博客,或者是司法案例数据库等。CouchDB 的模型中,实体间关系是被强烈弱化的,因此,在其设计中并没有主键和外键之类的关系。而更像是一群刚参军的新兵,彼此之间没有任何的关系,而只是听从统一的指令来匹配自身的特点,从而使得自己被发令者所见。例如说:身高高于180cm的新兵请出列。每名新兵会根据这一指令和自身情况向前一步,而无须了解其它新兵的情况。
CouchDB是为网络应用而诞生的文档数据库,它采用JSON格式作为文档存储格式,并通过Restful风格的API经由HTTP协议对其进行操作。
例如列出CouchDB服务器上的所有数据库。
命令为:
curl -X GET http://admin:password@127.0.0.1:5984/_all_dbs
对于一个新安装的数据库而言,你会得到如下的结果:
[“_replicator”,”_users”]
新建一个数据库的命令同样简单:
curl -X PUT http://admin:password@127.0.0.1:5984/baseball
CouchDB会回复:
{“ok”:true}
类似的,删除数据库的操作也是Restful的风格:
curl -X DELETE http://admin:password@127.0.0.1:5984/baseball
当然,通过这种命令的模式略微繁琐了一点,CouchDB提供了一个管理界面Fauxton,这是一个类似于PHPMyAdmin的管理界面。在其中,可以进行简单的图形界面操作。
安装好CouchDB之后,通过如下的URL进入Fauxton:
http://127.0.0.1:5984/_utils/
在这里,可以方便的进行对于文档和数据库的增删改查操作。同样的,也可以使用Mango Query对文档进行查询。
例如在CouchDB中存储着如下的三份文档:
{ “_id”: “00a271787f89c0ef2e10e88a0c0001f4”,
“type”: “movie”,
“title”: “My Neighbour Totoro”,
“year”: 1988,
“director”: “miyazaki”,
“rating”: 8.2}
{ “_id”: “00a271787f89c0ef2e10e88a0c0003f0”,
“type”: “movie”,
“title”: “Kikis Delivery Service”,
“year”: 1989,
“director”: “miyazaki”,
“rating”: 7.8}
{ “_id”: “00a271787f89c0ef2e10e88a0c00048b”,
“type”: “movie”,
“title”: “Princess Mononoke”,
“year”: 1997,
“director”: “miyazaki”,
“rating”: 8.4}
我们首先要建立一个Mango Index,指明其中可以被查询的字段,例如我们可以选择其中的year字段进行索引。在Fauxton的数据库总览界面中点击运行Mango查询,然后点击管理索引,将索引字段变成如下的格式:
{ “index”: {
“fields”: [ “year” ] },
“name”: “year-json-index”,
“type”: “json”}
这样我们就可以采用Mango Query来对其进行查询了。像这样:
{ “selector”: {
“year”: {
“$eq”: 1988
我们就可以查询到发行日期为1988年的影片,即My Neighbour Totoro。
以上就是对于CouchDB的一个简单介绍。另外一个值得注意的话题就是CouchDB与同为文档数据库的MongoDB的比较。总的来说,CouchDB的性能是不如MongoDB的。但是CouchDB的易用性会更好一些。
二者之间的主要区别如下表所示:
喜欢本文的话,欢迎关注活在信息时代哦:)
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容