CN104978330A - 一种数据存储的方法及装置 - Google Patents
一种数据存储的方法及装置 Download PDFInfo
- Publication number
- CN104978330A CN104978330A CN201410135689.9A CN201410135689A CN104978330A CN 104978330 A CN104978330 A CN 104978330A CN 201410135689 A CN201410135689 A CN 201410135689A CN 104978330 A CN104978330 A CN 104978330A
- Authority
- CN
- China
- Prior art keywords
- file
- index database
- key
- data
- value pair
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据存储的方法及装置,其中,该方法包括:将待存储的小数据文件打包生成存档大数据文件;在非解包状态下,读取所述存档大数据文件中的每个小数据文件;为所述存档大数据文件创建索引库,通过查询所述索引库调用所述小数据文件。本发明解决了海量小数据文件的管理问题,更高效的实现了数据的复制、迁移和组织,以及直接通过文件系统获取数据,提高了数据访问效率。
Description
技术领域
本发明涉及计算机技术领域,具体地,涉及一种数据存储的方法及装置。
背景技术
针对海量数据文件的网络发布,传统的技术方案主要有如下几类:
一、把海量的数据文件直接存放在磁盘上,并把整个数据目录发布到Web服务器中。这种方案最为简单和直接,数据发布后,不需要安装部署其它额外的前端应用系统,通过URL可以直接访问指定路径下的文件。但该方法存在如下几个问题:
1、当磁盘目录中的文件数量巨大时,Web服务器的服务效率低下。实验环境下,1T左右的图片文件(每个图片文件20~200k范围内),IIS需要花费10~15分钟才能启动完毕。另外,当一个目录下的文件数量达到数千个数量级时,数据访问速度明显降低。
2、把海量的数据文件直接存储在磁盘目录下,当遭遇到数据的复制、迁移、删除等管理操作时,速度十分缓慢,给大数据的管理带来麻烦。
3、因为文件系统在磁盘上划分了最小的基本数据存储区域。当一个基本区域未使用完时,是不能提供给其它文件存储的。所以,如果直接在磁盘上存储海量的小数据文件,将浪费大量的磁盘存储空间。
4、在数据访问阶段,当遭遇大量并发访问时,服务器需要频繁读取磁盘上的小数据文件,将造成系统文件打开数目和磁盘I/O的开销大大增加。
二、把海量的数据文件存储到数据库中,再通过部署的应用系统作为数据库与Web服务的中间层。通过应用系统连接数据库获取数据,然后传递给Web服务器返回给客户端。但是数据库主要是针对文本和数值型数据的管理、查询和计算,而海量数据文件处理所面对多是二进制为主的数据文件,即便是文本文件,也都当成二进制数据流来读取,不用理解数据文件的内容。所以数据库的查询、计算功能在海量数据文件处理方面并不能发挥作用。
以及在数据获取方面,需要通过网络连接的方式连接到数据库系统,再通过SQL语句进行查询和检索,最后返回数据。这样的数据访问过程将消耗大量的系统资源和时间,比通过文件系统直接读取数据效率要低很多。而且需要使用者具备数据库的安装、配置、使用和开发方面的知识背景,不够便捷。
三、把海量的数据文件存储到分布式系统中。例如,把数据存储到类似Hadoop、Riak等类似的云存储环境中。这种技术路线绝大部分情况下也需要部署其它中间层来负责数据的定位和获取,再转给前端服务器返回给客户端。而且分布式系统存储系统主要目的是提供一种具备高可扩展性、高容错性的数据存储方案,其次才是考虑访问速度问题。分布式系统一般由计算机集群组成;在该集群内数据、元数据信息和数据索引一般都分布在多个服务器上。基于这种分布式结构,数据获取时通常需要通过网络访问多个机器才能最终定位所需数据。因此效率不如单机的访问效率高,或必须当集群达到一定规模的时候才能显示其效率优势。
以及分布式系统通常比较复杂,需要使用者具备分布式系统的安装、配置、使用和开发方面的背景知识,使用门槛较高,不够方便快捷。
综上,现有技术中第一种把海量的数据文件直接存放在磁盘上的方式存在数据处理效率低下、数据难以管理、存储空间浪费严重等技术缺陷;第二种把海量的数据文件存储到数据库中的方式存在读取数据效率低等技术缺陷;第三种把海量的数据文件存储到分布式系统中的方式存在系统比较复杂、不够方便快捷等技术缺陷。
发明内容
本发明是为了克服现有技术中在海量数据存储及提取时存在数据处理效率低下等技术缺陷,根据本发明的一个方面,提出一种数据存储的方法。
根据本发明实施例的数据存储的方法,包括:将待存储的小数据文件打包生成存档大数据文件;在非解包状态下,读取所述存档大数据文件中的每个小数据文件;为所述存档大数据文件创建索引库,通过查询所述索引库调用所述小数据文件。
本方案进一步的,所述为存档大数据文件创建索引库的步骤包括:记录每个所述小数据文件在所述存档大数据文件中存储的文件识别信息、存储偏移量和数据长度;对所述文件识别信息进行编码生成所述小数据文件对应的键,将所述存储偏移量和数据长度作为所述小数据文件对应的值并与所述小数据文件对应的键组成所述小数据文件对应的键值对;将所述键值对写入所述索引库中。
本方案进一步的,还包括:将所述索引库合并成集群索引库,通过查询所述集群索引库调用所述小数据文件;所述将索引库合并成集群索引库的步骤包括:指定集群索引库中包含的索引库;读取为所述存档大数据文件创建的索引库中的键值对进行重新构建,形成新的键值对;将所述新的键值对写入所述已指定的索引库,合并成所述集群索引库。
本方案进一步的,所述指定集群索引库中包含的索引库的步骤还包括对所述索引库进行排序;所述将新的键值对写入已指定的索引库的步骤还包括:将所述新的键值对通过哈希算法写入指定集群索引库中进行排序的索引库。
本方案进一步的,所述将新的键值对通过哈希算法写入指定集群索引库中进行排序的索引库的步骤包括:从所述新的键值对中提取出键,并对所述键作哈希计算,生成一个整数;根据所述整数与所述集群索引库中的索引库的总数生成新的键值对在所述已排序的索引库中的序号。
本方案进一步的,所述读取为所述存档大数据文件创建的索引库中的键值对进行重新构建的步骤包括:保持所述键不变,将所述值变为:存档大数据文件id编号+存储偏移量+数据长度;所述存档大数据文件id编号为对应所述存档大数据文件路径的一个编号。
本方案进一步的,所述文件识别信息包括:文件名和文件路径。
本发明是为了克服现有技术中在海量数据存储及提取时存在数据处理效率低下等技术缺陷,根据本发明的另一个方面,提出一种数据存储的装置。
根据本发明实施例的数据存储的装置,包括:存储模块,用于将待存储的小数据文件打包生成存档大数据文件;访问模块,用于在非解包状态下读取所述存档大数据文件中的每个小数据文件;索引创建模块,用于为所述存档大数据文件创建索引库;索引查询模块,用于通过查询所述索引库调用所述小数据文件。
本方案进一步的,所述索引创建模块包括:记录子模块,用于记录每个所述小数据文件在所述存档大数据文件中存储的文件识别信息、存储偏移量和数据长度;编码子模块,用于对所述文件识别信息进行编码生成所述小数据文件对应的键,将所述偏移量和数据长度作为所述小数据文件对应的值并与所述小数据文件对应的键组成所述小数据文件对应的键值对;写入子模块,用于将所述键值对写入所述索引库中。所述文件识别信息包括:文件名和文件路径。
本方案进一步的,还包括:合并查询模块,用于将所述索引库合并成集群索引库,通过查询所述集群索引库调用所述小数据文件;所述合并查询模块包括:指定子模块,用于指定集群索引库中包含的索引库;构建子模块,用于读取为所述存档大数据文件创建的索引库中的键值对进行重新构建,形成新的键值对;写入子模块,用于将所述新的键值对写入所述已指定的索引库,合并成所述集群索引库。
本方案进一步的,所述指定子模块还包括:排序单元,用于对所述索引库进行排序;
所述写入子模块还包括:写入单元,用于将所述新的键值对通过哈希算法写入指定集群索引库中进行排序的索引库。
本方案进一步的,所述写入单元还包括:生成子单元,用于从所述新的键值对中提取出键,并对所述键作哈希计算,生成一个整数;根据所述整数与所述集群索引库中的索引库的总数生成新的键值对在所述已排序的索引库中的序号。
本方案进一步的,所述构建子模块包括:构建单元,用于保持所述键保持不变,将所述值变为:存档大数据文件id编号+存储偏移量+数据长度;所述存档大数据文件id编号为对应存档大数据文件路径的一个编号。
本发明各实施例的数据存储的方法及装置,通过对海量小数据文件打包生成存档大数据文件,解决了海量小数据文件的管理问题,更高效的实现了存档大数据的复制、迁移和组织,同时解决了海量小数据文件对磁盘的浪费问题;通过在非解包状态下对存档大数据进行创建索引,以及直接通过发布系统获取数据,提高了数据访问效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明数据存储的方法实施例流程示意图;
图2为本发明包含创建集群索引库的数据存储的方法实施例流程示意图;
图3为本发明数据存储的装置实施例结构示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
方法实施例:
图1为根据本发明数据存储的方法实施例流程示意图,如图1所示,包括:
步骤S102:将待存储的小数据文件打包生成一个或多个存档大数据文件;
步骤S102为数据准备阶段,为了方便对海量小数据文件的管理,便于数据的复制、迁移和组织,同时也为了避免存储小数据文件浪费过多的磁盘空间,需要先把海量的小数据文件打包压缩成存档大数据文件(存档大数据文件的体积一般在5G~50G左右),存档大数据文件的个数不定,可根据应用数据组织的需要选定。
步骤S104:对每个存档大数据文件在非解包状态下创建索引库;
其具体包括:在非解包状态下读取存档大数据文件中小数据文件,其中小数据文件的读取步骤既可根据索引值对包中任意数据进行快速定位和读取,也可以顺序读取;在读取的过程中记录下每个小数据文件在存档大数据文件中存储的识别信息、存储偏移量、数据长度;对文件识别信息进行编码生成小数据文件对应的键,将存储偏移量和数据长度作为小数据文件对应的值并与小数据文件对应的键组成小数据文件对应的键值对,将该键值对写入索引库中,以及将索引库放入索引库目录中。
索引目录为存放索引库的一个文件目录,写入到索引库中的键值对数据,都存储在这个索引目录中,存在与存档大数据文件相同的路径下。
索引库为一个嵌入式的(Key-Value)类型数据库,不需要用户使用前安装配置,而是由程序在运行时自动在内部启动调用。
其中,识别信息包括:文件名和文件路径,键值对通过索引键值生成器生成,支持两种方式的键值构造方法:
第一种是以文件路径(文件路径为小数据在存档大数据文件中的存储路径)作为键,具体步骤如下:
通过对小数据文件在存档大数据文件中的存储路径进行编码,生成一个与小数据文件一一对应的键,存储偏移量和数据长度作为值,同时将小数据文件在存档大数据文件中的存储路径形成的键与存储偏移量和数据长度形成的值组成键值对写入到索引库中。
示例:路径“img_world_mini/data/d/d/d/d/d/a.jpg”对应的文件,其实代表第5层、第0行、第31列的一个小图片。在索引创建时,键值生成器就负责把这个路径翻译成“5x0x31”的键。
第二种是以文件名(文件名为小数据文件名)作为键,具体步骤如下:
如果小数据文件名具有唯一性,把小数据文件名编码结果作为键,存储偏移量和数据长度作为值,同时把小数据文件名形成的键与相对应的存储偏移量和数据长度形成的值组成键值对写入到索引库中。
示例:在一个大的数据集中,其内部存储的一个文件路径为“\_20120304_26_NS\201203041602098_116284603_39804697_154\201305051107518_116612328_40045922_350yyyeyyyjyyyZ.jpg”。在建立索引前,如果明确知道该文件名在整个数据集中是唯一的,不会重复。那么,在创建索引时,键值生成器就负责把文件路径中的前面部分去掉,只保留一个文件名201305051107518_116612328_40045922_350yyyeyyyjyyyZ.jpg作为键。
在索引库创建过程中,同步生成索引元数据文件,该索引元数据文件内容为存档大数据文件创建索引库过程中记录的索引元数据信息。索引元数据文件内容包括:存档大数据文件描述信息(如,存档大数据文件名称);存档大数据文件存放路径;索引目录路径;索引库创建类型;索引键值生成方式。
索引键值生成方式为根据某种规则把长的、具有某种特征的文件存储路径编码成短的、便于记忆的字符串,并把该字符串作为文件的键写入索引库中。
步骤106:将存档大数据文件发布至发布系统;
启动数据发布系统之前,需要先把创建好索引库的存档大数据文件注册到发布系统中,注册方式是发布系统配置文件中标明存放存档大数据文件的路径;发布系统启动时,将遍历索引目录,并搜索索引目录下的存档大数据文件,读取存档大数据文件相对应的索引元数据文件,并将其信息注册到发布系统中。
步骤S108:对小数据文件的请求;
当用户进行对某个小数据文件进行访问时,客户端可以根据用户操作,计算出小数据文件的所对应的键以及存档大数据文件名称,然后将键及存档大数据文件名称发送至服务器。
示例:客户端可根据用户当前访问的经纬度范围,计算出该范围对应的地图图片的访问的键以及地图图片所对应的数据包名称。例如一个地图图片存储路径为“http://localhost:8080/ArchiveServer/data/JJ1/201203021353157.jpg”,在创建索引时,可以将201203021353157.jpg作为键写入索引库。客户端程序,例如网页中的地图控件,会根据当前用户操作的显示范围计算出其需要这张图片,此时就向服务器发送请求参数键(201203021353157.jpg)及存档大数据名称(JJ1);
若一个地图图片存储路径为“Layers/_alllayers/L06/R000000a1/C000000a8.jpg”,其代表的含义为第6层、第161行、第168列的一张图片。在创建索引时,可以将这个路径编码成“6x161x168”,并作为键写入索引库。客户端程序,例如网页中的地图控件,会根据当前用户操作的显示范围计算出其需要这张图片,此时就向服务器发送请求参数键(6x161x168)及存档大数据名称(R000000a1)。
步骤S110:提取小数据文件:
服务器端接收到客户端请求后,根据存档大数据名称在索引元数据文件中记录的存档大数据文件存放路径找到存档大数据文件以及根据索引元数据文件中的索引目录找到相应的索引库,然后索引库中查询键所对应的值,然后根据该值的存储偏移量和文件长度通过数据读取引擎从存档大数据文件中提取出对应的小数据文件内容,返回给客户端,最后返回给用户。
示例:
用户请求如下数据:
http://localhost:8080/ArchiveServer/data/JJ1/201203021353157.jpg
JJ1为存档大数据文件,201203021353157.jpg为小数据文件;
服务接收到数据请求:
1)分析用户的的请求,提取出用户要访问为JJ1的存档大数据文件中包含的201203021353157.jpg文件;
2)在注册信息中查找到名称为JJ1的索引元数据文件;
3)从索引元数据文件的索引目录路径信息中获取当前存档大数据文件的索引库;
4)读取并打开存档大数据文件的索引库,查询键为201203021353157.jpg的记录项,以及根据记录项获取该键对应的存储偏移量和数据长度;
5)从索引元数据文件信息中获取名称为JJ1的存档大数据文件存放路径;
6)打开JJ1的存档大数据文件,通过存储偏移量和数据长度取出所需数据,把数据返回客户端,由客户端返回给用户。
其中,若键为小数据在存档大数据文件中的存储路径的,其提取步骤与上述相同,在此不多加描述。
为方便使用,本发明人自主研发了一套为存档大数据文件创建索引库的软件,其使用方法及参数如下:
以Linux环境为例,进入软件安装目录,执行sh index.sh–h,显示如下帮助信息:
userlocahost$sh index.sh–h
数据文件索引创建工具-版本V1.0
使用:
index.sh[options]-p<file|directory>
参数项:
-p:数据文件路径(可为单个文件,或存放数据的目录)。
可选项:
-v:显示处理过程输出信息。
-i:设置索引库类型(选项:jdb支持Java读取、cdb支持C读取,缺省为jdb)。
-k:指定索引键值的生产方式(选项:path路径作为键,file文件名作为键,缺省为file)。
-e:指定数据文件名和路径的字符编码方式(缺省为GBK)。
-f:强制重新生成索引。
-h:显示帮助信息。
根据以上帮助信息中的命令语法及参数说明,本领域技术人员可清楚了解为存档大数据文件创建索引库的创建方式。
索引库是针对每个存档大数据文件创建单独的索引集合。数据发布后,在访问请求的协议中可以指定具体的小数据文件名称或者小数据文件的在存档大数据文件中的具体路径,并从其索引库内查询所需数据的位置(存储偏移量及数据长度),返回结果。为存档大数据文件创建索引库具有很强的灵活性,如需调整存储位置,或是在新环境中重新部署,只需把存档大数据文件、索引目录和索引元数据文件一起移动到新位置,修改系统配置后即可发布服务。
本发明的另一个实施例,当要发布的数据量特别巨大,希望能从多个存档大数据文件中找到所需的内容时,需要把多个索引库合并成一个大的集群索引库,在逻辑上把所有数据作为一个整体对外提供数据服务,因此,引入了集群索引库;如图2所示包含创建集群索引库的数据存储的方法实施例流程示意图,包括:
步骤S202:将待存储的小数据文件打包生成一个或多个存档大数据文件;其与图1中步骤S102相同。
步骤S204:对每个存档大数据文件在非解包状态下创建索引库;其与图1中步骤104相同。
步骤S206:将已经创建索引库的存挡大数据文件的索引库合并创建集群索引库;
其具体步骤为:指定集群索引库中包含的索引库,并对索引库进行排序;读取为存档大数据文件创建的索引库中的键值对进行重新构建,形成新的键值对;将新的键值对通过哈希算法写入指定集群索引库中包含的索引库,合并成所述集群索引库,以及将集群索引库放入集群索引目录中;
将新的键值对通过哈希算法写入指定集群索引库中进行排序的索引库步骤包括:从新的键值对中提取出键,并对键作哈希计算,生成一个整数;根据整数与集群索引库中包含的索引库的总数生成新的键值对在所述集群索引中所要存入的内部排序好的索引库的序号,然后将新的键值对写入对应序号的索引库。
读取为存档大数据文件创建的索引库中的键值对进行重新构建的步骤为:其键保持不变,值由原来的“存储偏移量+数据长度”变为“存档大数据文件对应的id编号+存储偏移量+数据长度”;存档大数据文件对应的id编号为对应的存档大数据文件在磁盘中的具体文件路径的一个编号。
集群索引库也是一个嵌入式的(Key-Value)类型数据库,不需要用户使用前安装配置,而是由程序在运行时自动在内部启动调用。
集群索引库创建过程中也会同步生成集群索引元数据文件,集群索引元数据文件包括:存档大数据文件描述信息(如,存档大数据文件名称);存档大数据文件存放路径;集群索引目录路径;集群索引库创建类型;集群索引键值生成方式。
集群索引目录为存放集群索引库的一个文件目录,也是由系统自动生成。写入到集群索引库中的键值对数据,都存储在这个集群索引目录中,集群索引目录存在与存档大数据文件相同的路径下。
下面示例集群索引库的创建实施例:
1)指定集群索引内部所要构建的索引库个数,在集群索引内部先按顺序排序好索引库(如1.idx,2.idx,3.idx…等目录)及其索引库结构,其中,1、2、3为索引库的序号;
2)指定一组已经创建了索引库的存档大数据文件,从存档大数据文件的索引库中读取一条“键值对”记录;
3)根据取出的键值对,重新构造新的一组键值对。其键保持不变,值部分由原来的“存储偏移+数据长度”变为“存档大数据文件id编号+存储偏移+数据长度”;
4)从键值对中提取出键,并对键作哈希计算,生成一个long型的整数;然后对该整数取绝对值;再用该绝对值去除集群索引内部的索引库个数,所得的余数即为新键值对在集群索引库中所要存入的内部索引库中的序号;
5)按步骤4计算的结果,把新键值对写入到集群索引中所对应的内部索引库;
6)继续从已经创建了索引库的存档大数据文件的索引库中顺序读取所有的键值对,然后重复步骤2~步骤5的操作。完成所有存档大数据文件的索引库合并集群索引库的合并操作。
步骤S208:将创建集群索引库的存档大数据文件发布至发布系统;
启动数据发布系统之前,需要先把创建好集群索引库的存档大数据文件注册到发布系统中,注册方式是发布系统配置文件中标明存放存档大数据文件的路径;发布系统启动时,将遍历集群索引目录,并搜索集群索引目录下的存档大数据文件,读取存档大数据文件相对应的集群索引元数据文件,并将其信息注册到发布系统中。
步骤S210:对小数据文件的请求;
当用户进行对多个小数据文件进行访问时,客户端可以根据用户操作,计算出小数据文件的所对应的键及存档大数据名称,然后将键及存档大数据名称发送至服务器。
步骤S212:提取小数据文件;
服务器端接收到客户端请求后,根据存档大数据名称对应集群索引元数据文件中的集群索引目录路径找到相应的集群索引目录,根据键找到对应的集群索引库内部的索引库,取出相对应的值,再根据键中的存档大数据文件id编号找到存档大数据文件路径,访问存档大数据文件路径,然后根据该值的存储偏移量和数据长度通过数据读取引擎从存档大数据文件中提取出对应的小数据文件内容,返回给客户端,最后返回给用户。
示例:
1)接收用户提交的查询参数(键及存档大数据名称);
2)对该键做哈希运算,生成一个long型的整数,然后对该整数取绝对值,再用该绝对值去除指定集群索引库内部所要构建的索引库个数;所得的余数即为新键值对在集群索引中所要存入的内部索引库的序号;
3)根据序号到集群索引库内部对应的索引库中进行查询。如查询成功,得到对应的键值对;
4)根据键值对提取出存档大文件id编号、存储偏移量和数据长度三个参数;
5)根据存档大数据文件id编号,在系统内部查询该编号所对应的存档大数据文件在磁盘中的具体文件路径。
6)通过路径访问存档大数据文件,在通过小数据文件的“存储偏移+数据长度”从中提取出数据内容,并返回给客户端。
为方便使用,本发明人自主研发了一套创建集群索引库的软件,其使用方法及参数如下:
以Linux环境为例,进入软件安装目录,执行sh merge.sh–h,显示如下帮助信息:
userlocahost$sh merge.sh–h
数据文件索引创建工具-版本V1.0
使用:
merge.sh[options]-c<size>-s<source_directory>-t<target_directory>
参数项:
-c:指定集群索引的分块数。
-s:指定已经创建了单个数据索引的目录。
-t:指定存放集群索引的目录。
可选项:
-i:设置索引库类型(选项:jdb支持Java读取、cdb支持C读取,缺省为jdb)。
-f:强制重新生成索引。
-h:显示帮助信息。
根据以上帮助信息中的命令语法及参数说明,本领域技术人员可清楚了解集群索引库的创建方式。
本发明各实施例的数据存储的方法,通过对海量小数据文件打包生成存档大数据文件,解决了海量小数据文件的管理问题,更高效的实现了存档大数据的复制、迁移和组织,同时解决了海量小数据文件对磁盘的浪费问题;通过在非解包状态下对存档大数据进行创建索引库及集群索引库,以及直接通过发布系统获取数据,提高了数据访问效率。
装置实施例:
根据本发明实施例,提供了一种数据存储的装置。如图3所示,包括:
存储模块100,用于将待存储的小数据文件打包生成存档大数据文件;
访问模块200,用于在非解包状态下读取存档大数据文件中的每个小数据文件;
索引创建模块300,用于为存档大数据文件创建索引库;
索引查询模块500,用于通过查询索引库调用所述小数据文件。
索引创建模块500包括:
记录子模块301,用于记录每个小数据文件在存档大数据文件中存储的文件识别信息、存储偏移量和数据长度;
编码子模块302,用于对文件识别信息进行编码生成小数据文件对应的键,将偏移量和数据长度作为小数据文件对应的值并与小数据文件对应的键组成小数据文件对应的键值对;
写入子模块303,用于将键值对写入索引库中。
文件识别信息包括:文件名和文件路径。
本方案还可在独立索引库的基础上建立集群索引库,具体装置包括:
合并查询模块400,用于将索引库合并成集群索引库,通过查询集群索引库调用小数据文件;
合并查询模块400包括:
指定子模块401,用于指定集群索引库中包含的索引库;
指定子模块401还包括:
排序单元411,用于对索引库进行排序;
构建子模块403,用于读取为存档大数据文件创建的索引库中的键值对进行重新构建,形成新的键值对;
构建子模块403包括:
构建单元413,用于保持键保持不变,将值变为:存档大数据文件id编号+存储偏移量+数据长度;所述存档大数据文件id编号为对应存档大数据文件路径的一个编号。
写入子模块404,用于将新的键值对写入已指定的索引库,合并成集群索引库。
写入子模块404还包括:
写入单元414,用于将新的键值对通过哈希算法写入指定集群索引库中进行排序的索引库。
写入单元414还包括:
生成子单元424,用于从新的键值对中提取出键,并对键作哈希计算,生成一个整数;根据整数与集群索引库中的索引库的总数生成新的键值对在已排序的索引库中的序号。
本发明各实施例的数据存储的装置,通过对海量小数据文件打包生成存档大数据文件,解决了海量小数据文件的管理问题,更高效的实现了存档大数据的复制、迁移和组织,同时解决了海量小数据文件对磁盘的浪费问题;通过在非解包状态下对存档大数据进行创建索引,以及直接通过文件系统获取数据,提高了数据访问效率。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种数据存储的方法,其特征在于,包括:
将待存储的小数据文件打包生成存档大数据文件;
在非解包状态下,读取所述存档大数据文件中的每个小数据文件;
为所述存档大数据文件创建索引库,通过查询所述索引库调用所述小数据文件。
2.根据权利要求1所述的数据存储的方法,其特征在于,所述为存档大数据文件创建索引库的步骤包括:
记录每个所述小数据文件在所述存档大数据文件中存储的文件识别信息、存储偏移量和数据长度;
对所述文件识别信息进行编码生成所述小数据文件对应的键,将所述存储偏移量和数据长度作为所述小数据文件对应的值并与所述小数据文件对应的键组成所述小数据文件对应的键值对;
将所述键值对写入所述索引库中。
3.根据权利要求2所述的数据存储的方法,其特征在于,还包括:将所述索引库合并成集群索引库,通过查询所述集群索引库调用所述小数据文件;
所述将索引库合并成集群索引库的步骤包括:
指定集群索引库中包含的索引库;
读取为所述存档大数据文件创建的索引库中的键值对进行重新构建,形成新的键值对;
将所述新的键值对写入所述已指定的索引库,合并成所述集群索引库。
4.根据权利要求3所述的数据存储的方法,其特征在于,所述指定集群索引库中包含的索引库的步骤还包括对所述索引库进行排序;
所述将新的键值对写入已指定的索引库的步骤还包括:将所述新的键值对通过哈希算法写入指定集群索引库中进行排序的索引库。
5.根据权利要求4所述的数据存储的方法,其特征在于,所述将新的键值对通过哈希算法写入指定集群索引库中进行排序的索引库的步骤包括:
从所述新的键值对中提取出键,并对所述键作哈希计算,生成一个整数;根据所述整数与所述集群索引库中的索引库的总数生成新的键值对在所述已排序的索引库中的序号。
6.根据权利要求3-5中任一项所述的数据存储的方法,其特征在于,所述读取为所述存档大数据文件创建的索引库中的键值对进行重新构建的步骤包括:
保持所述键不变,将所述值变为:存档大数据文件id编号+存储偏移量+数据长度;
所述存档大数据文件id编号为对应所述存档大数据文件路径的一个编号。
7.根据权利要求2所述的数据存储的方法,其特征在于,所述文件识别信息包括:文件名和文件路径。
8.一种数据存储的装置,其特征在于,包括:
存储模块,用于将待存储的小数据文件打包生成存档大数据文件;
访问模块,用于在非解包状态下读取所述存档大数据文件中的每个小数据文件;
索引创建模块,用于为所述存档大数据文件创建索引库;
索引查询模块,用于通过查询所述索引库调用所述小数据文件。
9.根据权利要求8所述的数据存储的装置,其特征在于,所述索引创建模块包括:
记录子模块,用于记录每个所述小数据文件在所述存档大数据文件中存储的文件识别信息、存储偏移量和数据长度;
编码子模块,用于对所述文件识别信息进行编码生成所述小数据文件对应的键,将所述偏移量和数据长度作为所述小数据文件对应的值并与所述小数据文件对应的键组成所述小数据文件对应的键值对;
写入子模块,用于将所述键值对写入所述索引库中。
10.根据权利要求9所述的数据存储的装置,其特征在于,还包括:
合并查询模块,用于将所述索引库合并成集群索引库,通过查询所述集群索引库调用所述小数据文件;
所述合并查询模块包括:
指定子模块,用于指定集群索引库中包含的索引库;
构建子模块,用于读取为所述存档大数据文件创建的索引库中的键值对进行重新构建,形成新的键值对;
写入子模块,用于将所述新的键值对写入所述已指定的索引库,合并成所述集群索引库。
11.根据权利要求10所述的数据存储的装置,其特征在于,所述指定子模块还包括:
排序单元,用于对所述索引库进行排序;
所述写入子模块还包括:
写入单元,用于将所述新的键值对通过哈希算法写入指定集群索引库中进行排序的索引库。
12.根据权利要求11所述的数据存储的装置,其特征在于,所述写入单元还包括:
生成子单元,用于从所述新的键值对中提取出键,并对所述键作哈希计算,生成一个整数;根据所述整数与所述集群索引库中的索引库的总数生成新的键值对在所述已排序的索引库中的序号。
13.根据权利要求10-12所述的数据存储的装置,其特征在于,所述构建子模块包括:
构建单元,用于保持所述键保持不变,将所述值变为:存档大数据文件id编号+存储偏移量+数据长度;
所述存档大数据文件id编号为对应存档大数据文件路径的一个编号。
14.根据权利要求9所述的数据存储的装置,其特征在于,所述文件识别信息包括:文件名和文件路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410135689.9A CN104978330A (zh) | 2014-04-04 | 2014-04-04 | 一种数据存储的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410135689.9A CN104978330A (zh) | 2014-04-04 | 2014-04-04 | 一种数据存储的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104978330A true CN104978330A (zh) | 2015-10-14 |
Family
ID=54274845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410135689.9A Pending CN104978330A (zh) | 2014-04-04 | 2014-04-04 | 一种数据存储的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104978330A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407166A (zh) * | 2016-09-30 | 2017-02-15 | 乐视控股(北京)有限公司 | 文件名获取处理方法及装置 |
CN106547911A (zh) * | 2016-11-25 | 2017-03-29 | 长城计算机软件与系统有限公司 | 一种海量小文件的存取方法和系统 |
CN106990910A (zh) * | 2015-11-23 | 2017-07-28 | 三星电子株式会社 | 存储设备和存储设备的操作方法 |
CN107193988A (zh) * | 2017-05-30 | 2017-09-22 | 梅婕 | 数据快速清理方法 |
CN107346338A (zh) * | 2017-06-30 | 2017-11-14 | 武汉斗鱼网络科技有限公司 | 文件目录排序方法及装置 |
CN107391627A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据的内存占用分析方法、装置及服务器 |
CN107392745A (zh) * | 2017-07-14 | 2017-11-24 | 上海瀚之友信息技术服务有限公司 | 一种对帐数据碎片化处理方法 |
CN107402924A (zh) * | 2016-05-19 | 2017-11-28 | 普天信息技术有限公司 | Mr文件应用在hdfs的实现方法和装置 |
CN109033345A (zh) * | 2018-07-24 | 2018-12-18 | 中国科学技术大学 | 用于大科学装置控制系统的分布式数据存档参数配置方法 |
WO2020024908A1 (zh) * | 2018-08-03 | 2020-02-06 | 上海点融信息科技有限责任公司 | 用于在区块链即服务平台搜索数据的方法、设备及存储介质 |
CN113918226A (zh) * | 2021-09-07 | 2022-01-11 | 深圳市得一微电子有限责任公司 | 智能设备的开机方法、智能设备、系统与可读存储介质 |
CN114020216A (zh) * | 2021-11-03 | 2022-02-08 | 南京中孚信息技术有限公司 | 一种提升小容量文件落盘速度的方法 |
CN115269524A (zh) * | 2022-09-26 | 2022-11-01 | 创云融达信息技术(天津)股份有限公司 | 一种端到端小文件归集传输和存储的一体化系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226546A (zh) * | 2008-02-01 | 2008-07-23 | 华为技术有限公司 | 文件的组织、检索方法 |
US20100036821A1 (en) * | 2008-08-08 | 2010-02-11 | Estsoft Corp. | File Uploading Method with Function of Abstracting Index Information in Real Time and Web Storage System Using the Same |
CN103559229A (zh) * | 2013-10-22 | 2014-02-05 | 西安电子科技大学 | 基于MapFile的小文件管理服务SFMS系统及其使用方法 |
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
CN103678491A (zh) * | 2013-11-14 | 2014-03-26 | 东南大学 | 一种基于Hadoop中小文件优化和倒排索引的方法 |
-
2014
- 2014-04-04 CN CN201410135689.9A patent/CN104978330A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226546A (zh) * | 2008-02-01 | 2008-07-23 | 华为技术有限公司 | 文件的组织、检索方法 |
US20100036821A1 (en) * | 2008-08-08 | 2010-02-11 | Estsoft Corp. | File Uploading Method with Function of Abstracting Index Information in Real Time and Web Storage System Using the Same |
CN103559229A (zh) * | 2013-10-22 | 2014-02-05 | 西安电子科技大学 | 基于MapFile的小文件管理服务SFMS系统及其使用方法 |
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
CN103678491A (zh) * | 2013-11-14 | 2014-03-26 | 东南大学 | 一种基于Hadoop中小文件优化和倒排索引的方法 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106990910A (zh) * | 2015-11-23 | 2017-07-28 | 三星电子株式会社 | 存储设备和存储设备的操作方法 |
CN107402924A (zh) * | 2016-05-19 | 2017-11-28 | 普天信息技术有限公司 | Mr文件应用在hdfs的实现方法和装置 |
CN106407166A (zh) * | 2016-09-30 | 2017-02-15 | 乐视控股(北京)有限公司 | 文件名获取处理方法及装置 |
CN106547911A (zh) * | 2016-11-25 | 2017-03-29 | 长城计算机软件与系统有限公司 | 一种海量小文件的存取方法和系统 |
CN107193988A (zh) * | 2017-05-30 | 2017-09-22 | 梅婕 | 数据快速清理方法 |
CN107391627B (zh) * | 2017-06-30 | 2020-11-03 | 北京奇虎科技有限公司 | 数据的内存占用分析方法、装置及服务器 |
CN107346338A (zh) * | 2017-06-30 | 2017-11-14 | 武汉斗鱼网络科技有限公司 | 文件目录排序方法及装置 |
CN107391627A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据的内存占用分析方法、装置及服务器 |
CN107392745A (zh) * | 2017-07-14 | 2017-11-24 | 上海瀚之友信息技术服务有限公司 | 一种对帐数据碎片化处理方法 |
CN107392745B (zh) * | 2017-07-14 | 2021-11-30 | 上海瀚之友信息技术服务有限公司 | 一种对帐数据碎片化处理方法 |
CN109033345A (zh) * | 2018-07-24 | 2018-12-18 | 中国科学技术大学 | 用于大科学装置控制系统的分布式数据存档参数配置方法 |
CN109033345B (zh) * | 2018-07-24 | 2022-07-15 | 中国科学技术大学 | 用于大科学装置控制系统的分布式数据存档参数配置方法 |
WO2020024908A1 (zh) * | 2018-08-03 | 2020-02-06 | 上海点融信息科技有限责任公司 | 用于在区块链即服务平台搜索数据的方法、设备及存储介质 |
CN113918226A (zh) * | 2021-09-07 | 2022-01-11 | 深圳市得一微电子有限责任公司 | 智能设备的开机方法、智能设备、系统与可读存储介质 |
CN114020216A (zh) * | 2021-11-03 | 2022-02-08 | 南京中孚信息技术有限公司 | 一种提升小容量文件落盘速度的方法 |
CN114020216B (zh) * | 2021-11-03 | 2024-03-08 | 南京中孚信息技术有限公司 | 一种提升小容量文件落盘速度的方法 |
CN115269524A (zh) * | 2022-09-26 | 2022-11-01 | 创云融达信息技术(天津)股份有限公司 | 一种端到端小文件归集传输和存储的一体化系统及方法 |
CN115269524B (zh) * | 2022-09-26 | 2023-03-24 | 创云融达信息技术(天津)股份有限公司 | 一种端到端小文件归集传输和存储的一体化系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104978330A (zh) | 一种数据存储的方法及装置 | |
US11093466B2 (en) | Incremental out-of-place updates for index structures | |
CN103020315B (zh) | 一种基于主从分布式文件系统的海量小文件存储方法 | |
CN106611046B (zh) | 一种基于大数据技术的空间数据存储处理中间件系统 | |
US8683112B2 (en) | Asynchronous distributed object uploading for replicated content addressable storage clusters | |
Vora | Hadoop-HBase for large-scale data | |
Ma et al. | Query processing of massive trajectory data based on mapreduce | |
US9043540B2 (en) | Systems and methods for tracking block ownership | |
CN105677826A (zh) | 一种针对海量非结构化数据的资源管理方法 | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
US20170123931A1 (en) | Object Storage System with a Distributed Namespace and Snapshot and Cloning Features | |
CN106980699B (zh) | 一种数据处理平台和系统 | |
CN104820714A (zh) | 基于hadoop的海量瓦片小文件存储管理方法 | |
CN103282899B (zh) | 文件系统中数据的存储方法、访问方法及装置 | |
CN113986873B (zh) | 一种海量物联网数据模型化的处理、存储与共享方法 | |
CN111427847B (zh) | 面向用户自定义元数据的索引与查询方法和系统 | |
CN102375853A (zh) | 分布式数据库系统、在其中建立索引的方法和查询方法 | |
CN105912675B (zh) | 一种针对小文件合并的批量删除/查询方法与装置 | |
CN105868286A (zh) | 基于分布式文件系统小文件合并的并行追加方法及系统 | |
CN106570113B (zh) | 一种海量矢量切片数据云存储方法及系统 | |
KR20090063733A (ko) | 다중 복제를 지원하는 분산 파일 시스템에서 데이터 서버의복구 방법 및 그에 적당한 메타데이터 스토리지 및 저장방법 | |
CN103559229A (zh) | 基于MapFile的小文件管理服务SFMS系统及其使用方法 | |
Changtong | An improved HDFS for small file | |
CN103353901A (zh) | 基于Hadoop分布式文件系统的表数据的有序管理方法以及系统 | |
US8543600B2 (en) | Redistribute native XML index key shipping |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151014 |