CN112667592B - 数据存储方法、装置、计算机设备和存储介质 - Google Patents
数据存储方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112667592B CN112667592B CN202011549438.7A CN202011549438A CN112667592B CN 112667592 B CN112667592 B CN 112667592B CN 202011549438 A CN202011549438 A CN 202011549438A CN 112667592 B CN112667592 B CN 112667592B
- Authority
- CN
- China
- Prior art keywords
- data
- file
- queue
- crc
- circular
- 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.)
- Active
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 123
- 238000000034 method Methods 0.000 title claims abstract description 89
- 238000003860 storage Methods 0.000 title claims abstract description 57
- 238000012545 processing Methods 0.000 claims abstract description 60
- 238000006243 chemical reaction Methods 0.000 claims description 69
- 230000006870 function Effects 0.000 claims description 35
- 230000008569 process Effects 0.000 claims description 35
- 238000007726 management method Methods 0.000 claims description 23
- 238000012795 verification Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012216 screening Methods 0.000 claims description 8
- 230000002159 abnormal effect Effects 0.000 description 8
- 125000004122 cyclic group Chemical group 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012550 audit Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003862 health status Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012954 risk control Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据处理技术领域,提供一种数据存储方法、装置、计算机设备和存储介质,方法包括:获取待上报的采集数据;对采集数据进行转化处理得到转化数据;基于采集数据的数据数量及预设的数据存储个数,生成指定数量的多个循环队列;基于指定数量,为每一个循环队列分配一一对应的队列标签;按照采集数据的采集时间的先后顺序、队列标签的数值从小到大的顺序以及数据存储个数,将转化数据分配至各循环队列内;将各循环队列一一存储到本地预先创建的空白文件内,生成与各循环队列一一对应的数据文件。本申请能够有效提高数据存储的稳定性,降低数据丢失的风险。本申请还可以应用于区块链领域,上述转化数据等数据可以存储于区块链上。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种数据存储方法、装置、计算机设备和存储介质。
背景技术
现有终端设备在进行数据存储时采用的存储方法通常是将数据全部存储到一个文件中,然而当需要存储的数据的数量很多时,如数据的数量级达到上万级别时,在将所有数据全部存储到一个文件后中,如果出现了由于设备App崩溃或设备异常关机等场景而导致文件异常,如文件丢失、文件损坏等情况,进而使得该文件中包含的所有数据会全部丢失。因而,现有将数据全部存储到一个文件中的数据存储方法存在数据存储的稳定性差、数据丢失风险高的问题。
发明内容
本申请的主要目的为提供一种数据存储方法、装置、计算机设备和存储介质,旨在解决现有将数据全部存储到一个文件中的数据存储方法存在数据存储的稳定性差、数据丢失风险高的技术问题。
本申请提出一种数据存储方法,所述方法包括步骤:
获取待上报的采集数据;
基于预设的二进制协议对所述采集数据进行转化处理,将所述采集数据转化成对应的转化数据;
基于所述采集数据的数据数量以及预设的数据存储个数,生成指定数量的多个循环队列;
基于所述指定数量,为每一个所述循环队列分配一一对应的队列标签,其中,所述队列标签的数值范围为1至n,所述队列标签的取值为正整数,n为所述指定数量对应的数值;
基于所述采集数据的采集时间的先后顺序、所述队列标签的数值从小到大的顺序以及所述数据存储个数,按照预设规则将所有所述转化数据对应分配至各所述循环队列内;
将各所述循环队列一一存储到本地预先创建的空白文件内,生成与各所述循环队列一一对应的数据文件。
可选地,所述基于所述采集数据的采集时间的先后顺序、所述队列标签的数值从小到大的顺序以及所述数据存储个数,按照预设规则将所有所述转化数据对应分配至各所述循环队列内数据存储个数的步骤,包括:
判断所述数据数量是否为所述数据存储个数的倍数;
若所述数据数量为所述数据存储个数的倍数,从所有所述循环队列中筛选出队列标签为1的第一循环队列;
根据所述采集数据的采集时间的先后顺序,依次将所述转化数据写入至所述第一循环队列内,并在转化数据的写入过程中判断所述第一循环队列内包含的转化数据的数量是否等于所述数据存储个数,其中,将所述第一循环队列内存储的转化数据记为第一数据;
若所述第一循环队列内包含的转化数据的数量等于所述数据存储个数,则停止对于所述第一循环队列的数据写入,并从所有所述循环队列中筛选出队列标签为2的第二循环队列;
根据所述采集数据的采集时间的先后顺序,依次将所有所述转化数据中除所述第一数据外的其他数据写入至所述第二循环队列内,以使所述第二循环队列内存储的其他数据的数量等于所述数据存储个数,依此类推,直至完成将所有所述转化数据分配至各所述循环队列内的分配操作处理。
可选地,所述将各所述循环队列一一存储到本地预先创建的空白文件内,生成与各所述循环队列一一对应的数据文件的步骤之后,包括:
为每一个所述数据文件生成一一对应的数据文件配置类,其中,所述数据文件配置类至少包括有以下属性:文件空间大小数值、文件名称、文件存储路径以及内部包含的循环队列的队列标签;
将所有所述数据文件配置类保存至预先创建的全局管理配置文件内。
可选地,所述将各所述循环队列一一存储到本地预先创建的空白文件内,生成与各所述循环队列一一对应的数据文件的步骤之后,包括:
判断是否接收到与所述采集数据对应的数据上报指令;
若接收到所述数据上报指令,基于数值为1的指定队列标签,对所述全局管理配置文件中包含的所有数据文件配置类进行遍历处理,查找出与所述指定队列标签对应的指定数据文件配置类;
获取所述指定文件配置类中包含的指定文件存储路径与指定文件名称;
基于所述指定文件存储路径,查找出与所述指定文件名称对应的第一数据文件;
对所述第一数据文件进行crc校验处理,并判断是否校验通过;
若校验通过,调用预设的mmap函数将所述第一数据文件加载至内存中;
基于所述指定队列标签,调用预设的KV接口从所述第一数据文件内存储的循环队列中提取出与所述指定队列标签对应的第一转化数据,并对第一转化数据进行上报处理;
在完成了与所述第一数据文件对应的数据上报处理后,参照所述第一数据文件的数据上报处理方式,获取与数值为2的队列标签对应的第二数据文件并进行与所述第二数据文件对应的数据上报处理,依此类推,直至完成对于所有所述数据文件中包含的转化数据的数据上报处理。
可选地,所述对所述第一数据文件进行crc校验处理,并判断是否校验通过的步骤,包括:
获取预存储的与所述第一数据文件对应的指定crc文件;
从所述指定crc文件提取出内部存储的第一crc值;
基于所述第一数据文件内的循环队列中当前包含的转化数据,调用预设的crc校验函数计算与所述第一数据文件对应的第二crc值;
判断所述第二crc值是否与所述第一crc值相同;
若所述第二crc值与所述第一crc值相同,则判定通过验证;
若所述第二crc值与所述第一crc值不相同,则判定未通过验证。
可选地,所述获取预存储的与所述第一数据文件对应的指定crc文件的步骤之前,包括:
在生成了指定数据文件后,生成与所述指定数据文件对应的crc文件,其中,所述指定数据文件为所有所述数据文件中的任意一个文件,所述crc文件为与所述指定数据文件的文件名称相同,但文件后缀为crc的文件;
基于所述指定数据文件内的循环队列中包含的转化数据,调用所述crc校验函数计算与所述指定数据文件对应的指定crc值;
将所述指定crc值保存到所述crc文件内;
将所述crc文件存储于本地。
可选地,所述基于所述指定队列标签,调用预设的KV接口从所述第一数据文件内存储的循环队列中提取出与所述指定队列标签对应的第一转化数据,并对第一转化数据进行上报处理的步骤之后,包括:
判断所述第一转化数据是否已成功上报;
若所述第一转化数据已成功上报,删除所述内存中的所述第一数据文件;以及,
删除本地存储的第一数据文件内的第一循环队列中包含的转化数据。
本申请还提供一种数据存储装置,包括:
第一获取模块,用于获取待上报的采集数据;
转化模块,用于基于预设的二进制协议对所述采集数据进行转化处理,将所述采集数据转化成对应的转化数据;
第一生成模块,用于基于所述采集数据的数据数量以及预设的数据存储个数,生成指定数量的多个循环队列;
第一分配模块,用于基于所述指定数量,为每一个所述循环队列分配一一对应的队列标签,其中,所述队列标签的数值范围为1至n,所述队列标签的取值为正整数,n为所述指定数量对应的数值;
第二分配模块,用于基于所述采集数据的采集时间的先后顺序、所述队列标签的数值从小到大的顺序以及所述数据存储个数,按照预设规则将所有所述转化数据对应分配至各所述循环队列内;
第二生成模块,用于将各所述循环队列一一存储到本地预先创建的空白文件内,生成与各所述循环队列一一对应的数据文件。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本申请中提供的数据存储方法、装置、计算机设备和存储介质,具有以下有益效果:
本申请中提供的数据存储方法、装置、计算机设备和存储介质,在将待上报的采集数据转化为对应的转化数据后,会按照一定的数据分配策略将所有采集数据对应的转化数据进行分散存储以存储到不同的循环队列内,并将各循环队列一一存储至对应的空白文件内以生成各自包含有部分转化数据的数据文件,进而实现利用多文件分散存储的方式完成对于海量数据的存储处理。不同于将所有数据只存储至一个总文件内的存储方式,分散存储的方式能够避免各数据文件均出现异常而导致出现所有数据丢失的情况,有效地提高了数据存储的稳定性,以及有效降低数据丢失的风险。
附图说明
图1是本申请一实施例的数据存储方法的流程示意图;
图2是本申请一实施例的数据存储装置的结构示意图;
图3是本申请一实施例的计算机设备的结构示意图。
本申请目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用于解释本申请,并不用于限定本申请。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
参照图1,本申请一实施例的数据存储方法,包括:
S1:获取待上报的采集数据;
S2:基于预设的二进制协议对所述采集数据进行转化处理,将所述采集数据转化成对应的转化数据;
S3:基于所述采集数据的数据数量以及预设的数据存储个数,生成指定数量的多个循环队列;
S4:基于所述采集数据的采集时间的先后顺序、所述队列标签的数值从小到大的顺序以及所述数据存储个数,按照预设规则将所有所述转化数据对应分配至各所述循环队列内;
S5:按照所述采集数据的采集时间的先后顺序,将所述转化数据分配至各所述循环队列内,以使各所述循环队列内存储有与所述数据存储个数的数量相同的多个转化数据;
S6:将各所述循环队列一一存储到本地预先创建的空白文件内,生成与各所述循环队列一一对应的数据文件。
如上述步骤S1至S6所述,本方法实施例的执行主体为一种数据存储装置。在实际应用中,上述数据存储装置可以通过虚拟装置,例如软件代码实现,也可以通过写入或集成有相关执行代码的实体装置实现,且可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。上述数据存储装置具体可为终端设备。本实施例中的数据存储装置,能够有效缓解数据存储的压力,降低数据丢失的风险。具体地,首先获取待上报的采集数据。其中,上述采集数据可为由相关的业务App采集的业务数据,例如可包括埋点数据、页面访问数据、Session数据、App异常数据等几大类数据。上述采集数据为数据量级较大的数据,例如采集数据可包括有几万条的业务数据。在获取了上述采集数据后,基于预设的二进制协议对上述采集数据进行转化处理,将上述采集数据转化成对应的转化数据。其中,上述二进制协议具体可为MessagePack,通过使用MessagePack能够将与采集数据对应的数据类型和对象类型转化为二进制数据,也即上述转化数据,有利于后续在内存中实现对于数据的方便读写。然后基于上述采集数据的数据数量以及预设的数据存储个数,生成指定数量的多个循环队列。其中,对于上述数据存储个数的具体数值不作具体限定,可根据实际需求进行设置,例如可设为30。另外,上述指定数量为需要生成的用于存储与采集数据对应的转化数据的循环队列的梳理,可以按照与上述采集数据的数据数量及数据存储个数对应的计算公式计算出上述指定数量。具体的,如果数据数量为数据存储个数的倍数,则调用公式count=a/b来计算出指定数量,count为指定数量,a为数据数量,b为数据存储个数,/为取整符号。而如果数据数量不为数据存储个数的倍数,则调用公式count=a/b+1来计算出指定数量,count为指定数量,a为数据数量,b为数据存储个数,/为取整符号,由于数据数量与数据存储个数之间不为整除关系,则在原来的公式基础上加1以实现使用循环队列完成对所有转化数据的存储。举例地,如果采集数据为3万条埋点数据,即上述数据数量为3万,且上述数据存储个数设为30时,通过计算上述数据数量与上述数据存储个数的商,即可算出上述指定数量为30000/30=1000。另外,如果上述数据数量不是数据存储个数的倍数,例如为30015条埋点数据,则采用count=数据数量/数据存储个数+1的公式可计算出上述指定数量为10001。之后基于上述指定数量,为每一个上述循环队列分配一一对应的队列标签,其中,上述队列标签的数值范围为1至n,上述队列标签的取值为正整数,n为上述指定数量对应的数值。其中,循环队列是指将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾,使用循环队列可以更简单防止伪溢出的发生。循环队列采用了头指针head与尾指针tail的双指针,默认head与tail均指向0,当head与tail相等时表示当前的循环队列中不包含数据,而当tail+1对上述指定数量取模等于0时则表示循环队列满了,即所有循环队列内均存储了与数据存储个数相等的多个数据,完成了将所有转化数据对应存储至各循环队列内。举例地,如果上述指定数量为1000,则会从1至1000中包含的1000个数值中随机为每一个循环队列分配一个数值以作为对应的队列标签,且每个循环队列的队列标签各不相同,循环队列的队列标签可用于确定后续每一个循环队列中数据写入或取出的顺序,能够保证循环队列中数据写入及取出操作的规范进行。后续按照上述采集数据的采集时间的先后顺序,将上述转化数据分配至各上述循环队列内,以使各上述循环队列内存储有与上述数据存储个数的数量相同的多个转化数据。其中,当采集数据的数据数量为数据存储个数的倍数时,如采集数据为3万条埋点数据,将上述数据存储个数设为30,则可生成1000个循环队列,且循环队列的队列标签分别为1至1000,则先将采集时间最前的30个第一转化数据分配至队列标签为1的第一循环队列,在完成对于第一循环队列的存储后,再将采集时间第二前的30个第二转化数据分配至队列标签为2的第二循环队列,第二转化数据为处于第一转化数据后面且相邻的30条数据,依此类推直至将完成将所有上述转化数据分配至各上述循环队列内的分配操作处理。另外,如果采集数据的数据数量不为数据存储个数的倍数,则可参照上面提及的采集数据的数据数量为数据存储个数的倍数的操作流程,在除队列标签为n的循环队列外的其他全部循环队列中均依次分配与数据存储个数相同的转化数据,再将剩余的转化数据全部分配到队列标签为n的循环队列,剩余的转化数据的数量可基于数据存储个数对数据数量进行整除后生成的余数得到。最后将各上述循环队列一一存储到本地预先创建的空白文件内,生成与各上述循环队列一一对应的数据文件。其中,数据文件以内部包含的循环队列的队列标签作为key,以循环队列中存储的转化数据对应的数组作为value来实现对于内部的转化数据的KV数据存储。另外,在生成了各上述数据文件后,可为各数据文件设置一一对应的文件名称,对于数据文件的文件名称可以根据实际需求进行设置,只需保证各数据文件之间的文件名称不相同即可。此外可以根据各数据文件的存储信息来获取得到各数据文件分别对应的文件空间大小数值、文件存储路径以及内部包含的循环队列的队列标签等文件标识数据。本实施例在将待上报的采集数据转化为对应的转化数据后,会按照一定的数据分配策略将所有采集数据对应的转化数据进行分散存储以存储到不同的循环队列内,并将各循环队列一一存储至对应的空白文件内以生成各自包含有部分转化数据的数据文件,进而实现利用多文件分散存储的方式完成对于海量数据的存储处理。不同于将所有数据只存储至一个总文件内的存储方式,分散存储的方式能够避免各数据文件均出现异常而导致出现所有数据丢失的情况,有效地提高了数据存储的稳定性,以及有效降低数据丢失的风险。
进一步地,本申请一实施例中,上述步骤S5,包括:
S500:判断所述数据数量是否为所述数据存储个数的倍数;
S501:若所述数据数量为所述数据存储个数的倍数,从所有所述循环队列中筛选出队列标签为1的第一循环队列;
S502:根据所述采集数据的采集时间的先后顺序,依次将所述转化数据写入至所述第一循环队列内,并在转化数据的写入过程中判断所述第一循环队列内包含的转化数据的数量是否等于所述数据存储个数,其中,将所述第一循环队列内存储的转化数据记为第一数据;
S503:若所述第一循环队列内包含的转化数据的数量等于所述数据存储个数,则停止对于所述第一循环队列的数据写入,并从所有所述循环队列中筛选出队列标签为2的第二循环队列;
S504:根据所述采集数据的采集时间的先后顺序,依次将所有所述转化数据中除所述第一数据外的其他数据写入至所述第二循环队列内,以使所述第二循环队列内存储的其他数据的数量等于所述数据存储个数,依此类推,直至完成将所有所述转化数据分配至各所述循环队列内的分配操作处理。
如上述步骤S500至S504所述,上述基于上述采集数据的采集时间的先后顺序、上述队列标签的数值从小到大的顺序以及上述数据存储个数,按照预设规则将所有所述转化数据对应分配至各所述循环队列内数据存储个数的步骤的步骤,具体可包括:首先判断上述数据数量是否为上述数据存储个数的倍数,如果上述数据数量为上述数据存储个数的倍数。从所有上述循环队列中筛选出队列标签为1的第一循环队列。然后根据上述采集数据的采集时间的先后顺序,依次将上述转化数据写入至上述第一循环队列内,并在转化数据的写入过程中判断上述第一循环队列内包含的转化数据的数量是否等于上述数据存储个数,其中,将上述第一循环队列内存储的转化数据记为第一数据。如果上述第一循环队列内包含的转化数据的数量等于上述数据存储个数,则停止对于上述第一循环队列的数据写入,并从所有上述循环队列中筛选出队列标签为2的第二循环队列。其中,当第一循环队列内包含的转化数据的数量等于上述数据存储个数时,表明第一循环队列内写入的数据已达到上限,也即完成了对于第一循环队列的写入处理,则此时会将当前的队列标签+1,即向后移动一位,使得队列标签为变为1+1=2,之后需要执行与队列标签为2的第二循环队列的数据写入操作。后续根据上述采集数据的采集时间的先后顺序,依次将所有上述转化数据中除上述第一数据外的其他数据写入至上述第二循环队列内,以使上述第二循环队列内存储的其他数据的数量等于上述数据存储个数,依此类推,直至完成将所有上述转化数据分配至各上述循环队列内的分配操作处理。进一步地,如果上述数据数量不为上述数据存储个数的倍数,同理可参照上面提及的采集数据的数据数量为数据存储个数的倍数的操作流程,先在除队列标签为n的循环队列外的其他全部循环队列中均依次分配与数据存储个数相同的转化数据,再将剩余的转化数据全部分配到队列标签为n的循环队列,进而完成将所有所述转化数据分配至各所述循环队列内的分配操作处理。上述剩余的转化数据的数量可基于数据存储个数对数据数量进行整除后生成的余数得到。本实施例通过按照一定的数据分配策略,实现将所有采集数据对应的转化数据进行分散存储以存储到不同的循环队列内,再将各循环队列一一存储至对应的空白文件中以生成各自包含有部分转化数据的数据文件,能够避免将所有数据只存储至一个总文件内而导致总文件异常时出现全部数据丢失的情况,有效地提高了数据存储的稳定性,以及有效降低数据丢失的风险。
进一步地,本申请一实施例中,上述步骤S6之后,包括:
S600:为每一个所述数据文件生成一一对应的数据文件配置类,其中,所述数据文件配置类至少包括有以下属性:文件空间大小数值、文件名称、文件存储路径以及内部包含的循环队列的队列标签;
S601:将所有所述数据文件配置类保存至预先创建的全局管理配置文件内。
如上述步骤S600至S601所述,在执行完将各上述循环队列一一存储到本地预先创建的空白文件内,生成与各上述循环队列一一对应的数据文件的步骤之后,还可进一步生成用于对各数据文件进行管理的全局管理配置文件。具体地,生成全局管理配置文件的步骤可包括:首先为每一个上述数据文件生成一一对应的数据文件配置类,其中,上述数据文件配置类至少包括有以下属性:文件空间大小数值、文件名称、文件存储路径以及内部包含的循环队列的队列标签。其中,以特定数据文件为例进行说明,特定数据文件为所有上述数据文件中的任意一个文件,生成的与该特定数据文件对应的特定数据文件配置类的过程可包括:先获取特定数据文件当前的文件空间大小数值,获取特定数据文件的文件名称,获取本地存储有该特定数据文件所对应的文件存储路径,以及获取特定数据文件内部包含的循环队列的队列标签,再将当前获取到的文件空间大小数值、文件名称、文件存储路径以及内部包含的循环队列的队列标签进行数据组合以生成与特定数据文件对应的特定数据文件配置类。然后获取预设的全局管理配置文件。最后将所有上述数据文件配置类保存至上述全局管理配置文件内。其中,基于全局管理配置文件与数据文件配置类可以共同实现与数据文件对应的索引系统,全局管理配置文件内包含有若干个数据文件配置类,且每一个数据文件配置类对应着一个真实的物理文件。本实施例通过为各数据文件生成数据配置类,以及基于数据配置类生成相应的全局配置数据文件,从而基于该数据配置类与全局配置数据文件能够形成与数据文件对应的索引系统,使得基于该索引系统来准确快捷进行与各数据文件对应的文件查找处理,进而有利于后续能够基于查找出的数据文件来顺利完成对于各数据文件中包含的数据的数据上报处理。
进一步地,本申请一实施例中,上述步骤S6之后,包括:
S610:判断是否接收到与所述采集数据对应的数据上报指令;
S611:若接收到所述数据上报指令,基于数值为1的指定队列标签,对所述全局管理配置文件中包含的所有数据文件配置类进行遍历处理,查找出与所述指定队列标签对应的指定数据文件配置类;
S612:获取所述指定文件配置类中包含的指定文件存储路径与指定文件名称;
S613:基于所述指定文件存储路径,查找出与所述指定文件名称对应的第一数据文件;
S614:对所述第一数据文件进行crc校验处理,并判断是否校验通过;
S615:若校验通过,调用预设的mmap函数将所述第一数据文件加载至内存中;
S616:基于所述指定队列标签,调用预设的KV接口从所述第一数据文件内存储的循环队列中提取出与所述指定队列标签对应的第一转化数据,并对第一转化数据进行上报处理;
S617:在完成了与所述第一数据文件对应的数据上报处理后,参照所述第一数据文件的数据上报处理方式,获取与数值为2的队列标签对应的第二数据文件并进行与所述第二数据文件对应的数据上报处理,依此类推,直至完成对于所有所述数据文件中包含的转化数据的数据上报处理。
如上述步骤S610至S617所述,在执行完将各上述循环队列一一存储到本地预先创建的空白文件内,生成与各上述循环队列一一对应的数据文件的步骤之后,还可进一步对各数据文件中循环队列包含的转化数据进行上报处理。具体地,首先判断是否接收到与上述采集数据对应的数据上报指令。其中,上述与采集数据对应的转化数据只是暂时缓存在本地中,后续则是需要按照数据采集的先后顺序来将数据上报至服务器中。如果接收到上述数据上报指令,基于数值为1的指定队列标签,对上述全局管理配置文件中包含的所有数据文件配置类进行遍历处理,查找出与上述指定队列标签对应的指定数据文件配置类。其中,可基于并行比较指令同时进行将上述指定队列标签分别与全局管理配置文件中包含的每一个数据文件配置类的数据匹配处理,以进一步提高数据的比对处理速率,以及提高对于指定数据文件配置类的查找速率。上述并行比较指令具体可为单指令流多数据流(single instruction multiple data,SIMD)指令。然后获取上述指定文件配置类中包含的指定文件存储路径与指定文件名称。之后基于上述指定文件存储路径,查找出与上述指定文件名称对应的第一数据文件。在得到了上述第一数据文件后,对上述第一数据文件进行crc(Cyclic Redundancy Check,循环冗余校验)校验处理,并判断是否校验通过。其中,可以先从预存储的与上述第一数据文件对应的指定crc文件中获取其内部存储的第一crc值,再基于上述第一数据文件内的循环队列中当前包含的转化数据,调用预设的crc校验函数计算与上述第一数据文件对应的第二crc值,并基于第二crc值与第一crc值的数值比较结果来进行对于上述第一数据文件进行crc校验处理,若上述第二crc值与上述第一crc值相同,则判定通过验证,否则判定未通过验证。另外,对于上述crc校验函数不作具体限定,只需确保计算第一crc值与第二crc值时采用的是相同的crc校验函数,例如该crc校验函数可为哈希函数。如果校验通过,调用预设的mmap函数将上述第一数据文件加载至内存中。其中,通过借助操作系统的mmap功能,将写入磁盘数据的工作交给操作系统管理,mmap可以将一个文件映射到内存,进程可以直接读写内存,比普通写文件性能快很多,性能也有保障,可以有效加快数据文件中数据的读取速度与查找速度。另外。即使与采集数据对应的App客户端出现了崩溃,数据也不会丢失,系统会自动同步写回磁盘,有效地保证了数据稳定。后续基于上述指定队列标签,调用预设的KV接口从上述第一数据文件内存储的循环队列中提取出与上述指定队列标签对应的第一转化数据,并对第一转化数据进行上报处理。其中,KV接口为预先创建的基于key值来取出相应的value的读取接口,KV接口会以上述指定队列标签对应的第一转化数据作为key,进而从第一数据文件内存储的循环队列中提取出与该key对应的value,即上述第一转化数据。在完成了与上述第一数据文件对应的数据上报处理后,参照上述第一数据文件的数据上报处理方式,获取与数值为2的队列标签对应的第二数据文件并进行与上述第二数据文件对应的数据上报处理,依此类推,直至完成对于所有上述数据文件中包含的转化数据的数据上报处理。本实施例对于每一个数据文件中的数据都是采用分批上报的方式进行上报处理的,即每一次只上传一个数据文件至内存中进行数据上报,从而每一次的数据上报过程都只会占用与数据文件的大小相同的内存,内存消耗低,能够有效避免内存被过多占用的情况,有效地提高数据上报的运行流畅性与数据上报效率。进一步地,如果校验未通过,则获取预存储的与所述第一数据文件对应的原始循环队列,并使用所述原始循环队列对所述第一数据文件中包含的数据内容进行替换处理,得到处理后的第一数据文件,后续再进行调用预设的mmap函数将所述处理后的第一数据文件加载至内存中的步骤。可基于与第一数据文件对应的crc文件来获取上述原始循环队列。通过在对于第一数据文件的crc校验未通过时,使用预存储的与所述第一数据文件对应的原始循环队列对所述第一数据文件中包含的数据内容进行替换处理,能够在当前待上报的第一数据文件出现异常时及时将其恢复为正确的包含有原始循环队列的文件,进而后续再根据恢复处理后的第一数据文件继续进行数据上报处理,有效地保证了上报数据的数据准确性。
进一步地,本申请一实施例中,上述步骤S614,包括:
S6140:获取预存储的与所述第一数据文件对应的指定crc文件;
S6141:从所述指定crc文件提取出内部存储的第一crc值;
S6142:基于所述第一数据文件内的循环队列中当前包含的转化数据,调用预设的crc校验函数计算与所述第一数据文件对应的第二crc值;
S6143:判断所述第二crc值是否与所述第一crc值相同;
S6144:若所述第二crc值与所述第一crc值相同,则判定通过验证;
S6145:若所述第二crc值与所述第一crc值不相同,则判定未通过验证。
如上述步骤S6140至S6145所述,上述对上述第一数据文件进行crc校验处理,并判断是否校验通过的步骤,具体可包括:首先获取预存储的与上述第一数据文件对应的指定crc文件。其中,在生成每一个数据文件的同时,还会生成与各数据文件一一对应的crc文件,上述crc文件为与数据文件的文件名称相同,但文件后缀为crc的文件,crc文件用于存储通过crc校验函数计算生成的与数据文件对应的crc值。然后从上述指定crc文件提取出内部存储的第一crc值。之后基于上述第一数据文件内的循环队列中当前包含的转化数据,调用预设的crc校验函数计算与上述第一数据文件对应的第二crc值。其中,对于上述crc校验函数不作具体限定,只需确保计算第一crc值与第二crc值时采用的是相同的crc校验函数即可,例如该crc校验函数可为哈希函数。最后判断上述第二crc值是否与上述第一crc值相同。如果上述第二crc值与上述第一crc值相同,则判定通过验证。而如果上述第二crc值与上述第一crc值不相同,则判定未通过验证。本实施例通过对上述第一数据文件进行crc校验处理,可以准确地检测出当前需上报的数据与对应写入的原始数据之间是否存在数据差异,如果存在数据差异则会对上报数据进行恢复处理,进而后续再根据恢复处理后的第一数据文件继续进行数据上报处理,有效地保证了上报数据的数据准确性。
进一步地,本申请一实施例中,上述步骤S6140之前,包括:
S61400:在生成了指定数据文件后,生成与所述指定数据文件对应的crc文件,其中,所述指定数据文件为所有所述数据文件中的任意一个文件,所述crc文件为与所述指定数据文件的文件名称相同,但文件后缀为crc的文件;
S61401:基于所述指定数据文件内的循环队列中包含的转化数据,调用所述crc校验函数计算与所述指定数据文件对应的指定crc值;
S61402:将所述指定crc值保存到所述crc文件内;
S61403:将所述crc文件存储于本地。
如上述步骤S61400至S61403所述,在执行获取预存储的与上述第一数据文件对应的指定crc文件的步骤之前,还可包括生成与每一个上述数据文件对应的crc文件的生成过程。具体地,与每一个上述数据文件对应的crc文件的生成步骤可包括:在生成了指定数据文件后,首先生成与上述指定数据文件对应的crc文件,其中,上述指定数据文件为所有上述数据文件中的任意一个文件,上述crc文件为与上述指定数据文件的文件名称相同,但文件后缀为crc的文件。然后基于上述指定数据文件内的循环队列中包含的转化数据,调用上述crc校验函数计算与上述指定数据文件对应的指定crc值。其中,对于每一个数据文件,均会采用相同的一个crc校验函数来计算生成与各数据文件对应的crc值。之后将上述指定crc值保存到上述crc文件内。其中,还可将与上述指定数据文件对应的指定循环队列存储于上述指定文件内,以便后续当指定数据文件在数据上报过程中出现数据异常时,能够使用存储于上述指定文件内的原始的指定循环队列来对指定数据文件进行数据恢复处理,以确保后续基于数据恢复处理的指定数据文件来实现准确的数据上传。最后将上述crc文件存储于本地。其中,还可进一步将上述crc文件存储至区块链上,通过使用区块链来对上述crc文件进行存储和管理,能够有效地保证上述crc文件的安全性与不可篡改性。本实施例通过设置与完成数据存储处理的数据文件对应的crc文件,有利于基于该crc文件执行后续对于需数据上报的数据文件进行crc校验处理,以准确识别出需上报的数据文件中的数据是否存在异常情况,并基于识别结果进行相应处理,以保证数据上报的准确性。
进一步地,本申请一实施例中,上述步骤S616之后,包括:
S6160:判断所述第一转化数据是否已成功上报;
S6161:若所述第一转化数据已成功上报,删除所述内存中的所述第一数据文件;以及,
S6162:删除本地存储的第一数据文件内的第一循环队列中包含的转化数据。
如上述步骤S6160至S6162所述,在执行完基于上述指定队列标签,调用预设的KV接口从上述第一数据文件内存储的循环队列中提取出与上述指定队列标签对应的第一转化数据,并对第一转化数据进行上报处理的步骤之后,还可包括对于已成功上报的第一转化数据的删除过程。具体地,判断上述第一转化数据是否已成功上报。其中,如果上述第一转化数据未成功上报,则生成与第一转化数据对应的异常信息并展示,后续再重新进行与该第一转化数据的数据上报处理。如果上述第一转化数据已成功上报,删除上述内存中的上述第一数据文件。以及删除本地存储的第一数据文件内的第一循环队列中包含的转化数据。本实施例在完成了对于第一转化数据的成功上报后,通过对内存中当前的第一数据文件进行删除,可以有效释放本地的可用内存存储空间。另外,还会进一步删除本地存储的第一数据文件内的第一循环队列中包含的转化数据,以便可以基于循环队列的指针状态进行后续有次序的数据读取流程,并且可以直接利用数据清空的循环队列来进行后续的新的采集数据的存储处理,能够避免队列的重复创建,降低数据存储的成本,提高数据存储的效率。
本申请实施例中的数据存储方法还可以应用于区块链领域,如将上述数据文件等数据存储于区块链上。通过使用区块链来对上述数据文件进行存储和管理,能够有效地保证上述数据文件的安全性与不可篡改性。
上述区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
参照图2,本申请一实施例中还提供了一种数据存储装置,包括:
第一获取模块1,用于获取待上报的采集数据;
转化模块2,用于基于预设的二进制协议对所述采集数据进行转化处理,将所述采集数据转化成对应的转化数据;
第一生成模块3,用于基于所述采集数据的数据数量以及预设的数据存储个数,生成指定数量的多个循环队列;
第一分配模块4,用于基于所述指定数量,为每一个所述循环队列分配一一对应的队列标签,其中,所述队列标签的数值范围为1至n,所述队列标签的取值为正整数,n为所述指定数量对应的数值;
第二分配模块5,用于基于所述采集数据的采集时间的先后顺序、所述队列标签的数值从小到大的顺序以及所述数据存储个数,按照预设规则将所有所述转化数据对应分配至各所述循环队列内;
第二生成模块6,用于将各所述循环队列一一存储到本地预先创建的空白文件内,生成与各所述循环队列一一对应的数据文件。
本实施例中,上述数据存储装置中的第一获取模块、转化模块、第一生成模块、第一分配模块、第二分配模块与第二生成模块的功能和作用的实现过程具体详见上述数据存储方法中对应步骤S1至S6的实现过程,在此不再赘述。
进一步地,本申请一实施例中,上述第二分配模块,包括:
第一判断单元,用于判断所述数据数量是否为所述数据存储个数的倍数;
筛选单元,用于若所述数据数量为所述数据存储个数的倍数,从所有所述循环队列中筛选出队列标签为1的第一循环队列;
写入单元,用于根据所述采集数据的采集时间的先后顺序,依次将所述转化数据写入至所述第一循环队列内,并在转化数据的写入过程中判断所述第一循环队列内包含的转化数据的数量是否等于所述数据存储个数,其中,将所述第一循环队列内存储的转化数据记为第一数据;
第一处理单元,用于若所述第一循环队列内包含的转化数据的数量等于所述数据存储个数,则停止对于所述第一循环队列的数据写入,并从所有所述循环队列中筛选出队列标签为2的第二循环队列;
第二处理单元,用于根据所述采集数据的采集时间的先后顺序,依次将所有所述转化数据中除所述第一数据外的其他数据写入至所述第二循环队列内,以使所述第二循环队列内存储的其他数据的数量等于所述数据存储个数,依此类推,直至完成将所有所述转化数据分配至各所述循环队列内的分配操作处理。
本实施例中,上述数据存储装置中的第一判断单元、筛选单元、写入单元、第一处理单元与第二处理单元的功能和作用的实现过程具体详见上述数据存储方法中对应步骤S500至S504的实现过程,在此不再赘述。
进一步地,本申请一实施例中,上述数据存储装置,包括:
第三生成模块,用于为每一个所述数据文件生成一一对应的数据文件配置类,其中,所述数据文件配置类至少包括有以下属性:文件空间大小数值、文件名称、文件存储路径以及内部包含的循环队列的队列标签;
保存模块,用于将所有所述数据文件配置类保存至预先创建的全局管理配置文件内。
本实施例中,上述数据存储装置中的第三生成模块与保存模块的功能和作用的实现过程具体详见上述数据存储方法中对应步骤S600至S601的实现过程,在此不再赘述。
进一步地,本申请一实施例中,上述数据存储装置,包括:
第一判断模块,用于判断是否接收到与所述采集数据对应的数据上报指令;
第一查找模块,用于若接收到所述数据上报指令,基于数值为1的指定队列标签,对所述全局管理配置文件中包含的所有数据文件配置类进行遍历处理,查找出与所述指定队列标签对应的指定数据文件配置类;
第二获取模块,用于获取所述指定文件配置类中包含的指定文件存储路径与指定文件名称;
第二查找模块,用于基于所述指定文件存储路径,查找出与所述指定文件名称对应的第一数据文件;
第二判断模块,用于对所述第一数据文件进行crc校验处理,并判断是否校验通过;
加载模块,用于若校验通过,调用预设的mmap函数将所述第一数据文件加载至内存中;
上报模块,用于基于所述指定队列标签,调用预设的KV接口从所述第一数据文件内存储的循环队列中提取出与所述指定队列标签对应的第一转化数据,并对第一转化数据进行上报处理;
处理模块,用于在完成了与所述第一数据文件对应的数据上报处理后,参照所述第一数据文件的数据上报处理方式,获取与数值为2的队列标签对应的第二数据文件并进行与所述第二数据文件对应的数据上报处理,依此类推,直至完成对于所有所述数据文件中包含的转化数据的数据上报处理。
本实施例中,上述数据存储装置中的第一判断模块、第一查找模块、第二获取模块、第二查找模块、第二判断模块、加载模块、上报模块与处理模块的功能和作用的实现过程具体详见上述数据存储方法中对应步骤S610至S617的实现过程,在此不再赘述。
进一步地,本申请一实施例中,上述第二判断模块,包括:
获取单元,用于获取预存储的与所述第一数据文件对应的指定crc文件;
提取单元,用于从所述指定crc文件提取出内部存储的第一crc值;
第一计算单元,用于基于所述第一数据文件内的循环队列中当前包含的转化数据,调用预设的crc校验函数计算与所述第一数据文件对应的第二crc值;
第二判断单元,用于判断所述第二crc值是否与所述第一crc值相同;
第一判定单元,用于若所述第二crc值与所述第一crc值相同,则判定通过验证;
第二判定单元,用于若所述第二crc值与所述第一crc值不相同,则判定未通过验证。
本实施例中,上述数据存储装置中的获取单元、提取单元、第一计算单元、第二判断单元、第一判定单元与第二判定单元的功能和作用的实现过程具体详见上述数据存储方法中对应步骤S6140至S6145的实现过程,在此不再赘述。
进一步地,本申请一实施例中,上述第二判断模块,包括:
生成单元,用于在生成了指定数据文件后,生成与所述指定数据文件对应的crc文件,其中,所述指定数据文件为所有所述数据文件中的任意一个文件,所述crc文件为与所述指定数据文件的文件名称相同,但文件后缀为crc的文件;
第二计算单元,用于基于所述指定数据文件内的循环队列中包含的转化数据,调用所述crc校验函数计算与所述指定数据文件对应的指定crc值;
保存单元,用于将所述指定crc值保存到所述crc文件内;
存储单元,用于将所述crc文件存储于本地。
本实施例中,上述数据存储装置中的生成单元、第二计算单元、保存单元与存储单元的功能和作用的实现过程具体详见上述数据存储方法中对应步骤S61400至S61403的实现过程,在此不再赘述。
进一步地,本申请一实施例中,上述数据存储装置,包括:
第三判断模块,用于判断所述第一转化数据是否已成功上报;
第一删除模块,用于若所述第一转化数据已成功上报,删除所述内存中的所述第一数据文件;以及,
第二删除模块,用于删除本地存储的第一数据文件内的第一循环队列中包含的转化数据。
本实施例中,上述数据存储装置中的第三判断模块、第一删除模块与第二删除模块的功能和作用的实现过程具体详见上述数据存储方法中对应步骤S6160至S6162的实现过程,在此不再赘述。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏、输入装置和数据库。其中,该计算机设备设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括存储介质、内存储器。该存储介质存储有操作系统、计算机程序和数据库。该内存储器为存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储采集数据、转化数据、循环队列、队列标签以及数据文件等信息。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机设备的显示屏是计算机中必不可少的一种图文输出设备,用于将数字信号转换为光信号,使文字与图形在显示屏的屏幕上显示出来。该计算机设备的输入装置是计算机与用户或其他设备之间进行信息交换的主要装置,用于把数据、指令及某些标志信息等输送到计算机中去。该计算机程序被处理器执行时以实现一种数据存储方法。
上述处理器执行上述数据存储方法的步骤:
获取待上报的采集数据;
基于预设的二进制协议对所述采集数据进行转化处理,将所述采集数据转化成对应的转化数据;
基于所述采集数据的数据数量以及预设的数据存储个数,生成指定数量的多个循环队列;
基于所述指定数量,为每一个所述循环队列分配一一对应的队列标签,其中,所述队列标签的数值范围为1至n,所述队列标签的取值为正整数,n为所述指定数量对应的数值;
基于所述采集数据的采集时间的先后顺序、所述队列标签的数值从小到大的顺序以及所述数据存储个数,按照预设规则将所有所述转化数据对应分配至各所述循环队列内;
将各所述循环队列一一存储到本地预先创建的空白文件内,生成与各所述循环队列一一对应的数据文件。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的装置、计算机设备的限定。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种数据存储方法,具体为:
获取待上报的采集数据;
基于预设的二进制协议对所述采集数据进行转化处理,将所述采集数据转化成对应的转化数据;
基于所述采集数据的数据数量以及预设的数据存储个数,生成指定数量的多个循环队列;
基于所述指定数量,为每一个所述循环队列分配一一对应的队列标签,其中,所述队列标签的数值范围为1至n,所述队列标签的取值为正整数,n为所述指定数量对应的数值;
基于所述采集数据的采集时间的先后顺序、所述队列标签的数值从小到大的顺序以及所述数据存储个数,按照预设规则将所有所述转化数据对应分配至各所述循环队列内;
将各所述循环队列一一存储到本地预先创建的空白文件内,生成与各所述循环队列一一对应的数据文件。
综上所述,本申请实施例中提供的数据存储方法、装置、计算机设备和存储介质,在将待上报的采集数据转化为对应的转化数据后,会按照一定的数据分配策略将所有采集数据对应的转化数据进行分散存储以存储到不同的循环队列内,并将各循环队列一一存储至对应的空白文件内以生成各自包含有部分转化数据的数据文件,进而实现利用多文件分散存储的方式完成对于海量数据的存储处理。不同于将所有数据只存储至一个总文件内的存储方式,分散存储的方式能够避免各数据文件均出现异常而导致出现所有数据丢失的情况,有效地提高了数据存储的稳定性,以及有效降低数据丢失的风险。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM通过多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (8)
1.一种数据存储方法,其特征在于,包括:
获取待上报的采集数据;
基于预设的二进制协议对所述采集数据进行转化处理,将所述采集数据转化成对应的转化数据;
基于所述采集数据的数据数量以及预设的数据存储个数,生成指定数量的多个循环队列;
基于所述指定数量,为每一个所述循环队列分配一一对应的队列标签,其中,所述队列标签的数值范围为1至n,所述队列标签的取值为正整数,n为所述指定数量对应的数值;
基于所述采集数据的采集时间的先后顺序、所述队列标签的数值从小到大的顺序以及所述数据存储个数,按照预设规则将所有所述转化数据对应分配至各所述循环队列内;
将各所述循环队列一一存储到本地预先创建的空白文件内,生成与各所述循环队列一一对应的数据文件;为每一个所述数据文件生成一一对应的数据文件配置类,其中,所述数据文件配置类至少包括有以下属性:文件空间大小数值、文件名称、文件存储路径以及内部包含的循环队列的队列标签;将所有所述数据文件配置类保存至预先创建的全局管理配置文件内;同时,判断是否接收到与所述采集数据对应的数据上报指令;若接收到所述数据上报指令,基于数值为1的指定队列标签,对所述全局管理配置文件中包含的所有数据文件配置类进行遍历处理,查找出与所述指定队列标签对应的指定数据文件配置类;获取所述指定文件配置类中包含的指定文件存储路径与指定文件名称;基于所述指定文件存储路径,查找出与所述指定文件名称对应的第一数据文件;对所述第一数据文件进行crc校验处理,并判断是否校验通过;若校验通过,调用预设的mmap函数将所述第一数据文件加载至内存中;基于所述指定队列标签,调用预设的KV接口从所述第一数据文件内存储的循环队列中提取出与所述指定队列标签对应的第一转化数据,并对第一转化数据进行上报处理;在完成了与所述第一数据文件对应的数据上报处理后,参照所述第一数据文件的数据上报处理方式,获取与数值为2的队列标签对应的第二数据文件并进行与所述第二数据文件对应的数据上报处理,依此类推,直至完成对于所有所述数据文件中包含的转化数据的数据上报处理。
2.根据权利要求1所述的数据存储方法,其特征在于,所述基于所述采集数据的采集时间的先后顺序、所述队列标签的数值从小到大的顺序以及所述数据存储个数,按照预设规则将所有所述转化数据对应分配至各所述循环队列内数据存储个数的步骤,包括:
判断所述数据数量是否为所述数据存储个数的倍数;
若所述数据数量为所述数据存储个数的倍数,从所有所述循环队列中筛选出队列标签为1的第一循环队列;
根据所述采集数据的采集时间的先后顺序,依次将所述转化数据写入至所述第一循环队列内,并在转化数据的写入过程中判断所述第一循环队列内包含的转化数据的数量是否等于所述数据存储个数,其中,将所述第一循环队列内存储的转化数据记为第一数据;
若所述第一循环队列内包含的转化数据的数量等于所述数据存储个数,则停止对于所述第一循环队列的数据写入,并从所有所述循环队列中筛选出队列标签为2的第二循环队列;
根据所述采集数据的采集时间的先后顺序,依次将所有所述转化数据中除所述第一数据外的其他数据写入至所述第二循环队列内,以使所述第二循环队列内存储的其他数据的数量等于所述数据存储个数,依此类推,直至完成将所有所述转化数据分配至各所述循环队列内的分配操作处理。
3.根据权利要求1所述的数据存储方法,其特征在于,所述对所述第一数据文件进行crc校验处理,并判断是否校验通过的步骤,包括:
获取预存储的与所述第一数据文件对应的指定crc文件;
从所述指定crc文件提取出内部存储的第一crc值;
基于所述第一数据文件内的循环队列中当前包含的转化数据,调用预设的crc校验函数计算与所述第一数据文件对应的第二crc值;
判断所述第二crc值是否与所述第一crc值相同;
若所述第二crc值与所述第一crc值相同,则判定通过验证;
若所述第二crc值与所述第一crc值不相同,则判定未通过验证。
4.根据权利要求3所述的数据存储方法,其特征在于,所述获取预存储的与所述第一数据文件对应的指定crc文件的步骤之前,包括:
在生成了指定数据文件后,生成与所述指定数据文件对应的crc文件,其中,所述指定数据文件为所有所述数据文件中的任意一个文件,所述crc文件为与所述指定数据文件的文件名称相同,但文件后缀为crc的文件;
基于所述指定数据文件内的循环队列中包含的转化数据,调用所述crc校验函数计算与所述指定数据文件对应的指定crc值;
将所述指定crc值保存到所述crc文件内;
将所述crc文件存储于本地。
5.根据权利要求1所述的数据存储方法,其特征在于,所述基于所述指定队列标签,调用预设的KV接口从所述第一数据文件内存储的循环队列中提取出与所述指定队列标签对应的第一转化数据,并对第一转化数据进行上报处理的步骤之后,包括:
判断所述第一转化数据是否已成功上报;
若所述第一转化数据已成功上报,删除所述内存中的所述第一数据文件;以及,
删除本地存储的第一数据文件内的第一循环队列中包含的转化数据。
6.一种数据存储装置,用于实现权利要求1-5任一所述的方法,其特征在于,包括:
第一获取模块,用于获取待上报的采集数据;
转化模块,用于基于预设的二进制协议对所述采集数据进行转化处理,将所述采集数据转化成对应的转化数据;
第一生成模块,用于基于所述采集数据的数据数量以及预设的数据存储个数,生成指定数量的多个循环队列;
第一分配模块,用于基于所述指定数量,为每一个所述循环队列分配一一对应的队列标签,其中,所述队列标签的数值范围为1至n,所述队列标签的取值为正整数,n为所述指定数量对应的数值;
第二分配模块,用于基于所述采集数据的采集时间的先后顺序、所述队列标签的数值从小到大的顺序以及所述数据存储个数,按照预设规则将所有所述转化数据对应分配至各所述循环队列内;
第二生成模块,用于将各所述循环队列一一存储到本地预先创建的空白文件内,生成与各所述循环队列一一对应的数据文件。
7.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011549438.7A CN112667592B (zh) | 2020-12-24 | 2020-12-24 | 数据存储方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011549438.7A CN112667592B (zh) | 2020-12-24 | 2020-12-24 | 数据存储方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667592A CN112667592A (zh) | 2021-04-16 |
CN112667592B true CN112667592B (zh) | 2024-05-07 |
Family
ID=75409934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011549438.7A Active CN112667592B (zh) | 2020-12-24 | 2020-12-24 | 数据存储方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667592B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407488A (zh) * | 2021-06-17 | 2021-09-17 | 北京金山云网络技术有限公司 | 文件的存储转换处理方法、装置、电子设备及存储介质 |
CN113630442B (zh) * | 2021-07-14 | 2023-09-12 | 远景智能国际私人投资有限公司 | 数据传输方法、装置及系统 |
CN114185693A (zh) * | 2021-11-22 | 2022-03-15 | 西安空间无线电技术研究所 | 一种可自修复的多结点聚合共享队列管理方法 |
CN117194549B (zh) * | 2023-11-07 | 2024-01-26 | 上海柯林布瑞信息技术有限公司 | 基于任务数据配置的数据传输方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10277518B1 (en) * | 2017-01-16 | 2019-04-30 | Innovium, Inc. | Intelligent packet queues with delay-based actions |
CN110032545A (zh) * | 2019-03-27 | 2019-07-19 | 远光软件股份有限公司 | 基于区块链的文件存储方法、系统及电子设备 |
CN110263012A (zh) * | 2019-06-25 | 2019-09-20 | 北京奇艺世纪科技有限公司 | 一种磁盘缓存方法及系统 |
CN111950025A (zh) * | 2020-08-21 | 2020-11-17 | 安徽高山科技有限公司 | 一种基于区块链智能合约的文件分布式存储方法 |
CN111984198A (zh) * | 2020-08-25 | 2020-11-24 | 北京一起教育信息咨询有限责任公司 | 消息队列实现方法、装置及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10447763B2 (en) * | 2016-12-08 | 2019-10-15 | Nanning Fugui Precision Industrial Co., Ltd. | Distributed storage method and system |
-
2020
- 2020-12-24 CN CN202011549438.7A patent/CN112667592B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10277518B1 (en) * | 2017-01-16 | 2019-04-30 | Innovium, Inc. | Intelligent packet queues with delay-based actions |
CN110032545A (zh) * | 2019-03-27 | 2019-07-19 | 远光软件股份有限公司 | 基于区块链的文件存储方法、系统及电子设备 |
CN110263012A (zh) * | 2019-06-25 | 2019-09-20 | 北京奇艺世纪科技有限公司 | 一种磁盘缓存方法及系统 |
CN111950025A (zh) * | 2020-08-21 | 2020-11-17 | 安徽高山科技有限公司 | 一种基于区块链智能合约的文件分布式存储方法 |
CN111984198A (zh) * | 2020-08-25 | 2020-11-24 | 北京一起教育信息咨询有限责任公司 | 消息队列实现方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112667592A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112667592B (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
US20200356901A1 (en) | Target variable distribution-based acceptance of machine learning test data sets | |
CN112416728A (zh) | 埋点数据获取方法、装置、客户端设备及可读存储介质 | |
CN113642039B (zh) | 单证模板的配置方法、装置、计算机设备和存储介质 | |
CN112540811B (zh) | 缓存数据的检测方法、装置、计算机设备和存储介质 | |
CN112668041A (zh) | 单证文件的生成方法、装置、计算机设备和存储介质 | |
CN113326081A (zh) | 静态资源的处理方法、装置、计算机设备和存储介质 | |
CN116360769A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN109934712A (zh) | 应用于分布式系统的对账方法、对账装置和电子设备 | |
CN112506486A (zh) | 搜索系统建立方法、装置、电子设备及可读存储介质 | |
CN110378796A (zh) | 车辆唯一标识生成方法、装置、计算机设备及介质 | |
CN110598475B (zh) | 基于区块链的作品属性信息获取方法、装置和计算机设备 | |
CN114860745A (zh) | 基于人工智能的数据库扩展方法及相关设备 | |
CN113672654B (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN111858764B (zh) | 一种数据同步方法、装置、计算机设备及存储介质 | |
CN114398441B (zh) | 数据导出方法、装置、计算机设备和存储介质 | |
CN111143130B (zh) | 数据恢复方法、装置、计算机可读存储介质和计算机设备 | |
CN111783119A (zh) | 表单数据安全控制方法、装置、电子设备及存储介质 | |
CN111930846A (zh) | 一种数据处理方法、装置及设备 | |
CN111858467A (zh) | 基于人工智能的文件数据处理方法、装置、设备和介质 | |
US11621850B2 (en) | Distributed ledger management method, distributed ledger system, and node | |
CN115168848A (zh) | 基于大数据分析拦截的拦截反馈处理方法 | |
CN112862449A (zh) | 结构化工单生成方法、装置、计算机设备和存储介质 | |
CN113703687B (zh) | 数据入库处理方法、装置、计算机设备和存储介质 | |
CN115718747A (zh) | 数据源实例演进的分析方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |