CN102385611B - 减少数据库事务期间的锁定 - Google Patents
减少数据库事务期间的锁定 Download PDFInfo
- Publication number
- CN102385611B CN102385611B CN201110257251.4A CN201110257251A CN102385611B CN 102385611 B CN102385611 B CN 102385611B CN 201110257251 A CN201110257251 A CN 201110257251A CN 102385611 B CN102385611 B CN 102385611B
- Authority
- CN
- China
- Prior art keywords
- change
- master data
- record
- data
- inquiry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000008859 change Effects 0.000 claims abstract description 133
- 230000004044 response Effects 0.000 claims abstract description 8
- 238000000034 method Methods 0.000 claims description 35
- 238000012217 deletion Methods 0.000 claims description 21
- 230000037430 deletion Effects 0.000 claims description 21
- 238000005516 engineering process Methods 0.000 abstract description 13
- 230000009467 reduction Effects 0.000 abstract description 4
- 230000004048 modification Effects 0.000 description 28
- 238000012986 modification Methods 0.000 description 28
- 238000012805 post-processing Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 239000013589 supplement Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及减少数据库事务期间的锁定。此处描述了用于在不使用高速缓存的情况下减少数据库事务期间的锁定的概念和技术。根据此处公开的概念和技术,服务器应用程序响应于接收到用于修改存储在数据库中的基本数据的操作而生成变更集。该变更集被存储为与基本数据一起存储在数据库的表的集合,并且包括反映基本数据中已由这些操作创建和/或修改的记录的第一表。该变更集还可包括反映基本数据中已由这些操作删除的记录的第二表。
Description
技术领域
本发明一般涉及数据库事务处理,尤其涉及减少数据库事务期间的锁定。
背景技术
当设备或应用程序更新数据库中的数据时,该数据库中的数据被锁定直到作出对该数据的变更的设备或应用程序释放该数据或终止与数据库的会话。对数据库中的数据的锁定可能影响数据库和/或连接到该数据库的设备和应用程序的性能。另外,当数据库中的数据被锁定时,其他设备和/或应用程序可能无法访问数据或对其作出变更。
锁定问题在长运行事务期间和/或对于其中多个用户、应用程序或设备被授权访问数据的数据库尤其严重。其他长运行事务包括连续作出对同一数据的多次查询和/或修改和/或访问数据的设备或应用程序对该数据执行众多和/或复杂计算的情况。在这些和其他情况下,修改数据的设备和/或应用程序可以在该数据被锁定时对该数据执行各种计算和/或操作,由此阻止其他应用程序和/或设备对该数据的访问。
缓解数据锁定导致的问题的一种尝试涉及使用在访问数据库中的数据的设备处保存所有变更的高速缓存。在设备处高速缓存对数据的变更,而不是锁定数据。当设备准备好向数据库提交变更时,锁定该数据并且同时提交变更。然而,高速缓存变更需要设备处的额外的计算资源,因为设备必须对查询结果执行后处理操作以反映高速缓存在设备处的变更。这些后处理步骤可取决于高速缓存在设备处的变更数量而变得极度复杂,并且在彼此依赖的众多计算的情况下可能使设备性能降级。
在此呈现对于这些和其他考虑事项做出的本发明。
发明内容
此处描述了用于在不在设备处使用设备高速缓存或后处理操作的情况下减少数据库事务期间的数据锁定的概念和技术。根据此处公开的概念和技术,服务器应用程序响应于执行修改存储在数据库中的基本数据的操作而生成变更集。该变更集与基本数据一起作为表的集合存储在数据库中。该表集合可包括存储反映基本数据中已由操作创建和/或修改的记录的数据的第一表,以及存储反映基本数据中已由操作删除的记录的数据的第二表。
在提交变更集中反映的对基本数据的变更、添加和/或删除之前,在主存服务器应用程序的服务器计算机处接收到的查询被修改成包括用于查询存储在变更集中的数据和基本数据的语句。对基本数据和变更集执行经修改的查询,并且生成满足经修改的查询的结果并将其返回至作出请求的设备和/或实体。变更集和经修改的查询的生成以及经修改的查询的执行可以在不锁定基本数据的情况下进行。由此,某些实施方式允许设备和/或应用程序在其他设备和/或应用程序修改基本数据的同时访问基本数据。
当向服务器应用程序提交操作的设备结束与服务器计算机的事务时,服务器应用程序锁定基本数据。服务器应用程序连续对基本数据应用存储在变更集表中的变更。当存储在变更集表中的变更已被应用于基本数据时,解锁基本数据并且丢弃变更集。
应当明白,上述主题还可被实现成计算机控制的装置、计算机进程、计算系统、或诸如计算机可读存储介质等制品。通过阅读以下具体实施方式并查阅相关联的附图,这些和各种其他特征将是显而易见的。
提供本发明内容以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,本发明内容也不旨在用于限定所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本发明的任何部分中提及的任何或所有缺点的实现。
附图说明
图1是示出用于此处所公开的各实施方式的示例性操作环境的系统图。
图2是示意性地示出根据一示例性实施方式的用于存储基本数据和变更集的数据结构的框图。
图3是示意性地示出根据一示例性实施方式的用于更新存储在数据库中的数据的方法的各方面的流程图。
图4是示出能够实现此处所呈现的各实施方式的各方面的计算系统的示例性计算机硬件和软件体系结构的计算机体系结构图。
具体实施方式
以下详细描述涉及用于在不在设备处使用设备高速缓存或后处理操作的情况下减少数据库事务期间的锁定的概念和技术。根据此处公开的概念和技术,服务器应用程序响应于接收到用于修改存储在数据库中的基本数据的操作而生成变更集。该变更集被存储为与基本数据一起存储在数据库的表的集合。该表集合可包括存储反映基本数据中已由操作创建和/或修改的记录的数据的第一表,以及存储反映基本数据中已由操作删除的记录的数据的第二表。
在提交变更集中反映的对基本数据的变更、添加和/或删除之前,在主存服务器应用程序的服务器处接收到的查询被修改成包括用于查询存储在变更集中的数据和基本数据的语句。对基本数据和变更集执行经修改的查询,并且生成满足经修改的查询的结果并将其返回至作出请求的设备和/或实体。变更集和经修改的查询的生成以及经修改的查询的执行可以在不锁定基本数据的情况下进行。由此,某些实施方式允许设备和/或应用程序在其他设备和/或应用程序修改基本数据的同时访问基本数据。
尽管在结合计算机系统上的操作系统和应用程序的执行而执行的程序模块的一般上下文中呈现了此处描述的主题,但是本领域技术人员将认识到,其他实现可以结合其他类型的程序模块来执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。此外,本领域技术人员将明白,可以利用其他计算机系统配置来实施此处描述的主题,这些计算机系统配置包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子产品、小型计算机、大型计算机等等。
在以下详细描述中,参考了构成其一部分并作为说明示出了各具体实施方式或示例的附图。现在参考附图(全部若干附图中相同的标号表示相同的元素),将提出用于减少数据库期间的锁定的计算系统、计算机可读存储介质和计算机实现的方法的各方面。
现在参考图1,将描述用于本文所提出的各实施方式的一个操作环境100的各方面。图1所示的操作环境100包括在网络104上操作或与网络104通信的服务器计算机102。服务器计算机102的功能可由一个或多个服务器计算机、台式计算机、移动电话、膝上型计算机、其他计算系统等来提供。
服务器计算机102被配置成执行操作系统106以及诸如服务器应用程序108等一个或多个应用程序。操作系统106是用于控制服务器计算机102的操作的计算机程序。服务器应用程序108是被配置成在操作系统106上执行以提供此处描述的用于减少数据库事务期间的锁定的功能的应用程序。
根据各实施方式,操作环境100还包括与网络104和/或服务器计算机102通信操作的一个或多个设备110。在一些实现中,设备110包括一个或多个个人计算机(“PC”),诸如台式、平板或膝上型计算机系统。设备110还可包括其他类型的计算系统,包括但不限于服务器计算机、手持式计算机、上网本计算机、嵌入式计算机系统、个人数字助理、移动电话、智能电话等。
服务器应用程序108被配置成接收由一个或多个设备110生成的操作112,响应于操作112而访问主存在服务器计算机102可访问的一个或多个数据库116处的基本数据114,并且基于操作112来对基本数据114采取动作,如此处所描述的。根据各实施方式,操作112可包括用于读取基本数据114的查询或者用于修改基本数据114的修改。在一些实施方式中,操作112包括由设备110生成的一个或多个结构化查询语言(“SQL”)操作。
更具体而言,在一些实施方式中,操作112包括用于从基本数据114中读取满足查询中指定的准则的一个或多个记录的一个或多个查询。服务器应用程序108被配置成生成满足查询的一个或多个结果118,并且将结果118提供给设备110来作为对查询的响应。在其他实施方式中,操作112包括对基本数据114的一个或多个修改。对基本数据114的“修改”不限于变更或修改基本数据114,而是改为广泛地用来指代对基本数据114的一个或多个记录的创建或添加、对基本数据114的一个或多个记录的修改、和/或对基本数据114的一个或多个记录的删除。
数据库数据的更新通常要求在作出变更之前锁定正被更新的数据。这些锁可能对访问存储在数据库中的数据的其他用户或设备造成性能或准确性问题。例如,锁定可阻止其他设备和/或用户访问数据直到该数据被释放。尤其对于长运行事务而言,这些锁可造成其他问题,诸如冲突、死锁等。
根据此处描述的各实施方式,服务器应用程序108被配置成在接收到修改时生成变更集120,而不是立即对基本数据114应用变更。由此,服务器应用程序108在设备110对基本数据114进行修改期间不锁定基本数据114。根据一些实现,变更集120包括用于存储与经由操作112请求的修改相对应的数据的表。如将在此处更详细地解释的,在各实施方式中,只存在一个基本数据114的集合,但可以存在一个或多个变更集120。具体而言,与服务器计算机102通信的每一个设备110可生成对该特定设备110而言是私有的和/或不与其他设备110共享或不对其可见的变更集120并对其进行操作。服务器应用程序108使用变更集120来补充服务器计算机102接收到的其他查询,之后向基本数据114提交变更集120中反映的变更。因此,因当理解,多个设备110能够同时与服务器102交互并与各个变更集120交互。由此,响应于相同或相似的查询,设备110可基于与设备110相关联的各个变更集120的内容而接收到不同的结果。
服务器应用程序108还被配置成修改接收到的查询以访问存储在变更集120中的数据。更具体而言,服务器应用程序108被配置成将涉及基本数据114的查询修改成包括用于查询变更集120的语句。服务器应用程序108执行经修改的查询并向提交原始查询的设备110输出结果118。应当理解,查询可源自其他设备、节点或甚至服务器逻辑,而不一定来自设备110。例如,在一些实施方式中,服务器计算机102担当对于其自身的客户机并且用服务器逻辑生成查询。其他实施方式是可能的并被构想。由此,所示且所述实施方式应被理解为是示例性的,并且绝不应被解释为是限制性的。在一些实施方式中,服务器应用程序108通过生成与变更集120有关的一个或多个查询并且使用例如UNION(并)操作数来联接查询,来修改作为操作112接收到的查询。服务器应用程序108的这些和其他特征将参考以下图2-3来进一步理解。
根据各实施方式,服务器应用程序108还被配置成确定何时已经接收到所有查询和修改。例如,服务器应用程序108可以从设备110接收到提交设备110所作出的所有变更的命令。另外地或另选地,设备110可终止与服务器计算机102的会话,和/或服务器应用程序108可确定已达到时间或操作配额,并且可终止源自设备110的事务。
根据各实施方式,服务器应用程序108被配置成当该服务器应用程序确定服务器计算机102和设备110之间的事务已经结束时对基本数据114应用变更集120中的所有变更。因为所有查询修改、对基本数据114的更新以及与经修改的查询有关的计算都是在服务器计算机102上进行的,所以设备110能够免于处理和后处理操作,否则这些处理和后处理操作可能使设备110的性能降级和/或延长在更新期间锁定基本数据114的时间。由此,各实施方式允许减少数据库事务期间的数据锁定。
图1示出了一个服务器计算机102、一个网络104、一个设备110以及一个数据库116。然而,应当理解,操作环境100的一些实现包括多个服务器计算机102、多个网络104、多个设备110和/或多个数据库116。由此,所示实施方式应被理解为是示例性的,并且绝不应被解释为是限制性的。
现在转向图2,将详细描述基本数据114和变更集120的其他方面。更具体而言,图2是示意性地示出根据一示例性实施方式的用于基本数据114和变更集120的数据结构200的框图。如图2所示,数据结构200包括用于存储基本数据114的基本数据表202以及两个表;用于存储指示将对基本数据114作出的变更的数据的已变更记录表204和已删除记录表206。
基本数据表202包括记录208A-D,其中每一个记录都包括用于存储记录标识符(“记录ID”)的字段210以用作基本数据表202的主键,以及用于存储与记录208相关联的数据的一个或多个字段。在所示实施方式中,每一个记录208都包括用于存储第一元素的值的字段212,以及用于存储第二元素的值的字段214。应当理解,基本数据表202可包括比所示基本数据表202更少或更多列、行和/或字段。由此,所示基本数据表202及其内容应被理解为是说明性的,而绝不应被解释为是限制性的。
根据此处所描述的各实施方式,服务器应用程序108被配置成在接收到用于修改存储在数据库116的基本数据114的操作112时生成已变更记录表204和已删除记录表206。已变更记录表204和已删除记录表206用于存储对基本数据114作出的变更,而不是锁定基本数据114并且在接收到修改后更新基本数据114。由此,服务器应用程序108被配置成减少和/或避免与数据库事务相关联的数据锁定直到所有事务完成。对于长运行事务和/或事务串,这些实施方式能够基本上减少实现对基本数据114的更新所需的锁定的量。
服务器应用程序108将变更存储在变更集120中直到与操作112相关联的用户或设备结束与服务器计算机102的事务,而不是在该用户或设备更新期间锁定基本数据114。当用户或设备结束与服务器计算机102的事务时,服务器应用程序108锁定基本数据114并且同时提交变更集120中反映的所有变更,由此减少或消除对基本数据114的任何非必要锁定。在一些实施方式中,服务器应用程序108被配置成在用户或设备与服务器计算机102之间的事务中止的情况下丢弃变更集120。此外,在一些实施方式中,变更集120中反映的变更以有序方式持久存储以避免死锁。
在事务期间,服务器应用程序108被配置成不仅基于基本数据114,而且基于包括在变更集120中的数据来满足提交给服务器计算机102的查询。如上所述,对查询的修改和对查询的执行由服务器应用程序108来执行。由此,服务器应用程序108被配置成允许设备110避免为了反映在事务期间作出的变更而对结果118进行后处理,如上文中所解释的。该能力可提高设备110、服务器计算机102和数据库116的性能,并且能够减少锁定基本数据114以容纳对基本数据114的更新的时间量。
根据一些实施方式,如图2所示,已变更记录表204具有与基本数据表202相同的布局。已变更记录表204存储与基本数据表202中已经由操作112变更的记录208相对应的数据。在所示示例中,已变更记录表204存储指示对基本数据表202中的记录208B作出的变更的记录216。如图2所示,存储在基本数据表202中的一个或多个记录208可以基于存储在相应的表202、204中的记录ID数据来与存储在已变更数据表204中的一个或多个记录216相关。
已删除记录表206存储标识基本数据表202中已经由操作112删除的记录208的数据。根据各实施方式,已删除记录表206不具有与基本数据表202和/或已变更记录表204相同的布局,但不一定是这种情况。在所示实施方式中,已删除记录表206包括一个记录218,该记录指示基本数据表202中的记录208D已经由操作112删除。
对基本数据表202、已变更记录表204和已删除记录表206的使用可通过考虑一些简要示例来理解。如果服务器应用程序108仅基于基本数据表202执行对具有“Value_2(值_2)”作为“Element_1(元素_1)”的值的记录的查询,则该查询将返回对应于记录ID“3”的记录。然而,如在已变更数据表204中所示出的,对基本数据表202和已变更记录表204执行的对具有“Value_2”作为“Element_1”的值的记录的查询将返回对应于记录ID“2”和“3”的记录。
类似地,如果服务器应用程序108仅基于基本数据表202执行对具有“Value_3(值_3)”作为“Element_2(元素_2)”的值的记录的查询,则该查询将返回对应于记录ID“1”和“4”的记录。然而,如果服务器应用程序108基于基本数据表202和已删除记录表206来执行对具有“Value_3”作为“Element_2”的值的记录的查询,则该查询将只返回对应于记录ID“1”的记录。这些查询是示例性的并且仅仅是为了示出此处公开的概念和技术而提供的。由此,这些示例绝不应被解释为是示例性的。
现在转向图3,将详细描述用于更新数据库的方法300的各方面。应该理解,不一定按任何特定次序来呈现此处公开的方法300的操作,并且构想了用替换次序来执行部分或全部操作是可能的。为了易于描述和说明,按所示次序来呈现各操作。可以在不背离所附权利要求书的范围的情况下添加、省略和/或通知执行操作。
还应当理解,所示方法300可以在任何时候结束并且不必完整地执行。该方法300的操作中的部分或全部和/或基本上等价的操作可以通过执行计算机存储介质上所包括的计算机可读指令来执行,这在下面予以定义。如在说明书和权利要求书中使用的术语“计算机可读指令”及其变型,在此处是用来广泛地包括例程、应用程序、应用程序模块、程序模块、程序、组件、数据结构、算法等。计算机可读指令可以在各种系统配置上实现,包括单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持式计算设备、基于微处理器的可编程消费电子产品、其组合等等。
因此,应该理解,此处所述的逻辑操作被实现为:(1)一系列计算机实现的动作或运行于计算系统上的程序模块;和/或(2)计算系统内的互连的机器逻辑电路或电路模块。取决于计算系统的性能及其他要求,可以选择不同的实现。因此,此处描述的逻辑操作被不同地称为状态操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑以及其任何组合来实现。
出于说明和描述本公开的概念的目的,在此公开的方法300被描述为由服务器计算机102执行的服务器应用程序108来执行。应该理解,该实施例是示例性的,并且不应被视为以任何方式构成限制。可由服务器计算机102和/或其他设备执行另外和/或另选的应用程序以提供此处公开的功能,而不背离所附权利要求书的范围。
方法300开始于操作302,其中服务器计算机102确定是否已经在服务器计算机102处接收到操作112。根据一些实施方式,方法300直到服务器计算机102确定服务器计算机102已经接收到操作112才在操作302之后继续。如果服务器计算机102确定已经接收到操作112,则方法300继续至操作304。
在操作304,服务器计算机102确定接收到的操作112与对基本数据114的修改还是与同基本数据114有关的查询相对应。如果操作与对基本数据114的修改相对应,则方法300继续至操作306,其中服务器计算机102存储指示该修改的数据。服务器计算机102将指示该修改的数据存储为描述经由操作112请求的修改的变更集120。
如上文中参考图1-2所解释的,存储在变更集120中的数据可被存储在与基本数据114相关联的一个或多个表中。在一些实施方式中,变更集120包括存储在已变更记录表204和已删除记录表206中的数据。变更集120能够与基本数据114一起存储在数据库116处,并且可由服务器计算机102用来满足与基本数据114有关的查询。
如果服务器计算机102在操作304确定在操作302中接收到的操作112对应于查询,则方法300继续至操作308,其中服务器计算机102基于接收到的查询生成经修改的查询。如上文中参考图1-2所解释的,服务器应用程序108被配置成通过用对来自变更集120的数据的查询来补充对基本数据114的查询,来生成经修改的查询。
在一个示例性实施方式中,服务器应用程序108用针对来自变更集120的数据的一个或多个语句来补充对来自基本数据114的数据的选择语句。参考图2所示的各张表,服务器计算机108将用语句“SELECT*FROM BASE_DATA WHERE ELEMENT_1=’VALUE_1’AND(IDNOT IN(SELECT ID FROM CHANGED_RECORDS))UNION(SELECT*FROM CHANGED RECORDSWHERE ELEMENT_1=’VALUE_1’)”来替换查询语句“SELECT*FROM BASE_DATA WHEREELEMENT_1=’VALUE_1’”。应当理解,在该示例中,服务器应用程序108已将原始语句修改成包括已变更记录表204中反映的更新。
服务器应用程序108还可被配置成为已删除记录表206生成单独的查询和/或进一步修改经修改的查询以包括用于过滤掉已删除记录的语句。返回到上述示例,服务器应用程序108能够用语句“SELECT*FROM BASE_DATAWHERE ELEMENT_1=’VALUE_1’AND(ID NOTIN(SELECT ID FROM CHANGED_RECORDS))AND(ID NOT IN(SELECT ID FROM DELETED_RECORDS))UNION(SELECT*FROM CHANGED_RECORDSWHERE ELEMENT_1=’VALUE_1’)”来替换经修改的查询。因此,应当理解,在该示例中,服务器应用程序108已将查询修改成反映存储在已变更记录表204和已删除记录表206中的数据,由此产生反映基本数据114和变更集120中的数据的结果118。
方法300从操作308继续至操作310,其中服务器应用程序108运行经修改的查询并且向生成操作112的实体提供使用经修改的查询来获取的结果。方法300从操作310和306继续至操作312,其中服务器应用程序108确定设备110和服务器计算机102之间的事务是否已经结束。如果服务器应用程序108确定设备110和服务器计算机102之间的事务尚未结束,则方法300返回到操作302,其中服务器计算机102等待从设备110接收到另一操作112。如果服务器应用程序108确定设备110和服务器计算机102之间的事务已经结束,则方法300继续至操作314。
在操作314,服务器应用程序108将变更集120所反映的变更提交给基本数据114。由此,基本数据114被更新成反映变更集120中所指示的变更。如上所述,服务器应用程序108只在对基本数据114应用变更集120所反映的变更时才锁定基本数据114。然而,为了避免死锁,这些锁定的次序必须对所有并发操作相同。在一些实施方式中,这由于变更集120包含所有修改并且对修改的排序在不管修改的原始次序的情况下完成而实现。服务器应用程序108删除在已删除记录表206中被指示为已删除的任何记录216,并且更新与在已变更记录表204中被指示为已变更的记录216相对应的任何记录208。服务器应用程序108将已更新的数据存储在数据库116,并且丢弃变更集120和/或清除已变更记录表204和/或已删除记录表206的内容。方法300在操作316结束。
如上所述,此处所描述的概念和技术的实施方式允许设备110避免执行高速缓存维护和/或对查询结果的后处理,因为计算在服务器计算机102处由服务器应用程序108来执行。另外,因为变更是对变更集120而不是基本数据114作出的,所以相对于可以在使用设备高速缓存和/或后处理操作的情况下锁定基本数据114的持续时间,能够减少锁定基本数据114的持续时间。由此,数据库116、设备110和/或服务器计算机102的性能可以提高胜过减少数据锁定的其他方法。
尽管未在上文中描述,但此处所描述的概念和技术的一个实施方式包括取决于需求、期望和/或偏好来选择性地使用局部临时表和全局临时表来存储变更集120。由此,在一些实施方式中,变更集120被存储在全局临时表中,由此允许其他设备和应用程序访问变更集120以允许如由变更集120修改的基本数据114的当前视图。
根据一些实施方式,服务器应用程序108在任何特定时刻只锁定变更集120的一个表。由此,在一些实施方式中,在任何时刻只可锁定已更新记录表204或已删除记录表206中的一个。由此,基本数据114以及已更新记录表204或已删除记录表206中的一个将在任何时刻被解锁,除非变更集中的变更被提交给基本数据114。如上所述,在一些实施方式中,服务器应用程序108为每一个用户生成变更集120和/或变更集120包括局部临时表而不是全局临时表。由此,变更集120的表在更新期间锁定,但因为只有一个用户可访问变更集120的表,所以对表的锁定不影响性能或可伸缩性。同样,在一些实施方式中,变更集120中的变更集被存储为“Δ(delta)”,由此允许针对同一数据的多个操作和/或更新,而不在提交操作和/或更新的多个实体之间生成冲突。
图4示出了能够执行此处所描述的用于减少数据库事务期间的锁定的软件组件的设备的示例性计算机体系结构400。因此,图4中所示的计算机体系结构400示出了用于服务器计算机、台式计算机、上网本计算机、平板计算机、膝上型计算机、智能电话、和/或其他计算设备的体系结构。计算机体系结构400可用于执行此处所呈现的软件组件的任何方面。
图4所示的计算机体系结构400包括中央处理单元402(“CPU”)、包括随机存取存储器404(“RAM”)和只读存储器(“ROM”)406的系统存储器408、以及将存储器404耦合至CPU402的系统总线410。基本输入/输出系统被存储在ROM 408中,该系统包含帮助诸如在启动期间计算机体系结构400中的元件之间传递信息的基本例程。计算机体系结构400还包括用于存储操作系统106和服务器应用程序108的大容量存储设备412。尽管未在图4中示出,但大容量存储设备412还可被配置成在需要时存储基本数据114和/或变更集120。
将大容量存储设备412通过连接到总线410的大容量存储控制器(未示出)连接到CPU 402。大容量存储设备412及其相关联的计算机可读介质为计算机体系结构400提供非易失性存储。尽管对此处包含的计算机可读介质的描述参考了诸如硬盘或CD-ROM驱动器之类的大容量存储设备,但是本领域的技术人员应当理解,计算机可读介质可以是可由计算机体系结构400访问的任何可用计算机存储介质。
作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机可读介质包括但不限于:RAM、ROM、EPROM、EEPROM、闪存或其他固态存储器技术、CD-ROM、数字多功能盘(“DVD”)、HD-DVD、蓝光(BLU-RAY)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息并且可以由计算机体系结构400访问的任何其他介质。为了本说明书和权利要求书的目的,短语“计算机可读存储介质”及其变型不包括波、信号和/或其他瞬态和/或无形通信介质。
根据各实施例,计算机体系结构400可以使用通过诸如网络104之类的网络到远程计算机的逻辑连接来在联网环境中操作。计算机体系结构400可以通过连接至总线410的网络接口单元414来连接到网络104。应当理解,网络接口单元414也可以用于连接至其它类型的网络和远程计算机系统,例如一个或多个设备110、数据库116和/或其他节点或设备。计算机体系结构400还可以包括用于接收和处理来自多个其他设备的输入的输入/输出控制器416,这些设备包括键盘、鼠标或者电子指示笔(未在图4中示出)。类似地,输入/输出控制器416可以提供至显示屏、打印机或其他类型的输出设备(也未在图4中示出)的输出。
应当理解,本文所描述的软件组件在被加载到CPU 402中并被执行时可以将CPU402和总体计算机体系结构400从通用计算系统变换成为方便本文所提出的功能而定制的专用计算系统。CPU 402可从任何数目的晶体管或其他分立电路元件中构造,这些元件可以单独或共同承担任何数目的状态。更具体地,CPU 402可以响应于包含在本文所公开的软件模块中的可执行指令来作为有限状态机操作。这些计算机可执行指令可以通过指定CPU402如何在各状态之间转换来变换CPU 402,由此变换了构成CPU 402的晶体管或其它分立硬件元件。
对本文所提出的软件模块的编码也可变换本文所提出的计算机可读介质的物理结构。在本说明书的不同的实现中,物理结构的具体变换可取决于各种因素。这样的因素的示例可以包括,但不仅限于:用于实现计算机可读介质的技术,计算机可读介质被表征为主存储器还是辅存储器等等。例如,如果计算机可读介质被实现为基于半导体的存储器,则本文所公开的软件可以通过变换半导体存储器的物理状态而在计算机可读介质上编码。例如,软件可以变换构成半导体存储器的晶体管、电容器或其它分立电路元件的状态。软件还可变换这些组件的物理状态以在其上存储数据。
作为另一示例,本文所公开的计算机可读介质可以使用磁或光技术来实现。在这些实现中,本文所提出的软件可以在其中编码了软件时变换磁或光介质的物理状态。这些变换可包括更改给定磁性介质内的具体位置的磁性。这些变换还可以包括改变给定光学介质内的特定位置的物理特征或特性,以改变这些位置的光学特性。物理介质的其它变换是可能的,而不脱离本说明书的范围和精神,而上述示例仅仅是为了方便这一讨论而提供的。
鉴于以上内容,应当理解,在计算机体系结构400中发生许多类型的物理变换以便存储并执行在此所提出的软件组件。还应当理解,计算机体系结构400可包括其它类型的计算设备,包括手持式计算机、嵌入式计算机系统、个人数字助理、以及本领域技术人员已知的其它类型的计算设备。还可以构想的是,计算机体系结构400可以不包括图4所示的全部组件,可以包括未在图4中明确示出的其它组件,或者可利用完全不同于图4所示的体系结构。
基于上述内容,应当理解,本文已经公开了用于减少数据库事务期间的锁定的技术。尽管用对计算机结构特征、方法和变换动作、特定计算机器和计算机可读介质专用的语言描述了本文所提出的主题,但可以理解,所附权利要求书中定义的本发明不必限于本文所述的具体特征、动作或介质。相反,这些具体特征、动作和介质是作为实现权利要求的示例形式来公开的。
上述主题仅作为说明提供,并且不应被解释为限制。可对此处描述的主题作出各种修改和改变,而不必遵循所示和所述的示例实施例和应用,且不背离所附权利要求书中所述的本发明的真正精神和范围。
Claims (13)
1.一种用于更新数据库(116)中的基本数据(114)的计算机实现的方法,所述计算机实现的方法包括执行计算机实现的操作用于:
在服务器计算机(102)处从设备(110)接收操作(112),所述操作(112)包括用于修改所述数据库(116)中的所述基本数据(114)的信息;
基于所述操作(112)来生成变更集(120),所述变更集(120)指示将对所述数据库(116)中的所述基本数据(114)作出的变更,并且所述变更集(120)对于所述设备(110)是私有的且仅对所述设备(110)可见;
将所述变更集(120)存储在所述数据库(116)中,所述变更集包括已变更记录表和已删除记录表,所述表存储指示所述基本数据中由所述操作变更的记录或所述基本数据中由所述操作删除的记录中的至少一个的数据;
从所述设备接收查询,所述查询包括从所述数据库中读取所述基本数据的请求;
生成经修改的查询,所述经修改的查询包括所述查询以及用于读取存储在所述已变更记录表或所述已删除记录表中的至少一个里的数据的变更集查询;以及
响应于确定所述设备(110)和所述服务器计算机(102)之间的事务已经结束,根据所述变更集(120)中所指示的变更来更新所述基本数据(114)。
2.如权利要求1所述的方法,其特征在于,所述变更集包括已变更记录表,所述已变更记录表存储指示所述基本数据中由所述操作变更的记录的数据。
3.如权利要求2所述的方法,其特征在于,所述基本数据中由所述操作变更的记录包括由所述操作删除的记录。
4.如权利要求2所述的方法,其特征在于,更新所述基本数据包括修改所述基本数据中由存储在所述已变更记录表中的数据指示的记录。
5.如权利要求2所述的方法,其特征在于,所述已变更记录表的布局与存储所述基本数据的基本数据表的布局相同。
6.如权利要求1所述的方法,其特征在于,还包括执行所述查询以及所述变更集查询以获取满足所述查询的结果。
7.如权利要求6所述的方法,其特征在于,还包括确定所述设备和所述服务器计算机之间的事务是否已经结束。
8.如权利要求1所述的方法,其特征在于,更新所述基本数据包括以下操作中的至少一个:
根据存储在所述已变更记录表中的数据来变更所述基本数据中的记录;或者
根据存储在所述已删除记录表中的数据来删除所述基本数据中的记录。
9.如权利要求1所述的方法,其特征在于,更新所述基本数据包括:
锁定所述基本数据以便进行更新;以及
在锁定所述基本数据以便进行更新的同时根据所述变更集来更新所述基本数据。
10.如权利要求9所述的方法,其特征在于,更新所述基本数据还包括:
在完成对所述基本数据的更新后,解锁所述基本数据;以及
丢弃所述变更集。
11.如权利要求1所述的方法,其特征在于,所述操作包括结构化查询语言操作。
12.一种用于更新数据库(116)中的基本数据(114)的计算机实现的系统,包括:
用于从设备(110)接收操作(112)的装置,所述操作(112)包括用于修改所述数据库(116)中的基本数据(114)的信息;
用于基于所述操作(112)来生成变更集(120)的装置,所述变更集(120)指示将对所述数据库(116)中的所述基本数据(114)作出的变更,并且所述变更集(120)对于所述设备(110)是私有的且仅对所述设备(110)可见;
用于将所述变更集(120)存储在所述数据库(116)中的装置;
用于从所述设备接收查询的装置,所述查询包括从所述数据库中读取所述基本数据的请求;
用于生成经修改的查询的装置,所述经修改的查询包括所述查询以及用于读取存储在已变更记录表或已删除记录表中的至少一个里的数据的变更集查询;
用于执行所述查询以及所述变更集查询以获取满足所述查询的结果的装置;以及
用于响应于确定所述设备(110)和所述计算机(102)之间的事务已经结束,根据所述变更集(120)中所指示的变更来更新所述基本数据(114)的装置。
13.如权利要求12所述的计算机实现的系统,其特征在于,还包括:
用于确定所述设备和所述计算机之间的事务是否已经结束的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/869,747 | 2010-08-27 | ||
US12/869,747 US8732143B2 (en) | 2010-08-27 | 2010-08-27 | Reducing locking during database transactions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102385611A CN102385611A (zh) | 2012-03-21 |
CN102385611B true CN102385611B (zh) | 2017-08-15 |
Family
ID=45698499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110257251.4A Active CN102385611B (zh) | 2010-08-27 | 2011-08-26 | 减少数据库事务期间的锁定 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8732143B2 (zh) |
CN (1) | CN102385611B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2370892B1 (en) | 2008-12-02 | 2020-11-04 | Ab Initio Technology LLC | Mapping instances of a dataset within a data management system |
EP2478433A4 (en) | 2009-09-16 | 2016-09-21 | Ab Initio Technology Llc | MAPPING DATA SET ELEMENTS |
WO2012061109A1 (en) | 2010-10-25 | 2012-05-10 | Ab Initio Technology Llc | Managing data set objects in a dataflow graph that represents a computer program |
KR101872748B1 (ko) * | 2011-01-14 | 2018-06-29 | 아브 이니티오 테크놀로지 엘엘시 | 데이터 콜렉션에 대한 변경 관리 방법 |
US10489360B2 (en) | 2012-10-17 | 2019-11-26 | Ab Initio Technology Llc | Specifying and applying rules to data |
US10430287B2 (en) | 2014-04-23 | 2019-10-01 | Hitachi, Ltd. | Computer |
SG11201700384WA (en) | 2014-07-18 | 2017-02-27 | Ab Initio Technology Llc | Managing parameter sets |
US9626393B2 (en) | 2014-09-10 | 2017-04-18 | Ab Initio Technology Llc | Conditional validation rules |
US9465832B1 (en) | 2016-02-04 | 2016-10-11 | International Business Machines Corporation | Efficiently committing large transactions in a graph database |
CN107885488B (zh) * | 2016-09-29 | 2021-06-01 | 微软技术许可有限责任公司 | 意图和具有意图的锁 |
US10380084B2 (en) * | 2017-01-26 | 2019-08-13 | Sap Se | Data model view with complex calculation capability |
CN107704557B (zh) * | 2017-09-28 | 2019-12-10 | 金蝶蝶金云计算有限公司 | 操作互斥数据的处理方法、装置、计算机设备和存储介质 |
CN111459946B (zh) * | 2020-04-08 | 2023-03-21 | 深圳市今天国际物流技术股份有限公司 | 一种数据表快速汇总方法、装置、计算机设备及存储介质 |
WO2022165321A1 (en) | 2021-01-31 | 2022-08-04 | Ab Initio Technology Llc | Data processing system with manipulation of logical dataset groups |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7251669B1 (en) * | 2003-03-31 | 2007-07-31 | Microsoft Corporation | System and method for database versioning |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0554854A3 (en) | 1992-02-04 | 1996-02-28 | Digital Equipment Corp | System and method for executing, tracking and recovering long running computations |
US6275863B1 (en) | 1999-01-25 | 2001-08-14 | International Business Machines Corp. | System and method for programming and executing long running transactions |
US20050261914A1 (en) * | 2002-07-19 | 2005-11-24 | Microsoft Corporation | Method and system for managing long running transactions |
US8122035B2 (en) * | 2005-06-28 | 2012-02-21 | International Business Machines Corporation | Method and system for transactional fingerprinting in a database system |
US8112394B2 (en) | 2005-10-14 | 2012-02-07 | Oracle International Corporation | Long-lived data transactions |
US7640242B2 (en) * | 2006-03-24 | 2009-12-29 | Oracle International Corp. | Light weight locking model in the database for supporting long duration transactions |
US8768890B2 (en) * | 2007-03-14 | 2014-07-01 | Microsoft Corporation | Delaying database writes for database consistency |
CN101777154A (zh) * | 2010-02-01 | 2010-07-14 | 浪潮集团山东通用软件有限公司 | 一种工作流管理系统中工作流数据的持久化方法 |
CN101794247A (zh) * | 2010-03-26 | 2010-08-04 | 天津理工大学 | 嵌套事务模型下实时数据库故障恢复方法 |
-
2010
- 2010-08-27 US US12/869,747 patent/US8732143B2/en active Active
-
2011
- 2011-08-26 CN CN201110257251.4A patent/CN102385611B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7251669B1 (en) * | 2003-03-31 | 2007-07-31 | Microsoft Corporation | System and method for database versioning |
Also Published As
Publication number | Publication date |
---|---|
US8732143B2 (en) | 2014-05-20 |
CN102385611A (zh) | 2012-03-21 |
US20120054164A1 (en) | 2012-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102385611B (zh) | 减少数据库事务期间的锁定 | |
CN104160381B (zh) | 多租户环境中租户特定数据集的管理方法及其系统 | |
US7774463B2 (en) | Unified meta-model for a service oriented architecture | |
KR101053385B1 (ko) | 보안 맞춤형 애플리케이션 클라우드 컴퓨팅 아키텍처 | |
Carey | Data delivery in a service-oriented world: the bea aqualogic data services platform | |
CN105190611B (zh) | 用于数据库横向扩展的方法及装置 | |
US11334593B2 (en) | Automated ETL workflow generation | |
US20150310051A1 (en) | Data partitioning for high-efficiency data retrieval | |
US20080104008A1 (en) | Common data broker method, system, and program product | |
CN109906597A (zh) | 向和从云网络中存储和取回受限制的数据集和非受限制的数据集 | |
Barbierato et al. | Modeling apache hive based applications in big data architectures | |
CN109906447A (zh) | 管理请求数据库系统中不存在的索引键的事务 | |
US8296725B2 (en) | Framework for variation oriented analysis for service-oriented architecture | |
EP3857421A1 (en) | Static data masking | |
US10346373B1 (en) | Merging and vending partial database schemas | |
US20230099501A1 (en) | Masking shard operations in distributed database systems | |
US7325003B2 (en) | Method and system for mapping datasources in a metadata model | |
US20150007126A1 (en) | Generating an Improved Development Infrastructure | |
Asaad et al. | NoSQL databases–seek for a design methodology | |
US20160342919A1 (en) | System and Method of Scenario Versioning | |
Bansal et al. | Journey of database migration from RDBMS to NoSQL Data Stores | |
US20020019824A1 (en) | Method to generically describe and manipulate arbitrary data structures | |
Jarrah et al. | GDBApex: a graph‐based system to enable efficient transformation of enterprise infrastructures | |
US20150149259A1 (en) | Enterprise performance management planning model for an enterprise database | |
US20210294966A1 (en) | Systems and methods for binding lookup controls |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150722 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150722 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |