论文部分内容阅读
随着Web2.0的快速发展尤其是高并发社交网络的大规模应用,传统的关系数据库在数据一致性方面的苛刻要求使得其在可用性、扩展性等方面出现了功能不足的情况,NOSQL数据库的出现和使用弥补了关系数据库的不足。NOSQL是not only SQL(Structure Query Language)的缩写,是一类与关系数据库管理系统完全不同的分布式服务系统的统称,它们提倡运用非关系型的数据来进行存储。NOSQL数据库的存储模型比较灵活,同时避免表之间的连接操作,所以有利于数据的海量存储。它们的服务器集群可以采用廉价的PC机,成本低并且支持水平扩展。NOSQL对于简单查询的效率非常高,但是对于复杂查询一般不能很好的支持或者是查询效率很低,而关系数据库可以实现复杂查询,因此关系数据库和NOSQL均有各自的优缺点。 本课题研究的目的在于为某互联网公司的微博业务提供分布式的存储服务,该服务需要满足海量数据的存储和动态扩容,以及最大程度地降低成本。本文对NOSQL产品之一Cassandra进行了研究,它是脸谱网公司开源的分布式存储服务。将Cassandra和Oracle结合使用,作为该业务的数据存储方式。 本文在对Cassandra数据库系统研究的基础上,给出采用中间件法来集成Cassandra和Oracle的软件系统架构,并主要对中间件的数据字典模块、SQL处理器模块和结果集模块进行设计和实现。数据字典模块是完成中间件功能的基础,用于存储数据库的信息,包括路由信息、数据库的表信息以及各种附加信息。本文设计的数据字典包含各个表的表结构、字段定义、约束条件以及表之间的关系和获取方式等。SQL处理器模块和结果集模块是中间件的重要组成部分,它的设计实现使得中间件可以正确解析SQL请求并且能够返回正确的结果集给应用。 本文设计的数据字典模块、SQL处理器模块和结果集模块三个模块的实现满足了对数据库最基本的增删改查的需求,为实现Cassandra与Oracle的集成打下基础,后期业务需求的增加可以在这几个模块上进行扩展。本文的设计方法为关系数据库与NOSQL数据库其它产品的集成提供了思路。