论文部分内容阅读
我们正在进入大数据的时代。首先,随着社交网络服务SNS (Social Networking Services)等Web2.0应用流行、物联网的部署和发展、移动通信和移动互联网的普及,新的数据来源渠道不断出现。其次,高速Internet使数据的复制和传输越来越容易。最后,越积越多的历史数据有待我们存储和处理。根据IDC的调查,2006年全球电子形式数据的数据量约为0.18ZB,预计2020年,全球的数据量将达到35ZB。这些海量数据由结构化数据和非结构化数据组成。目前,数据存储技术可分为两类:关系数据库技术和NoSQL数据库技术。关系数据库技术是一项研究时间较长、技术相对成熟、应用较为广泛的数据存储管理技术,常用于结构化数据存储。关系数据库技术具有强的事务性和数据一致性要求,随着存储数据规模的扩大,其复杂度越来越大。NoSQL (Not only SQL)是近年来因海量数据存储和处理的需求发展而来的一类数据存储方案。NoSQL的数据存储可以不需要固定的模式,常会避免使用跨数据表的JOIN操作,一般具有较好的水平可扩展性。两种数据存储和管理技术各具优点,也各有不足。如何在一个系统中融合两种技术,充分利用其优势,是一个值得研究的问题。本论文研究并实现了集成两种数据存储技术进行数据存储的方案——开发基于关系数据库和NoSQL数据库的存储中间件系统。关系数据库和NoSQL数据库共同构成数据存储层,在数据存储层之上是存储中间件。中间件负责提供所有和数据操作相关的接口,它包括配置模块、数据关联模块、开关模块、读模块、写模块、查询模块、删除模块和数据迁移模块。通过存储中间件,用户程序可以把结构化数据存储到关系数据库;把字符型的非结构化数据存储到NoSQL数据库:也可以把结构化数据的记录同时存储到关系数据库和NoSQL数据库或者把包含结构化数据和非结构化数据的数据记录进行拆分同时存储到关系数据库和NoSQL数据库,拆分的过程由存储中间件的开关模块和写模块完成,存储中间件通过自定义规则,保证不同数据库的数据的关联性和一致性。存储中间件系统分别实现查询接口和读数据接口,查询接口操作关系数据库的数据,读数据接口操作NoSQL数据库的数据,这样系统既满足了复杂SQL查询的需求又满足了高并发读、分析数据的需求。另外,存储中间件实现了数据在关系数据库和NoSQL数据库之间迁移接口,与Sqoop的数据迁移相比,数据从NoSQL数据库向关系数据库迁移不再需要进行数据类型的判断和转换,直接从NoSQL数据表的列名中获得数据类型,使得迁移过程更加高效。为了验证系统的性能,我们对存储中间件系统进行了数据管理相关功能的实验,结果证明了系统的可行性和有效性。