CN111414344B - 一种应用于遥爆***的数据保存方法 - Google Patents
一种应用于遥爆***的数据保存方法 Download PDFInfo
- Publication number
- CN111414344B CN111414344B CN202010215981.7A CN202010215981A CN111414344B CN 111414344 B CN111414344 B CN 111414344B CN 202010215981 A CN202010215981 A CN 202010215981A CN 111414344 B CN111414344 B CN 111414344B
- Authority
- CN
- China
- Prior art keywords
- file
- log
- data
- entering
- copy
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种应用于遥爆***的数据保存方法,能在遥爆***崩溃时以及存储容量有限的情况下有效保存数据。本发明对数据库中的Write Ahead Log算法进行改进,让其适用于遥爆***,并将改进后的Write Ahead Log算法和循环写算法进行了结合,既能解决遥爆***中的数据一致性问题,又能在存储容量有限的情况下保存理论上无限的数据。
Description
技术领域
本发明属于数据存储技术领域,具体涉及一种应用于遥爆***的数据保存方法的设计。
背景技术
在***工作正常的情况下,数据的保存比较简单,但是考虑到在工作过程中***可能会出现宕机的情况,因此想要有效保存数据就需要一种有效的算法了。例如当数据写到一半时***宕机了,这时数据就不是一致的了。针对这种情况,数据库***中提出了一种有效的方法,即Write Ahead Log,这种方法的原理就是在写数据之前先写日志,把数据的变动记录在日志里面,然后再把数据写到磁盘上,日后如果***出现了故障就可以通过日志来恢复数据了。
上面所述的技术能有效的应用在容量无限的存储上,但是遥爆***中理论上要保存的数据是无限的,其存储容量却是有限的,因此需要设计一种能在存储容量有限的情况下保存理论上无限的数据的方法,并将其应用到遥爆***中。
发明内容
本发明的目的是为了解决现有技术存在的上述问题,提出了一种应用于遥爆***的数据保存方法,把数据库中的Write Ahead Log算法进行改进,让其适用于遥爆***,既能解决数据一致性问题,又能在存储容量有限的情况下保存理论上无限的数据。
本发明的技术方案为:一种应用于遥爆***的数据保存方法,包括以下步骤:
S1、控制遥爆***开机,开始运行数据保存程序。
S2、判断数据保存程序中是否存在数据文件,若是则进入步骤S4,否则进入步骤S3。
S3、根据遥爆***存储容量的大小创建k个数据文件,并对数据文件从0~k-1进行编号,进入步骤S4。
S4、判断数据保存程序中是否存在日志文件boom.log,若是则进入步骤S5,否则进入步骤S9。
S5、判断数据保存程序中是否存在日志文件的拷贝文件copy.log,若是则进入步骤S6,否则进入步骤S7。
S6、删除拷贝文件copy.log,进入步骤S7。
S7、判断日志文件boom.log是否为空,若是则进入步骤S12,否则进入步骤S8。
S8、清除掉日志文件boom.log中的无用数据,进入步骤S12。
S9、判断数据保存程序中是否存在日志文件的拷贝文件copy.log,若是则进入步骤S10,否则进入步骤S11。
S10、将拷贝文件copy.log重命名为日志文件boom.log,进入步骤S12。
S11、创建日志文件boom.log,进入步骤S12。
S12、判断是否有数据需要写入到数据文件,若是则进入步骤S13,否则继续执行步骤S12等待需要写入数据文件的数据准备就绪。
S13、读取日志文件boom.log的最后两行内容。
S14、判断日志文件boom.log的最后一行数据是否为文件编号,若是则进入步骤S15,否则进入步骤S16。
S15、将日志文件boom.log的最后一行数据的文件编号记为h,清除文件编号为h的文件中的数据,并将当前数据写入到该文件中,进入步骤S17。
S16、将日志文件boom.log的倒数第二行数据的文件编号记为g,根据g获取本次需要写的文件编号z,并将文件编号z写入到日志文件boom.log中,清除文件编号为z的文件中的数据,并将当前数据写入到该文件中,进入步骤S17。
S17、在日志文件boom.log中写入complete,进入步骤S18。
S18、判断是否还需要写数据到数据文件中,若是则返回步骤S12,否则数据保存程序执行完毕,结束数据保存流程。
进一步地,步骤S3中数据文件总数k的取值范围为:
其中M表示遥爆***的存储容量,N表示***后所产生的最大数据量。
进一步地,步骤S8具体包括以下分步骤:
S81、创建一个日志文件的拷贝文件copy.log。
S82、把日志文件boom.log最后两行的数据写入到拷贝文件copy.log中。
S83、删除日志文件boom.log。
S84、把拷贝文件copy.log命名为日志文件boom.log,进入步骤S12。
进一步地,步骤S16中本次需要写的文件编号z的计算公式为:
z=(g+1)%k
其中g表示日志文件boom.log的倒数第二行数据的文件编号,%为取余运算,k为数据文件总数。
本发明的有益效果是:
(1)本发明对Write Ahead Log算法进行了改进,使其能够应用到遥爆***中,并有效解决了在遥爆***中可能出现的数据不一致的问题。
(2)本发明将改进后的Write Ahead Log算法和循环写算法进行了结合,能够同时解决遥爆***中数据的一致性问题和不能在有限存储容量上保存理论上无限数据的问题。
附图说明
图1所示为本发明实施例提供的一种应用于遥爆***的数据保存方法流程图。
图2所示为本发明实施例提供的最后一行的数据为数字k的日志文件示意图。
图3所示为本发明实施例提供的最后一行的数据为complete的日志文件示意图。
具体实施方式
现在将参考附图来详细描述本发明的示例性实施方式。应当理解,附图中示出和描述的实施方式仅仅是示例性的,意在阐释本发明的原理和精神,而并非限制本发明的范围。
本发明实施例提供了一种应用于遥爆***的数据保存方法,如图1所示,包括以下步骤S1~S18:
S1、控制遥爆***开机,开始运行数据保存程序。
S2、判断数据保存程序中是否存在数据文件,若是则进入步骤S4,否则进入步骤S3。
本发明实施例中,把每一次的***数据保存在一个单独的文件中,这种文件即称为数据文件。
S3、根据遥爆***存储容量的大小创建k个数据文件,并对数据文件从0~k-1进行编号,进入步骤S4。
执行到该步骤说明数据保存程序中不存在数据文件,数据保存程序是第一次在遥爆***上运行,因此需要根据遥爆***存储容量的大小创建k个数据文件,其中数据文件总数k的取值范围为:
其中M表示遥爆***的存储容量,N表示***后所产生的最大数据量。遥爆***每次***产生的数据量都很小,因此可以知道***后所产生的最大数据量。
S4、判断数据保存程序中是否存在日志文件boom.log,若是则进入步骤S5,否则进入步骤S9。
S5、判断数据保存程序中是否存在日志文件的拷贝文件copy.log,若是则进入步骤S6,否则进入步骤S7。
S6、删除拷贝文件copy.log,进入步骤S7。
执行到该步骤说明日志文件boom.log和拷贝文件copy.log都存在,由后续步骤S8可知,遥爆***是在创建拷贝文件copy.log之后,删除日志文件boom.log之前崩溃的,这时日志文件boom.log最后两行信息是否写入拷贝文件copy.log是不确定的,所以可以先删除掉拷贝文件copy.log,然后再执行步骤S7。
S7、判断日志文件boom.log是否为空,若是则说明遥爆***从来没有写入数据到日志文件boom.log(因为写数据之前要先把文件编号写入到日志文件中),此时进入步骤S12,否则进入步骤S8。
S8、清除掉日志文件boom.log中的无用数据,进入步骤S12。
执行到该步骤证明只存在日志文件boom.log,并且日志文件boom.log中存在数据,因此要清除掉日志文件boom.log中的无用数据,具体清除方法包括以下分步骤S81~S84:
S81、创建一个日志文件的拷贝文件copy.log。
S82、把日志文件boom.log最后两行的数据写入到拷贝文件copy.log中。
S83、删除日志文件boom.log。
S84、把拷贝文件copy.log命名为日志文件boom.log,进入步骤S12。
按照上述步骤清除,当在清除过程中遥爆***崩溃时只存在以下三种情况:
(1)只存在日志文件boom.log,且日志文件boom.log中的数据没有丢失。
(2)只存在拷贝文件copy.log,证明遥爆***是在删除掉日志文件boom.log之后,把拷贝文件copy.log重命名为日志文件boom.log之前崩溃的,此时拷贝文件copy.log里面已经包含了被删除掉的日志文件boom.log的最后两行数据。
(3)日志文件boom.log和拷贝文件copy.log都存在,证明遥爆***是在创建拷贝文件copy.log之后,删除日志文件boom.log之前崩溃的,这时日志文件boom.log最后两行信息是否写入拷贝文件copy.log是不确定的。
S9、判断数据保存程序中是否存在日志文件的拷贝文件copy.log,若是则进入步骤S10,否则进入步骤S11。
S10、将拷贝文件copy.log重命名为日志文件boom.log,进入步骤S12。
执行到该步骤证明只存在日志文件的拷贝文件copy.log。由步骤S8可知,上一次遥爆***崩溃是在删除掉日志文件boom.log之后,把拷贝文件copy.log重命名为日志文件boom.log之前,此时拷贝文件copy.log里面已经包含了被删除掉的日志文件boom.log的最后两行数据。此时把拷贝文件copy.log重命名为日志文件boom.log,然后再执行步骤S12。
S11、创建日志文件boom.log,进入步骤S12。
执行到该步骤证明既没有日志文件boom.log也没有日志文件的拷贝文件copy.log,说明数据保存程序是第一次在该遥爆***上运行,此时创建日志文件boom.log,然后执行步骤S12。
S12、执行到该步骤证明日志文件的清理工作已经完成,此时判断是否有数据需要写入到数据文件,若是则进入步骤S13,否则继续执行步骤S12等待需要写入数据文件的数据准备就绪。
S13、读取日志文件boom.log的最后两行内容。
读取日志文件boom.log的最后两行内容时存在以下两种情况:
(1)最后一行数据为文件编号h,因为当文件写入完成时会写入complete到日志文件boom.log中,所以这种情况下证明上一次遥爆***是在写入数据到数据文件boom.log的过程中崩溃的,下次写文件还是从文件编号等于h的文件开始。
(2)最后一行数据为complete,证明编号等于日志文件倒数第二行数据g的文件已经写入完成,下一次写文件从文件编号等于z=(g+1)%k的文件开始。
下面采用后续步骤S14~S16分别对上述两种情况进行处理。
S14、判断日志文件boom.log的最后一行数据是否为文件编号,若是则进入步骤S15,否则进入步骤S16。
S15、将日志文件boom.log的最后一行数据的文件编号记为h,清除文件编号为h的文件中的数据,并将当前数据写入到该文件中,进入步骤S17。
本发明实施例中,因为此时日志文件boom.log最后一行数据就是h,因此不需要再次将文件编号h写入到日志文件boom.log中。
S16、执行到该步骤证明日志文件boom.log最后一行数据为complete,说明编号等于日志文件boom.log倒数第二行数据g的文件已经写入完成。此时将日志文件boom.log的倒数第二行数据的文件编号记为g,根据g获取本次需要写的文件编号z,并将文件编号z写入到日志文件boom.log中,清除文件编号为z的文件中的数据,并将当前数据写入到该文件中,进入步骤S17。
本发明实施例中,本次需要写的文件编号z的计算公式为:
z=(g+1)%k
其中g表示日志文件boom.log的倒数第二行数据的文件编号,%为取余运算,k为数据文件总数。
S17、在日志文件boom.log中写入complete,进入步骤S18。
S18、执行到该步骤证明数据已经写入到数据文件中了,此时判断是否还需要写数据到数据文件中,若是则返回步骤S12判断数据是否准备就绪,否则数据保存程序执行完毕,结束数据保存流程。
本发明的具体工作原理及过程如下:
为了解决遥爆***存储容量不足的问题,可以采用循环写文件的方式,假设最开始创建了k个数据文件,把数据文件编号,编号范围为0~k-1,假设当写完编号为k-1的文件时,下一个要写的文件就是0了。设置合适的数据文件总数k,就可以解决存储容量不足不能一直写数据的问题了。
上面只是解决了存储容量不足不能一直写数据的问题,但是不能解决***宕机时数据的一致性问题,如可能某一个文件只写到一半***就宕机了。为解决数据的一致性问题,在每一次写数据到文件之前,需要把当前写的文件编号写入到日志文件中去,然后再把数据写入到数据文件当中,最后再把complete写入到日志文件的下一行,代表数据已经写入到数据文件当中了。这样的设计在日志文件中的内容会存在两种情况:第一种情况是最后一行的数据为数字k,这种情况下代表数据没有成功写入到编号为k的文件,但是编号为k之前的文件都包含完整的数据,如图2所示;第二种情况是日志文件的最后一行内容为complete,代表所有的数据都成功写入到文件中了,如图3所示。当***出现宕机情况后对数据进行恢复时,如果遇到第一种情况就把编号为k的文件中的数据视为无效的数据,下一次写入数据时还是从编号为k的文件开始写;当遇到第二种情况时,不需要进行额外的操作,因为此时数据已经是一致的了。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (4)
1.一种应用于遥爆***的数据保存方法,其特征在于,包括以下步骤:
S1、控制遥爆***开机,开始运行数据保存程序;
S2、判断数据保存程序中是否存在数据文件,若是则进入步骤S4,否则进入步骤S3;
S3、根据遥爆***存储容量的大小创建k个数据文件,并对数据文件从0~k-1进行编号,进入步骤S4;
S4、判断数据保存程序中是否存在日志文件boom.log,若是则进入步骤S5,否则进入步骤S9;
S5、判断数据保存程序中是否存在日志文件的拷贝文件copy.log,若是则进入步骤S6,否则进入步骤S7;
S6、删除拷贝文件copy.log,进入步骤S7;
S7、判断日志文件boom.log是否为空,若是则进入步骤S12,否则进入步骤S8;
S8、清除掉日志文件boom.log中的无用数据,进入步骤S12;
S9、判断数据保存程序中是否存在日志文件的拷贝文件copy.log,若是则进入步骤S10,否则进入步骤S11;
S10、将拷贝文件copy.log重命名为日志文件boom.log,进入步骤S12;
S11、创建日志文件boom.log,进入步骤S12;
S12、判断是否有数据需要写入到数据文件,若是则进入步骤S13,否则继续执行步骤S12等待需要写入数据文件的数据准备就绪;
S13、读取日志文件boom.log的最后两行内容;
S14、判断日志文件boom.log的最后一行数据是否为文件编号,若是则进入步骤S15,否则进入步骤S16;
S15、将日志文件boom.log的最后一行数据的文件编号记为h,清除文件编号为h的文件中的数据,并将当前数据写入到该文件中,进入步骤S17;
S16、将日志文件boom.log的倒数第二行数据的文件编号记为g,根据g获取本次需要写的文件编号z,并将文件编号z写入到日志文件boom.log中,清除文件编号为z的文件中的数据,并将当前数据写入到该文件中,进入步骤S17;
S17、在日志文件boom.log中写入complete,进入步骤S18;
S18、判断是否还需要写数据到数据文件中,若是则返回步骤S12,否则数据保存程序执行完毕,结束数据保存流程。
3.根据权利要求1所述的应用于遥爆***的数据保存方法,其特征在于,所述步骤S8具体包括以下分步骤:
S81、创建一个日志文件的拷贝文件copy.log;
S82、把日志文件boom.log最后两行的数据写入到拷贝文件copy.log中;
S83、删除日志文件boom.log;
S84、把拷贝文件copy.log命名为日志文件boom.log,进入步骤S12。
4.根据权利要求1所述的应用于遥爆***的数据保存方法,其特征在于,所述步骤S16中本次需要写的文件编号z的计算公式为:
z=(g+1)%k
其中g表示日志文件boom.log的倒数第二行数据的文件编号,%为取余运算,k为数据文件总数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010215981.7A CN111414344B (zh) | 2020-03-25 | 2020-03-25 | 一种应用于遥爆***的数据保存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010215981.7A CN111414344B (zh) | 2020-03-25 | 2020-03-25 | 一种应用于遥爆***的数据保存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111414344A CN111414344A (zh) | 2020-07-14 |
CN111414344B true CN111414344B (zh) | 2023-03-14 |
Family
ID=71493193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010215981.7A Active CN111414344B (zh) | 2020-03-25 | 2020-03-25 | 一种应用于遥爆***的数据保存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111414344B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077222A (zh) * | 2012-12-31 | 2013-05-01 | 中国科学院计算技术研究所 | 机群文件***分布式元数据一致性保证方法及*** |
CN106155832A (zh) * | 2015-03-30 | 2016-11-23 | Tcl集团股份有限公司 | 一种数据恢复的方法、装置及Android设备 |
CN108431784A (zh) * | 2015-12-30 | 2018-08-21 | 华为技术有限公司 | 访问请求处理方法、装置及计算机*** |
CN110597663A (zh) * | 2019-09-16 | 2019-12-20 | 阿里巴巴集团控股有限公司 | 一种事务处理方法及装置 |
CN110807062A (zh) * | 2018-08-02 | 2020-02-18 | 中兴通讯股份有限公司 | 一种数据同步的方法、装置和数据库主机 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10956388B2 (en) * | 2018-07-10 | 2021-03-23 | EMC IP Holding Company LLC | Eventual consistency in a deduplicated cloud storage system |
-
2020
- 2020-03-25 CN CN202010215981.7A patent/CN111414344B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077222A (zh) * | 2012-12-31 | 2013-05-01 | 中国科学院计算技术研究所 | 机群文件***分布式元数据一致性保证方法及*** |
CN106155832A (zh) * | 2015-03-30 | 2016-11-23 | Tcl集团股份有限公司 | 一种数据恢复的方法、装置及Android设备 |
CN108431784A (zh) * | 2015-12-30 | 2018-08-21 | 华为技术有限公司 | 访问请求处理方法、装置及计算机*** |
CN110807062A (zh) * | 2018-08-02 | 2020-02-18 | 中兴通讯股份有限公司 | 一种数据同步的方法、装置和数据库主机 |
CN110597663A (zh) * | 2019-09-16 | 2019-12-20 | 阿里巴巴集团控股有限公司 | 一种事务处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于大数据技术的公安移动通信数据处理平台设计与实现;张波;《中国优秀硕士论文 信息科技辑》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111414344A (zh) | 2020-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8856469B2 (en) | Apparatus and method for logging optimization using non-volatile memory | |
US11301379B2 (en) | Access request processing method and apparatus, and computer device | |
CA2818472C (en) | Optimized startup verification of file system integrity | |
CN103412803A (zh) | 数据恢复的方法及装置 | |
CN102541757B (zh) | 写缓存方法、缓存同步方法和装置 | |
CN110543446B (zh) | 一种基于快照的区块链直接归档方法 | |
US20210103501A1 (en) | Recovery of in-memory databases after a system crash | |
WO2023116346A1 (zh) | 异常掉电下Trim数据的恢复方法、***及固态硬盘 | |
CN104537037A (zh) | 一种处理数据库日志的方法及装置 | |
US8108356B2 (en) | Method for recovering data in a storage system | |
CN104516959A (zh) | 一种管理数据库日志的方法及装置 | |
CN112099996B (zh) | 基于页面更新序号的数据库集群多节点重做日志恢复方法 | |
CN103403709A (zh) | 一种数据读写的方法、装置和*** | |
CN111414344B (zh) | 一种应用于遥爆***的数据保存方法 | |
JP5108252B2 (ja) | インデクス更新方法及びそのシステム | |
US20120317384A1 (en) | Data storage method | |
CN106611364B (zh) | 存储碎片整理方法及装置 | |
CN114780489B (zh) | 一种实现分布式块存储底层gc的方法及装置 | |
CN105653466A (zh) | 数据储存装置以及快闪存储器控制方法 | |
CN112416811B (zh) | 基于数据关联度的垃圾回收方法、闪存及装置 | |
CN115587050A (zh) | 映射表垃圾回收效率的方法、装置、计算机设备及介质 | |
CN112698984B (zh) | 嵌入式设备的数据库恢复方法、电子设备及介质 | |
CN110209530B (zh) | 一种恢复cdp***io数据的方法及*** | |
CN113419937A (zh) | 一种数据和日志一体化的值日志实现方法、装置、设备及存储介质 | |
CN111930302A (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 |