论文部分内容阅读
目前关系型数据库在云计算的平台下已经成为制约整个WEB架构敏捷性和扩展性的瓶颈,由此打破RDBMS范式规则约束的NoSQL成为人们关注的焦点,它遵循BASE理论并以易用性、高度伸缩性、支持海量数据为目标,在云计算领域被广泛应用。本文作者有幸在IBM中国研究院实习期间接触到云计算中数据库的相关课题研究,NoSQL在云计算中的应用被普遍看好,由于NoSQL家族的成员有着一脉相传的血统,本文选取了NoSQL家族之一CouchDB与关系数据库从不同层面进行定性分析比较,从而体现其高度伸缩的敏捷能力,进而得出在某些方面NoSQL对云计算的支持要优于关系数据库的结论。基于此目标,本文借鉴云计算体系结构的相关技术设计并实现了一个机房资产管理系统,整体架构采用REST风格,前端利用RIA(富客户端)丰富的表现能力为用户提供良好的体验,后端数据建模部分摒弃传统的RDBMS而采用CouchDB,由于其无模式以及文档存储特点,从三个维度体现了其敏捷性:作为HTTP服务器为REST架构提供更好的支持,作为数据库服务器适应灵活的业务变更,作为应用服务器无需中间层从而成为云计算中最有潜力的产品。具体工作如下:首先对NoSQL的背景以及理论基础简要进行介绍,NoSQL主要的数据模型有列式、键值对和文档它遵循BASE理论并且是反ACID的;接下来从技术角度对云计算进行了剖析:横向维度分为显示层、中间件层和基础设施层,纵向维度管理层是为了更好的为横向维度提供服务的。有了云计算技术架构作为参考,接下来将要实现一个机房资产管理系统,由于后端逻辑比较简单并且考虑到良好的用户体验、未来系统的业务变更及扩展性等需要,整体采用REST架构风格实现轻量级,打破了传统RPC方式中业务规则变化时方法的无限膨胀,而REST是以资源为中心的方式;前端采用富客户端技术Ajax框架jQuery可以更好的将前后端分离,降低耦合性;数据建模采用非关系数据库不受传统RDBMS规则的约束数据建模更灵活,而CouchDB对以上三个方面都提供了较好的支持,具体体现在:1)系统总体架构分析:CouchDB作为HTTP服务器,由于其直接对外提供HTTPRESTAPI接口,一方面对REST风格的架构提供更好的支持从而实现随需应变的敏捷设计;另一方面可以更好的将前端界面设计与后端数据建模最大程度的进行解耦,为富客户端技术表现技术提供更好的支持。2)系统后端数据存储设计:CouchDB作为数据库服务器,摈弃了关系数据库的模式限制,对数据建模时更灵活;摈弃了多表连接操作,避免IO瓶颈。3)系统后端数据逻辑设计:CouchDB作为应用服务器,无需中间层可以更好提供云计算服务。4)系统扩展:CouchDB集群,通过Shading和Replication的结合更好的实现系统扩展弥补关系数据库不足。NoSQL和RDBMS最核心的差别在于NoSQL摈弃了RDBMS中繁杂的范式规则,采用无模式的方式对数据进行建模,以上几点本质上都是这种差别在应用中的具体体现。RDBMS那些既成的规则用户可以根据实际的业务需求自行定义,比如CouchDB中可以使用JS定义的视图实现权限控制、文档更新校验等,这样NoSQL也就实现了轻量级以及较好的伸缩性。NoSQL的出现不是为了取代关系型数据库,而是为了弥补关系型数据库的不足,两者紧密结合将会给云计算数据库发展带来新的思路,让关系数据库关注在关系以及复杂的事务操作上而让NoSQL关注在存储上将成为未来数据存储发展的一个趋势。