CouchDB基于文档的NoSQL存储技术
CouchDB是一种基于文档的NoSQL存储技术,能够满足Web2.0时代对数据处理的高并发性、海量数据处理能力和访问需求,以及对数据库的高扩展性和高可用性要求。CouchDB的出现是为了解决传统关系数据库在面对大规模数据处理时的局限性。
一、非关系数据库
非关系数据库是根据Web应用发展的需要而产生的,与传统关系数据库有很大的差异。从分布式应用的CPA理论角度来看,关系数据库主要关注的是一致性和可用性,能够很好的满足传统的应用需求。但是在Web2.0时代,对数据处理的要求高并发性、海量数据的处理能力和访问需求,以及对数据库的高扩展性和高可用性要求。
非关系数据库的特点包括:
1. 运行在PC服务器集群上,避免了传统商业数据库共享操作的复杂性和高昂成本。
2. 突破了性能瓶颈。通过NoSQL架构可以省去将Web或Java应用和数据转换成SQL格式的时间,执行速度快。
3. 弹性扩展。NoSQL数据库从设计之初就是为了利用新节点的优势进行透明扩展,通常在设计时就考虑使用低成本的廉价硬件。
4. 灵活的数据模型。键—值对存储与文档存储的NoSQL数据库允许应用任何结构,即使是定义更加严格的BigTableNoSQL数据库通常也允许创建新的字段。
二、Map/Reduce机制
非关系数据库没有关系数据库那样严格的逻辑基础,因此没有类似于SQL那样的查询语言,类似的任务由Map/Reduce机制来实现。在具体的非关系数据库中表现为Map函数和Reduce函数,用户在应用数据库时需要根据需求编制Map函数和Reduce函数来实现选择、投影、并、交、差、连接等运算,从而实现复杂的数据库查询。
Map/Reduce的工作过程如图1所示。组合输出按键分组主控器图1Map函数的输出为数据库中的文档或数据,输出为键值对。这里的键和值可以是系统支持的任何类型的数据,用户可以在Map函数中对文档数据加以处理,把所需的数据以键值的形式输出。
三、基于文档存储技术的CouchDB
CouchDB是一个用Erlang开发的开源的面向文档的数据库管理系统,CouchDB不是一个传统的关系数据库,而是面向文档的数据库,其数据存储方式有点类似lucene的index文件格式,CouchDB最大的意义在于它是一个面向web应用的新一代存储系统。
CouchDB的特点包括:
1. CouchDB是分布式的数据库,他可以把存储系统分布到n台物理的节点上面,并且很好的协调和同步节点之间的数据读写一致性。
2. CouchDB是面向文档的数据库,存储半结构化的数据,比较类似lucene的index结构,特别适合存储文档,因此很适合CMS,电话本,地址本等应用,在这些应用场合,文档数据库要比关系数据库更加适合。
CouchDB的特点使其能够满足Web2.0时代对数据处理的高并发性、海量数据处理能力和访问需求,以及对数据库的高扩展性和高可用性要求。同时,CouchDB也能够很好的适应CMS、电话本、地址本等应用场合,提供了一个面向文档的数据库管理系统。