大数据下MongoDB数据库数据文档存储去重研究

2017-12-07 01:01李兴武
数字技术与应用 2017年9期
关键词:大数据

李兴武

摘要:随着现代科技的逐渐发展,我国对于档案存储的研究也得到了社会各界的广泛重视,因此需要利用对存储档案文档管理进行重复的去重操作。

关键词:大数据;MongoDB数据库;档案文档存储;去重研究

中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2017)09-0099-01

1 传统的档案存储

在传统的档案存储的过程当中,主要是对文档来进行文件的形式进行存储,对于原本的数据需要根据实际情况来建立起档案文件和数据的链接,并把该链接的路径存储在关系数据库中。在此种方式下对文件进行存储的过程当中,会产生相当多的重复文件。[1]因此在其存储的过程当中为了避免出现重复的现象,都需要进行人工的方式来检查。在这种方式下,存储空间很快会被耗尽,要靠不断的增加存储设备来解决大量档案数据存放的问题,同时在管理方面也是相当不利的,在扩展性方面是相对较差的。在此种情况下,就需要利用MongoDB数据库来存储这些非结构化的数据,并且在存放之前就完成对重复档案文档的去重操作。

2 MongoDB數据库存储和管理机制

2.1 多用户存储机制

在进行存储的过程当中,MongoDB数据库提供主从复制和副本集复制2种方式满足冗余备份与高可用性。一般来说都是需要主从复制的,可以在进行复制的过程的当中对数据做出有效的转移和优化。并且在对MongoDB数据库当中还可以实现自动切片功能,易于实现横向扩展。此项功能主要适用于在用户存储量相对较大的情况下,其中所产生的数据量和频繁的I/O操作也是相对较多的,因此可以采用自动切片与副本集复制相结合的方式,来实现对不同的数据集合进行分层存储,这样一来在每一个分片当中都会具备不同的多个副本,从而对数据库服务器端实现故障转移以及自动扩展的现象,[2]其流程图如图1所示。在客户对其中的数据进行读取的时候,可以调用路由进程,并从配置服务器中读取数据与片的对应关系等信息,实现对数据信息的有效读取。

2.2 矢量空间数据存储

在对数据进行存储的过程当中,需要对数据的格式进行掌握和了解,一般情况下,在传统的矢量型空间数据格式包括Shapefile、TAB、GML、GeoJSON等类型。因此在对其数据进行存储到MongoDB数据库的时候,需要在中间件来对矢量的数据文件进行读取,最后将其转化成为MongoDB数据库可以存储读取的数据。除此之外,在对空间数据进行存储到MongoDB数据库的时候需要充分的借鉴geojson格式的空间数据表达形式,将每个空间对象转化为一个 json 对象,并以 key/value的方式存储空间对象的空间属性及非空间属性。

2.3 海量数据处理机制

随着现代化档案文档的增加,需要处理的数据量也在逐渐的提高,因此需要对海量的数据作出快速处理,其中主要利用到了MapReduce模型来对其进行计算分割,对于数据需要分割并且发布到不同的计算群当中的来进行计算。在计算的过程当中,MongoDB 内置了 Map函数和 Reduce 函数对数据进行批处理和聚合操作。

3 MongoDB中的去重算法

在MongoDB数据库对档案文档的实际应用当中,主要是去重算法进行分析,在对档案文档的分析当中,需要根据文档档案的相关信息来生成一个userInfo.users集合中的一条记录。在对其记录进行计算的过程当中需要对文档中的MD5校验码进行获取,之后对于数据库当中的文件名进行逐条的遍历搜索,从而可以对该文档的校验码进行重复情况的查找。如果在数据库当中发现重复的校验码,就需要对其文档进行大小的获取,从而确定该上传文档的存储总块数,并把该值记录到 fileInfo.files 集合中对应记录中。然后对档案文档进行上传并对文档内容按固定的分块大小存放到 fileContent.chucks集合中。对于该条相同的记录进行加1处理,其中需要利用其中的上传地点来判断是否在同一个地点当中对相同的档案文件进行了上传。如果在数据库的集合中没有发现相同的记录,就需要对其做出存储。从而可以保证在下次访问这个档案的时候,可以利用userInfo.users集合中的 upLoadfileID来对其fileInfo.files集合进行查找,最后利用其集合访问到需要访问的档案文档,最大限度的避免了档案文档中所出现的重复存储的现象,也可以实现对不同类型的文档档案进行不同编码流程的存储。在这个过程当中,需要对数据库计算当中所需要用到的及种类进行定义,其中分别是 UserInfo,FileInfo,FileContent ,主要对应的是不同的三个集合,其中在对数据库操作类的定义当中可以用DBObj来表示,定义去重的类用RemoveRepeat来表示。

在对其进行分析计算的过程当中,在进行方法判断的过程当中对于已经存在的集合记录中并没由发现和将要上传的档案文档重复的现象,因此需要利用一定的方法来是否存在重复上传档案文档的数据记录,也就是需要在进行数据记录导入的时候做出批量的判断。

最后,在对其进行10台主机组成的集群当中进行在实验的情况下,对于数据库存储的文件在不同的格式下对文档进行单个上传验证,可以充分的显示出在该种去重方法当中去重率达到了90%,去重效果还是相对比较理想的,同时对于其系统的扩展应用也可以得到最大限度的提高。

4 结语

综上所述,在对文档信息进行存储的过程当中,由于其数据信息当中本身存在的特点,需要充分的利用MongoDB数据库来实现对档案文档的存储和去重研究,充分的利用MongoDB数据库当中的功能来对其中不同类型以及不同大小的档案文档做出分析和研究处理,最终在去重算法的基础上,最大限度的提高对档案文件的去重效果,从而可以对我国的档案管理工作进行工作效率的提高。

参考文献

[1]刘愉,王立军.基于MongoDB的EHR存储方案研究与设计[J].中国数字医学,2013,(6):20-24.

[2]贺建英.大数据下MongoDB数据库档案文档存储去重研究[J].现代电子技术,2015,38(16):51-55.endprint

猜你喜欢
大数据
浅谈大数据在出版业的应用
“互联网+”对传统图书出版的影响和推动作用
大数据环境下基于移动客户端的传统媒体转型思路