首页> 中国专利> 数据库系统、数据库更新方法、数据库以及数据库更新程序

数据库系统、数据库更新方法、数据库以及数据库更新程序

摘要

可以提供一种应对应用程序和环境的波动的数据库抵抗能力。一种用于由应用程序来更新数据的数据库系统,包括:用于存储主数据的数据存储装置,以及共享存储区域。共享存储区域包括:第一区域,其中加载有主数据,并且应用程序仅可对其进行参考;以及第二区域,其存储在应用程序更新第一区域中的主数据时生成的差异数据,并且应用程序可对其进行参考和更新。

著录项

  • 公开/公告号CN101981550A

    专利类型发明专利

  • 公开/公告日2011-02-23

    原文格式PDF

  • 申请/专利权人 日本电气株式会社;

    申请/专利号CN200980111727.4

  • 发明设计人 本田和利;

    申请日2009-03-31

  • 分类号G06F12/00;

  • 代理机构北京市金杜律师事务所;

  • 代理人王茂华

  • 地址 日本东京都

  • 入库时间 2023-12-18 01:56:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-05-17

    未缴年费专利权终止 IPC(主分类):G06F12/00 授权公告日:20141105 终止日期:20160331 申请日:20090331

    专利权的终止

  • 2014-11-05

    授权

    授权

  • 2011-05-11

    实质审查的生效 IPC(主分类):G06F12/00 申请日:20090331

    实质审查的生效

  • 2011-02-23

    公开

    公开

说明书

技术领域

本发明涉及用户应用程序对置于共享存储器上的数据区进行更新的数据库、数据库系统、数据库更新方法以及数据库更新程序。

背景技术

图13示出了一种存储器数据库系统,其中用户应用程序直接更新置于共享存储器上的数据区。在此数据库系统中,在用户应用程序存在缺陷的情况下,存在如下问题:当用户应用程序更新数据时,共享存储器上的数据区可能被破坏。

图14示出了用于存储器数据库系统的日志文件系统。在该系统中,当发生数据破坏时,根据以下过程来恢复数据。即,(1)清除存储器上被破坏的数据,(2)从盘装置重新加载主数据,以及(3)从日志文件前滚更新数据,该日志文件保持和管理元数据。

然而,过程(2)和(3)需要从盘装置读取数据。通常,在访问盘装置时,读取和写入所需要的时间大于访问存储器的情况,继而,当发生存储器破坏时,服务被挂起较长时间。而且,恢复需要的成本较大。

作为具有防止由用户应用程序导致的数据破坏这一功能的系统,存在客户端/服务器方法的存储器数据库系统。如图15所示,客户端/服务器方法的系统包括服务器守护程序(daemon)。从用户应用程序对数据的访问必须通过服务器守护程序来执行。只有服务器守护程序访问共享存储器,并且用户应用程序不直接访问共享存储器。因此,用户应用程序不会破坏共享存储器上的数据。

作为另一方法,用于CVS(并发版本系统)的方法是已知的。CVS是一种版本管理系统,多个人可以通过它来同时处理文件。图16中示出了CVS的配置。当用户更新主数据(在这种情况下,是主文件)时,首先,(4)从称为存储库的区域将全部主文件复制到本地区域中,接下来,(5)更新所复制的主文件。在此之后,(6)将更新的内容一次全部反映到主文件中。用户他/她本身无法直接更新主文件。因此,用户不会破坏主文件。

图17示出了由专利文献1公开的数据更新方法。根据应用进程,数据库系统的共享存储器是只读的。对于每个应用进程,以块为单位(64KB)或者以页面为单位(4到8KB)提供用于更新的存储器。当更新数据时,首先,(7)将共享存储器的相关块复制到用于更新的存储器,(8)更新用于更新的存储器上的数据,继而,(9)管理器进程将用于更新的存储器上的内容复制到共享存储器中。(10)应用程序不直接访问主数据。因此,用户不会破坏主文件。

专利文献1:日本专利申请特开平号:1998-031604。

发明内容

技术问题

本发明的主题是提供一种数据库,其对于应用程序和环境的变化是鲁棒的。

在客户端/服务器方法中,当用户应用程序访问数据时,总是需要用户应用程序与服务器守护程序之间的进程间通信。为此,由于进程间通信开销所导致的数据更新性能下降,与直接访问共享存储器的情况相比,数据访问成本变得较高,并且由此使事务性能恶化。

在需要高事务性能的存储器数据库中,这点将变成严重的问题。

此外,在CVS方法中,在开始数据更新处理之前,需要完全复制主数据。另外,在专利文献1中示出的方法中,需要将主数据的一部分复制到以块为单位或者以页面为单位的其他区域中。

用于在存储器之间复制数据的处理消耗与复制大小成比例的CPU资源。为此,在每次开始数据更新处理时复制主数据的这些方法中,存在一个问题,即复制处理剥夺了CPU资源,并且由此使事务性能下降。

而且,在这些方法中,更新数据的进程的数量生成主数据的副本。因此,还存在一个问题,即系统需要的存储器资源也将增加。

本发明的目的在于提供解决上述问题的存储器数据库、存储器数据库系统和存储器数据库的更新方法。本发明的目的之一在于提供一种存储器数据库,其可以防止用户造成的数据破坏,并且使数据访问性能的下降以及CPU资源和存储器资源的消耗最小化。

问题的解决方案

本发明的数据库系统一种是用于由应用程序来更新数据的数据库系统,包括:用于存储主数据的数据存储装置;以及共享存储器区域。共享存储器区域包括:第一区域,其中加载有主数据,并且仅允许应用程序对其进行参考;以及第二区域,其存储在应用程序更新第一区域中的主数据时生成的差异数据,并且允许应用程序对其进行参考和更新。

本发明的数据库更新方法是一种用于由应用程序来更新数据的数据库更新方法,包括:由应用程序更新加载到第一区域中的主数据以及生成差异数据的步骤,其中仅允许应用程序参考该第一区域;将应用程序更新主数据时生成的差异数据存储在第二区域中的步骤,其中允许应用程序参考和更新该第二区域;将差异数据反映到主数据中的步骤;以及消除差异数据的步骤。

本发明的数据库是一种用于由应用程序来更新数据的数据库,包括:第一区域,其中加载有主数据,并且仅允许应用程序对其进行参考;以及第二区域,其存储在应用程序更新第一区域中的主数据时生成的差异数据,并且允许应用程序对该第二区域进行参考和更新。

本发明的数据库更新程序是一种用于更新加载到数据库中的数据的数据库更新程序,其使数据库执行:更新加载到第一区域中的主数据以及生成差异的步骤,其中仅允许该程序参考该第一区域;在第二区域中存储生成的差异数据的步骤,其中允许程序参考和更新该第二区域;将差异数据反映到主数据中的步骤;以及消除差异数据的步骤。

本发明的有益效果

根据本发明,因为用户应用程序不能访问存储主数据的参考用区域,所以即使在用户应用程序中存在缺陷时,主数据也不会被破坏。

附图说明

图1是示出根据本发明的存储器数据库系统的一个示例性实施方式的系统配置图;

图2是示出根据该示例性实施方式在创建共享存储器时共享存储器的配置图;

图3是在加载主数据时根据该示例性实施方式的存储器数据库系统的配置图;

图4是在配置用于更新的区域中的索引时根据该示例性实施方式的存储器数据库系统的配置图;

图5是在生成主数据的差异数据的前期中,根据该示例性实施方式的存储器数据库系统的配置图;

图6是在生成主数据的差异数据的后期中,根据该示例性实施方式的存储器数据库系统的配置图;

图7是在通过差异数据更新主数据的前期中,根据该示例性实施方式的存储器数据库系统的配置图;

图8是在通过差异数据更新主数据的后期中,根据该示例性实施方式的存储器数据库系统的配置图;

图9是在由另一用户生成主数据的差异数据的前期中,根据该示例性实施方式的存储器数据库系统的配置图;

图10是在由另一用户生成主数据的差异数据的后期中,根据该示例性实施方式的存储器数据库系统的配置图;

图11是在生成主数据的差异数据期间对参考用区域进行参考时,根据该示例性实施方式的存储器数据库系统的配置图;

图12是在数据修复时根据该示例性实施方式的存储器数据库系统的配置图;

图13是相关领域中数据破坏时的存储器数据库系统的配置图;

图14是相关领域中数据修复时的日志文件系统的配置图;

图15是相关领域中客户端/服务器方法的存储器数据库系统的配置图;

图16是相关领域中CVS方法的存储器数据库系统的配置图;

图17是专利文献1中的存储器数据库系统的配置图;

图18是示出根据该示例性实施方式在存储器数据库系统启动时的处理的流程图;

图19是示出根据该示例性实施方式针对存储器数据库中数据的更新处理的流程图;

图20是示出根据该示例性实施方式的、当其他应用程序发布更新请求时,针对存储器数据库中数据的更新处理的流程图;以及

图21是示出根据该示例性实施方式的存储器数据库中的数据修复处理的流程图。

具体实施方式

在下文中,将参考附图描述根据本发明的优选实施方式。

其间,以下示出的该示例性实施方式的存储器数据库中的个体处理或者操作通过在计算机中由程序指令(软件)执行的处理、装置和功能来实现。程序向计算机的每个组件发送指令,并且使其执行以下描述的预定处理和功能。即,该示例性实施方式的存储器数据库中的个体处理和装置通过具体的装置来实现,其中程序和计算机彼此协作。

其间,程序的全部或者部分例如通过磁盘、光盘、半导体存储器或者任何其他计算机可读记录介质来提供。从记录介质中读取的程序被安装在计算机中并且继而被执行。而且,程序可以经由通信线而不是通过记录介质而被加载到计算机中而后被执行。此外,可以通过通信线来直接执行程序。

图1是示出根据本发明的存储器数据库系统的配置的示例性实施方式的框图。该示例性实施方式的存储器数据库系统1包括诸如个人计算机和工作站的信息处理装置。具体地,该示例性实施方式的存储器数据库系统1包括:共享存储器100,其存储数据库的数据;用户接口程序200,其是用户初始准备的;提交执行守护程序300;以及盘装置400,其存储主数据。提交执行守护程序300可以在守护程序服务器(未示出)上开始,用以实现下文描述的处理。

共享存储器100划分为:作为第一区域的参考用区域110,以及作为第二区域的更新用区域120。

在参考用区域110中,存储有主数据111。

在存储器数据库系统1的操作启动时,从盘装置400读取主数据111。

主数据111包括作为主要数据的记录112,以及作为参考用索引的索引树113。

索引树113具有树结构,其用于快速检索记录。索引树113在对应于末端的叶部分具有参考用指针存储区域114。

参考用指针存储区域114存储参考用指针115的数值,该参考用指针115指向相应的对应记录112。作为对应于参考用指针存储区域114的更新用索引,在更新用区域120中提供更新用指针存储区域124。参考用指针存储区域114存储去往更新用指针存储区域124的链接。

对参考用区域110设置以下访问限制。即,从用户应用程序200,只能参考而不允许更新。此外,从提交执行守护程序300,可以参考和更新。

更新信息121存储在更新用区域120中。

在用户应用程序200试图更新主数据111时,创建更新信息121。

更新信息121包括:更新前后之间差异的差异记录122,以及存储更新用索引的更新用指针存储区域124。

在将主数据111读入到参考用区域110中时,参考用指针存储区域114的内容被自动拷贝到更新用指针存储区域124中,并且提供来自参考用指针存储区域114的链接。

因此,在初始状态,更新用指针存储区域124存储更新用指针125的数值,该更新用指针125指向主数据111上的对应记录112。

此后,当用户应用程序200试图更新主数据111并且差异记录122被创建时,更新用指针存储区域124的数值被更新,使得更新用指针125指向差异记录122。

针对更新用区域120设置访问限制,并且从用户应用程序200和提交执行守护程序300可以进行参考和更新。

用户应用程序200最初由使用存储器数据库系统1的用户来准备。用户应用程序200具有参考置于参考用区域110中的主数据111的功能。另外,用户应用程序200具有以下功能:在更新主数据111时创建差异记录122;隔绝更新用区域120;此后将创建的差异记录122存储在更新用区域120中;以及改变更新用指针125以使其指向差异记录122。

另外,用户应用程序200具有这样的功能,其在数据更新之后通过向提交执行守护程序300传输提交请求来实现提交处理。

提交执行守护程序300在存储器数据库系统1中操作。当接收来自用户应用程序200的提交请求时,提交执行守护程序300隔绝参考用区域110和更新用区域120。此后,提交执行守护程序300具有以下功能:将存储在更新用区域120中的差异记录122反映到存储在参考用区域110中的主数据111中;以及改变更新用指针125使其全部指向主数据111的记录112。

接下来,将参考图2-图12以及图18-图21对上述存储器数据库系统1的操作进行描述。

参考图18,根据以下过程来创建存储器数据库系统1的共享存储器100。

首先,如图2所示,存储器数据库系统1在启动时,在共享存储器100上创建参考用区域110和更新用区域120(步骤S101)。

接下来,如图3所示,存储器数据库系统1将从盘装置400读取的主数据111加载到参考用区域110上(步骤S102)。主数据111包括作为主要数据的记录112和作为参考用索引的索引树113。索引树113在叶子部分具有参考用指针存储区域114。

接下来,如图4所示,存储器数据库系统1将参考用指针存储区域114拷贝到更新用区域120上,并且生成更新用指针存储区域124(步骤S103)。

参考用指针存储区域114存储参考用指针115的数值,该参考用指针115指向对应的记录112,并且还存储去往更新用指针存储区域124的链接以作为更新用区域120中提供的更新用索引(步骤S104)。

更新用指针存储区域124存储更新用指针125的数值,该更新用指针125指向差异记录122(图1)。

然而,在初始状态中,更新用指针125指向与主数据111上的参考用指针115相同的记录,如图4所示。

接下来,将参考图19描述用户应用程序200更新置于共享存储器100上的主数据111的处理。

在图5和图19中,当用户应用程序200试图更新主数据111的记录112时,用户应用程序200隔绝更新用区域120(步骤S201)。因此,其他用户应用程序或者提交执行守护程序300无法参考更新用区域120。接下来,通过参考来自索引树113的更新用指针125,用户应用程序200标识要更新的记录镜像的位置。在图5中,记录112涂黑的部分指示所标识的记录镜像的位置。

此后,用户应用程序200生成差异记录镜像122,其根据更新前的记录镜像(其位置已经如上进行了标识)以及更新后的记录镜像而获得(步骤S202),并且将其存储在更新用区域120中,如图6所示(步骤S203)。继而,用户应用程序200改写更新用指针存储区域124,以使得更新用指针125指向差异记录镜像122。

在全部处理结束之后,用户应用程序200取消对更新用区域120的隔绝(步骤S204)。

当指定数目(该数目可以是1次或者可以是多次)的用户应用程序200的更新结束之后,将更新用区域120中积累的更新信息121反映到主数据111。即,如图7所示,用户应用程序200使用进程间通信向提交执行守护程序300传输提交请求(步骤S205)。

当接收提交请求时,提交执行守护程序300首先隔绝参考用区域110和更新用区域120(步骤S206)。

接下来,同时将更新用区域120中积累的差异记录122反映到参考用区域110的主数据111中(步骤S207)。

在利用差异记录122改写主数据111之后,如图8所示,消除差异记录122(步骤S208),并且改写更新用指针存储区域124以使指向差异记录122的更新用指针125指向主数据111上的对应记录112。

在全部处理结束之后,取消对参考用区域110和更新用区域120的隔绝(步骤S209)。

接下来,将参考图20描述由另一用户应用程序进一步更新由用户应用程序200更新的记录的方法。

如图6所示,假设在由用户应用程序200更新主数据111的状态下,差异记录122被存储在更新用区域120中,并且更新用指针存储区域124被改写以使得更新用指针125指向差异记录122,并且对更新用区域120的隔绝已经取消(步骤S201和S204)。

在这种状态下,当不同的用户应用程序210试图重新更新记录112并且请求数据的更新时,如图9所示(步骤S210:是),首先隔绝更新用区域120,使其不能被其他用户应用程序或者提交执行守护程序300参考,如图9所示(步骤S211)。

接下来,通过参考更新用指针125来标识要更新的记录。在这种情况下,更新用指针125指向差异记录122内,并且确定更新的当前实际对象是更新之后的记录128。

此后,如图10所示,不同的用户应用程序210生成包括更新之后的这一记录128(图9)并且还包括此次更新之后的记录的差异记录(步骤S212),并且将该差异记录附加至更新用区域120(步骤S213)。继而,改变更新用指针125使更新用指针125指向生成的差异记录。在全部处理结束之后,取消对更新用区域120的隔绝(步骤S214)。

在不同的用户应用程序210的更新结束(步骤S210:否)之后,提交执行守护程序300对主数据111的反映处理与上文是非常相似的,所以省略对其的描述。

也就是说,从不同的用户应用程序210接收提交请求的提交执行守护程序300隔绝参考用区域110和更新用区域120,同时将更新用区域120中积累的差异记录122反映到参考用区域110的主数据111中,利用差异记录122改写主数据111,并且继而消除差异记录122,改写更新用指针存储区域124,继而取消对参考用区域110和更新用区域120的隔绝。

当完成了数据库的全部更新时,将参考用区域110的主数据111写入到盘装置400。可以将主数据111重写或者可以将其附加到盘装置400的主数据。此后,将参考用区域110和更新用区域120从共享存储器100去分配,处理结束。

接下来,将描述在用户应用程序200试图更新主数据111时不同的用户应用程序210参考主数据111这一情况下的处理。

在用户应用程序200试图更新主数据111时,隔绝更新用区域120,如图11所示,并且由此其他用户应用程序或者提交执行守护程序300无法参考更新用区域。然而,因为还没有在参考用区域110中更新数据,并且隔绝不是必需的,所以其他用户应用程序总是可以对参考用区域110进行参考。

然而,在此方面,在用户应用程序200的更新处理完成并且提交请求被发布到提交执行守护程序300之后,在提交执行守护程序300将更新信息121反映到主数据111中的同时,参考用区域110和更新用区域120都被隔绝。因此,任何用户应用程序都无法参考主数据111。

当然,毫无疑问,当没有用户应用程序更新主数据111时,任何用户应用程序都可以参考主数据111。

在根据该示例性实施方式的数据库系统中,针对多个用户应用程序确保可以“同时”和“一致”地读取和写入“相同”数据的功能。

数据库系统还需要保护数据免受故障的功能。

参考图12和图21,将描述在由于用户应用程序200的缺陷而发生存储器破坏的情况下用于修复共享存储器100上数据的处理。

在由于用户应用程序200的缺陷而发生存储器破坏的情况下,被破坏的存储器区域将限制于用户应用程序自身具有的存储器(称为本地存储器)以及存储器数据库系统1上的共享存储器100中的更新用区域120。用户应用程序200具有对更新用区域120进行更新的权限。用户应用程序200不具有更新权限的参考用区域110未被破坏。

当检测到更新用区域120上的更新信息121被破坏时(步骤S301:是),(1)隔绝更新用区域120(步骤S302),如图12所示,(2)丢弃全部差异记录122(步骤S303),(3)将参考用指针存储区域114的内容再次拷贝到更新用区域120中(步骤S304),并且取消对更新用区域120的隔绝(步骤S305)。通过以上过程,可以迅速地返回最后提交的数据状态。

在该时段期间,因为参考用区域110既没有更新也没有隔绝,所以任何用户应用程序都可以参考主数据111。

作为用于检测更新信息被破坏的方法,存在一种方法,其中在生成更新信息时计算更新信息的校验和,并且存储所计算的数值,接下来,当更新信息被参考时,再次计算校验和以便与存储的数值进行比较。

可以由用户应用程序200或者提交执行守护程序300来执行用于检测破坏的过程,或者可以重新准备用于检测数据破坏的过程。

由此,根据该示例性实施方式的存储器数据库系统1,将在其中布置数据的共享存储器100分为参考用区域110(仅允许用户应用程序200对其进行参考)以及更新用区域120(允许程序对其进行参考和更新)。因此,即使在用户应用程序中存在破坏存储器的缺陷,也可将数据破坏的影响局部化到该用户应用程序200具有更新权限的更新用区域120上的更新信息121。

即使发生存储器破坏,参考用区域110中也保留了主数据111。因此,仅通过丢弃更新用区域120上的全部更新信息121以及改写更新用指针124的参考目的地,即可恢复最后提交的数据状态。

结果,相比于相关技术中的修复过程,即,(1)取消存储器上的数据,(2)从盘装置重新加载数据,以及(3)从日志文件前滚,盘访问的过程在该示例性实施方式中变得没有必要。因此,显著地减少了数据恢复所需要的时间。

根据该示例性实施方式,尽管如上所述将存储器破坏假设为局部化的,但是造成开销的进程间通信被限制于从用户应用程序200到提交执行守护程序300的提交请求。因为在其他通信中,用户应用程序200直接访问共享存储器100,所以使数据访问性能的下降最小化并且改善了事务性能。

在每次数据更新时不执行诸如相关领域中的向存储器拷贝主数据。由于仅执行差异数据的生成,所以使CPU资源和存储器资源消耗最小化。

在相关领域中,在用户应用程序更新数据期间,无法对数据进行参考。然而,根据该示例性实施方式,仅在提交执行守护程序300执行提交处理期间隔绝参考用区域110。由于在数据更新期间不隔绝参考用区域110,所以无法参考数据的时段得以限制。

通过以上所述,降低了用户应用程序执行数据参考由于等待隔绝而浪费消耗处理时间的可能性,并且改善了处理数据的效率。

如上所述,根据该示例性实施方式的存储器数据库,在共享存储器区域中提供用户应用程序仅可以参考的参考用区域(第一区域)以及用户应用程序可以参考和更新的更新用区域(第二区域)。如果主数据存储在参考用区域中,则用户应用程序不能访问存储有主数据的参考用区域。因此,用户应用程序的缺陷不会破坏主数据。

另外,根据该示例性实施方式的存储器数据库包括提交执行守护程序,其能够对参考用区域和更新用区域二者进行参考和更新。存储器数据库在参考用区域中存储主数据,并且在更新用区域中存储更新主数据的差异数据,其中提交执行守护程序利用差异数据来更新主数据。因为用户应用程序不能访问存储主数据的参考用区域,所以主数据不会因为用户应用程序中的缺陷而破坏。

此外,因为用户应用程序可以访问共享存储器区域,所以防止了进程间通信的开销造成数据更新性能下降。另外,抑制了拷贝主数据的处理对CPU资源和存储器资源的消耗。

根据本发明的存储器数据库不限于以上提到的示例性实施方式。例如,在以上提到的示例性实施方式中,记录是主数据的主要数据的示例,而其可以是构成数据库的其他概念。

本申请要求基于2008年4月4日提交的、日本申请日本专利申请号2008-097870的优先权,在此并入其全部公开内容。

实用性

本发明的存储器数据库用于执行诸如大量客户数据或者统计数据的数据分析的领域。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号