一种数据存储方法及装置制造方法及图纸

技术编号:16969710 阅读:48 留言:0更新日期:2018-01-07 06:37
本申请实施例公开了一种数据存储方法及装置,涉及计算机技术领域,其中,上述方法包括:获得待存储至数据库的各条数据,其中,每条数据中包含数据库的预设列名对应的数值;从所述各条数据中确定至少一个数据列,生成至少一个数据列文件,每个数据列文件中存储所述至少一数据列中的一个数据列;生成各个数据列文件的位图索引文件;存储各个数据列文件、各个位图索引文件、目标对应关系,其中,所述目标对应关系为:每一数据列文件与该数据列文件的位图索引文件、该数据列文件存储的数据列对应的预设列名三者之间的对应关系。应用本申请实施例提供的方案存储数据,能够很好的支持针对数据列文件的高并发访问。

【技术实现步骤摘要】
一种数据存储方法及装置
本申请涉及计算机
,特别涉及一种数据存储方法及装置。
技术介绍
随着互联网技术的快速发展,网络设备针对网络流量数据的存储、检索成为当前网络管理的主要需求之一。由于网络设备资源有限,MYSQL、ORACLE等大型数据库往往很难在网络设备侧部署。基于此,现有技术中一般采用轻量级关系型数据库进行网络流量数据的存储、检索等等。基于轻量级关系型数据库进行数据存储时,网络设备接收到网络流量数据后,一般将网络流量数据存储至一个单一的数据库文件中,用户存在数据库访问需求时,对上述单一的数据库文件进行访问。实际应用中为保证用户访问数据库文件时产生的数据正确,往往仅仅支持一个或者有限数量的用户同时访问同一数据库文件,而随着用户需求的改变网络流量数据的数据量越来越大,这样的话高并发访问数据库文件的需求越来越旺盛,上述数据存储方式显然难以满足针对数据库的高并发访问需求。
技术实现思路
本申请实施例公开了一种数据存储方法及装置,以满足针对数据库文件的高并发访问需求。为达到上述目的,本申请实施例公开了一种数据存储方法,所述方法包括:获得待存储至数据库的各条数据,其中,每条数据中包含数据库的预设列名对应的数值;从所述各条数据中确定至少一个数据列,生成至少一个数据列文件,其中,每个数据列文件中存储所述至少一数据列中的一个数据列;生成各个数据列文件的位图索引文件;存储各个数据列文件、各个位图索引文件、目标对应关系,其中,所述目标对应关系为:每一数据列文件与该数据列文件的位图索引文件、该数据列文件存储的数据列对应的预设列名三者之间的对应关系。为达到上述目的,本申请实施例公开了,一种数据存储装置,所述装置包括:数据获得模块,用于获得待存储至数据库的各条数据,其中,每条数据中包含数据库的预设列名对应的数值;文件获得模块,用于从所述各条数据中确定至少一个数据列,生成至少一个数据列文件,其中,每个数据列文件中存储所述至少一数据列中的一个数据列;文件生成模块,用于生成各个数据列文件的位图索引文件;信息存储模块,用于存储各个数据列文件、各个位图索引文件、目标对应关系,其中,所述目标对应关系为:每一数据列文件与该数据列文件的位图索引文件、该数据列文件存储的数据列对应的预设列名三者之间的对应关系。由以上可见,本申请实施例提供的方案中,获得待存储至数据库的各条数据后,从各条数据中确定至少一个数据列,生成至少一个数据列文件,再生成各个数据列文件的位图索引文件,并存储各个数据列文件、各个位图索引文件、各个数据列文件与其位图索引文件之间的对应关系。与现有技术相比,应用本申请实施例提供的方案进行数据存储时,数据被存储在不同的数据列文件中,而非存储在单一的数据库文件中,由于文件数量增多,所以能够很好的支持针对数据列文件的高并发访问需求。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提供的第一种数据存储方法的流程示意图;图2为本申请实施例提供的一种位图索引文件生成方法的流程示意图;图3为本申请实施例提供的第二种数据存储方法的流程示意图;图4为本申请实施例提供的第三种数据存储方法的流程示意图;图5为本申请实施例提供的第四种数据存储方法的流程示意图;图6为本申请实施例提供的第一种数据存储装置的结构示意图;图7为本申请实施例提供的一种位图索引文件生成装置的结构示意图;图8为本申请实施例提供的第二种数据存储装置的结构示意图;图9为本申请实施例提供的第三种数据存储装置的结构示意图;图10为本申请实施例提供的第四种数据存储装置的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。图1为本申请实施例提供的第一种数据存储方法的流程示意图,该方法包括:S101:获得待存储至数据库的各条数据。可以理解的是,在数据库中存储数据时,最终以数据库文件的形式展现,一个数据库文件中可以包含一张或者多张数据表。在一张数据表中,横向可以认为是一条一条的数据,纵向可以认为是不同的列,这样可以认为数据表中的每条数据所包含的数据为:与各个列相对应的具体数值。例如,一个列为设备标识列,列名可以为“设备标识”,一条数据中表示设备标识的数值为“5”,则与该列相对应的具体数值为:5。基于上述情况,上述获得的每条数据中包含数据库的预设列名对应的数值,也就是与列名为预设列名的各个列相对应的具体数值。上述预设列名的数量可以是1、2、3、10等等。具体的,上述获得的数据可以为网络流量数据,当然还可以是其他类型需要在数据库中进行存储的数据,本申请并不对此进行限定。另外,当上述获得的数据为网络流量数据时,本实施例的执行主体可以理解为:网络设备。在本申请的一种实现方式中,本步骤所获得的数据可以是从外部接收的数据,例如,通过网络接收的网络流量数据等等,另外,本步骤所获得的数据还可以是本地或者其他设备的数据库文件中存储的数据,例如,本地轻量型关系数据库文件中存储的数据等。S102:从各条数据中确定至少一个数据列,生成至少一个数据列文件。其中,每个数据列文件中存储上述至少一数据列中的一个数据列,每一数据列包含的数值对应于同一列名。获得的所有数据中对应于同一列名的数值形成一列,可以将这一列称之为数据列,也就是一个数据列可以为上述所形成一列的全部。另外,由于上述获得的数据的条数可能很多,例如,100万条甚至更多条,这样所有上述获得的数据中与每一预设列名相对应的数值的数量会很大,本步骤中确定数据列后还需要对数据列进行存储,形成文件,为防止所形成的文件过大,还可以将上述形成的一列进行划分得到一个以上数据列,也就是一个数据列还可以是上述所形成一列的一部分。具体的,为便于识别,上述各个数据列文件可以基于其中存储的数据列所对应的列名进行命名。在本申请的一种实现方式中,上述数据列文件可以为二进制文件。S103:生成各个数据列文件的位图索引文件。位图索引是一种使用位图的特殊数据库索引,主要是针对具有大量相同值的列而创建的。位图索引文件可以理解为:存储位图索引而形成的文件,其中存储有位图索引的相关信息,这些信息可以是位图索引的原始信息,还可以是对位图索引进行压缩后形成的压缩信息,本申请并不对此进行限定。生成位图索引文件的具体方式详见图2所示实施例部分,这里暂不详述。S104:存储各个数据列文件、各个位图索引文件、目标对应关系。其中,上述目标对应关系为:每一数据列文件与该数据列文件的位图索引文件、该数据列文件存储的数据列对应的预设列名三者之间的对应关系。由于数据列文件是存储数据列而生成的,且一个数据列文件中仅存储一个数据列,所以数据列文件与数据列存在对应关系,又由于数据列是按照列名确定的,所以数据列与列名存在对应关系,进而可以认为数据列文件与列名之间存在对本文档来自技高网...
一种数据存储方法及装置

【技术保护点】
一种数据存储方法,其特征在于,所述方法包括:获得待存储至数据库的各条数据,其中,每条数据中包含数据库的预设列名对应的数值;从所述各条数据中确定至少一个数据列,生成至少一个数据列文件,其中,每个数据列文件中存储所述至少一数据列中的一个数据列;生成各个数据列文件的位图索引文件;存储各个数据列文件、各个位图索引文件、目标对应关系,其中,所述目标对应关系为:每一数据列文件与该数据列文件的位图索引文件、该数据列文件存储的数据列对应的预设列名三者之间的对应关系。

【技术特征摘要】
1.一种数据存储方法,其特征在于,所述方法包括:获得待存储至数据库的各条数据,其中,每条数据中包含数据库的预设列名对应的数值;从所述各条数据中确定至少一个数据列,生成至少一个数据列文件,其中,每个数据列文件中存储所述至少一数据列中的一个数据列;生成各个数据列文件的位图索引文件;存储各个数据列文件、各个位图索引文件、目标对应关系,其中,所述目标对应关系为:每一数据列文件与该数据列文件的位图索引文件、该数据列文件存储的数据列对应的预设列名三者之间的对应关系。2.根据权利要求1所述的方法,其特征在于,所述生成各个数据列文件的位图索引文件的步骤,包括:按照以下方式生成每一数据列文件的位图索引文件:确定目标数据列文件的位图索引的至少两个键值,其中,将所述至少两个键值从小到大进行排列时,形成等差数列,所述等差数列中的每两个相邻的键值形成一个位图段,所述目标数据列文件为:各个数据列文件中的一个;根据所述至少两个键值确定的位图段,获得所述目标数据列文件存储的数据列包含的数值的位图索引值,并根据所获得的位图索引值生成所述目标数据列文件的目标位图索引;对所述目标位图索引进行压缩处理,获得所述目标位图索引的位向量;根据所获得的位向量生成所述目标数据列文件的位图索引文件。3.根据权利要求2所述的方法,其特征在于,所述对所述目标位图索引进行压缩处理,获得所述目标位图索引的位向量的步骤,包括:确定所述目标位图索引中取值连续相同的比特位的最大数量;根据所述最大数量确定对所述目标位图索引进行压缩处理后一个分段的目标段长;设置初始位置为所述目标位图索引的第一个比特位;从所述初始位置开始确定所述目标位图索引中取值连续相同的比特位的目标数量;判断所述目标数量是否小于第一数值,其中,所述第一数值等于所述目标段长减1;若为是,生成包含源码标识、源码比特位的源码段,作为所述目标位图索引的一个位向量,其中,所述源码比特位为:所述目标位图索引中从所述起始位置开始所述目标数量个比特位;否则,根据所述目标段长更新所述目标数量,对所述目标位图索引中从所述起始位置开始所述目标数量个比特位进行压缩处理,获得压缩后比特位,并生成包含压缩标识、被压缩位取值标识、压缩后比特位的编码段,作为所述目标位图索引的一个位向量,其中,所述被压缩位取值标识为:用于表示进行压缩处理的比特位取值的标识;将所述初始位置向后移动所述目标数量个比特位,在所述目标位图索引中还存在未经压缩处理的比特位时,返回所述从所述初始位置开始确定所述目标位图索引中取值连续相同的比特位的目标数量的步骤。4.根据权利要求3所述的方法,其特征在于,所述根据所述最大数量确定对所述目标位图索引进行压缩处理后一个分段的目标段长的步骤,包括:按照以下公式确定对所述目标位图索引进行压缩处理后一个分段的目标段长:2(Slen-2)-1=floor(Nummax/(Slen-1))其中,Nummax表示所述最大数量,Slen表示所述目标段长,floor()表示取小于或等于操作数的最大整数;所述根据所述目标段长更新所述目标数量的步骤,包括:按照以下表达式更新所述目标数量:Num’=min{floor(Num/(Slen-1))*(Slen-1),((2(Slen-2)-1)*(Slen-1))}其中,Num表示更新前的目标数量,Num’表示更新后的目标数量,min{,}表示取两个操作数中的最小值;所述对所述目标位图索引中从所述起始位置开始所述目标数量个比特位进行压缩处理,获得压缩后比特位的步骤,包括:按照以下表达式确定中间数值Cbit:Cbit=Num’/(Slen-1);将所述Cbit转换为二进制比特位,将所述二进制比特位作为所述压缩后比特位。5.根据权利要求3所述的方法,其特征在于,所述根据所获得的位向量生成所述目标数据列文件的位图索引文件的步骤,包括:确定文件头信息、所述目标数据列文件所包含数值的行数;确定所获得的位向量在位图索引文件中的存储位置;生成包含所述文件头信息、目标段长、行数、键值、键值的数量、存储位置以及所获得的位向量的文件,作为所述目标数据列文件的位图索引文件。6.根据权利要求2-5中任一项所述的方法,其特征在于,在所述获得待存储至数据库的各条数据的步骤后,还包括:确定各条数据对应的数据分区,并确定用于存储各个数据分区所包含数据的文件夹;从所述各条数据中确定至少一个数据列,生成至少一个数据列文件的步骤,包括:从对应于同一数据分区的各条数据中确定至少一个数据列,生成至少一个数据列文件,并获得数据列与数据分区的对应关系;所述存储各个数据列文件、各个位图索引文件、目标对应关系的步骤,包括:根据数据列与数据分区之间的对应关系,将各个数据列文件、各个位图索引文件、目标对应关系存储至相应数据分区对应的文件夹中。7.根据权利要求6所述的方法,其特征在于,所述确定用于存储各个数据分区所包含数据的文件夹的步骤,包括:获得分布式存储设备的负载状态;根据所获得的负载状态,从分布式存储设备中确定用于存储各个数据分区所包含数据的存储设备;基于每一数据分区对应的存储设备确定用于存储该数据分区所包含数据的文件夹,并记录数据分区、存储设备、文件夹三者之间的对应关系。8.根据权利要求6所述的方法,其特征在于,所述方法还包括:接收针对待插入数据的插入指令;根据所述插入指令确定待插入数据对应的数据分区,作为待插入数据分区;以列为基准,将待插入数据分别存储至预设大小的数组中,并缓存各个数组;在满足硬盘写入条件时,将各个数组中的数据分别插入所述待插入数据分区对应文件夹的数据列文件中,并根据插入数据的数据列文件中所插入的数据更新该数据列文件的位图索引文件。9.根据权利要求6所述的方法,其特征在于,所述方法还包括:接收针对待查询条件的查询指令,其中,所述查询指令中携带待查询列的列名和查询条件;根据所述待查询列的列名,确定待查询数据分区;将所述待查询数据分区对应目标文件夹中存储的目标对应关系加载至内存中;根据所加载目标对应关系中记载的列名,确定所述目标文件夹中与所述待查询列的列名相匹配的目标位图索引文件;从所述目标文件夹中将目标位图索引文件加载至内存中,并获得各个目标位图索引文件包含的位向量,对所获得的位向量分别进行解压缩处理,获得各个目标位图索引文件的位图索引;在所获得的位图索引中查找与所述查询条件相匹配的位图索引值;按照查找到的位图索引值从所述目标文件夹中的数据列文件中获得查询结果。10.根据权利要求1所述的方法,其特征在于,在所述获得待存储至数据库的各条数据的步骤之前,还包括:接收到数据库切换指令和/或存在外置硬盘的情况下,判断待切换数据库的动态库是否处于可用状态;若为是,关闭已加载的原数据库的动态库文件,并加载所述待切换数据库的动态文件;所述获得待存储至数据库的各条数据的步骤,包括:获得待存储至所述待切换数据库的各条数据。11.根据权利要求1所述的方法,其特征在于,在所述获得待存储至数据库的各条数据的步骤之前,还包括:接收控制设备发送的数据库切换指令;根据所述数据库切换指令从本地已安装的数据库中确定待切换数据库,并将所述待切换数据库切换至工作状态;所述获得待存储至数据库的各条数据的步骤,包括:获得待存储至所述待切换数据库的各条数据。12.一种数据存储装置,其特征在于,所述装置包括:数据获得模块,用于获得待存储至数据库的各条数据,其中,每条数据中包含数据库的预设列...

【专利技术属性】
技术研发人员:窦成龙刘清宇白洋
申请(专利权)人:新华三信息安全技术有限公司
类型:发明
国别省市:安徽,34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1