首页> 中国专利> 在数据库系统中处理报告事务的方法和机构

在数据库系统中处理报告事务的方法和机构

摘要

本发明披露了用于处理数据库系统中的报告事务的改进方法、系统和介质。在一些实施例中,在主节点上执行非报告事务的同时,使用数据库快照在故障转移节点上执行报告事务。

著录项

  • 公开/公告号CN101124546A

    专利类型发明专利

  • 公开/公告日2008-02-13

    原文格式PDF

  • 申请/专利权人 甲骨文国际公司;

    申请/专利号CN200680005358.7

  • 申请日2006-02-17

  • 分类号G06F11/14(20060101);G06F17/30(20060101);

  • 代理机构11240 北京康信知识产权代理有限责任公司;

  • 代理人余刚;尚志峰

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 19:45:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-05-20

    授权

    授权

  • 2008-04-16

    实质审查的生效

    实质审查的生效

  • 2008-02-13

    公开

    公开

说明书

技术领域

本发明涉及数据库系统。更具体地,本发明涉及一种在数据库 系统中处理报告事务的方法和机构。

背景技术

许多数据库系统采用故障转移群集(failover cluster)来保证高 可用性,这在当今快速发展的市场中是极为重要的。在故障转移群 集中,数据库链接至主节点和至少一个故障转移节点(也称为备用 节点)。在主节点上运行程序(例如,数据库和网络服务器),直到 主节点发生故障。当这种情况发生时,在故障转移节点上重新启动 程序。由于故障转移节点和主节点属于单个群集,所以可以使用标 准心跳机构(heartbeat mechanism)来检测主节点的故障。

故障转移群集的一个问题在于,故障转移节点不能和主节点同 时使用。因而,可能难以估计购买仅在主要硬件故障时使用的其他 硬件的成本。某些并行数据库系统通过采用活动/活动群集 (active/active cluster)来解决这个问题,其中,在这种群集中,两 个或两个以上节点可以同时访问数据库。然而,活动/活动群集需要 复杂的同时控制机构来确保,在对群集中的所有节点进行同时读取 和修改的情况下,数据库是一致的。

用户面对的另一个问题是需要运行混合的工作量,其中,与其 他事务同时执行报告事务。理论上,通过每个报告事务提供实时的 报告,即,通过事务中的查询程序来使用最新更新的结果。另外, 用户更愿意单独运行报告事务,从而避免在非报告和报告事务之间 的硬件资源(例如,对CPU或存储器)的竞争。

对于不支持活动/活动群集的数据库系统来说,可以创建复制型 数据库并使用其来进行报告。然而,由于复制型数据库是主数据库 的完全复制,所以这个解决方案会使存储成本加倍。另外,由于复 制主数据库中可能无法即时复制主节点中的变化,所以复制型数据 库通常滞后于主数据库。即使能够即时复制,主数据库上的吞吐量 也会由于需要将主数据库上的每个提交命令(commit)同步复制到 报告数据库中而受到极大影响。

因此,需要一种用于解决在使用故障转移群集的数据库系统中 执行报告事务的这些和其他问题的方法和机构。

发明内容

本发明的实施例提供了用于在数据库系统中处理报告事务的 改进方法、系统、和介质。根据实施例,给数据库拍快照。数据库 链接至主节点和故障转移节点。然后,在主节点上执行一个或多个 非报告事务,并且在主节点上执行一个或多个非报告事务的同时, 利用快照在故障转移节点上执行报告事务。

以下,在实施方式、附图、和权利要求书中进一步详细描述了 本发明的各个方面、目的和优点。以上的概括描述和以下的详细描 述是示例性和说明性的,并不用于限制本发明的范围。

附图说明

本发明中所包括的附图用于提供对本发明的进一步理解,并且 连同具体实施方式一起用于说明本发明的原理。

图1是根据本发明实施例的在数据库系统中处理报告事务的方 法的流程图。

图2示出了根据本发明的一个实施例的在故障转移群集中执行 报告事务。

图3示出了根据本发明的另一个实施例的用于在数据库系统中 处理报告事务的方法的流程图。

图4是根据本发明的另一实施例的如何在群集中处理报告事务 的实例。

图5示出了在数据库系统中处理报告事务的方法的一个实施 例。

图6示出了具有多个故障转移节点的群集。

图7示出了用于在数据库系统中处理报告事务的另一个实施 例。

图8示出了示例的数据库系统。

图9是根据本发明的另一个实施例的用于在数据库系统中处理 报告事务的方法的流程图。

图10示出了根据本发明的另一个实施例的在故障转移群集中 执行多个报告和非报告事务。

图11是可以用于实现本发明实施例的系统架构的示图。

具体实施方式

本发明公开了如何在数据库系统中处理报告事务。在主节点上 执行非报告事务的同时,使用数据库快照在故障转移节点上执行报 告事务,而不采用需要复杂的相关性和路由选择机制、或具有单个 复制型数据库(需要购买额外硬件)的活动/活动群集(具有可能过 期的数据)。这利用了保持空闲的故障转移节点,并提供了在使用 最新快照时的近实时报告。

图1所示的是在数据库系统中处理报告事务的方法。在102, 给数据库排快照。数据库链接至主节点和故障转移节点。在一些实 施例中,只允许主节点修改数据库。客户机连接可以被配置为将所 有报告事务导向故障转移节点,而将所有其他事务导向主节点。故 障转移节点也可以将可能修改数据库的事务自动路由到主节点。可 以通过将事务标记为READ-WRITE或READ-ONLY来完成该路由 选择,这标识该对话是否将要修改数据库。

然后,在主节点上执行一个或多个非报告事务(104),并且在 主节点上执行该一个或多个非报告事务的同时,利用快照以在故障 转移节点上执行报告事务(106)。报告和非报告事务中的每个均包 括一个或多个查询。尽管非报告事务可以是读写或只读事务,但是 报告事务通常是只读事务。

快照是数据库的点即时复制,并且与除了在拍快照之后修改的 数据库块之外的数据库共用相同的盘空间。这可以通过标准写时复 制(copy-on-write)机构(其中,将改变后的块写入新的位置,从 而使快照仍保持不会被修改)来实现。由于快照是只读的并不能被 主节点修改,所以在故障转移节点上进行的查询将返回与在不需要 与主节点进行协调的情况下所使用的快照相一致的结果。并且,由 于对于整个数据库来说快照是一致的(即,快照中的缩略图和查询 中所参考的表都是一致的),所以不需要修改现存的查询执行引擎。 可利用各种快照方法并且可以在文件、程序、系统、或数据库层实 施这些方法。例如,可以在http://www.netapp.com/techlibrary/3002.html找到关于创建文件层快照的描述。

就盘空间和CPU的使用而言,创建快照相对容易,因为它们 都使用相同的盘存储空间用作所有未改变数据的数据库。因此,数 据库系统可以被配置为频繁(例如,每隔10秒)拍快照。然而, 例如,数据库系统也可以基于报告对话所期望的服务质量或其他这 样的量度(metric),响应于用户命令而生成快照。由于通过在报告 事务中进行查询将使用最新的更新,所以使用最新快照在故障转移 节点上执行报告会话将提供近实时的报告。然而,也可以允许用户 指定使用比所获取的最新快照旧的快照。

图2示出了具有主节点202、故障转移节点204、以及数据库 206的群集200。数据库206的快照208已被拍下来。在主节点202 上执行多个非报告事务210a和210b的同时,使用快照208在故障 转移节点204上执行报告事务212。在一些实施例中,非报告事务 210a和210b以及报告事务212是工作量的一部分。

图3示出了用于在数据库系统中处理报告事务的方法的流程 图。根据实施例,给链接至主节点和故障转移节点的数据库拍快照 (302)。在304,在主节点上执行一个或多个非报告事务。在主节 点上执行该一个多个非报告事务的同时,利用快照在故障转移节点 上执行报告事务(306)。然后,当在故障转移节点上执行报告事务 时,创建并使用一个或多个临时表(308)。

图4示出了群集400。群集400包括主节点402、故障转移节 点404、以及数据库406。在实例中,拍快照408a,并在主节点402 上执行非报告事务410的同时,使用该快照408a在故障转移节点 404上执行报告事务412。在执行报告事务412期间,通过事务412 中的查询脚本创建临时表414a和414b,从而存储临时结果。将这 些临时表414a和414b透明转发给主节点402,然后,为临时表414a 和414b分配数据库406中的空间。不必将随后在故障转移节点404 处保存在临时表414a和414b中的变化转发给主节点402。

在图4中,给数据库406拍新的快照408b,从而使报告事务 412中的后续查询能够访问临时表414a和414b。然而,在其他实 施例中,后续查询不会连续访问创建的所有临时表。因而,在完成 查询之后,故障转移节点可以删除临时表并将该删除转发给主节 点,以释放分配给表的数据库空间。

为了确保结果一致,单个查询通常会使用相同的快照。然而, 如图4的实例所示,相同的对话或事务内的下一次查询可以使用与 前一次查询所使用的快照相同的快照、或比前一次查询使用的快照 更新的快照。

图5所示是在数据库系统中处理报告事务的另一种方法。在 502,给数据库拍快照。在实施例中,数据库链接至主节点和故障 转移节点。然后,在主节点上执行一个或多个非报告事务(504), 并在主节点上执行一个或多个非报告事务的同时,利用快照在故障 转移节点上执行报告事务(506)。在508,当在故障转移节点上执 行报告事务时修改并使用数据库中的一个或多个模式。可能已在主 节点上创建一个或多个模式,并且为了能够被故障转移节点上的记 录事务使用,已对上述一个或多个模式进行了“标记”或“保留”。 另外,在与主节点不协调的情况下,可以对一个或多个模式作出改 变。

数据库模式是对象的集合。例如,模式对象包括但不限于表、 视图、序列、或存储程序。表通常是数据库中的基本结构单元,并 且包括存储在各个行和列中的数据。视图是在一个或多个表中的数 据的定制显示。视图的数据来自于表(即,基本表)。而基本表可 以是表、或可以是视图本身。视图的实例是减去表中的两列数据后 得到的表。

序列是用于识别一个或多个数据库表中的数字列的唯一数字 的连续清单。通常,其通过自动生成单个表或多个表的行的唯一数 值来简化程序的编程。使用了序列,通常,一个以上的用户可以同 时将数据键入表中。所存储的程序通常是组合在一起作为可执行单 元的用于执行特定任务的一组计算机语句。

图6示出了具有主节点602、两个故障转移节点604a和604b、 以及数据库606的群集600。给数据库606拍快照608。在实施例 中,与通过快照608仅对故障转移节点604a和604b开放的数据库 606的其余部分不同,在读写模式下,数据库606中的模式614a和 614b可用于故障转移节点604a和604b。在这种情况下,可以通过 分别在故障转移节点604a和604b上执行的报告事务612a和612b 来修改模式614a和614b。由于在故障转移节点604a-604b和主节 点602之间没有共用包含在模式614a和614b中的数据,所以在主 节点602上执行的非报告事务610不能访问数据库606中的模式 614a和614b。

图7示出了用于在数据库系统中处理报告事务的方法的流程 图。在702,给链接至主节点和故障转移节点的数据库拍快照。在 704,在主节点上执行一个或多个非报告事务。然后,在主节点上 执行一个或多个非报告事务的同时,利用快照在故障转移节点上执 行报告事务(706)。

在实施例中,当在在故障转移节点上执行报告事务时,访问并 使用主节点上的一个或多个用户定义的程序(708)。用户定义的程 序一般用于更简单地准备复杂报告,并且通常在主节点上被创建和 编译。与任何其他数据库对象一样,可以从故障转移节点访问这些 程序。

图8示出了数据库系统800。虽然该图仅示出了用户802、客 户机804、主节点806、故障转移节点808、以及数据库810,但是 系统800可以包括其他群集、节点、用户、数据库、和客户机。在 实例中,用户802通过客户机804在主节点806上定义程序818a 和818b。在给数据库810拍快照812之后,在主节点806上执行非 报告事务814的同时,使用快照812以及用户定义的程序818a和 818b,在故障转移节点808上执行报告事务816。如图8所示,与 用户定义的程序818a和818b不同,直接使用快照812,即,在不 通过主节点806的情况下使用快照812。

图9示出了在数据库系统中处理报告事务的另一种方法。根据 该方法,在902,给数据库拍快照。数据库链接至主节点和次节点。 然后,在904,在主节点上执行一个或多个非报告事务,以及在906, 在主节点上执行该一个或多个非报告事务的同时,利用快照在故障 转移节点上执行报告事务。在数据库中保留临时空间,并且当在故 障转移节点上执行报告事务时,使用临时空间(908)。

为了保留数据库中的临时空间,故障转移节点由于保留通常需 要由主节点执行的用于避免相干性问题的目录改变而可以将消息 发送给主节点。一旦为故障转移节点保留暂存盘(scratch disk)空 间,则可以在没有来自主节点的干预的情况下,执行将其自身写入 临时空间的过程。暂存空间允许创建临时文件。有时需要这些临时 文件来存储不适合主存储器的临时操作的结果,例如,分类的中间 结果、在JOIN方法中使用的散列表等。

图10示出了具有主节点1002和三个故障转移节点1004a、 1004b、以及1004c的群集1000,所有的节点均链接至数据库1006。 在图中,可以在主节点1002上找到用户定义的程序1012以及读写 事务1010a和只读事务1010b。在故障转移节点1004a上执行报告 事务1014c,另外,在故障转移节点1004b上执行报告事务1014c, 同时在故障转移节点1004c上执行报告事务1014d、1014e、和1014f。 在不同的时间获取数据库1006的三个快照1008a、1008b、和1008c。 可以使用这些快照中的一个来执行每个报告事务。然而,同一故障 转移节点上的报告事务不必利用同一个快照。例如,故障转移节点 1004c上的报告事务1014d、1014e、和1014f中可以各自使用不同 的快照1008。

如图10所示,已在数据库1006中分别为故障转移节点1004a、 1004b、和1004c保留了三个临时空间1016a、1016b、和1016c。 故障转移节点1004a、1004b、和1004c中的每个发送请求给主节点 1002,以请求保留其各自的暂存空间。在其他实施例中,故障转移 节点1004a、1004b、和1004c可以共用一个或多个临时空间。

系统结构概述

图11是适用于实施本发明实施例的计算机系统1100的框图。 计算机系统1100包括总线1102或用于传送信息的其他通信机构, 它将子系统和装置(例如,处理器1104、系统存储器1106(例如, RAM)、静态存储装置1108(例如,ROM)、盘驱动器1110(例如, 磁盘或光盘)、通信接口1112(例如,调制解调器或以太网卡)、显 示器1114(例如,CRT或LCD)、输入装置1116(例如,键盘)、 以及光标控件1118(例如,鼠标或跟踪球))相互连接起来。

根据本发明的一个实施例,通过处理器1104执行包含在系统 存储器1106中的一个或多个指令的一个或多个序列的处理器,计 算机系统1100执行特定操作。可以将这样的指令从另一个计算机 可读取介质(例如,晶态存储装置1108或硬盘驱动器1110)读取 到系统存储器1106中。在可选实施例中,可以使用硬连线电路来 代替软件指令或将其与软件指令相结合来实现本发明。

在本文中所使用的术语“计算机可读取介质”是指参与将用于 执行的指令提供给处理器1104的任何介质。这种介质可以采取许 多形式,包括但不限于非易失性介质、易失性介质、和传输介质。 例如,非易失性介质包括光盘或磁盘(例如,盘驱动器1110)。易 失性介质包括动态存储器(例如,系统存储器1106)。传输介质包 括同轴电缆、铜线、以及光纤(包括了包含总线1102的电线)。传 输介质还可以采取声波或光波的形式(例如,在无线电波和红外线 数据通信期间所产生的声波或光波)。

例如,计算机可读介质的一般形式包括软盘、软磁盘、硬盘、 磁带、任何其他磁介质、CD-ROM、任何其他光介质、穿孔卡、纸 带、具有孔的图案的任何其他物理介质、RAM、PROM、EPROM、 FLASH-EPROM、任何其他存储芯片或盒式磁带、载波、或者计算 机可以读取的任何其他介质。

在本发明的实施例中,通过单个计算机系统1100执行用于实 现本发明的指令序列。根据本发明的其他实施例,通过通信链路 1120(例如,LAN、PTSN、或无线网络)连接的两个或多个计算 机系统1100可以彼此配合地执行用于实现本发明所需的指令序列。

计算机系统1100可以通过通信链路1120和通信接口1112发送 和接收消息、数据、和指令(包括程序,即,程序代码)。当接收 到程序代码时,可以通过处理器1104执行所接收到的程序代码, 然后将其存储在盘驱动器1110或其他非易失性存储器中,以便稍后 运行该程序。

在以上说明中,参考具体实施例描述了本发明。然而,显而易 见的是,在不脱离本发明的精神和范围的条件下,可以对本发明进 行各种修改和变化。例如,参考特定顺序的处理动作描述了上述处 理流程。然而,在不影响本发明的范围或操作的情况下,可以改变 所述描述的处理操作的顺序。因此,说明书和附图仅用于说明而非 限制。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号