一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种嵌入式数据库高可靠事务处理方法和装置与流程

2022-06-22 14:37:26 来源:中国专利 TAG:


1.本发明属于数据存储技术领域,具体涉及一种嵌入式数据库高可靠事务处理方法和装置。


背景技术:

2.中国专利“cn 101122924 a逻辑日志生成方法、数据库备份恢复方法与系统”。获取对数据库进行操作的操作请求中包含的操作描述;根据所述操作描述生成包含操作对象的唯一确定标识和操作类型标识的逻辑日志;其中,所述操作类型标识包含删除操作类型标识或覆盖操作类型标识;当所述操作类型标识为覆盖操作类型标识时,所述逻辑日志还包括对操作对象进行覆盖操作的覆盖数据。
3.中国专利“cn 101122924 a逻辑日志生成方法、数据库备份恢复方法与系统”,对生成日志文件的过程进行了描述,并不是针对嵌入式数据库高可靠事务处理方法。
4.目前的没有一项专利针对嵌入式系统下内存资源小,系统不稳定的特点提出一种嵌入式数据库高可靠事务处理方法。
5.目前常见的嵌入式数据库管理系统一般通过以下两种方式处理事务。
6.(1)将所有事务保存在内存中,在数据库关闭时写入到磁盘。这种方式在频繁写数据的场景将导致数据库持续申请内存,使系统内存不足,并且在系统突然掉电时数据丢失。
7.(2)在完成事务后,同步操作数据文件。此时将在用户操作数据库时进行磁盘读写的操作,导致嵌入式数据库性能下降,如果数据文件持续增大,进一步的影响数据库执行效率。
8.本发明提出一种嵌入式数据库的高可靠事务处理方法,该方法可以提高嵌入式数据库可靠性,并且不影响系统运行效率。本发明有效利用嵌入式数据库的内存,当有用户对数据库操作时,数据库生成针对本次操作的日志文件,并且将需要更新的数据库页写入该日志文件。在系统空闲时,系统初始化阶段启动的高可靠任务(high reliable,简称hr任务)将日志文件内数据写入数据文件中。
9.本发明具体解决以下两个问题。
10.(1)嵌入式系统内存普遍较小
11.嵌入式系统内存目前一般均较小(小于8gb),并且还要处理优先级较高的任务。嵌入式数据库作为系统的一个组成部分,不能无限制申请内存空间。本发明将内存数据以事务为单位写入磁盘,可以较少对内存的占用。
12.(2)嵌入式系统稳定性低
13.当前嵌入式系统受到成本、外部环境等因素的影响,一般不会有特别多的安全机制保证系统断电对数据的保护。一般内存中的数据会随着系统断电而消失,导致嵌入式数据库丢失数据。本发明提出一种高可靠事务处理方法,将事务以日志文件的形式同步写入到磁盘中。在系统断电后,由于日志文件已经在磁盘中保存,不会丢失数据。
14.(3)嵌入式系统实时性高
15.一般嵌入式系统的实时性要求较高,对数据库的性能要求也很高,如果在用户对数据库操作的同时,直接操作数据库文件,导致嵌入式数据库大量的读写磁盘,严重影响嵌入式数据库的效率。本发明不会在系统繁忙时直接操作数据文件,只会在系统空间时进行操作数据文件过程,能保证嵌入式数据库高可靠的同时不会降低数据处理效率。


技术实现要素:

16.(一)要解决的技术问题
17.本发明要解决的技术问题是如何提供一种嵌入式数据库高可靠事务处理方法和装置,以解决嵌入式系统内存小、稳定性低对嵌入式系统可靠性的影响,以及满足嵌入式系统实时性高的要求的问题。
18.(二)技术方案
19.为了解决上述技术问题,本发明提出一种嵌入式数据库高可靠事务处理方法,该方法包括:以单个事务为单位对用户的操作形成对应的日志文件,当有一个事务开始时,系统生成唯一的事务id号,根据该id号生成一个对应的日志文件,并将用户对数据库的操作写入到日志文件中,在系统空闲时对日志文件逐个的处理,包括解析、归档或者删除,在cpu空闲时,高可靠hr任务将按照事务id号从小到大的顺序查找磁盘中日志文件,并将日志文件中的数据写入到数据文件中,再根据数据库系统设置将日志文件进行归档或者删除。
20.本发明还提供一种嵌入式数据库高可靠事务处理装置,该装置包括初始化模块、运行模块和日志文件处理模块;
21.初始化模块:该模块为初始化准备过程,设置hr任务状态为“运行状态”,并且启动hr任务;
22.运行模块:该模块是高可靠事务处理的主工作模块,系统启动后,将一直进行日志文件的处理,直到接收到停止状态;
23.日志文件处理模块,辅助模块二进行工作,包含运行模块对日志文件处理的详细流程;
24.嵌入式数据库管理系统启动后,首先运行“初始化模块”内流程,将后续的模块“运行模块”启动,同时“运行模块”调用“日志文件处理模块”内对应的流程。
25.(三)有益效果
26.本发明提出一种嵌入式数据库高可靠事务处理方法和装置,本发明设计了一种高可靠事务处理方法,保证嵌入式数据库高可靠,同时不影响嵌入式数据库处理数据效率。当前已经存在的事务处理方法使用大量的内存空间,对日志的处理也不灵活,不能扩展日志的使用和保障系统的稳定性。因此,设计一种高可靠事务日志处理方法,通过hs任务处理日志文件,解决了嵌入式数据库系统无法同时满足低内存开销,高可靠的要求。
27.本发明提供一种高可靠事务日志处理方法,与现有技术相比,本发明的有益效果在于:
28.(1)本发明提出的方法解决嵌入式系统内存普遍较小以及嵌入式系统稳定性低对嵌入式数据库高可靠的影响;
29.(2)本发明提供的方案不会在系统繁忙时直接操作数据文件,保证嵌入式数据库高可靠的同时不会降低数据处理效率。
附图说明
30.图1为日志文件格式;
31.图2为系统启动hr任务流程;
32.图3为hr任务工作流程;
33.图4为hr任务初始化流程;
34.图5为hr任务主流程;
35.图6为hr任务暂停流程;
36.图7为hr任务终止流程
37.图8为hr任务解析日志文件流程;
38.图9为hr任务归档日志文件流程;
39.图10为hr任务日志文件删除流程。
具体实施方式
40.为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
41.如图1-10所示,为了解决嵌入式系统内存小、稳定性低对嵌入式系统可靠性的影响,以及满足嵌入式系统实时性高的要求。本发明提出了一种高可靠事务处理方法,该方法以单个事务为单位对用户的操作形成对应的日志文件。当有一个事务开始时,系统生成唯一的事务id号,根据该id号生成一个对应的日志文件,并将用户对数据库的操作写入到日志文件中,在系统空闲时对日志文件逐个的处理,包括解析、归档或者删除。在cpu空闲时,hr任务将按照事务id号从小到大的顺序查找磁盘中日志文件,并将日志文件中的数据写入到数据文件中,再根据数据库系统设置将日志文件进行归档或者删除。
42.本发明的hr任务的状态如下表所示。
43.表1hr任务状态表
[0044][0045]
一个日志对应一个数据库事务,即一个事务形成一个日志文件。下面详细介绍日志文件的结构、日志文件的归档与日志文件生命周期。
[0046]
日志文件结构。一个日志文件包含文件头信息和多个数据文件信息,每个数据文件信息还包含多个页。其中文件头信息包含文件头部信息和数据文件信息个数。数据文件信息包含数据文件头信息和数据信息。数据文件头信息中是数据文件信息的文件名,页数,
具体的页大小。数据信息中包含页号,具体的数据信息等。
[0047]
归档日志说明。归档是日志文件的另一种存在形式,日志文件已经不再被需要后,该日志文件状态被修改为归档状态,即在日志名称中添加提交标记的后缀(如.arch),此时日志被标记为“归档日志”(例如00000000.lg.arch)。归档日志在嵌入式数据库中有较多用途,例如数据恢复与基于日志的镜像备份,将使用归档日志。
[0048]
事务日志文件的生命周期。1)创建阶段。当日志文件被创建时,其在数据库目录中被打开,并写入日志文件头部信息。2)提交阶段。一个事务完成后,将进行同步日志文件,意味着其包含的内容已经被写入并提交到磁盘中。如果此时计算机崩溃,磁盘中的内容将是正确的和完整的。3)归档阶段。hs任务一直在数据库目录下查找日志文件,并将日志文件的内容写入到数据库(数据文件)中。日志文件被写入到数据库中,并且数据文件也同步更新到磁盘后,该日志文件在本地就不再被需要,需要进行归档。4)清除阶段。日志文件在本地磁盘中不能一直存在,则需要以时间或者占用磁盘空间两种方式(也可同时存在着两种方式)进行删除。
[0049]
本发明提出的装置有三个功能模块。下面是详细说明每个模块包含的主要功能。
[0050]
模块一为“初始化模块”是系统引导hr启动的功能模块,引导启动后,该模块工作完成,包含附图2,附图3;
[0051]
模块二为“运行模块”是高可靠事务处理的主工作模块,系统启动后,将一直进行日志文件的处理,直到接收到停止状态,包含附图4,附图5,附图6,附图7;
[0052]
模块三为“日志文件处理模块”,辅助模块二进行工作,包含模块二对日志文件处理的详细流程,包含附图8,附图9,附图10。
[0053]
这三个模块的关系是:嵌入式数据库管理系统启动后,首先运行“初始化模块”内流程,将后续的模块“运行模块”启动,同时“运行模块”内模块调用“日志文件处理模块”内对应的流程。
[0054]
下面详细说明每个模块包含的主要流程。
[0055]
(1)初始化模块
[0056]
该模块为嵌入式数据库管理系统进行高可靠事务处理准备阶段,只在嵌入式数据库管理系统启动阶段进行,主要目的是启动“运行模块”内的流程。
[0057]
1)系统启动hr任务流程(before_start_hr)
[0058]
本步骤对应的附图为图2。在该流程中调用操作系统的启动任务函数,启动hrthread_main任务。
[0059]
(a)设置hr任务状态为“已经初始化”;
[0060]
(b)调用本模块流程2,启动hrthread_main任务;
[0061]
(c)判断状态是否为“已经初始化”,若仍是“已经初始化”状态,休眠一定时间(如10毫秒),直到状态不是“已经初始化”;
[0062]
(d)若状态为“终止状态”时,结束hr任务。
[0063]
2)hr任务工作流程(hrthread_main)
[0064]
该步骤对应的附图为图3。在该步骤中,依次执行hr任务初始化,运行,结束操作。
[0065]
(a)初始化hr任务;
[0066]
(b)若初始化成功,则进行hr主流程;否则设置状态为“终止状态”,退出本流程;
[0067]
(c)执行结束hr任务的流程。该流程一般是进行hr主流程检测到终止状态时才能进行。
[0068]
(2)运行模块
[0069]
经过前面的模块处理,hr任务已经作为操作系统的后台任务,被操作系统执行。本模块是hr任务处理日志文件的主工作模块。
[0070]
1)hr初始化(hr_init)
[0071]
本步骤对应附图为图4。主要是修改hr的状态。
[0072]
(a)根据配置文件设置初始化所需要的相关参数。
[0073]
(b)初始化成功后设置初始状态为“运行状态”。
[0074]
2)hr主流程(hr_loop)
[0075]
本步骤对应附图为图5。主要是查找日志文件,并将日志文件进行归档或者删除。本模块调用的查找日志文件,进行归档与删除日志文件流程,在“日志文件处理模块”介绍。
[0076]
(a)调用解析日志文件chkptfcn函数,首先从磁盘找日志文件,找到日志文件后在chkptfcn函数中解析日志文件,否则继续下面过程;
[0077]
(b)若未找到日志文件,则调用“日志文件处理模块”内函数,对系统日志文件进行归档与删除操作;
[0078]
(c)若查找文件过程出现错误,则设置错误计数次数加1,继续从磁盘查找日志文件,错误次数超过临界值,则打印错误信息,用于提示用户;
[0079]
(d)该过程在嵌入式数据库运行过程中一直进行,若判断hr为支持“暂停状态”,则运行“hr暂停流程”,暂停该过程一段时间后继续在本模块处理内运行;若判断hs的状态为“终止状态”,则运行“hr终止流程”结束本过程。
[0080]
3)hr暂停流程(hr_pause)
[0081]
本步骤对应附图为图6。hr暂停流程分两步进行:获取暂停时间,休眠后退出暂停状态。
[0082]
4)hr终止流程(hr_term)
[0083]
本步骤对应附图为图7。hr终止流程分两步进行:释放资源,设置状态为“终止状态”。
[0084]
(3)日志文件处理模块
[0085]
该模块为“运行模块”的辅助模块,被“运行模块”的“hr主流程”调用。主要是对日志文件进行处理,包括解析日志文件,归档日志文件,删除日志文件三个子流程。
[0086]
1)解析日志文件流程(chkptfcn)
[0087]
本步骤对应附图为图8。
[0088]
a)获取一个日志文件操作。从磁盘中按照事务号从到大查找日志文件,若磁盘中找到日志文件,则将日志文件读取到内存中。
[0089]
b)解析日志文件的操作。日志文件按照一定的格式写入的数据,本过程是一个写入日志文件的反过程,即解析日志文件。从日志文件获取日志的版本、要写入数据文件的头部信息,获取当前处理的文件名和文件名长度,查看该序号所在日志文件长度的大小,将信息写入到指定的数据文件中。
[0090]
2)归档日志文件流程(flushchanges)
[0091]
本步骤对应附图为图9。
[0092]
a)判断是否需要归档。若数据库系统有日志文件未进行归档,则对日志文件进行归档。
[0093]
b)归档日志文件。对日志文件进行归档时,将该日志文件以修改后缀的方式修改名称,此时日志被标记为“归档日志”。
[0094]
3)删除日志文件流程(logfilecleanup)
[0095]
本步骤对应附图为图10。
[0096]
删除日志文件流程(logfilecleanup)分两种情况,依据空间选项删除日志文件、依据时间选项删除日志文件。
[0097]
根据时间或者占用磁盘空间规则决定是否清除日志文件;如果日志文件超过一定的时间,日志将被删除;日志文件占用磁盘的空间超过给定的数值,日志文件也被删除;也可同时存在着两种方式。
[0098]
a)选择依据空间选项删除日志文件时,可通过调用内存空间配置接口设置内存标识和大小,也可通过初始化文件获取,当日志文件超出指定内存时,根据指定方式删除文件。例如根据指定的插入顺序进行删除,或者结合时间选项删除最旧的日志文件。
[0099]
b)选择依据时间选项删除日志文件时,通过系统执行时间,根据指定方式删除日志文件。例如删除最旧的日志文件,或删除超过特定时间点的日志文件。
[0100]
通过本步骤,完成了一种嵌入式数据库高可靠事务处理。
[0101]
以上实施实例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施实例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在发明请求保护的技术方案范围当中。
[0102]
本发明设计了一种高可靠事务处理方法,保证嵌入式数据库高可靠,同时不影响嵌入式数据库处理数据效率。当前已经存在的事务处理方法使用大量的内存空间,对日志的处理也不灵活,不能扩展日志的使用和保障系统的稳定性。因此,设计一种高可靠事务日志处理方法,通过hs任务处理日志文件,解决了嵌入式数据库系统无法同时满足低内存开销,高可靠的要求。
[0103]
本发明提供一种高可靠事务日志处理方法,与现有技术相比,本发明的有益效果在于:
[0104]
(1)本发明提出的方法解决嵌入式系统内存普遍较小以及嵌入式系统稳定性低对嵌入式数据库高可靠的影响;
[0105]
(2)本发明提供的方案不会在系统繁忙时直接操作数据文件,保证嵌入式数据库高可靠的同时不会降低数据处理效率。
[0106]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献