[摘 要] 本文提出了一种基于MongoDB的分布式数据库系统来解决存储系统对于稳定性、可靠性、高效性、易扩展性的需求。MongoDB是一种介于关系数据库和非关系数据库之间,面向文档存储类型的分布式文件存储数据库。在油田测井数据磁带文件存储管理系统中的实际运行测试结果表明,该系统表现稳定、高效,可以很好地完成原始测井数据维护工作。
[关键词] MongoDB; 测井数据库;分布式
0 引 言
由于历史和技术手段等原因,油田的原始测井数据文件存放在磁带中。随着时间推移,与磁带对应的磁带机越来越少;磁带文件的读取越来越困难,维护成本逐渐增高;磁带介质随着时间推移变脆、粘连现象增加,原始测井数据文件面临着毁坏丢失的风险。将磁带文件转存为磁盘文件保存数据是一个较好的解决办法。而对于海量数据的存储和管理,分布式系统拥有高并行性、高容错能力、高性价比等诸多优点。本文选用的非关系型数据库MongoDB本身就是一个基于文档型的分布式数据库,且该数据库本身具有可扩展性,对海量数据存储和高并发的读写需求有着传统关系型数据库难以企及的优势。所以建立基于MongoDB数据库的分布式存储系统可以很好地满足对磁带转储系统高效性、稳定性、易扩展性的需求。
本文将从非关系型数据库的定义和特点、系统模型的设计以及系统整体架构设计等方面来介绍基于MongoDB的特殊测井分布式数据库系统。
1 NoSQL简介
NoSQL也称作Not only SQL,是随着互联网的发展为处理海量数据而产生的。NoSQL最早的起源可追溯至1991年BerklyDB的发布。该数据库采用的是以Key-Value键值对为存储类型的Hash数据库。但是由于自身的局限,该数据库只适用于存储类型相对简单,而且对插入和读取数据操作速度要求极高的场合,所以该数据库没有被广泛使用。随着Web 2.0时代的到来,传统型关系数据库越来越难以应付海量的用户动态数据以及高并发的读写数据请求。2006年,Google发表了关于Bigtable的一篇论文,预示着非关系型数据库时代的到来。此后,越来越多的非关系型数据库产品如雨后春笋般出现,其中具有代表性的有基于键值对存储类型的Cassandra和Hbase;基于文档存储类型的MongoDB和CouchDB;基于集合存储类型的Redis等。它们的出现,掀起了NoSQL数据库研究的热潮。本文研究的内容正是建立在文档式存储类型的非关系型数据库MongoDB之上。
1.1 文档式存储系统——MongoDB
MongoDB是介于关系数据库和非关系数据库之间的一个基于分布式文件存储的数据库。相比于传统型数据库,MongoDB有非常好的可扩展性,同时也支持对数据建立索引。MongoDB最大的特点是其支持的查询语言非常强大,语法类似于面向对象查询语言,国内知名的互联网公司如淘宝网、大众点评和视觉中国都在使用MongoDB数据库。
2 数据模型
该系统根据MongoDB数据库文档存储的特点,设计了具体的业务数据模型,主要业务模型如图1所示。
从图1中可以看出,磁带转储存储记录表作为井表的一个字段进行存储,这样的设计模式不仅降低了查询时井表和磁带转储表连接操作的开销,而且由于合入的数据在磁盘上更可能存放在一起,可以提高读取/写入的速度,从而提高了系统效率。