云环境下海量非结构化信息存储技术探究
2012-04-10谢华成范黎林
谢华成,范黎林
XIE Hua-cheng1,FAN Li-lin2
(1. 信阳师范学院 网络信息与计算中心,信阳 464000;2. 河南师范大学 计算机与信息技术学院,新乡 453007)
0 引言
随着WEB2.0的应用和发展,一些新型互联网应用,如社交网络、博客(Blog)、个人视频分享、个性化信息租用服务等应用不断涌入人们眼帘,并逐渐成为人们生活的一部分。云计算为这些新型应用提供了计算手段,云存储为这些应用提供了存储方案。
目前,数以亿计的网络用户通过个人电脑、智能手机等终端访问Internet,据中国互联网络信息中心(CNNIC)在2012年1月16日发布的中国互联网发展状况统计报告中显示,截止2011年12月底,中国网民突破5亿,其中手机网民达3.56亿,且同前期相比呈不断增长趋势[1]。网络用户在浏览信息的同时,产生了海量的格式多样的新数据,在这些数据中,诸如文档、音乐、图片、视频一类的非结构化信息占比相当大。面临用户端的日益膨胀和海量数据的持续产生,尽管高性能处理器已基本满足了运算需求,却对无限大的存储空间和无限大的网络带宽需求力不从心。因此,在信息系统设计中,计算设计已经不再是应用的中心,而数据的妥善存储和管理成为系统设计的焦点。
1 非结构化数据存储发展进程
当前,互联网中的数据包括非结构化数据和半结构化的数据,非结构化信息又以二进制文件为主。制约海量非结构化数据存储的关键问题是,数据中心与异构终端间的数据共享程度不够强,存储系统的高并发读写能力欠缺,存储系统的自由扩展比较困难。针对移动计算的海量存储需求,深入研究非结构化数据的存储发展过程,这有助于开发出具有高共享、高吞吐和高并发能力的网络存储系统。
传统存储技术中,文件系统是可持久存储和管理数据的普遍手段。文件的管理方式主要有单机文件系统、网络文件系统、分布式文件系统和高通量文件系统等。
在单机文件系统中,十亿兆位字节文件系统(ZFS,Zettabyte File System)是应用较成功的典范,该系统由Sun公司于2005年11月正式发布,是针对ZB级数据存储需求而设计的128位UNIX文件系统,ZFS引入“存储池”的概念管理物理存储空间,采用写时复制事务模型来维护数据一致性。由于该系统不能跨越数据的物理位置,同时没有妥善地解决数据传输通道的瓶颈问题,且系统复杂度较高,最终没有得到推广。
网络文件系统(NFS,Network File System)的出现,使得跨平台的非结构化数据共享成为可能,数据存储通过远程过程调用(RPC,Remote Procedure Call)机制实现,使远程文件本地化,用户存取远程文件如同访问本地文件一样方便,但NFS的服务器架构过于单一,决定其扩展性受到局限[2]。
搜索引擎的出现,使得用户得以免费获取快速检索信息的便利,这一便利是建立在海量存储和海量计算基础上的。为使用户检索到最新的信息,新增的非结构化型WEB快照数据需要及时存储到服务器上,便于分析处理和建立索引,尽管此时已经出现基于高性能计算(High Performance Computing,HPC)的并行文件系统,然而成本高昂、当节点、网络或磁盘阵列出现故障后需停机恢复,不适合在线维护。而后,Google公司提出一种基于集中式管理、分布式存储的全新存储架构,即Google File System(GFS),该架构将非结构化数据按64MB的粒度存储于各子结点上[3]。这些系统与特定应用的耦合度高,表现出适应性差的缺点。
非结构化数据存储技术与文件系统及其存储技术的发展密切相关,更与数据库的发展密不可分。使用与操作系统、数据库系统无缝结合而形成的新型存储技术取代传统存储解决方案是必然的。
2 非关系型数据库(Not Only SQL,NoSQL)
传统的关系数据库在高并发读写、高吞吐率的海量数据存取、高可用性和高可扩展性需求方面表现得不尽如意。针对海量非结构化数据存储管理难题,研究者致力于寻求一种可靠的、低成本的和易实施的存储解决方案,在此情况下,出现了诸如Tokyo Cabinet、MongoDB、CouchDB等非关系型数据库(Not Only SQL,NoSQL)[4]。NoSQL数据库打破了传统关系数据库的事务一致性及范式约束,放弃了关系数据库强大的SQL查询语言,采用 NoSQL数据库系统通常具有以下六个特性。 1)对多个服务器进行简单的水平扩展即可实现吞吐量的提高; 2)具有在多服务间进行复制和分发数据的能力; 3)与SQL数据绑定相比,NoSQL的存储调用接口和协议更加简单; 4)传统数据库系统的事务处理具有四个特性:原子性、一致性、隔离性和持久性(Atomicity,Consistency,Isolation,Durability,ACID),为增强新型数据库系统的可伸缩性,NoSQL系统放弃了部分ACID特性; 5)利用分布式索引和随机存储器实现高效的数据存储; 6)具有动态添加新属性和数据记录的能力。 满足以上特性的NoSQL数据库比较多,大致可分为三类。一类是满足较高读写性能需求的 MongoDB是一款基于JSON(JavaScript Object Notation)的非关系型数据库,可将一个文档或文件以BSON(Binary JSON)的格式存入其中。JSON是一种轻量级的数据交换格式,以一种特定的字符串表示JavaScript对象,这种交换格式易于阅读和编写,同时也易于机器解析和生成。BSON是JSON的二进制表示形式,同JSON一样,支持内嵌的文档对象和数组对象。 以BSON格式存储的非结构化数据,在MongoDB数据库中称之为文档(Document),每个文档可理解为关系数据库中的一条记录(Record),若干记录使用集合(Collection)统一管理,若干集合属于同一个数据库,如此一来,文件数据可直接存储于数据库中,其存储结构如图1所示,与关系型数据库相比,其数据的逻辑结构对比如表1所示。 图1 MongoDB数据库逻辑结构 表1 MongoDB数据库与关系数据库逻辑结构对照 WEB2.0环境下,已出现过将视频、音乐等二进制大对象直接存储入RDBMS的存储技术[5],但须以同构的记录形式存储,而MongoDB具有支持异构数据存储的优点,是RDBMS所不能及的。因此,使用MongoDB可实现非结构化数据的统一管理[6]。 实现平台的搭建包括两个方面,一方面是选取合适的操作系统及开发环境,另一方面是正确安装MongoDB数据库,并使之正常工作。MongoDB数据库的安装相对简单,它既可以命令行的方式运行,也可以Windows服务的方式运行,这样就避免了手动启动MongoDB的麻烦。由于MongoDB数据库系统兼容性较强,可运行于Windows平台或Linux平台。通常,Windows平台下的操作和控制更加直观,且Windows下的软件开发效率较高,因此,本研究选用了Windows Server 2003操作系统,配置了IIS6.0和.NET Framework 3.5,最后,运用Visual Studio 2008集成开发环境下的ASP.NET C#作为编码工具。 以下为向MongoDB数据库中写入非结构化数据的算法流程。 以下为从 MongoDB中读取非结构化数据文件的算法。 在探讨了非结构化数据特征及现有存储技术的基础上,介绍了NoSQL数据库的特性。结合NoSQL数据库的一个范例MongoDB,详细说明了MongoDB数据库的存储体系结构。随后,在Windows Server 2003环境下搭建了MongoDB海量非结构化数据存储网,并给出了在单结点中存档和还原二进制文档的具体算法。实验证明,向MongoDB中存档4MB左右的文件,性能最优,如果存储更大文件,可采用MongoDB的GridFS存储解决方案[7]。 在云存储环境下,NoSQL数据库存储技术为海量数据管理提供了新的思路。同时,应该注意到NoSQL数据库的发展时间较短,技术尚未成熟,尽管该技术表现出高性能、易部署、易使用、易存储的特点,与传统存储技术相比,存储系统的安全性和处理复杂数据关系能力,仍有欠缺。下一步将围绕如何优化以MongoDB为基础的存储系统开展工作。 [1] 中国互联网络信息中心. 中国互联网络发展状况统计报告[EB/OL]. (2012-1). http://www.cnnic.net.cn/dtygg/dt gg/201201/W020120116337628870651.pdf. [2] 王坤,王锦. 基于NFS V4协议的关系型数据库部署[J].计算机工程,2011,37(1): 72-74. [3] 吕雪锋,程承旗,龚健雅,关丽. 海量遥感数据存储管理技术综述[J]. 中国科学:技术科学,2011,41(12): 1561-1573. [4] 于戈,谷峪,鲍玉斌,王志刚. 云计算环境下的大规模图数据处理技术[J]. 计算机学报,2011,34(10): 1753-1767. [5] 谢华成,张昆朋,范黎林,刘道华. 基于文件分割的二进制大对象存取算法[J].计算机应用,2011,31(10): 2612-2616. [6] 马少兵,马自卫. 数字图书馆私有云平台的构建研究和应用开发[J]. 现代图书情报技术,2011,204(4): 9-16. [7] 夏黎明. 云环境下数据关联管理机制的研究及其在铁路行业的应用实现[D]. 北京: 北京交通大学,2011.2.1 NoSQL数据库特性
2.2 MongoDB存储体系结构
3 MongoDB中非结构化数据存取实现
3.1 实验平台搭建与相关准备
3.2 写入非结构化数据算法实现
3.3 读取非结构化数据算法实现
4 结束语