一种实时数据库事务操作的实现方法

文档序号:6517204阅读:157来源:国知局
专利名称:一种实时数据库事务操作的实现方法
技术领域
本发明涉及嵌入式实时系统中数据的完整性问题,特别是涉及实时应用对实时数据库进行数据更新时,能有效解决数据完整性问题的实时数据库事务操作实现方法。
背景技术
实时数据库是嵌入式实时系统常用的一种数据管理方式。和通用的数据库一样,实时数据库通过嵌入式软件内部的数据库管理系统DBMS(databasemanagement system)管理,同时实时数据库也具有三层架构的体系结构。
外模式(用户模式)是用户所看到的数据视图。在实时数据库库中,用户是指对数据库进行访问的实时应用。用户所看到的数据视图是一组由DBMS规定的访问实时数据库的方法。这些方法通常称作数据库接口。
概念模式(公共逻辑模式)是数据库的整体视图。在实时数据库中,表现为数据库中所有的表以及表之间的各种关联关系。数据库中管理的全部资源都通过表来描述。
内模式(存储模式),是数据库在计算机上的物理表示。在实时数据库中,数据库中的数据一般都存储在内存中。本发明介绍的事务操作方式的实现基础就是按照本发明介绍的方法实现数据库数据的存储。
数据库管理系统DBMS负责这三类模式之间的映射,图1所示就是实时数据库的三类模式之间的关系。最上层是外模式10,表现为一系列接口接口1、接口2、接口3......。用户通过这些接口实现对数据库的访问。中间一层是概念模式20表现为一系列表表A、表B、表C......。用来描述数据库中所管理的资源和各个资源之间的关系。下面一层是内模式30,表现为一系列的数据区,用来存放数据。各个模式之间由DBMS实现映射。
外模式10到概念模式20的映射表现为一个数据库接口可以和一个或者多个数据库表关联,这种关联关系在实时数据库库中,由数据库接口实现模块来完成,把用户对外模式的访问关系,映射为对概念模式中表的各种操作。这种映射关系如图2所示。图中接口1和表A、表B、表C关联。接口2和表B,表D关联。
概念模式20到内模式30的映射,是实时数据库实现的核心内容,不同的系统实现的方式差异都比较大,这个映射把对概念模式30中表的各种操作映射为物理数据的读或者写。
根据实时应用对数据库访问的性质,可以把对数据库的访问分为两种一种是只读访问,上层应用模块只对数据库进行查询操作,不修改数据。另外一种是读写访问,上层应用模块要对数据库中的数据进行增删和修改。与这两种访问形式对应,数据库接口也分为只读访问接口和读写访问接口两种。接口中的事务问题主要是指发生在数据库读写访问接口实现中的问题。
一个数据库读写访问接口可能涉及到逻辑模式中的几张表,实时应用调用数据库读写接口时依次对这些表进行读写操作。接口调用要求具有事务性,要么所有的数据操作成功;要么所有的数据操作失败,数据能够保持在接口调用前的状态。通常的事务处理方式是填写操作日志,如果需要回滚,则根据日志中的内容进行逆操作。这种作法,需要开辟专门的缓存来存放日志消息。另外要求所有操作具有可逆性。越复杂的接口需要的开销越大。日志中所记载的内容是以表记录为单位的。比如修改了一条表记录,则要在操作日志中增加一条描述上述操作的日志记录。回滚时通过操作日志中的日志记录来恢复数据库的表记录。

发明内容
本发明所要解决的技术问题是提供一种实时数据库事务操作的实现方法,解决现有技术因数据库接口相对比较复杂,使数据库中数据的事务操作开销较大的技术问题。
为达到上述目的,本发明提供了一种实时数据库事务操作的实现方法,其特点在于,数据库中的每一张表都分别对应一主用存储区和一备用存储区,主用存储区存放生效的数据,备用存储区存放临时的数据;将与数据库接口相关联的各个表的数据在备用存储区进行数据操作,当接口的所有的数据操作都完成且满足生效条件,对所述与该接口相关联的各个表执行主备存储区的切换操作,从而使得所述接口的所有数据操作同时生效,实现了接口的事务操作。
上述的方法,其特点在于,所述主用存储区和备用存储区是两块相同大小相同结构的内存。
上述的方法,其特点在于,所述生效条件是所述接口的所有的数据操作都正确完成。
上述的方法,其特点在于,进一步包括如下步骤步骤一,根据接口和表的关联关系,将与所述接口相关联的各个表的数据从主用存储区完全复制到备用存储区,使主用存储区和备用存储区的数据完全相同;步骤二,根据所述接口的要求将所述相关联的各个表的数据在备用存储区进行数据操作;步骤三,判断所述各数据操作是否成功,是则执行步骤四,否则执行步骤五;步骤四,对所述与该接口相关联的各个表执行主备存储区的切换操作,使得所述接口的所有数据操作同时生效;步骤五,直接返回数据操作失败。
上述的方法,其特点在于,所述主备存储区的切换,是将原主用存储区作为切换后的备用存储区,将原备用存储区作为切换后的主用存储区。
上述的方法,其特点在于,所述主备存储区的切换,是通过主用存储区指针和主用存储区指针的指向交换来完成。
上述的方法,其特点在于,所述步骤三中,如果有一个所述数据操作失败,则停止执行其余的所述数据操作,并执行步骤五。
本发明的技术效果在于本发明提供的的事务处理方法简洁有效地解决了实时数据库的事务处理问题1)本发明提供的这种实现方法,不需要写日志。实现方式非常简单。并且事务操作所需要的花销和接口实现的复杂程度没有关系。只和接口所关联的表的多少以及大小相关。而一般实时系统每个表的数据量都不是很大。但是接口的实现却有可能极其复杂。在这种情况下本发明的这种事务实现方法就是一种非常好的选择。
2)本发明针对嵌入式实时数据库数据量相对较少,数据库接口相对比较复杂的特点,提出一种简洁有效的实时应用更新数据库中数据的事务操作方法。使得数据库可以以较小的开销实现接口事务操作。保证数据库中数据的正确性和完整性。
下面结合附图进一步详细说明本发明的具体实施例。


图1是实时数据库的三层体系结构图;图2是实时数据库外模式到概念模式的映射图;图3是本发明实时数据库概念模式到内模式的映射图;图4是本发明“接口事务开始”动作的描述示意图;图5是本发明“备区数据更新”动作的描述示意图;图6是本发明“数据更新成功提交”动作的描述示意图;图7是本发明“数据更新失败返回”情形的描述示意图;图8是本发明方法的步骤流程图。
具体实施例方式
本发明主要是针对嵌入式实时数据库数据量相对较少,数据库接口相对比较复杂的特点提出的。
概念模式到内模式的映射,是实时数据库实现的核心内容,不同的系统实现的方式差异都比较大,这个映射把对概念模式中表的各种操作映射为物理数据的读或者写。本发明使用的实现方式如图3所示。图中每个表对应有两块内存301、302,对数据库表A的各种操作最终表现为对这两块数据区301、302的操作。这种内模式的实现方法是事务实现的基础,也是本发明的主要内容之一。
本发明的关键技术如下主备机制的数据库存储模式对于数据库中的每一张表,内存中都有两块相同大小相同结构的内存与之对应。两者根据在使用中扮演的角色不同具有不同的地位,一个被称作主区存放生效的数据,一个被称做备区存放临时的数据,主区和备区由相应的标识来指定。数据库提供二者互换以及主区向备区复制的功能。
数据更新是否生效以表为单位接口对于表数据的修改是以表为单位的,如果接口对数据的修改满足生效条件,则对整个表做的所有修改同时生效。否则所有修改都不生效。这一点和一般的数据库以记录为单位不同。接口的事务性通过其关联的所有表的操作生效或者操作不生效来实现。
本发明的实现方式图8是本发明方法的步骤流程图;如图所示,本发明方法主要包括如下步骤步骤801,接口事务开始;步骤802,备区数据更新;步骤803,判断是否更新成功,是则执行步骤804,否则执行步骤805;步骤804,数据更新成功提交;步骤805,数据更新失败返回。
数据库对实时应用提供事务处理的功能通过对数据更新成功和数据更新失败的不同处理方式来实现。数据库接口在实现上层调用时,要首先执行“接口事务开始”,“备区数据更新操作”两个动作。如果“备区数据更新操作”成功则执行“数据更新成功提交”这个动作。如果“备区数据更新操作”失败,则不再执行其他动作直接返回操作失败。以下就是这几个动作所完成的工作。
接口事务开始根据接口和表的关联关系将所有与对应接口相关联的表的主区数据完全复制到备区,操作完成之后,备区和主区的数据完全相同。图4是“接口事务开始”动作的描述,在这个动作中,接口1关联的所有表(这里是表A和表B)都执行用主区数据覆盖备区数据的操作(简称主备复制)。这个动作由图4中带阴影部分的两个箭头401、402所代表。
备区数据更新根据接口的要求将相关联的各个表的数据在备区进行更新。这些操作是根据上层应用的要求来完成的。图5是“备区数据更新”动作的描述,在这个动作中,接口1关联的表(这里是表A和表B)根据接口的要求对相应表的备区数据进行更新。这个动作由图中带阴影部分的四个箭头501、502、503、504所代表。其中外模式10和概念模式20之间的两个箭头501、502代表数据库接口实现模块把接口的实现分解成对表的操作。概念模式20到内模式30之间的两个箭头503、504代表对数据库表的操作最终表现为对内模式备数据区的数据进行更新操作。
数据更新成功提交当接口所要求的所有的数据操作都正确完成,数据满足生效条件,对相应接口关联的各个表执行主备区切换操作,对于相应接口关联的各个表原来的备区变成主区,原来的主区变成各区,使得所有的操作同时生效。图6是“数据更新成功提交”动作的描述,在这个动作中,接口1关联的表(这里是表A和表B)其概念模式到内模式之间的对应关系发生改变,原来的备区被标识为主区,原来的主区被标识为备区。图中表现为两个箭头的指向发生了变化。这种改变实现了接口操作生效。
数据更新失败返回如果在备区数据更新的过程中,某些数据不合法导致某项更新失败,直接返回更新操作失败。图7是“数据更新失败返回”情形的描述,在这种情况下,接口1关联的表(这里是表A和表B)其概念模式到内模式之间的对应关系保持原样,这样对备区所做的各种修改没有生效,从而无须特别的回滚操作就保证了接口更新失败的事务性。
本发明的效果分析实时数据库的事务处理具有比较广泛的应用场合。
为了实现事务操作,一般的数据库需要写非常庞大的日志来记载接口中所执行过的操作,这种操作既耗费CPU处理时间也耗费内存空间。尤其当接口实现比较复杂的时候这种情形就更加明显。
本发明提供的这种实现方法,不需要写日志。实现方式非常简单。并且事务操作所需要的花销和接口实现的复杂程度没有关系。只和接口所关联的表的多少以及大小相关。而一般实时系统每个表的数据量都不是很大。但是接口的实现却有可能极其复杂。在这种情况下专利中的这种事务实现方法就是一种非常好的选择。
本发明提供的的事务处理方法简洁有效地解决了实时数据库的事务处理问题。
以上所述仅为本发明的较佳实施例,并非用来限定本发明的实施范围;凡是依本发明所作的等效变化与修改,都被本发明的专利范围所涵盖。
权利要求
1.一种实时数据库事务操作的实现方法,其特征在于,将数据库中的每一张表都分别对应一主用存储区和一备用存储区,主用存储区存放生效的数据,备用存储区存放临时的数据;将与数据库接口相关联的各个表的数据在备用存储区进行数据操作,当接口的所有的数据操作都完成且满足生效条件,对所述与该接口相关联的各个表执行主备存储区的切换操作,从而使得所述接口的所有数据操作同时生效,实现了接口的事务操作。
2.根据权利要求1所述的方法,其特征在于,所述主用存储区和备用存储区是两块相同大小相同结构的内存。
3.根据权利要求1所述的方法,其特征在于,所述生效条件是所述接口的所有的数据操作都正确完成。
4.根据权利要求1、2或3所述的方法,其特征在于,进一步包括如下步骤步骤一,根据接口和表的关联关系,将与所述接口相关联的各个表的数据从主用存储区完全复制到备用存储区,使主用存储区和备用存储区的数据完全相同;步骤二,根据所述接口的要求将所述相关联的各个表的数据在备用存储区进行数据操作;步骤三,判断所述各数据操作是否成功,是则执行步骤四,否则执行步骤五;步骤四,对所述与该接口相关联的各个表执行主备存储区的切换操作,使得所述接口的所有数据操作同时生效;步骤五,直接返回数据操作失败。
5.根据权利要求4所述的方法,其特征在于,所述主备存储区的切换,是将原主用存储区作为切换后的备用存储区,将原备用存储区作为切换后的主用存储区。
6.根据权利要求5所述的方法,其特征在于,所述主备存储区的切换,是通过主用存储区指针和主用存储区指针的指向交换来完成。
7.根据权利要求5所述的方法,其特征在于,所述步骤三中,如果有一个所述数据操作失败,则停止执行其余的所述数据操作,并执行步骤五。
全文摘要
本发明公开了一种实时数据库事务操作的实现方法,其特点在于,数据库中的每一张表都分别对应一主用存储区和一备用存储区,主用存储区存放生效的数据,备用存储区存放临时的数据;将与数据库接口相关联的各个表的数据在备用存储区进行数据操作,当接口的所有的数据操作都完成且满足生效条件,对所述与该接口相关联的各个表执行主备存储区的切换操作,从而使得所述接口的所有数据操作同时生效,实现了接口的事务操作。本发明实现了一种开销比较小的实时数据库访问的事务操作,简单有效地保证了实时应用在更新实时数据库时数据的完整性和正确性。
文档编号G06F17/30GK1652111SQ20051001134
公开日2005年8月10日 申请日期2005年2月24日 优先权日2005年2月24日
发明者冯卫东, 陈皞 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1