CN107633034A - 一种多缓存队列并行保存方法 - Google Patents
一种多缓存队列并行保存方法 Download PDFInfo
- Publication number
- CN107633034A CN107633034A CN201710805804.2A CN201710805804A CN107633034A CN 107633034 A CN107633034 A CN 107633034A CN 201710805804 A CN201710805804 A CN 201710805804A CN 107633034 A CN107633034 A CN 107633034A
- Authority
- CN
- China
- Prior art keywords
- record data
- data
- record
- spatial cache
- buffer queue
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种多缓存队列并行保存方法,包括以下步骤:S1,确定记录数据的种类,并在内存中为每种记录数据申请一个缓存空间和一个数据保存线程,每个缓存空间包括N个缓存队列,每个缓存队列以链表形式链接;S2,接收外界设备发送的记录数据,根据所述记录数据的种类确定其对应的缓存空间,并将所述记录数据存储至其对应缓存空间中相应的缓存队列中;S3,同时启用多个数据保存线程并行将相应缓存空间中的记录数据保存至数据库中,并将已保存到数据库中的记录数据从各自缓存空间中删除。
Description
技术领域
本发明涉及一种数据保存方法,具体的说,涉及了一种多缓存队列并行保存方法。
背景技术
地下储气井64通道多探头,在20ms内产生测量数据,经处理后,产生厚度记录(DeepThick_X_X)、波形记录(Wave_New_X_X)、报警记录(AlarmDat_X_X );其中的波形记录占据数据量特别大,1条记录高达6.4M字节,压缩后也在6K字节左右。
传统的桌面数据库,不能适应并行操作;而网络数据库不仅通过网络通道实现资源共享,还可以并行使用以及将不同作业及数据处理分布在不同计算机,费用低、数据保密性、安全处理要求高且存储容量大,但是如果按常规方法进行数据保存,则会产生拥堵现象,即不能适应线程资源竞争,也不能适应20ms的通道产生采集数据速度的实时保存要求。
为了解决以上存在的问题,人们一直在寻求一种理想的技术解决方案。
发明内容
本发明的目的是针对现有技术的不足,从而提供了一种多缓存队列并行保存方法。
为了实现上述目的,本发明所采用的技术方案是:一种多缓存队列并行保存方法,包括以下步骤:
S1,确定记录数据的种类,并在内存中为每种记录数据申请一个缓存空间和一个数据保存线程,每个缓存空间包括N个缓存队列,每个缓存队列以链表形式链接;
S2,接收外界设备发送的记录数据,根据所述记录数据的种类确定其对应的缓存空间,并将所述记录数据存储至其对应缓存空间中相应的缓存队列中;
S3,同时启用多个数据保存线程并行将相应缓存空间中的记录数据保存至数据库中,并将已保存到数据库中的记录数据从各自缓存空间中删除。
基于上述,S1中,记录数据的种类包括厚度记录数据、波形记录数据和报警记录数据三种。
基于上述,S2的具体步骤为:
S21,接收记录数据,判断所述记录数据的种类,确定所述记录数据对应的缓存空间,并按照所述缓存空间中末位记录数据的编号顺次对所述记录数据进行编号,每个缓存空间中首位记录数据的编号均为0;
S22,将所述记录数据的编号取模,根据取模结果确定所述缓存空间中用于存放所述记录数据的缓存队列;
S23,判断所述缓存队列的末位记录数据是否是同深度值的记录数据,若是,则用所述记录数据替换末位记录数据,若不是,则将所述记录数据作为末位记录数据添加到所述缓存队列的队尾。
基于上述,S3的具体步骤为:
S31,调用所述数据保存线程将所述缓存空间的每个缓存队列的第一条记录数据并行存入至临时数据库中,累计所述临时数据库中存放的记录数据的数量,并删除每个缓存队列中的第一条记录数据;
S32,判断累计的记录数据的数量是否小于所述临时数据库的预设数量阈值,若不小于,则将所述临时数据库中存放的所有记录数据以数据记录表的形式转存到数据库中;若小于,则直接执行步骤S33;
S33,判断所述缓存空间中是否还有记录数据,若有,则返回执行步骤S31;若没有,则将所述临时数据库中存放的所有记录数据以数据记录表的形式转存到数据库中;
S34,为所述数据库的每个数据记录表建立索引。
基于上述,S32中,不同类型的记录数据所对应的所述临时数据库的预设数量阈值也不相同。
基于上述,S32中,所述数据记录表用时间信息、记录参数名称和上下行标志命名。
基于上述,S31中,调用所述数据保存线程将所述缓存空间的每个缓存队列的第一条记录数据并行存入至临时数据库前,先判断所述记录数据的内存量,若所述记录数据的内存量大于预设内存量,则对所述记录数据进行压缩后再保存所述临时数据库。
本发明相对现有技术具有突出的实质性特点和显著的进步,具体的说,每种记录数据都有N个缓存队列,存储时可以同时存储大量数据,避免存储堵塞;记录数据先储存到临时数据库,可以避免操作大数据时造成的延时;每个数据记录表中只存放一个记录数据,不仅数据独立,而且数据库操作也方便快速,更为后期的数据库管理提供方便。
附图说明
图1是本发明的流程示意图。
具体实施方式
下面通过具体实施方式,对本发明的技术方案做进一步的详细描述。
如图1所示,一种多缓存队列并行保存方法,包括以下步骤:
S1,确定记录数据的种类,并在内存中为每种记录数据申请一个缓存空间和一个数据保存线程,每个缓存空间包括1000个缓存队列,所述缓存队列的编号为0到999,每个缓存队列以链表形式链接;
优选的,所述记录数据分为厚度记录数据DeepThick、波形记录数据Wave_New和报警记录数据AlarmDat三种;
具体的,所述厚度记录数据对应的缓存的数据结构为:ClassArrDeepBuff[] Arr_Buff_Deep = new ClassArrDeepBuff[1000];其中保存类型为ClassArrDeepBuff,变量为List<ClassListDeepThick> lst_Buff_Deep数据;
所述报警记录数据对应的缓存的数据结构为:ClassArrWoudBuff[] Arr_Buff_Woud= new ClassArrWoudBuff[1000];其中保存类型为ClassArrWaveBuff,变量为List<ClassLstWoud> lst_Buff_Woud数据;
所述波形记录数据对应的缓存的数据结构为:ClassArrWaveBuff[] Arr_Buff_Wave= new ClassArrWaveBuff[1000];其中分别保存类型为ClassArrWoudBuff,其中变量是List<ClassLstWave> Lst_Buff_Wave数据;
S2,接收外界64个检测通道发送的记录数据,根据所述记录数据的种类确定其对应的缓存空间,并将所述记录数据存储至其对应缓存空间中相应的缓存队列中;
S21,接收记录数据,判断所述记录数据的种类,确定所述记录数据对应的缓存空间,并按照所述缓存空间中末位记录数据的编号顺次对所述记录数据进行编号,每个缓存空间中首位记录数据的编号均为0;
S22,将所述记录数据的编号取模,根据取模结果确定所述缓存空间中用于存放所述记录数据的缓存队列,其中,所述取模结果与用于存放所述记录数据的缓存队列的编号相同;
S23,判断所述缓存队列的末位记录数据是否是同深度值的记录数据,若是,则用所述记录数据替换末位记录数据,若不是,则将所述记录数据作为末位记录数据添加到所述缓存队列的队尾;
S3,同时启用多个数据保存线程并行将相应缓存空间中的记录数据保存至数据库中,并将已保存到数据库中的记录数据从各自缓存空间中删除;
S31,调用所述数据保存线程将所述缓存空间的每个缓存队列的第一条记录数据并行存入至临时数据库中,累计所述临时数据库中存放的记录数据的数量,并删除每个缓存队列中的第一条记录数据;
S32,判断累计的记录数据的数量是否小于所述临时数据库的预设数量阈值,若不小于,则将所述临时数据库中存放的所有记录数据以数据记录表的形式转存到数据库中;若小于,则直接执行步骤S33;
S33,判断所述缓存空间中是否还有记录数据,若有,则返回执行步骤S31;若没有,则将所述临时数据库中存放的所有记录数据以数据记录表的形式转存到数据库中;
S34,为所述数据库的每个数据记录表建立索引。
本发明中,每种记录数据都有N个缓存队列,每个缓存队列相当于火车站内的1个售票窗口,每个缓存队列里面的记录数据相当于每个售票窗口前排队的乘客;N个缓存队列同时向所述临时数据库中存储第一条临时数据,相当于每个售票窗口面前的第一个乘客同时买票;删除缓存队列中已存储的记录数据相当于乘客买完票离开队列。通过这种方式可以实现大量数据同时存储,能够避免存储堵塞;同时记录数据先储存到临时数据库,可以避免操作大数据时造成的延时;每个数据记录表中只存放一个记录数据,不仅数据独立,而且数据库操作也方便快速,更为后期的数据库管理提供方便。
优选的,所述数据库选用SQL Server 2012数据库;所述数据记录表用时间信息、记录数据名称和上下行标志命名,即记录数据名称+时间+0/1,0/1是下行/上行标志,例如:DeepThick_170817110245_0,即是2017-08-17 11:02:45产生的厚度下行记录。
具体的,S31中调用所述数据保存线程将所述缓存空间的每个缓存队列的第一条记录数据并行存入至临时数据库前,先判断所述记录数据的内存量,若所述记录数据的内存量大于预设内存量,则对所述记录数据进行压缩后再保存所述临时数据库。
需要注意的是,由于所述记录数据从所述缓存队列中转存到所述数据库中所耗费的时间小于所述记录数据存储到所述缓存队列中的时间,这就导致在将所述记录数据从所述缓存队列中转存到所述数据库时,通常会出现所述缓存空间的1000个缓存队列中只有极少个缓存队列中存有记录数据的情况,而不会出现所述缓存空间的每个缓存队列同时含有第一条记录数据的情况,因此所述临时数据库的预设数量阈值不会太大。
另外,考虑到每种记录数据的内存量各不相同,因此S32中不同类型的记录数据所对应的所述临时数据库的预设数量阈值也不相同,且所述预设数量阈值与所述记录数据的内存成反比;例如,厚度记录DeepThick和报警记录AlarmDat内存小,因此其缓存队列对应的预设数量为100;而波形记录Wave_New高达6.4M字节,压缩后也在6K字节左右,因此其缓存队列对应的预设数量为10。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。
Claims (7)
1.一种多缓存队列并行保存方法,其特征在于,包括以下步骤:
S1,确定记录数据的种类,并在内存中为每种记录数据申请一个缓存空间和一个数据保存线程,每个缓存空间包括N个缓存队列,每个缓存队列以链表形式链接;
S2,接收外界设备发送的记录数据,根据所述记录数据的种类确定其对应的缓存空间,并将所述记录数据存储至其对应缓存空间中相应的缓存队列中;
S3,同时启用多个数据保存线程并行将相应缓存空间中的记录数据保存至数据库中,并将已保存到数据库中的记录数据从各自缓存空间中删除。
2.根据权利要求1所述的多缓存队列并行保存方法,其特征在于:S1中,记录数据的种类包括厚度记录数据、波形记录数据和报警记录数据三种。
3.根据权利要求2所述的多缓存队列并行保存方法,其特征在于,S2的具体步骤为:
S21,接收记录数据,判断所述记录数据的种类,确定所述记录数据对应的缓存空间,并按照所述缓存空间中末位记录数据的编号顺次对所述记录数据进行编号,每个缓存空间中首位记录数据的编号均为0;
S22,将所述记录数据的编号取模,根据取模结果确定所述缓存空间中用于存放所述记录数据的缓存队列;
S23,判断所述缓存队列的末位记录数据是否是同深度值的记录数据,若是,则用所述记录数据替换末位记录数据,若不是,则将所述记录数据作为末位记录数据添加到所述缓存队列的队尾。
4.根据权利要求3所述的多缓存队列并行保存方法,其特征在于,S3的具体步骤为:
S31,调用所述数据保存线程将所述缓存空间的每个缓存队列的第一条记录数据并行存入至临时数据库中,累计所述临时数据库中存放的记录数据的数量,并删除每个缓存队列中的第一条记录数据;
S32,判断累计的记录数据的数量是否小于所述临时数据库的预设数量阈值,若不小于,则将所述临时数据库中存放的所有记录数据以数据记录表的形式转存到数据库中;若小于,则直接执行步骤S33;
S33,判断所述缓存空间中是否还有记录数据,若有,则返回执行步骤S31;若没有,则将所述临时数据库中存放的所有记录数据以数据记录表的形式转存到数据库中;
S34,为所述数据库的每个数据记录表建立索引。
5.根据权利要求4所述的多缓存队列并行保存方法,其特征在于:S32中,不同类型的记录数据所对应的所述临时数据库的预设数量阈值也不相同。
6.根据权利要求5所述的多缓存队列并行保存方法,其特征在于:S32中,所述数据记录表用时间信息、记录参数名称和上下行标志命名。
7.根据权利要求5所述的多缓存队列并行保存方法,其特征在于:S31中,调用所述数据保存线程将所述缓存空间的每个缓存队列的第一条记录数据并行存入至临时数据库前,先判断所述记录数据的内存量,若所述记录数据的内存量大于预设内存量,则对所述记录数据进行压缩后再保存所述临时数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710805804.2A CN107633034B (zh) | 2017-09-08 | 2017-09-08 | 一种多缓存队列并行保存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710805804.2A CN107633034B (zh) | 2017-09-08 | 2017-09-08 | 一种多缓存队列并行保存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107633034A true CN107633034A (zh) | 2018-01-26 |
CN107633034B CN107633034B (zh) | 2020-12-01 |
Family
ID=61100821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710805804.2A Active CN107633034B (zh) | 2017-09-08 | 2017-09-08 | 一种多缓存队列并行保存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107633034B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090018683A1 (en) * | 2001-10-10 | 2009-01-15 | Gibbs Eric P | System and method for data transfer optimization in a portable audio device |
CN102291269A (zh) * | 2011-09-29 | 2011-12-21 | 迈普通信技术股份有限公司 | 一种数据归并处理方法 |
CN102479159A (zh) * | 2010-11-25 | 2012-05-30 | 大唐移动通信设备有限公司 | 多进程harq数据的缓存方法和设备 |
CN103729442A (zh) * | 2013-12-30 | 2014-04-16 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
CN105978968A (zh) * | 2016-05-11 | 2016-09-28 | 山东合天智汇信息技术有限公司 | 一种海量数据的实时传输处理方法、服务器及处理系统 |
-
2017
- 2017-09-08 CN CN201710805804.2A patent/CN107633034B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090018683A1 (en) * | 2001-10-10 | 2009-01-15 | Gibbs Eric P | System and method for data transfer optimization in a portable audio device |
CN102479159A (zh) * | 2010-11-25 | 2012-05-30 | 大唐移动通信设备有限公司 | 多进程harq数据的缓存方法和设备 |
CN102291269A (zh) * | 2011-09-29 | 2011-12-21 | 迈普通信技术股份有限公司 | 一种数据归并处理方法 |
CN103729442A (zh) * | 2013-12-30 | 2014-04-16 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
CN105978968A (zh) * | 2016-05-11 | 2016-09-28 | 山东合天智汇信息技术有限公司 | 一种海量数据的实时传输处理方法、服务器及处理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107633034B (zh) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103927265B (zh) | 一种内容分级存储装置、内容获取方法及内容获取装置 | |
CN103514210B (zh) | 小文件处理方法及装置 | |
CN110134514A (zh) | 基于异构内存的可扩展内存对象存储系统 | |
US20210333994A1 (en) | Method for aggregation optimization of time series data | |
CN106649349A (zh) | 用于游戏应用的数据缓存方法、装置和系统 | |
CN107491523A (zh) | 存储数据对象的方法及装置 | |
CN103488709B (zh) | 一种索引建立方法及系统、检索方法及系统 | |
CN110188080A (zh) | 基于客户端高效缓存的远程文件数据访问性能优化方法 | |
CN104035925B (zh) | 数据存储方法、装置和存储系统 | |
CN107608631A (zh) | 一种数据文件存储方法、装置、设备以及存储介质 | |
CN107577436A (zh) | 一种数据存储方法及装置 | |
CN108183893A (zh) | 一种分片包检测方法、检测装置、存储介质和电子设备 | |
CN107526550A (zh) | 一种基于日志结构合并树的两阶段合并方法 | |
CN106899692A (zh) | 一种内容中心网络节点数据缓存替换方法和装置 | |
CN106959928A (zh) | 一种基于多级缓存结构的流式数据实时处理方法及系统 | |
CN104021088B (zh) | 日志存储方法和装置 | |
CN107577787A (zh) | 关联数据信息入库的方法及系统 | |
CN110460529A (zh) | 内容路由器fib存储结构及其数据处理方法 | |
CN105302493B (zh) | 一种混合存储阵列中ssd缓存的换入换出控制方法及系统 | |
CN107888687A (zh) | 一种基于分布式存储系统的代理客户端存储加速方法及系统 | |
CN107766445A (zh) | 一种支持多维度检索的高效快速数据检索方法 | |
CN107066505A (zh) | 一种性能优化的小文件存储访问的系统及方法 | |
CN109684337A (zh) | 一种基于多级缓存的区块链状态数据存储和读取方法 | |
CN106155913B (zh) | 缓存命中率分析的方法及设备 | |
CN108334549A (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 | ||
CB02 | Change of applicant information |
Address after: 2 / F, North building, building 15, science and Technology Park (East District), Henan National University, No. 289, West Third Ring Road, Zhengzhou high tech Industrial Development Zone, Henan Province 450000 Applicant after: Henan Delang Intelligent Technology Co., Ltd Address before: 450000 Zhengzhou high tech Industrial Development Zone, Zhengzhou, Henan Province, No. 4, No. 289, unit 4, 32, No. 32 Applicant before: ZHENGZHOU JINRUN GAOKE ELECTRONICS Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |