基于MongoDB分布式集群架构的文件存储方法和系统与流程

文档序号:11677550阅读:244来源:国知局
基于MongoDB分布式集群架构的文件存储方法和系统与流程

本发明属于数据库管理和应用领域,具体涉及一种基于mongodb分布式集群架构的文件存储方法和系统。



背景技术:

随着大数据时代的到来,海量的文件使得存储需求越来越大。阿里巴巴在2010年统计的数据如下:“淘宝整体图片存储系统容量1800tb(1.8pb),已经占用空间990tb(约1pb)。保存的图片文件数量达到286亿多个。”目前商业用途的文件数量、存储空间占用量和访问量都已经大大的超出了单台服务器能够承受的范围,因此分布式集群架构的替代方案正在受到越来越多的青睐。

目前已有的文件存储方案,例如gfs、hdfs、lustre、ceph、mogilefs、tfs、fastdfs、hadoop、hive等都只能部署于liunx系统的ext2、ext3等文件系统中,而windows的fat、ntfs几乎没有能用于海量文件的存储方案。



技术实现要素:

本发明实施例的目的是提供一种基于mongodb分布式集群架构的文件存储方法和系统,以mongodb为基础构建分布式集群架构文件系统,具有低成本、高性能、高可维护性,降低企业运营成本,同时抛开平台的限制,在liunx和windows平台均能适用,扩大文件存储的适用范围,提高文件存储的效率,从而使得海量文件的存储变得高效、快捷。

根据本发明的一个方面,提供了一种基于mongodb分布式集群架构的文件存储方法,所述方法包括如下步骤:

检查mongodb分布式集群架构中是否存在与待存储文件相同的已存储文件;

若存在,则将所述待存储文件与已存储文件进行关联;

若不存在,则判断所述待存储文件的大小;

当所述待存储文件大于或等于预设值时,将所述待存储文件存储在mongodb的gridfs中;

当所述待存储文件小于所述预设值时,将所述待存储文件转换成bjson格式并存储在mongodb的document中。

上述方案中,所述检查mongodb分布式集群架构中是否存在与待存储文件相同的已存储文件,进一步包括:

获取所述待存储文件的filekey,检查所述mongodb分布式集群架构中是否存在相同的filekey;若存在,则将所述待存储文件与具有相同filekey的已存储文件进行关联;

若不存在,则计算所述待存储文件的md5,检查所述mongodb分布式集群架构中是否存在相同的md5;若存在,则将所述待存储文件与具有相同md5的已存储文件进行关联。

上述方案中,所述预设值为不大于document对象允许的最大长度的值。

上述方案中,所述方法还包括:

当mongodb分布式集群架构中不存在与所述待存储文件相同的filekey和md5时,将filekey存储到key中,文件数据存储到value中,在对所述文件进行读取、修改、删除时,使用filekey进行操作。

上述方案中,在检查mongodb分布式集群架构中是否存在与待存储文件相同的已存储文件之前,所述方法还包括:通过http或tcp的方式提供统一的客户程序访问接口。

根据本发明的另一个方面,还提供了一种基于mongodb分布式集群架构的文件存储系统,所述系统包括:查重模块,关联模块,大小判断模块,第一存储模块,格式转换模块,第二存储模块;其中,

所述查重模块用于检查mongodb分布式集群架构中是否存在与待存储文件相同的已存储文件;

所述关联模块与所述查重模块相连,用于当查重模块查出mongodb分布式集群架构中存在与待存储文件相同的已存储文件时,将所述待存储文件与已存储文件进行关联;

所述大小判断模块与所述查重模块相连,并与第一存储模块和格式转换模块相连,用于当查重模块查出mongodb分布式集群架构中不存在与待存储文件相同的已存储文件时,则判断所述待存储文件的大小;并将大于或等于预设值的待存储文件发送给第一存储模块,将小于所述预设值的待存储文件发送给格式转换模块;

所述第一存储模块用于将所述待存储文件存储在mongodb的gridfs中;

所述格式转换模块用于将所述待存储文件转换成bjson格式并发送给第二存储模块;

所述第二存储模块用于将所述待存储文件存储在mongodb的document中。

上述方案中,所述查重模块包括:filekey子模块,md5子模块;其中,

所述filekey子模块用于获取所述待存储文件的filekey,检查所述mongodb分布式集群架构中是否存在相同的filekey;若存在,则将所述待存储文件发送给关联模块,若不存在,则将所述待存储文件发送给md5子模块;

所述md5子模块用于计算所述待存储文件的md5,检查所述mongodb分布式集群架构中是否存在相同的md5;若存在,则将所述待存储文件发送给所述关联模块,若不存在,则将所述文件发送给大小判断模块。

上述方案中,所述预设值为不大于document对象允许的最大长度的值。

上述方案中,所述系统还包括:第三存储模块,用于当mongodb分布式集群架构中不存在与所述待存储文件相同的filekey和md5时,将filekey存储到key中,文件数据存储到value中,从而在对所述文件进行读取、修改、删除时,使用filekey进行操作。

上述方案中,所述系统还包括:接口模块,用于在检查mongodb分布式集群架构中是否存在与待存储文件相同的已存储文件之前,通过http或tcp的方式提供统一的客户程序访问接口。

从以上技术方案可以看出,本发明实施例的基于mongodb分布式集群架构的文件存储方法,首先检查mongodb分布式集群架构中是否存在与待存储文件相同的已存储文件,这里的检查通过filekey和md5实现;若存在,则将所述待存储文件与已存储文件进行关联;若不存在,则进一步判断所述待存储文件的大小;当所述待存储文件大于或等于预设值时,将所述待存储文件存储在mongodb的gridfs中;当所述待存储文件小于所述预设值时,将所述待存储文件转换成bjson格式并存储在mongodb的document中。这里的预设值通常为16mb,同时提供统一的文件访问接口。本实施例解决了基于windows系统及liunx操作系统的分布式集群架构,充分发挥了mongodb分布式集群架构的优势。由于mongodb是免费并且开源的非关系型数据库系统,并广泛的应用于网络服务器系统,占据了windows服务器市场中nosql的大部分份额。以此为基础构建的分布式集群架构文件系统,对大文件和小文件进行不同的读写,并具备nosql的所有优势,对高访问量、大并发支持良好,具有低成本,高性能,高可维护性等优势,可以有力的为企业降低运营成本,提高效率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明第一实施方式的基于mongodb分布式集群架构的文件存储方法流程示意图;

图2为本发明第一实施例的基于mongodb分布式集群架构的文件存储方法流程图;

图3为本发明第二实施方式的基于mongodb分布式集群架构的文件存储系统架构图;

图4为本发明第二实施例的基于mongodb分布式集群架构的文件存储系统内部结构示意图。

具体实施方式

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。

为便于对本发明实施例的理解,下面详细描述本发明的实施方式,通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

第一实施方式

本实施方式的基于mongodb分布式集群架构的文件存储方法,结合图1进行说明。图1为本发明第一实施方式的基于mongodb分布式集群架构的文件存储方法流程示意图。如图1所示,本实施方式的基于mongodb分布式集群架构的文件存储方法,包括如下步骤:

步骤s1,检查mongodb分布式集群架构中是否存在与待存储文件相同的已存储文件;若存在,则执行步骤s2;若不存在,则执行步骤s3。

本步骤中检查mongodb分布式集群架构中是否存在与待存储文件相同的已存储文件,进一步包括:

获取所述待存储文件的filekey,检查所述mongodb分布式集群架构中是否存在相同的filekey;若存在,则将所述待存储文件与具有相同filekey的已存储文件进行关联;这里的filekey是客户程序给定,是每个文件的唯一值。

若不存在,则计算所述待存储文件的md5,检查所述mongodb分布式集群架构中是否存在相同的md5;若存在,则将所述待存储文件与具有相同md5的已存储文件进行关联。

步骤s2,将所述待存储文件与已存储文件进行关联。

进行关联后再进行其他处理,从而有利于节约宝贵的服务器存储空间。这里的关联,指的是两个或两个以上相同的文件写入过程中,实际存储在mongodb系统中的都只有一份文件,相当于创建一份指向已存储文件的指针,也可以立即存储为一个快捷方式,目标指向已存在的相同文件。

步骤s3,判断所述待存储文件的大小;当所述待存储文件大于或等于预设值时,执行步骤s4;当所述待存储文件小于所述预设值时,执行步骤s5。

在mongodb分布式集群架构中,进行大小区分的预设值为不大于document对象允许的最大长度的值,通常为16mb。因为mongodb的document中最多允许存储16mb的数据,因此如果文件小于16mb,则可以保存到document中,如果文件大于16mb则需要保存到gridfs中,由于gridfs是以块的方式管理文件,默认块大小16mb,只适合存储大文件,如果放入过小的文件将会浪费更多的存储空间。

步骤s4,将所述待存储文件存储在mongodb的gridfs中。

步骤s5,将所述待存储文件转换成bjson格式。

由于mongodb的document中只能存储bjson格式,所以在存储前需要对原有的文件格式进行转换,转换为bjson后方可存储。

步骤s6,将所述转换成bjson格式的待存储文件存储在mongodb的document中。

另外,mongodb分布式集群架构为免费并且开源的非关系型分布式集群架构系统,由于nosql都是基于key-value存储,因此将待存储文件的filekey存储到key,文件数据存储到value中,在读取、修改、删除文件的时候,使用filekey操作即可。

优选的,在检查mongodb分布式集群架构中是否存在与待存储文件相同的已存储文件之前,所述方法还可以包括:通过http或tcp的方式提供统一的客户程序访问接口。

下面通过一个具体的实施例,对本实施方式进行详细说明。

图2为本发明第一实施例的基于mongodb分布式集群架构的文件存储方法流程图。如图2所示,本实施例的基于mongodb分布式集群架构的文件存储方法,具体包括如下步骤:

步骤s101,写入文件。这里写入文件,通过http或tcp的方式提供的统一客户程序访问接口写入。

步骤s102,判断mongodb分布式集群架构中是否存在与所述写入的文件相同的filekey。若存在,则执行步骤s103若不存在,则执行步骤s104。

步骤s103,当前文件名与原有文件建立链接关系。这里的当前文件名,即为需要保存的写入文件,而原有文件,指分布式集群架构中已存储的与当前文件具有相同filekey的文件。

步骤s104,计算写入文件的md5。

步骤s105,判断所述mongodb分布式集群架构中是否存在与所述写入文件相同的md5。当存在时,执行步骤s103;当不存在时,执行步骤s106;

步骤s106,判断文件是否大于或等于document对象允许的最大长度,若大于或等于,则执行步骤s107;若不大于或等于,则执行步骤s108;通常情况下,这里的document对象允许的最大长度为16m;

步骤s107,将所述文件存入girdfs;

步骤s108,读取文件并转换为bjson格式;

步骤s109,将转换为bjson格式的文件,存入document。

本实施例解决了基于windows系统及liunx操作系统的分布式集群架构,充分发挥了mongodb分布式集群架构的优势。由于mongodb是免费并且开源的非关系型分布式集群架构系统,并广泛的应用于网络服务器系统,占据了windows服务器市场中nosql的大部分份额。以此为基础构建的分布式集群架构文件系统,对大文件和小文件进行不同的读写,并具备nosql的所有优势,对高访问量、大并发支持良好,具有低成本,高性能,高可维护性等优势,可以有力的为企业降低运营成本,提高效率,从而使得海量文件的存储变得高效、快捷。

第二实施方式

图3为本发明第二实施方式的基于mongob分布式集群架构的文件存储系统架构图。如图3所示,本实施方式的文件存储系统,通过http、tcp、ssl提供统一的客户程序访问接口,其中的备份策略和安全认证机制,均属于现有技术,在此不再赘述。其中的文件存储模块,是分布式集群架构的主体,包括md5、sha1摘要模块、存储逻辑和策略模块、接口封装模块及mongodb模块。需要注意的是,这里对模块的划分,是基于整个文件存储系统架构的,各自都可构成一个小的独立的子系统,与第二实施例中的具体的实现模块是不同级别的。下面结合图4,通过第二实施例对本实施方式进行具体的说明。

图4为本发明第二实施例的基于mongodb分布式集群架构的文件存储系统内部结构示意图。

如图4所示,本实施例的基于mongodb分布式集群架构的文件存储系统,包括:查重模块21,关联模块22,大小判断模块23,第一存储模块24,格式转换模块25,第二存储模块26;其中,

所述查重模块21用于检查mongodb分布式集群架构中是否存在与待存储文件相同的已存储文件。

这里,所述查重模块21还可以包括:filekey子模块,md5子模块;其中,

所述filekey子模块用于获取所述待存储文件的filekey,检查所述mongodb分布式集群架构中是否存在相同的filekey;若存在,则将所述待存储文件发送给关联模块,若不存在,则将所述待存储文件发送给md5子模块;

所述md5子模块用于计算所述待存储文件的md5,检查所述mongodb分布式集群架构中是否存在相同的md5;若存在,则将所述待存储文件发送给所述关联模块,若不存在,则将所述文件发送给大小判断模块。

所述关联模块22与所述查重模块21相连,用于当查重模块21查出mongodb分布式集群架构中存在与待存储文件相同的已存储文件时,将所述待存储文件与已存储文件进行关联。

所述大小判断模块23与所述查重模块21相连,并与第一存储模块24和格式转换模块25相连,用于当查重模块21查出mongodb分布式集群架构中不存在与待存储文件相同的已存储文件时,则判断所述待存储文件的大小;并将大于或等于预设值的待存储文件发送给第一存储模块24,将小于所述预设值的待存储文件发送给格式转换模块25。

优选的,所述预设值为document对象允许的最大长度值,通常情况下取值为16mb。

所述第一存储模块24用于将所述待存储文件存储在mongodb的gridfs中。

所述格式转换模块25用于将所述待存储文件转换成bjson格式并发送给第二存储模块26。

所述第二存储模块26用于将所述待存储文件存储在mongodb的document中。

优选的,所述系统还可以包第三存储模块,用于当mongodb分布式集群架构中不存在与所述待存储文件相同的filekey和md5时,将filekey存储到key中,文件数据存储到value中,从而在对所述文件进行读取、修改、删除时,使用filekey进行操作。

所述系统还可以包括接口模块,用于在检查mongodb分布式集群架构中是否存在与待存储文件相同的已存储文件之前,通过http或tcp的方式提供统一的客户程序访问接口。

本实施例基于mongodb的文件存储系统,解决了基于windows系统及liunx操作系统的分布式集群架构,充分发挥了mongodb分布式集群架构的优势。由于mongodb是免费并且开源的非关系型分布式集群架构系统,并广泛的应用于网络服务器系统,占据了windows服务器市场中nosql的大部分份额。以此为基础构建的分布式集群架构文件系统,对大文件和小文件进行不同的读写,并具备nosql的所有优势,对高访问量、大并发支持良好,具有低成本,高性能,高可维护性等优势,可以有力的为企业降低运营成本,提高效率,从而使得海量文件的存储变得高效、快捷。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1