NoSQL读书笔记 - CouchDB

  1. Apache CouchDB

    ™ is a database
  2. that usesJSONfor documents,

  3. JavaScriptforMapReducequeries,255); display:inline"> and regularHTTPfor anAPI



CouchDB - Cluster of unreliable commodity hardware database

Lotus Notes的后代. 开发者来自IBM

所有数据以文档的方式组织,使用JSON持久化数据. Append方式修改数据,视图方式查询修改数据. 视图作为特殊的文档.
文档可以引用其他文档,但不保证有效性和一致性. 文档不可以嵌套文档.
可以带附件,拥有128位唯一标识符. 是半结构化文档. 没有schema也就无效schema迁移. 可以进行复杂的evaluation - 通过计算视图.
每个database具有扁平的非层次化的名字空间, 每个服务器可以包含多个database.
文档索引通过B树算法计算id和版本号得到.
视图以javascript函数定义,不会修改数据,sans-serif; font-size:13px">只做数据展示.因此,视图和文档都可以进行备份,sans-serif; font-size:13px">且备份间数据不会冲突.
定义视图的javascript函数叫做map和reduce,sans-serif; font-size:13px">类似于google的MapReduce.
为了效率,对数据库的写操作不会生成视图. 视图builder负责对视图进行更新.
更新数据不会有锁操作.版本冲突被当作正常场景. 并发版本数没有限制,客户端负责解决冲突.
CouchDB设计之初即考虑了分布式配置. 各个服务器都作为平等的节点,没有主从,热冷备之分.
分布式场景包括集群,离线和远程三种方式,后两种方式可以在CouchDB实例失去联接情况下进行数据操作 ,重新连接时将进行数据同步.
数据备份通过增量方式以文档为单位进行. 既可以备份整个数据库,sans-serif; font-size:13px">也可以通过javascript函数过滤方式备份部分数据库. 第二种方式可用于data sharding.

CouchDB以REST形式的HTTP请求进行数据操作. 提供了不同语言的接口库. 这种方式易于集成.

CouchDB保证ACID,但不是强一致性.
CouchDB不会覆盖数据,因此可以保证一致性.即使宕机,杀死进程也可以.

更新文档和数据库头分两步提交. CouchDB启动时校验数据保证数据一致性

CouchDB需要定期压缩数据以便节省磁盘空间.
CouchDB使用文档授权列表实现访问控制.
管理员权限
文档写入磁盘前要经过安全评估.
之前CouchDB使用c++实现,sans-serif; font-size:13px">后改用ericsson的erlang实现,sans-serif; font-size:13px">实现并发及无锁操作.
使用shared-nothing集群方案.

相关文章

校园网上订餐系统系统主要功能模块包括公告内容(公告栏、轮...
从今天开始,正式进入项目阶段。本次的项目是跟着黑马的瑞吉...
在可预见的将来,IT不会萎缩,只会越发展越庞大,最终会渗透...
vulntarget-b靶场最详细通关记录。
MongoDB是一个开源、高性能、支持海量数据存储的。
【NoSQL数据库技术与应用】课本代码、课后答案(持续更新)