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

文档序号:6566670阅读:143来源:国知局
专利名称:在数据库系统中处理报告事务的方法和机构的制作方法
技术领域
本发明涉及凄t据库系统。更具体地,本发明涉及一种在lt据库 系统中处理才艮告事务的方法和才几构。
背景技术
许多数据库系统采用故障转移群集(failover cluster )来保证高 可用性,这在当今快速发展的市场中是极为重要的。在故障转移群 集中,数据库链接至主节点和至少一个故障转移节点(也称为备用 节点)。在主节点上运行程序(例如,数据库和网络服务器),直到 主节点发生故障。当这种情况发生时,在故障转移节点上重新启动 程序。由于故障转移节点和主节点属于单个群集,所以可以l吏用标 准心if兆冲几构(heartbeat mechanism )来检测主节点的古史障。
故障转移群集的一个问题在于,故障转移节点不能和主节点同 时使用。因而,可能难以估计购买仅在主要硬件故障时使用的其他 硬件的成本。某些并行数据库系统通过采用活动/活动群集 (active/active cluster )来解决这个问题,其中,在这种群集中,两 个或两个以上节点可以同时访问凄t据库。然而,活动/活动群集需要 复杂的同时控制机构来确保,在对群集中的所有节点进行同时读取 和^修改的情况下,数据库是一致的。
用户面对的另一个问题是需要运行混合的工作量,其中,与其 他事务同时执行才艮告事务。理论上,通过每个报告事务提供实时的
报告,即,通过事务中的查询程序来使用最新更新的结果。另外, 用户更愿意单独运行报告事务,从而避免在非报告和报告事务之间
的石更件资源(例如,对CPU或存诸器)的竟争。
对于不支持活动/活动群集的数据库系统来i兌,可以创建复制型 数据库并使用其来进行报告。然而,由于复制型数据库是主数据库 的完全复制,所以这个解决方案会使存储成本加倍。另外,由于复 制主数据库中可能无法即时复制主节点中的变化,所以复制型数据 库通常滞后于主数据库。即使能够即时复制,主数据库上的吞吐量
也会由于需要将主数据库上的每个提交命令(commit)同步复制到 报告数据库中而受到极大影响。
因此,需要一种用于解决在使用故障转移群集的数据库系统中 执行报告事务的这些和其他问题的方法和机构。

发明内容
本发明的实施例4是供了用于在it据库系统中处理才艮告事务的 改进方法、系统、和介质。根据实施例,给数据库拍快照。数据库 链接至主节点和故障转移节点。然后,在主节点上执行一个或多个 非报告事务,并且在主节点上执行一个或多个非报告事务的同时, 利用快照在故障转移节点上执行报告事务。
以下,在实施方式、附图、和权利要求书中进一步详细描述了 本发明的各个方面、目的和优点。以上的概括描述和以下的详细描 述是示例性和说明性的,并不用于限制本发明的范围。


本发明中所包括的附图用于提供对本发明的进一步理解,并且
连同具体实施方式
一起用于"i兌明本发明的原理。
图1是根据本发明实施例的在数据库系统中处理报告事务的方 法的流程图。
图2示出了根据本发明的一个实施例的在故障转移群集中执行 报告事务。
图3示出了根据本发明的另一个实施例的用于在数据库系统中 处理才艮告事务的方法的流禾呈图。
图4是根据本发明的另 一 实施例的如何在群集中处理报告事务 的实例。
图5示出了在数据库系统中处理报告事务的方法的一个实施例。
图6示出了具有多个故障转移节点的群集。
图7示出了用于在数据库系统中处理^^告事务的另一个实施例。
图8示出了示例的数据库系统。
图9是才艮据本发明的另 一个实施例的用于在凄t据库系统中处理 才艮告事务的方法的流程图。
图10示出了根据本发明的另一个实施例的在故障转移群集中执行多个报告和非报告事务。图11是可以用于实现本发明实施例的系统架构的示图。
具体实施方式
本发明公开了如何在数据库系统中处理报告事务。在主节点上 执行非报告事务的同时,使用数据库快照在故障转移节点上执行报 告事务,而不采用需要复杂的相关性和路由选择机制、或具有单个 复制型数据库(需要购买额外硬件)的活动/活动群集(具有可能过 期的数据)。这利用了保持空闲的故障转移节点,并提供了在使用 最新快照时的近实时报告。图1所示的是在数据库系统中处理净艮告事务的方法。在102, 给数据库排快照。数据库链接至主节点和故障转移节点。在一些实 施例中,只允许主节点j资改翁:据库。客户才几连4妻可以;故配置为将所 有报告事务导向故障转移节点,而将所有其他事务导向主节点。故 障转移节点也可以将可能修改数据库的事务自动路由到主节点。可 以通过将事务标记为READ-WRITE或READ-ONLY来完成该路由 选^奪,这标识该对话是否将要》务改^t据库。然后,在主节点上执行一个或多个非报告事务(104),并且在 主节点上执行该一个或多个非报告事务的同时,利用快照以在故障 转移节点上执行报告事务(106)。报告和非报告事务中的每个均包 括一个或多个查询。尽管非报告事务可以是读写或只读事务,但是 报告事务通常是只读事务。快照是数据库的点即时复制,并且与除了在拍快照之后f务改的 数据库块之外的数据库共用相同的盘空间。这可以通过标准写时复 制(copy-on-write)机构(其中,将改变后的块写入新的位置,从 而使快照仍保持不会被修改)来实现。由于快照是只读的并不能被 主节点^f',改,所以在故障转移节点上进行的查询将返回与在不需要 与主节点进行协调的情况下所使用的快照相一致的结果。并且,由于对于整个邀:据库来iJi快照是一致的(即,快照中的缩略图和查询 中所参考的表都是一致的),所以不需要修改现存的查询执行引擎。可利用各种快照方法并且可以在文件、程序、系统、或凄t据库层实 施这些方法。 例如, 可以在 http: 〃www. netapp. com/tech librarv/3002.html找到关于创建文件层快照的描述。就盘空间和CPU的^f吏用而言,创建快照相对容易,因为它们 都使用相同的盘存储空间用作所有未改变数据的数据库。因此,数 据库系统可以被配置为频繁(例如,每隔10秒)拍快照。然而, 例如,数据库系统也可以基于才艮告对话所期望的/a务质量或其他这 样的量度(metric),响应于用户命令而生成快照。由于通过在才艮告 事务中进行查询将使用最新的更新,所以使用最新快照在故障转移 节点上执行报告会话将提供近实时的报告。然而,也可以允许用户 指定^f吏用比所获取的最新快照旧的快照。图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的同时,1吏用该快照408a在故障转移节点 404上执行报告事务412。在执行报告事务412期间,通过事务412 中的查询脚本创建临时表414a和414b, /人而存卡者临时结果。将这 些临时表414a和414b透明转发给主节点402,然后,为临时表414a 和414b分配凄t据库406中的空间。不必将随后在故障转移节点404 处保存在临时表414a和414b中的变化转发给主节点402。在图4中,给数据库406拍新的快照408b,从而使报告事务 412中的后续查询能够访问临时表414a和414b。然而,在其他实 施例中,后续查询不会连续访问创建的所有临时表。因而,在完成 查询之后,故障转移节点可以删除临时表并将该删除转发给主节 点,以释放分配给表的数据库空间。为了确保结果一致,单个查询通常会使用相同的快照。然而, 如图4的实例所示,相同的对话或事务内的下一次查询可以4吏用与 前一次查询所使用的快照相同的快照、或比前一次查询4吏用的快照 更新的快照。图5所示是在数据库系统中处理报告事务的另一种方法。在 502,给数据库拍快照。在实施例中,凄t据库链4妻至主节点和故障 转移节点。然后,在主节点上执行一个或多个非^艮告事务(504), 并在主节点上执行一个或多个非报告事务的同时,利用快照在故障 转移节点上执行报告事务(506)。在508,当在故障转移节点上执 行报告事务时修改并使用数据库中的一个或多个模式。可能已在主 节点上创建一个或多个模式,并且为了能够被故障转移节点上的记
录事务使用,已对上述一个或多个模式进行了 "标记"或"保留"。 另外,在与主节点不协调的情况下,可以对一个或多个模式作出改变。数据库模式是对象的集合。例如,模式对象包括但不限于表、 视图、序列、或存储程序。表通常是数据库中的基本结构单元,并 且包括存储在各个行和列中的数据。视图是在一个或多个表中的数 据的定制显示。视图的数据来自于表(即,基本表)。而基本表可 以是表、或可以是视图本身。视图的实例是减去表中的两列数据后 得到的表。序列是用于识别 一个或多个数据库表中的数字列的唯一数字 的连续清单。通常,其通过自动生成单个表或多个表的4亍的唯一数 值来简化程序的编程。4吏用了序列,通常, 一个以上的用户可以同 时将数据键入表中。所存储的程序通常是组合在一起作为可执行单 元的用于执行特定任务的一组计算机语句。图6示出了具有主节点602、两个故障转移节点604a和604b、 以及数据库606的群集600。给数据库606拍快照608。在实施例 中,与通过快照608仅对故障转移节点604a和604b开放的数据库 606的其余部分不同,在读写模式下,数据库606中的模式614a和 614b可用于故障转移节点604a和604b。在这种情况下,可以通过 分别在故障转移节点604a和604b上才丸^f亍的4艮告事务612a和612b 来^f奮改4莫式614a和614b。由于在故障專争移节点604a-604b和主节 点602之间没有共用包含在才莫式614a和614b中的翁:据,所以在主 节点602上执行的非报告事务610不能访问数据库606中的模式 614a和614b。图7示出了用于在数据库系统中处理才艮告事务的方法的流程 图。在702,给链接至主节点和故障转移节点的数据库拍快照。在704,在主节点上执行一个或多个非报告事务。然后,在主节点上 执行一个或多个非报告事务的同时,利用快照在故障转移节点上执 4亍才艮告事务(706 )。在实施例中,当在在故障转移节点上扭^f亍报告事务时,访问并 使用主节点上的一个或多个用户定义的程序(708)。用户定义的程 序一般用于更简单地准备复杂报告,并且通常在主节点上被创建和 编译。与任何其他凄t据库对象一样,可以从故障转移节点访问这些程序。图8示出了数据库系统800。虽然该图仅示出了用户802、客 户机804、主节点806、故障转移节点808、以及数据库810,但是 系统800可以包括其他群集、节点、用户、数据库、和客户机。在 实例中,用户802通过客户机804在主节点806上定义程序818a 和818b。在给数据库810拍快照812之后,在主节点806上执行非 才艮告事务814的同时,4吏用快照812以及用户定义的禾呈序818a和 818b,在故障转移节点808上执行报告事务816。如图8所示,与 用户定义的禾呈序818a和818b不同,直接〃使用快照812,即,在不 通过主节点806的情况下使用快照812。图9示出了在数据库系统中处理报告事务的另一种方法。根据 该方法,在902,给数据库拍快照。数据库链接至主节点和次节点。 然后,在904,在主节点上才丸4亍一个或多个非才艮告事务,以及在906, 在主节点上执行该一个或多个非报告事务的同时,利用快照在故障 转移节点上执行报告事务。在数据库中保留临时空间,并且当在故 障转移节点上执行报告事务时,使用临时空间(908)。为了保留数据库中的临时空间,故障转移节点由于保留通常需 要由主节点执行的用于避免相干性问题的目录改变而可以将消息 发送给主节点。 一旦为故障转移节点4呆留暂存盘(scratch disk)空 间,则可以在没有来自主节点的干预的情况下,执行将其自身写入 临时空间的过程。暂存空间允许创建临时文件。有时需要这些临时 文件来存储不适合主存储器的临时操作的结果,例如,分类的中间结果、在JOIN方法中使用的散列表等。图10示出了具有主节点1002和三个故障转移节点1004a、1004b、以及1004c的群集1000,所有的节点均链4妄至凄t据库1006。在图中,可以在主节点1002上4^到用户定义的禾呈序1012以及读写事务1010a和只读事务1010b。在故障4争移节点1004a上执4亍才艮告事务1014c,另外,在故障转移节点1004b上执^f亍才艮告事务1014c,同时在故障转移节点1004c上执行才艮告事务1014d、 1014e、和1014f。在不同的时间获取凄t据库1006的三个快照1008a、1008b、和1008c。可以Y吏用这些快照中的一个来执4亍每个才艮告事务。然而,同一故障 转移节点上的报告事务不必利用同一个快照。例如,故障转移节点1004c上的才艮告事务1014d、 1014e、和1014f中可以各自 <吏用不同 的快照1008。如图10所示,已在数据库1006中分别为故障转移节点1004a、 1004b、和1004d呆留了三个临时空间1016a、 1016b、和1016c。 故障转移节点1004a、 1004b、和1004c中的每个发送请求《会主节点 1002,以请求保留其各自的暂存空间。在其他实施例中,故障转移 节点1004a、 1004b、和1004c可以共用 一个或多个临时空间。系统结构概述图11是适用于实施本发明实施例的计算机系统1100的框图。 计算4几系统1100包括总线1102或用于传送信息的其他通信机构, 它将子系统和装置(例如,处理器1104、系统存储器1106 (例如, RAM)、静态存4诸装置1108 (例如,ROM)、盘驱动器1110 (例如, 磁盘或光盘)、通信接口 1112 (例如,调制解调器或以太网卡)、显 示器1114 (例如,CRT或LCD )、输入装置1116 (例如,键盘)、以及光才示4空4牛1118 (侈'H口,鼠标或3艮3宗J求))相互连4矣起来。根据本发明的一个实施例,通过处理器1104执行包含在系统 存4诸器1106中的一个或多个指令的一个或多个序列的处理器,计 算机系统1100执行特定操作。可以将这样的指令从另一个计算机 可读取介质(例如,晶态存储装置1108或硬盘驱动器1110)读取 到系统存储器1106中。在可选实施例中,可以使用硬连线电路来 代替软件指令或将其与软件指令相结合来实现本发明。在本文中所使用的术语"计算机可读取介质"是指参与将用于 才丸行的指令纟是供给处理器1104的任何介质。这种介质可以采取许 多形式,包括但不限于非易失性介质、易失性介质、和传输介质。 例如,非易失性介质包括光盘或磁盘(例如,盘驱动器1110)。易 失性介质包括动态存储器(例如,系统存储器1106)。传输介质包 括同轴电缆、铜线、以及光纤(包括了包含总线1102的电线)。传 输介质还可以采耳又声波或光波的形式(例如,在无线电波和红外线 ^:据通信期间所产生的声波或光波)。例如,计算机可读介质的一般形式包括软盘、软^兹盘、硬盘、 f兹带、任何其他f兹介质、CD-ROM、任何其他光介质、穿孔卡、纸 带、具有3L的图案的4壬^r其4也物理介质、RAM、 PROM、 EPROM、 FLASH-EPROM、任何其他存储芯片或盒式i兹带、载波、或者计算 机可以读取的任何其他介质。在本发明的实施例中,通过单个计算机系统1100 4丸行用于实 现本发明的指令序列。才艮据本发明的其他实施例,通过通信链路 1120 (例^。, LAN、 PTSN、或无线网络)连4妄的两个或多个计算 机系统1100可以彼此配合地执行用于实现本发明所需的指令序列。
计算才几系统1100可以通过通信链^各1120和通信4妄口 1112发送 和接收消息、数据、和指令(包括程序,即,程序代码)。当接收到程序码时,可以通过处理器1104执4于所4姿收到的程序代码, 然后将其存储在盘驱动器iiio或其他非易失性存储器中,以便稍后运行该程序。
在以上说明中,参考具体实施例描述了本发明。然而,显而易见的是,在不脱离本发明的精神和范围的条件下,可以对本发明进 行各种修改和变化。例如,参考特定顺序的处理动作描述了上述处 理流程。然而,在不影响本发明的范围或才喿作的情况下,可以改变所述描述的处理#:作的顺序。因此,说明书和附图4又用于说明而非限制。
权利要求
1. 一种用于在^:据库系统中处理才艮告事务的方法,所述方法包 括给数据库拍快照,其中,所述数据库链接至主节点和故障转移节点;在所述主节点上执行一个或多个非报告事务;以及在所述主节点上执行所述一个或多个非才艮告事务的同 时,利用所述快照在所述故障转移节点上执行报告事务。
2. 根据权利要求1所述的方法,还包括在所述故障转移节点上创建一个或多个临时表,其中, 当在所述故障转移节点上执行所述报告事务时,使用所述一个 或多个临时表。
3. 根据权利要求2所述的方法,其中,通过所述报告事务中的查 询脚本创建所述一个或多个临时表。
4. 根据权利要求2所述的方法,其中,所述一个或多个临时表中 的至少 一个可访问所述才艮告事务中的一个以上的查询。
5. 根据权利要求1所述的方法,还包括修改所述数据库中的一个或多个模式,其中,当在所述 故障转移节点上执行所述报告事务时,使用所述一个或多个模式。
6. 根据权利要求5所述的方法,其中,所述一个或多个模式可访 问在所述主节点上执行的所述一个或多个非报告事务。
7. 根据权利要求5所述的方法,其中,所述一个或多个模式中的 至少一个包4舌一个或多个表。
8. 才艮据4又利要求1所述的方法,还包括i^问所述主节点上的一个或多个用户定义的禾呈序,其中, 当在所述故障转移节点上执行所述报告事务时,使用所述一个 或多个用户定义的程序。
9. 根据权利要求1所述的方法,还包括在所述数据库中保留临时空间,其中,当在所述故障转 移节点上执行所述报告事务时,使用所述临时空间。
10. 根据权利要求1所述的方法,其中,所述主节点和所述故障转 移节点是群集的一部分。
11. 根据权利要求10所述的方法,其中,所述群集包括一个或多 个额外的故障转移节点。
12. 根据权利要求1所述的方法,其中,所述一个或多个非报告事 务中的至少一个是读写事务。
13. 根据权利要求1所述的方法,其中,所述报告事务和所述一个 或多个非报告事务是工作量的一部分。
14. 根据权利要求1所述的方法,其中,所述报告事务提供近实时 报告。
15. 根据权利要求1所述的方法,其中,仅所述主节点可以修改所 述数据库。
16. 根据权利要求1所述的方法,其中,响应于用户命令拍所述快照。
17. 根据权利要求1所述的方法,其中,所迷快照是只读的。
18. 根据权利要求1所述的方法, 其中,所述快照不能被所述主节点修改。
19. 根据权利要求1所述的方法, 其中,所述快照和所述凄t据库共用盘空间。
20. 根据权利要求1所述的方法,其中,所述快照是最新的。
21. 根据权利要求1所述的方法,其中,直接使用所述快照在所述 故障转移节点上执行所述报告事务。
22. —种包4舌计算才几可读介质的计算枳一呈序产品,所述计算才几可读 介质包括指令,其中,当处理器执行所迷指令时,所述指令使 所述处理器执行用于执行权利要求1-21中的任一项处理。
23. —种用于执^^又利要求1-21中4壬一项所述的方法的系统。
全文摘要
本发明披露了用于处理数据库系统中的报告事务的改进方法、系统和介质。在一些实施例中,在主节点上执行非报告事务的同时,使用数据库快照在故障转移节点上执行报告事务。
文档编号G06F17/30GK101124546SQ200680005358
公开日2008年2月13日 申请日期2006年2月17日 优先权日2005年2月18日
发明者安杰洛·普鲁希诺, 萨什坎斯·钱德拉塞克拉恩 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1