论文部分内容阅读
过去25年的商业DBMS发展用一个短语来概括:一刀切,即传统的关系型数据库架构适用于大部分以数据为中心的应用。随着大规模Web2.0网站的飞速发展,关系型数据库在满足高并发读写,海量数据高效率存储及高可扩展性和可用性等方面遇到了性能瓶颈,有人指出,“关系数据库正在消亡,它已经过时,满足不了时代的需求。”NoSQL数据库的兴起是解决海量数据,高访问量,高扩展性,高可用性等问题的希望所在。NoSQL打破了传统关系型数据库的瓶颈,满足了大数据时代高性能读写,高可扩展,高伸缩性等需求。NoSQL采用模式自由,结构松散的可扩展类型对数据建模,方便存储海量数据;部署集群架构,将数据采用DHT方式冗余保存在多个服务节点上,扩大服务节点失效的容错容灾能力。
在百花争艳的NoSQL领域,涌现了一大批优秀的NoSQL数据库,优秀的代表之作有Google的BigTable和Amazon的Dynamo。本论文以MongoDB为例,旨在研究存储海量数据的优化方案,针对HR集团门户数据存储需求,将NoSQL理论应用于实践,具体工作和创新点主要如下:
首先介绍课题的研究背景和选题意义。针对传统关系型数据库在大型web2.0网站所遇到的瓶颈,提出了NoSQL的解决方案,分析部分主流NoSQL数据库的特性,合理将NoSQL数据库引入系统架构。
其次介绍MongoDB基本理论知识,了解面向文档的半结构化数据存储模式和GridFS文件系统,重点分析分布式集群存储机制,高效存储海量数据。对比关系型数据库,针对MongoDB中存在的不足并改进,最后给出数据优化方案。
然后研究高可扩展性的集群架构搭建和数据分布负载均衡算法,了解MongoDB的Auto-Sharding机制和consistent hashing算法的实现原理和机制,并对理论的可行性进行了验证。结合两者优势,在分布均衡的基础上,提出了读写均衡的思想,探讨了基于动态反馈的hash sharding算法的可行性。
最后将MongoDB与应用相结合,理论联系实际,将MongoDB引入到HR集团门户系统。针对系统大规模数据存储及高效响应需求,提出了MongoDB与MySQL相结合的解决方案以实现读写分离。整个开发过程在公司内部实现的WKE框架下进行,系统各部分运行良好,并保证高效的响应速度。