【技术实现步骤摘要】
一种数据存储方法及装置
本申请涉及计算机
,特别涉及一种数据存储方法及装置。
技术介绍
随着互联网技术的快速发展,网络设备针对网络流量数据的存储、检索成为当前网络管理的主要需求之一。由于网络设备资源有限,MYSQL、ORACLE等大型数据库往往很难在网络设备侧部署。基于此,现有技术中一般采用轻量级关系型数据库进行网络流量数据的存储、检索等等。基于轻量级关系型数据库进行数据存储时,网络设备接收到网络流量数据后,一般将网络流量数据存储至一个单一的数据库文件中,用户存在数据库访问需求时,对上述单一的数据库文件进行访问。实际应用中为保证用户访问数据库文件时产生的数据正确,往往仅仅支持一个或者有限数量的用户同时访问同一数据库文件,而随着用户需求的改变网络流量数据的数据量越来越大,这样的话高并发访问数据库文件的需求越来越旺盛,上述数据存储方式显然难以满足针对数据库的高并发访问需求。
技术实现思路
本申请实施例公开了一种数据存储方法及装置,以满足针对数据库文件的高并发访问需求。为达到上述目的,本申请实施例公开了一种数据存储方法,所述方法包括:获得待存储至数据库的各条数据,其中,每条数据中包含数据库的预设列名对应的数值;从所述各条数据中确定至少一个数据列,生成至少一个数据列文件,其中,每个数据列文件中存储所述至少一数据列中的一个数据列;生成各个数据列文件的位图索引文件;存储各个数据列文件、各个位图索引文件、目标对应关系,其中,所述目标对应关系为:每一数据列文件与该数据列文件的位图索引文件、该数据列文件存储的数据列对应的预设列名三者之间的对应关系。为达到上述目的,本申请实 ...
【技术保护点】
一种数据存储方法,其特征在于,所述方法包括:获得待存储至数据库的各条数据,其中,每条数据中包含数据库的预设列名对应的数值;从所述各条数据中确定至少一个数据列,生成至少一个数据列文件,其中,每个数据列文件中存储所述至少一数据列中的一个数据列;生成各个数据列文件的位图索引文件;存储各个数据列文件、各个位图索引文件、目标对应关系,其中,所述目标对应关系为:每一数据列文件与该数据列文件的位图索引文件、该数据列文件存储的数据列对应的预设列名三者之间的对应关系。
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。