CN102567453A - 在多版本数据库系统中的万圣夜保护 - Google Patents
在多版本数据库系统中的万圣夜保护 Download PDFInfo
- Publication number
- CN102567453A CN102567453A CN2011103584612A CN201110358461A CN102567453A CN 102567453 A CN102567453 A CN 102567453A CN 2011103584612 A CN2011103584612 A CN 2011103584612A CN 201110358461 A CN201110358461 A CN 201110358461A CN 102567453 A CN102567453 A CN 102567453A
- Authority
- CN
- China
- Prior art keywords
- data storage
- record
- statement
- instance
- version
- 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.)
- Granted
Links
Images
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/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- 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/2315—Optimistic concurrency control
- G06F16/2329—Optimistic concurrency control using versioning
-
- 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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
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)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及在多版本数据库系统中的万圣夜保护。缓解与万圣夜问题相关的问题的动作,万圣夜问题包括更新操作潜在地允许在操作期间多于一次地访问记录。方法包括访问数据存储操作语句的实例。执行数据存储操作语句的实例导致对数据存储记录的老版本的更新或删除或对数据存储记录的创建,在数据存储记录的更新或创建情况中得到数据存储记录的新版本,并在数据存储中的删除情况中得到数据存储记录的已删除版本。数据存储操作语句的实例与数据存储记录的新版本或数据存储记录的已删除版本相关联。
Description
技术领域
本发明涉及数据库,尤其涉及在多版本数据库系统中的万圣夜保护(Halloween protection)。
背景技术
背景和相关技术
计算机和计算系统已经影响到了现代生活的几乎每个方面。计算机通常在工作、消遣、保健、运输、娱乐、家政管理等中都有涉猎。
计算系统中的数据通常存储在一个或多个数据库中。数据库是相关数据的集合。数据库中的数据通常以二维的行和列的形式(称为表格)来组织的。数据库通常包括多个表格和多个关联结构。表格是数据库中的对象,包括零个或更多记录以及在每个记录中的至少一个字段。记录可被实现为表格中的行,所述记录被称为记录标识符的唯一数字所标识。字段是记录的细分,在这个意义上而言,表格中的一列数据代表表格中的每个记录的相同字段。数据库中的关联结构的示例是索引,通常,但不是必须的,B树或散列索引的形式。关联结构对数据库的用户透明,但是对高效操作和控制数据库管理系统是重要的。数据库管理系统是支持数据库特征的控制系统,数据库特征包括但不限于,将数据存储在存储介质上,从存储介质检索数据,以及更新存储介质上的数据。
查询用于访问或更新数据库中的数据。查询通常以结构化查询语言(SQL)的变体来构造,该变体可以或可以不符合美国国家标准协会(ANSI)标准SQL定义。SQL查询是非程序性的,因为它以对用户有意义的语言来指定目标或期望的查询结果,但不定义查询应该被实现的步骤或过程。当SQL查询被用于数据库时,数据库管理系统的查询优化器处理该非程序性查询以创建执行计划。执行计划是程序性的,因为它确定为实现SQL查询的目标所要执行的运算和算子的次序和类型。非程序性更新请求(SQL查询)和程序性执行计划的组合创建了查询优化器对执行计划的自动计划的机会和需求。查询优化器可为任何给定的SQL查询生成多个不同的查询计划,并且通常配置为按照高效目标生成查询计划。
更新是对数据库中的数据执行的通用类型的查询。更新是修改数据库中的现存记录及插入和删除数据库中的记录的任何操作。如此处所使用的,更新包括任何数据库修改,包括值的修改(狭义更新)、插入、删除、更新插入(upsert)(更新和插入的组合,如果数据库中存在就更新或者如果不存在就插入)、合并等。执行计划的语义可用SLQ语言的ANSI/ISO标准来规定。根据该标准,任何更新语句的语义与执行的三个独立阶段相同,各阶段之间没有重叠。首先,数据库的只读搜索确定要更新、插入,或删除的记录以及新列值。其次,更新记录和列。第三,验证为数据库定义的一致性约束。
对表格中的记录的更新还包括对索引中的索引条目及与所更新表格相关联的其他关联结构的更新。对关联结构的改变,实际上关联结构它们本身,通常对用户不可见,因为它们因执行计划的程序性执行而引起。
每当定位了满足查询表述的记录时,使用每次一记录(record-at-a-time)流水线操作(pipelining)的算子完全处理(即产生)输出。使用每次一组(set-at-a-time)流水线操作的算子消耗它的全部输入,并仅在那时从该算子中产生输出。每次一记录的处理在小的表间关系(cardinality)改变的传统系统中可能更高效。大的表间关系的改变可能用每次一组的方法更高效,因为它可利用顺序IO而非针对传统盘驱动器的随机IO来排序记录并执行改变。
在数据库更新领域存在被称为万圣夜问题(Halloween problem)的具体问题。自从IBM的San Jose研究实验室的研究人员在1975年的万圣节前夜首次注意到它,万圣夜问题已经是公知的了。数据库系统中的万圣夜问题在产生了不正确结果的数据修改语句(插入、更新,和删除)中可能是明显的,因为修改数据库状态的过程改变了执行语句的行为,并促使其修改了错误的一组记录(归因于跳过记录或归因于多次修改相同记录)。
万圣夜问题的典型示例是对“给薪水超过$30,000的所有员工5%的提高”的请求(SQL查询)。如果(i)使用对薪水的索引来发现这些员工,以及(ii)以薪水递增次序扫描索引条目,以及(iii)扫描不能区分该请求已经更新的索引条目以及那些还未更新的条目,以及(iv)当找到索引条目时立刻更新索引(每次一记录流水线),那么每个有资格的员工将获得无限数量的提高。因此,处理该请求将不会终止。
对万圣夜问题的一种简单解决方案是物理阶段隔离,其中对要修改的这组记录的标识以及对这些记录的实际修改是串行运行的(一个接一个)而非并发运行。在一个简单示例中,使用诸如假脱机(spool)的阻塞算子(blockingoperator)来获得物理阶段隔离。更复杂的解决方案包括充分利用底层查询处理器和存储引擎的行为的详细知识来生成计划和/或来分析并证实所选计划将正确地工作,而无需物理阶段隔离,即无需使用假脱机或其他阻塞算子,并且不考虑并发运行两阶段。
虽然有几个已知的避免万圣夜问题的方法,但这些方法常常导致资源(诸如存储空间资源或处理资源)开销的显著增长。
在此要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的各个实施例。相反,提供该背景仅用以示出在其中可实践在此描述的部分实施例的一个示例性技术领域。
发明内容
此处示出的一个示例涉及在计算环境中实施的方法。该方法包括用于缓解与万圣夜问题相关的问题的动作,万圣夜问题包括更新操作潜在地允许在操作期间多于一次地访问记录。方法包括访问数据存储操作语句的实例。执行数据存储操作语句的实例。对语句的执行导致对数据存储记录的老版本的更新或删除或数据存储记录的创建。更新数据存储记录或创建数据存储记录得到数据存储记录的新版本。删除数据存储记录导致数据存储记录的已删除版本。数据存储操作语句的实例与新版本的数据存储记录或已删除版本的数据存储记录相关联。
提供本发明内容以便以简化形式介绍在以下具体实施方式中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
另外的特征和优点将在以下的描述中阐述,并且部分可从该描述中显而易见,或者可以从此处的教示实践中习得。本发明的各特征和优点可以通过在所附的权利要求书中特别指出的手段和组合来实现和获得。本发明的特征将从以下描述和所附权利要求书中变得完全显而易见,或者可通过如下所述对本发明的实践而获知。
附图说明
为了描述可获得本主题的上述和其它优点和特征的方式,将通过参考附图中示出的本主题的具体实施方式来呈现以上简要描述的本主题的更具体描述。应该理解,这些附图仅描绘了各典型实施例,因此其不应被认为是对范围的限制,各实施例将通过使用附图用附加特征和细节来描述并解释,在附图中:
图1示出了示例数据库系统;以及
图2示出了用于缓解与万圣夜问题相关的问题的方法。
具体实施方式
在计算应用中,语句被用来对数据库中的记录进行操作。例如,语句可以被用来创建、读取、更新,或删除数据库记录。各实施例可实现这样的功能,藉此用来创建、更新,或删除记录的语句与已经由该语句所创建、更新,或删除的记录相关联。
例如,一些实施例可使用每一语句(per-statement)的版本信息(例如,在数据记录格式中或在记录头部中)来区分由当前语句所创建(或插入)或删除的记录和由相同或不同事务中的先前语句所创建或删除的记录。该版本信息可被用来隐藏已创建记录或示出由当前语句删除的记录。此外,这可被用来允许实施例向当前语句示出在语句(或在一些实施例中,事务)开始执行时存在的数据库的视图。在一些实施例中,这创建了阶段隔离的逻辑效果并允许更大的算子并发性,而不必需要物理阶段隔离或假脱机算子。
现在参考图1,示出了一个示例。图1示出了系统100。系统100内是数据库102。数据库102包括数据库表格104。数据库表格104包括用于存储数据记录的各个行和列。在所示示例中,记录实现为数据库表格104中的行。图1还示出了处理器106。处理器106连接到计算机可读存储器108。计算机可读存储器108存储包括计算机可执行指令的各种模块,当由处理器106或一个或多个其他处理器执行时,这些计算机可执行指令执行各种动作。在由图1所示的示例中,示出了模块110。模块110包括事务112。事务是一组语句,定义在原子上必须全部成功或全部失败的功能。例如,考虑简单财务事务。在所示出的简单示例中,对一个账号作出借(debit)而对另一账号作出贷(credit)。事务性地,借或贷的任一方都不可能在没有另一方的情况下发生而不会导致数据不一致性。因此,事务可包括导致借被执行的语句以及导致贷被执行的语句。如果借和贷两者都执行了,则借和贷的影响是持久的,有时被称为提交事务。如果借或贷的一方失败,则事务退出,并且所有的中间功能都回退到事务开始之前存在的状态。
在图1所示的示例中,事务112包括锁(lock)之内的三个语句。所示的锁并不是必要的,但是可用于一些实施例中。事务112中的语句可被用来操作数据库表格104中的记录。此处描述的一些实施例,通过用每一语句的版本号来扩充版本存储,以区分由当前语句创建的记录和由更早的语句创建的记录,可实现解决万圣夜问题的功能。具体地,一些实施例可向事务112中的每个语句分派一标识符。当语句对数据库表格104中的记录执行某些功能时,分派给执行这些功能的语句的标识符可与对其执行功能的记录相关联。
例如,在一些实施例中,额外信息与数据库表格104中所创建的每个新记录以及数据库表格中可由事务112内的语句删除的每个现存记录一起存储。在图1所示的示例中,语句标识符列114被包括在数据库表格104中。语句标识符列114包括从事务112中标识出创建了相应行的语句的标识符。在所示出的示例中,标识符1对应于语句1,标识符2对应于语句2,且标识符3对应于语句3。在所示出的示例中,标识符被示为包括在记录的列元素中,可以理解,可替换地或另外地使用存储和关联标识符的其他方法。例如,在一些实施例中,标识符可被存储在记录头部。可替换地或另外地,可实现各实施例,籍此通过为语句创建语句表格来将记录关联到语句,其中,由语句创建的记录存储在该语句表格中。以下将示出各种示例。
存储额外信息允许在读取一组记录时作出对于哪些记录是当前语句所创建而哪些是在语句开始执行之前已存在的判定。实施例可通过依靠不立刻删除或销毁老版本记录而是创建并插入新版本以取代老版本的删除和更新,来利用多版本化(multi-versioning)。因此,在更新之后,已更新记录的老版本和新版本两者同时存在于数据库表格104中,并且创建新版本的语句仍可读取老版本,但不能读取该语句自身所创建的新版本。
具体地,额外信息可用来确保数据修改语句仅仅看见如该语句开始执行之前已存在的数据库状态,并避免该语句看见其自身的修改。一些实施例可导致对于所有包括插入、更新(修改),和删除语句的数据修改语句而言这些情况为真。
实施例可如此实现,其中由于数据修改语句从未看见它们自己的改变,不需要采用其他现有的万圣夜保护机制,诸如通过插入诸如假脱机或排序的阻塞算子进行的显式阶段隔离,显式阶段隔离在产生任何输出记录之前复制所有输入记录。排除其他万圣夜保护机制可减少编译时间和复杂性,降低万圣夜保护分析不正确或万圣夜保护被不正确的应用的错误风险,并可通过消除不必要且昂贵的万圣夜保护假脱机来改善执行时间。
实施例可被应用于多版本数据库系统,包括SQL服务器的快照隔离。实施例可被应用于基于盘的系统和/或主存储器系统,以及应用于使用悲观(即,基于锁)或乐观(即,基于确认)并发性控制方案的系统。
有各种实现选择,用于将数据存储操作语句与数据存储记录版本关联。以下将讨论若干这些问题。例如,一个实施例可向事务112内的每个语句分派唯一版本号。在一些实施例中,这些号可被生成为单调递增的整数。图1所示的示例正示出了这样的示例。可替换地或另外地,可使用分派到语句的时戳,诸如,当语句首次对记录执行某一功能时的时戳指示。示出这些示例性实施例后,可以理解可采用许多不同数量的方案中的任何一个。例如,在一些实施例中,可使用生成语句的唯一号码的任何方案,无论全局地或是事务内的。
如前述,当一语句的版本号被存储在那条语句所创建的每个记录中时,可实现各实施例。可实现实施例,其中在读取的时候,那条语句仅被允许看见不包含当前版本号(即,对应于那条记录的版本号)的记录。例如,在图1中,事务112中的语句3可读取语句标识符列114中带有标识符1和2的记录,但是不能读取语句标识符列中带有标识符3的记录。
如果每个事务还具有其自己的事务标识符(这在多版本系统中很普遍),并且如果事务标识符与由事务创建的任何记录一起存储,则语句版本号可由不同事务中的语句重新使用。因此,例如,4字节的版本号可允许每事务含多达232(约4百万)条语句,并应该足以允许任何合理事务完成。在替换实施例中,即使当事务标识符没有与由事务创建的任何记录一起存储时,版本号可仍然是事务上下文专用。在这些实施例中,事务提交过程的部分可包括从记录中清除版本号。
可实现实施例以使用更少字节来存储版本号。然而,如果实现使用过于少的字节,则该实现可能在事务完成之前用完语句标识符。如果发生这种情况,可实施各种替换。例如,各实施例可中止当前事务。在这样的实施例中,不可能使用本发明的该实现完成全部事务。因此需要执行替换的数据处理方法。在替换的实施例中,实施例可以开始重新使用版本号。在版本号可以被重新使用之前,先前由该事务创建的全部记录使它们的当前版本号被重置为“安全”版本号。例如,一实施例可将全部版本号重置为零并接着从1开始分派新版本号。需要重置的记录的列表可以通过维持由当前事务更新的记录列表来高效地标识。这可以通过使用现存数据库功能来完成。例如,许多数据库系统已经维持由当前事务为事务日志更新的记录列表。如果版本号需要重置多于一次,它能够回想起上一次重置离开的地方并能够仅访问每个记录一次(并重置版本号)。
使用小版本号的特殊示例包含在使用单个位(bit)来指示哪些记录是由当前语句所创建的实现中。例如,值零可意味着记录先前被创建,而值1可意味着记录由当前语句创建。该位可如上所述在每条语句之后或开始执行新语句之前被重置。
在该范围的另一头,实现可向事务和语句分派来自单个唯一标识符空间的标识符。此方案将潜在地允许使用更大标识符。
在上述示例中,语句标识符与记录一起存储。然而,替换实施例可被实现,其中事务存储由当前语句所创建或删除的记录列表。在一些实施例中,该列表可被存储在诸如散列表格的数据结构中,使得搜索高效。单个列表可被用于已创建或删除的记录。然而,被插入和被删除的记录两者都被添加到该列表。然而,存在于列表中具有不同的效果,这取决于记录是被插入的还是被删除的。例如,如果在列表中记录被标识为被插入的结果,那么阻止语句读取该记录。如果在列表中记录被标识为删除的结果,那么仍然允许语句看见该记录。列表中可包括指示符以指示记录在列表中是被插入的结果还是被删除的结果。可替换地或另外地,记录本身具有某种指示符以指示记录是否是被删除的记录。可替换地或另外地,存在于列表中简单地倒转记录的默认可见性。这个列表在每条语句完成后可被丢弃。在读取时,如果语句遇到由当前事务创建的记录,则该语句检查与当前事务相关联的记录列表,以确定该记录由当前语句所创建且应该被跳过,还是该记录是以前存在且应该可见;或者,在已删除语句的情况中,确定记录由当前语句创建且应该可见,还是该记录是先前被删除且应该被跳过。
将语句版本号与每个记录一起存储对于主存储器系统而言特别适合,其中返回到记录以重置版本号的开销限于在存储器写入。如果包含需要版本号重置的记录的页已经被清除到盘中和/或被逐出存储器,基于盘的系统可能需要执行额外的盘写入或甚至额外的盘读取。因此,基于盘的系统可从上述包含存储记录的单独列表的实施例中受益。
语句版本号可以与已插入记录和已删除记录两者相关联,前者使得向当前语句隐藏它们,后者使得继续向当前语句示出它们。在不允许事务删除由尚未提交的不同事务所创建的记录的系统中,使用相同的存储器足以存储创建该记录的语句的版本号以及后来删除该记录的语句的版本号。可实现各实施例,其中创建记录的事务不需要已经提交,但是已经完成其活动处理。例如,事务可在“提交前”或“确认”阶段。需要这两语句不能并发地执行。类似地,如果语句试图删除由较早的语句在相同事务中创建的记录,则只要这两个语句不能并发地执行,第二语句就能覆盖第一语句的版本号。
一实施例实现可选择通过仅向具有潜在万圣夜保护需求的语句分派版本号来节省版本号。这可以通过,例如,减少存储号所需要的字节数来做到。例如,在一简单实施例中,仅仅那些修改数据的语句需要版本号。更为复杂的实现也可仅向那些从相同表格中读取和写入的语句或者读取和写入可能潜在地冲突的语句分派版本号。例如,如果语句已经包含在读取和写入之间的阻塞算子(例如,排序),则无需向该语句分派新版本号,因为该语句将无论如何都不能读取它创建的记录。如果使用单个位来跟踪哪些记录是由当前语句创建的,或如果事务存储由当前语句创建的记录列表,则该优化特别有用。
可实现实施例,其中版本号被压缩。例如,可基于事务大小分配用于版本号的位数或字节数。例如,通过调整可用于版本号的位数或字节数,执行更少语句并生成相对少的版本号的事务可使用较少的用于这些版本号的存储。例如,执行127条或更少语句的事务将需要最多一个字节的存储来存储这些版本号。
一些实施例可具有各种施加的限制。例如,可实现实施例,其中语句不能删除它插入的记录。这可以通过,如上述,设计来实现,其中语句不能读取它插入的记录并且它不能删除它不能读取的记录。
可实现实施例,其中一个事务中的语句不能删除由第二事务中的并发语句所插入的记录,直到并发语句完成且第二事务提交为止。值得注意的,可实现一些实施例,其中第二事务仅需要开始提交的进程,因为无论采取何种方式并发语句必须完成。
每个记录一个语句id足以跟踪插入的记录和删除的记录两者。如果语句试图读取由该语句插入的记录,则由于该版本标识符,该语句将被阻止读取该记录。如果语句试图读取由该语句删除的记录,则由于该版本标识符,该语句将被允许读取该记录。因此,语句将被允许读取并非由它插入的已插入的(还未删除的)记录,但是将不被允许读取由它插入的已插入的(还未删除的)的记录。同样,语句将被允许读取它删除的已删除记录,但是将不能读取并非由它删除的已删除记录。考虑以下事件序列,注意到记录存储3个值,即:开始事务、结束事务,和语句id。
1.事务T1开始。
2.T1中的语句S1开始。
3.S1插入记录R1(T1,-,S1)。
4.S1试图读取R1,并且因为S1创建了R1而跳过R1。
5.T1中的语句S2开始。
6.S2读取记录R1,并且因为S2没有创建过R1而成功读取记录R1。
7.S2删除记录R1(T1,T1,S2)。
8.S2读取记录R1,并且因为S2删除了R1而成功读取记录R1。
9.T1中的语句S3开始。
10.S3试图读取记录R1,并因为S3没有删除过R1而跳过R1。
值得注意的是,作为所存储的语句标识符匹配当前语句的结果,步骤4和8与步骤6和10产生相反结果。这表明了语句创建记录时采取的动作和语句删除记录时采取的动作之间的区别。
一些实施例将进一步包括用于在先前时间确定系统状态的功能。例如,使用版本号,实施例可在对各记录运行特定语句之前确定数据库的状态,以查看作为对记录运行语句的结果的系统状态,等。例如,在一些实施例中,系统在特定时间或在执行特定语句之后的状态可通过使用与特定时间或特定语句相关联的版本号来确定,并且全部版本号与较早时间和/或较早语句相关联。例如,如果用户想要观察作为执行特定语句的结果的系统状态,关联于与语句相关联的版本号的任何记录以及关联于与先前执行的语句相关联的版本号的任何记录可被用来向用户呈现系统的先前状态。
以下讨论现涉及可以执行的多种方法以及方法动作。虽然用特定次序讨论或用以特定次序发生的流程图示出了各个方法动作,但除非明确规定否则不需要特定次序,或因为一动作依赖于另一动作在执行该动作之前完成而需要特定次序。
现在参考图2,示出了方法200。该方法可在计算环境中实践,并包括用于缓解与万圣夜问题相关的问题的动作,万圣夜问题包括更新操作潜在地允许在操作期间多于一次地访问记录。方法200包括访问数据存储操作语句的实例(动作202)。方法200还包括执行数据存储操作语句的实例。这导致对数据存储记录的老版本的更新或删除或数据存储记录的创建。在对数据存储记录的更新或创建的情况中,创建数据存储记录的新版本。数据存储记录的已删除版本招致语句导致数据存储中的删除的情况(动作204)。方法200还包括将数据存储操作语句的实例与数据存储记录的新版本或数据存储记录的已删除版本相关联(动作206)。
示例性地,方法200可被执行,其中将数据存储操作的实例与数据存储记录的新版本或数据存储记录的已删除版本相关联包括:将与数据存储操作语句的实例相关联的一个或多个标识符存储在数据存储记录的新版本中。各种实施例和替换可实现此功能。例如,在一些实施例中,将与数据存储操作语句的实例相关联的一个或多个标识符存储在数据存储记录的新版本中或数据存储记录的已删除版本中可包括:仅将某一唯一标识符存储在数据存储记录中。例如,标识符可以是全局唯一标识符。在替换实施例中,将与数据存储操作语句的实例相关联的一个或多个标识符存储在数据存储记录的新版本中或数据存储记录的已删除版本中可包括:存储语句的事务性的唯一标识符。例如,包括数据存储操作语句的实例的事务的标识符,以及事务内数据存储操作语句的实例的标识符,可被存储在数据存储记录中。
可实现实施例,其中将与数据存储操作语句的实例相关联的一个或多个标识符存储在数据存储记录的新版本中或数据存储记录的已删除版本中可包括:将一个或多个标识符存储在用户可访问的数据存储记录的新版本中的列中。例如,图1示出标识符存储在标识符列114中的哪里。在可替换实施例中,可实现实施例,其中将与数据存储操作语句的实例相关联的一个或多个标识符存储在数据存储记录的新版本中或数据存储记录的已删除版本中可包括:将一个或多个标识符存储在数据存储记录的新版本中的记录头部中。
在一些实施例中,数据存储记录的新版本或数据存储记录的已删除版本中与数据存储操作语句的实例相关联的一个或多个标识符包括版本号。在这些实施例的一些中,方法还包括:一旦全部可用版本号已被使用,将与数据存储操作语句相关的全部版本号重置为安全版本号,并重新使用版本号。例如,一实施例可将全部版本号重置为零并接着从1开始分配新版本号。
可实现实施例,包括压缩数据存储记录的新版本中与数据存储操作语句的实例相关联的一个或多个标识符的一个或多个。例如,可基于事务大小分配版本号的位数或字节数。例如,通过调整可版本号的位数或字节数,执行较少语句并生成相对少的版本号的事务可使用较少的用于这些版本号的存储。例如,执行127条或更少语句的事务将需要最多一个字节的存储来存储这些版本号。
可实施方法200的实例,其中将数据存储操作语句的实例与数据存储记录的新版本或数据存储记录的已删除版本相关联可包括:在数据存储记录的新版本或数据存储记录的已删除版本中设置单个位来指示数据存储记录的新版本或数据存储记录的已删除版本作为执行数据存储操作语句的实例的结果而被创建。因此,使用小版本号的特殊示例在使用单个位指示哪些记录由当前语句所创建的实现中得到具体化。例如,值零可意味着记录先前被创建,而值1可意味着记录由当前语句创建,反之亦然。该位可如上所述在每条语句之后或开始执行新语句之前被重置。因此,实施例还可包括在数据存储操作语句已经完成执行后清除该单个位。
可实施方法200的实施例,其中将数据存储操作语句的实例与数据存储记录的新版本或数据存储记录的已删除版本相关联可包括:将数据存储记录的新版本或数据存储记录的已删除版本存储在与当前事务相关联的列表中,当前事务包括由当前事务的上下文内的数据存储操作语句的实例所创建的记录。在上述其它示例中,语句标识符与记录一起存储。然而,一些替换实施例可被实现,其中事务存储由当前语句所创建或删除的记录列表。在一些实施例中,该列表可被存储在诸如散列表格的数据结构中,使得搜索高效。单个表格可被用于已创建或删除的记录。然而,被插入和被删除的记录两者都被添加到列表。然而,存在于该列表中具有不同的效果,这取决于记录是被插入还是被删除。具体地,存在于列表中可能导致默认可见性的倒转。例如,如果在列表中记录是被插入的结果,那么阻止语句读取该记录。如果在列表中记录被标识为删除,那么仍然允许语句看见该记录。这个列表在每条语句完成后可被丢弃。在读取时,如果语句遇到由当前事务创建的记录,则它检查与当前事务相关联的记录列表,以确定该记录由当前语句所创建且应该被跳过,还是该记录以前已存在且应该是可见的。因此,可实现实施例,其中方法还包括在数据存储操作语句已经完成执行之后丢弃该表。
包括使用该表一些实施例可包括:当执行读取操作时,确定试图读取的记录是由当前事务创建的。作为结果,该方法还包括检查与当前事务相关联的记录列表,以确定记录由数据存储操作语句的实例所创建并且应该是不可读的,还是记录先前已存在并且应该是可读的。这方便了该示例,其中记录是由当前语句插入并且因此应该是不可读的,或者记录是由不同语句插入并且因此应该是可读的。
包括使用该表一些实施例可包括,当执行读取操作时,确定试图读取的记录是由当前事务创建的,并且作为结果,检查与当前事务相关联的记录列表,以确定记录由数据存储操作语句的示例删除且应该可读,还是记录先前已存在并且应该不可读。这方便了该示例,其中记录是由当前语句删除并且因此应该是可读的,或者记录是由不同语句删除并且因此应该是不可读的。
方法200可进一步包括相同的数据存储操作语句试图读取数据存储记录的新版本。作为将数据存储操作语句的实例与数据存储记录的新版本关联的结果,方法200包括阻止数据存储操作语句读取数据存储记录的新版本。因此,在此示例中,语句将不能读取它所创建的记录。
方法200可进一步包括相同的数据存储操作语句试图读取数据存储记录的已删除版本。作为将数据存储操作语句的实例与数据存储记录的已删除版本关联的结果,方法200包括阻止允许数据存储操作语句读取数据存储记录的已删除版本。因此,在此示例中,语句将能读取它所删除的记录。
方法200可进一步包括不同的数据存储操作语句试图读取数据存储记录的新版本。作为将数据存储操作语句的实例与数据存储记录的新版本关联的结果,不同的数据存储操作语句被允许读取数据存储记录的新版本。
方法200可进一步包括不同的数据存储操作语句试图读取数据存储记录的已删除版本。作为将数据存储操作语句的实例与数据存储记录的已删除版本关联的结果,不同的数据存储操作语句被阻止读取数据存储记录的已删除版本。
此外,该方法可以由包括一个或多个处理器和诸如计算机存储器等计算机可读介质的计算机系统来实施。具体而言,计算机存储器可以存储计算机可执行指令,计算机可执行指令在由一个或多个处理器执行时使得执行各种功能,如在各实施方式中所述的那些动作。
本发明的各实施例可以包括或利用含有计算机硬件的专用或通用计算机,这将在以下做出进一步讨论。本发明范围内的各实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理介质和其他计算机可读介质。这些计算机可读介质可以是通用或专用计算机系统能够访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同类型的计算机可读介质:物理计算机可读存储介质和传输计算机可读介质。
物理计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储(如CD、DVD等)、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。以上介质的组合也被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件时,以计算机可执行的指令或数据结构的形式存在的程序代码装置可以自动地从传输计算机可读介质传输到物理计算机可读存储介质(或者反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传送到计算机系统RAM和/或计算机系统处的较不易失性的计算机可读物理存储介质。因此,计算机可读物理存储介质可被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。
计算机可执行指令包括,例如使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可位于本地和远程存储器存储设备中。
本发明可具体化为其他具体形式而不背离其精神或特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。
Claims (15)
1.一种在计算环境中缓解与万圣夜问题相关的问题的方法,所示万圣夜问题包括其中更新操作潜在地允许在操作期间多于一次地访问记录,所述方法包括:
访问数据存储操作语句的实例(202);
执行所述数据存储操作语句的所述实例导致对数据存储记录的老版本的更新或删除,或对数据存储记录的创建,在对数据存储记录的更新或创建情况中得到所述数据存储记录的新版本,或在数据存储中的删除情况中得到所述数据存储记录的已删除版本(204);以及
将所述数据存储操作语句的所述实例与所述数据存储记录的所述新版本或所述数据存储记录的所述已删除版本相关联(206)。
2.如权利要求1所述的方法,其特征在于,将所述数据存储操作的所述实例与所述数据存储记录的所述新版本或所述数据存储记录的所述已删除版本相关联包括:将与所述数据存储操作语句的所述实例相关联的一个或多个标识符存储在所述数据存储记录的所述新版本中。
3.如权利要求2所述的方法,其特征在于,将与所述数据存储操作语句的实例相关联的一个或多个标识符存储在所述数据存储记录的新版本或所述数据存储记录的已删除版本中包括:存储事务的标识符,所述事务包括所述数据存储操作语句的所述实例;以及存储在所述事务内的所述数据存储操作语句的所述实例的标识符。
4.如权利要求2所述的方法,其特征在于,将与所述数据存储操作语句的所述实例相关联的一个或多个标识符存储在所述数据存储记录的所述新版本中或所述数据存储记录的所述已删除版本中包括:存储所述数据存储操作语句的全局标识符。
5.如权利要求2所述的方法,其特征在于,将与所述数据存储操作语句的所述实例相关联的一个或多个标识符存储在所述数据存储记录的所述新版本中或所述数据存储记录的所述已删除版本中包括:将一个或多个标识符存储在所述数据存储记录的所述新版本的记录头部中。
6.如权利要求2所述的方法,其特征在于,将与所述数据存储操作语句的所述实例相关联的一个或多个标识符存储在所述数据存储记录的所述新版本中或所述数据存储记录的所述已删除版本中包括:将一个或多个标识符存储在所述数据存储记录的所述新版本中的用户能够访问的列中。
7.如权利要求2所述的方法,其特征在于,所述数据存储记录的所述新版本中或所述数据存储记录的所述已删除版本中与所述数据存储操作语句的所述实例相关联的一个或多个标识符包括版本号,所述方法还包括:一旦全部能用的版本号已被使用,将与数据存储操作语句相关的全部版本号重置为安全版本号,并重新使用各版本号。
8.如权利要求2所述的方法,其特征在于,还包括压缩所述数据存储记录的所述新版本或所述数据存储记录的所述已删除版本中与数据存储操作语句的实例相关联的一个或多个标识符中的一个或多个。
9.如权利要求1所述的方法,其特征在于,将所述数据存储操作语句的所述实例与所述数据存储记录的所述新版本或所述数据存储记录的所述已删除版本相关联包括:在所述数据存储记录的所述新版本或所述数据存储记录的所述已删除版本中设置单个位,来指示所述数据存储记录的所述新版本或所述数据存储记录的所述已删除版本作为执行所述数据存储操作语句的所述实例的结果而被创建。
10.如权利要求9所述的方法,其特征在于,还可包括在所述数据存储操作语句已经完成执行后清除所述单个位。
11.如权利要求1所述的方法,其特征在于,将所述数据存储操作语句的所述实例与所述数据存储记录的所述新版本或所述数据存储记录的所述已删除版本相关联可包括:将所述数据存储记录的所述新版本或所述数据存储记录的所述已删除版本存储在与当前事务相关联的列表中,所述当前事务包括在所述当前事务的上下文内的由所述数据存储操作语句的所述实例所创建的记录。
12.如权利要求11所述的方法,其特征在于,还可包括在所述数据存储操作语句已经完成执行后丢弃所述列表。
13.如权利要求11所述的方法,其特征在于,还包括:当执行读取操作时,检查与所述当前事务相关联的记录列表,以确定所述记录由所述数据存储操作语句的所述实例创建并且应该是不可读的,还是所述记录先前已存在并且应该是可读的。
14.如权利要求11所述的方法,其特征在于,还包括:当执行读取操作时,检查与所述当前事务相关联的记录列表,以确定所述记录由所述数据存储操作语句的所述实例删除并且应该是可读的,还是所述记录先前已存在并且应该是不可读的。
15.如权利要求1所述的方法,其特征在于,还包括相同的数据存储操作语句试图读取所述数据存储记录的所述新版本,并且作为所述数据存储操作语句的所述实例与所述数据存储记录的所述新版本相关联的结果,阻止所述数据存储操作语句读取所述数据存储记录的所述新版本。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/915,994 US8818963B2 (en) | 2010-10-29 | 2010-10-29 | Halloween protection in a multi-version database system |
US12/915,994 | 2010-10-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102567453A true CN102567453A (zh) | 2012-07-11 |
CN102567453B CN102567453B (zh) | 2015-02-25 |
Family
ID=45997790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110358461.2A Active CN102567453B (zh) | 2010-10-29 | 2011-10-31 | 在多版本数据库系统中的万圣夜保护 |
Country Status (2)
Country | Link |
---|---|
US (3) | US8818963B2 (zh) |
CN (1) | CN102567453B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714090A (zh) * | 2012-10-09 | 2014-04-09 | 阿里巴巴集团控股有限公司 | 多索引数据库事务处理方法及数据库 |
WO2015144003A1 (en) * | 2014-03-28 | 2015-10-01 | Huawei Technologies Co., Ltd. | Systems and methods to optimize multi-version support in indexes |
CN111279329A (zh) * | 2017-11-01 | 2020-06-12 | 斯沃尔德斯股份有限公司 | 用于高效地实现可快速复制的数据库的方法和装置 |
CN111868646A (zh) * | 2018-03-16 | 2020-10-30 | 德国克朗斯公司 | 容器处理设备和对容器处理设备的设置安全地管理的方法 |
US11232081B2 (en) | 2015-08-28 | 2022-01-25 | Swirlds, Inc. | Methods and apparatus for a distributed database within a network |
US11256823B2 (en) | 2017-07-11 | 2022-02-22 | Swirlds, Inc. | Methods and apparatus for efficiently implementing a distributed database within a network |
US11475150B2 (en) | 2019-05-22 | 2022-10-18 | Hedera Hashgraph, Llc | Methods and apparatus for implementing state proofs and ledger identifiers in a distributed database |
US11657036B2 (en) | 2016-12-19 | 2023-05-23 | Hedera Hashgraph, Llc | Methods and apparatus for a distributed database that enables deletion of events |
US11677550B2 (en) | 2016-11-10 | 2023-06-13 | Hedera Hashgraph, Llc | Methods and apparatus for a distributed database including anonymous entries |
US11734260B2 (en) | 2015-08-28 | 2023-08-22 | Hedera Hashgraph, Llc | Methods and apparatus for a distributed database within a network |
US11797502B2 (en) | 2015-08-28 | 2023-10-24 | Hedera Hashgraph, Llc | Methods and apparatus for a distributed database within a network |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8818963B2 (en) | 2010-10-29 | 2014-08-26 | Microsoft Corporation | Halloween protection in a multi-version database system |
US9104713B2 (en) * | 2011-10-05 | 2015-08-11 | International Business Machines Corporation | Managing a temporal key property in a database management system |
US9195712B2 (en) | 2013-03-12 | 2015-11-24 | Microsoft Technology Licensing, Llc | Method of converting query plans to native code |
JP6136694B2 (ja) * | 2013-07-19 | 2017-05-31 | 富士通株式会社 | データ管理プログラム、データ管理装置およびデータ管理方法 |
US10474645B2 (en) | 2014-02-24 | 2019-11-12 | Microsoft Technology Licensing, Llc | Automatically retrying transactions with split procedure execution |
US11410176B2 (en) * | 2014-06-27 | 2022-08-09 | Tigergraph, Inc. | System and method for enhanced detection of fraudulent electronic transactions |
US10031934B2 (en) | 2014-09-30 | 2018-07-24 | International Business Machines Corporation | Deleting tuples using separate transaction identifier storage |
US10255304B2 (en) | 2014-09-30 | 2019-04-09 | International Business Machines Corporation | Removal of garbage data from a database |
US9928259B2 (en) | 2015-04-21 | 2018-03-27 | International Business Machines Corporation | Deleted database record reuse |
US10019476B2 (en) | 2015-05-27 | 2018-07-10 | Microsoft Technology Licensing, Llc | Multi-version data system nested transactions isolation |
US10706019B2 (en) * | 2015-09-22 | 2020-07-07 | Sap Se | Database processing after a lock condition |
US10346386B2 (en) * | 2016-11-04 | 2019-07-09 | Salesforce.Com, Inc. | Multiversion concurrency control of database records with uncommitted transactions |
CN109739835B (zh) * | 2018-12-29 | 2023-06-06 | 中国银联股份有限公司 | 一种数据版本保存方法及装置 |
US20220058179A1 (en) * | 2020-08-24 | 2022-02-24 | International Business Machines Corporation | Executing database transactions |
US11436212B2 (en) | 2020-09-22 | 2022-09-06 | Snowflake Inc. | Concurrent transaction processing in a database system |
US11468032B2 (en) | 2020-09-22 | 2022-10-11 | Snowflake Inc. | Concurrent transaction processing in a database system |
CN112395278B (zh) * | 2021-01-19 | 2021-05-11 | 杭州沃点环保科技有限公司 | 一种基于环保物联网的环保检测系统及其工作方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6122644A (en) * | 1998-07-01 | 2000-09-19 | Microsoft Corporation | System for halloween protection in a database system |
US20040249838A1 (en) * | 2002-09-13 | 2004-12-09 | Netezza Corporation | Controlling visibility in multi-version database systems |
US20090172641A1 (en) * | 2008-01-02 | 2009-07-02 | Wanmo Wong | Recycled version number values in flash memory |
Family Cites Families (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5557798A (en) | 1989-07-27 | 1996-09-17 | Tibco, Inc. | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
US5369761A (en) | 1990-03-30 | 1994-11-29 | Conley; John D. | Automatic and transparent denormalization support, wherein denormalization is achieved through appending of fields to base relations of a normalized database |
US5317731A (en) | 1991-02-25 | 1994-05-31 | International Business Machines Corporation | Intelligent page store for concurrent and consistent access to a database by a transaction processor and a query processor |
US5812996A (en) | 1994-07-12 | 1998-09-22 | Sybase, Inc. | Database system with methods for optimizing query performance with a buffer manager |
CA2167790A1 (en) | 1995-01-23 | 1996-07-24 | Donald S. Maier | Relational database system and method with high data availability during table data restructuring |
US5875334A (en) | 1995-10-27 | 1999-02-23 | International Business Machines Corporation | System, method, and program for extending a SQL compiler for handling control statements packaged with SQL query statements |
US6009425A (en) * | 1996-08-21 | 1999-12-28 | International Business Machines Corporation | System and method for performing record deletions using index scans |
JPH1173398A (ja) | 1997-06-03 | 1999-03-16 | Toshiba Corp | 分散ネットワークコンピューティングシステム、同システムに用いられる情報交換装置、同システムに用いられるセキュリティ機能を有する情報交換方法、この方法を格納したコンピュータ読取り可能な記憶媒体 |
US6310888B1 (en) | 1997-12-30 | 2001-10-30 | Iwork Software, Llc | System and method for communicating data |
US6813251B1 (en) | 1999-07-27 | 2004-11-02 | Intel Corporation | Split Transaction protocol for a bus system |
US6665701B1 (en) | 1999-08-03 | 2003-12-16 | Worldcom, Inc. | Method and system for contention controlled data exchange in a distributed network-based resource allocation |
US6496976B1 (en) | 1999-08-05 | 2002-12-17 | Unisys Corporation | Method and system for dynamic recompilation of statements of a first language embedded in a program having statements of a second language |
US20090265249A1 (en) | 1999-11-05 | 2009-10-22 | American Express Travel Related Services Company, Inc. | Systems and methods for split tender transaction processing |
US6971096B1 (en) | 2000-05-19 | 2005-11-29 | Sun Microsystems, Inc. | Transaction data structure for process communications among network-distributed applications |
WO2001098936A2 (en) | 2000-06-22 | 2001-12-27 | Microsoft Corporation | Distributed computing services platform |
US7024413B2 (en) | 2000-07-26 | 2006-04-04 | International Business Machines Corporation | Method of externalizing legacy database in ASN.1-formatted data into XML format |
US20020072941A1 (en) | 2000-12-07 | 2002-06-13 | Ibm Corporation | Method and apparatus for processing electronic records for physical transactions |
US7227950B2 (en) | 2001-02-27 | 2007-06-05 | Visa International Service Association | Distributed quantum encrypted pattern generation and scoring |
US6772363B2 (en) | 2001-03-12 | 2004-08-03 | Hewlett-Packard Development Company, L.P. | Fast failover database tier in a multi-tier transaction processing system |
US7111023B2 (en) | 2001-05-24 | 2006-09-19 | Oracle International Corporation | Synchronous change data capture in a relational database |
US6961760B2 (en) | 2001-07-17 | 2005-11-01 | International Business Machines Corporation | Transforming data automatically between communications parties in a computing network |
AU2002334721B2 (en) | 2001-09-28 | 2008-10-23 | Oracle International Corporation | An index structure to access hierarchical data in a relational database system |
US20040205562A1 (en) | 2001-12-27 | 2004-10-14 | G.E. Information Services, Inc. | System and method for transforming documents to and from an XML format |
AU2003214975A1 (en) | 2002-02-01 | 2003-09-02 | John Fairweather | System and method for navigating data |
US7103597B2 (en) | 2002-10-03 | 2006-09-05 | Mcgoveran David O | Adaptive transaction manager for complex transactions and business process |
US20040083465A1 (en) | 2002-10-28 | 2004-04-29 | Weijia Zhang | Method and system for connecting to an application programming interface |
US20040111698A1 (en) | 2002-12-06 | 2004-06-10 | Anew Technology Corporation | System and method for design, development, and deployment of distributed applications that share data from heterogeneous and autonomous sources over the Web |
US7093231B2 (en) | 2003-05-06 | 2006-08-15 | David H. Alderson | Grammer for regular expressions |
US7739223B2 (en) | 2003-08-29 | 2010-06-15 | Microsoft Corporation | Mapping architecture for arbitrary data models |
US7805713B2 (en) | 2003-10-27 | 2010-09-28 | Hewlett-Packard Development Company, L.P. | Transaction processing architecture |
US7774780B2 (en) | 2004-05-21 | 2010-08-10 | Bea Systems, Inc. | Systems and methods for automatic retry of transactions |
US7877377B2 (en) | 2004-06-03 | 2011-01-25 | International Business Machines Corporation | Dropping tautological predicates from SQL queries for reusability |
US7707195B2 (en) | 2004-06-29 | 2010-04-27 | Microsoft Corporation | Allocation locks and their use |
US7774319B2 (en) | 2004-08-11 | 2010-08-10 | Sap Ag | System and method for an optimistic database access |
US7756882B2 (en) | 2004-10-01 | 2010-07-13 | Microsoft Corporation | Method and apparatus for elegant mapping between data models |
US7694284B2 (en) | 2004-11-30 | 2010-04-06 | International Business Machines Corporation | Shareable, bidirectional mechanism for conversion between object model and XML |
US7640230B2 (en) | 2005-04-05 | 2009-12-29 | Microsoft Corporation | Query plan selection control using run-time association mechanism |
GB0511774D0 (en) * | 2005-06-09 | 2005-07-20 | Nds Ltd | Extended service information 2 (XSI-2) |
US7702658B2 (en) | 2006-01-27 | 2010-04-20 | International Business Machines Corporation | Method for optimistic locking using SQL select, update, delete, and insert statements |
US7934207B2 (en) | 2006-12-19 | 2011-04-26 | Microsoft Corporation | Data schemata in programming language contracts |
US7676525B2 (en) | 2007-07-02 | 2010-03-09 | Microsoft Corporation | Efficient query processing of merge statement |
US7984043B1 (en) | 2007-07-24 | 2011-07-19 | Amazon Technologies, Inc. | System and method for distributed query processing using configuration-independent query plans |
US8171475B2 (en) | 2007-08-29 | 2012-05-01 | International Business Machines Corporation | Intelligent retry method using remote shell |
US8347061B2 (en) * | 2008-04-29 | 2013-01-01 | International Business Machines Corporation | Method for protecting user-managed memory using an exception |
US8224806B2 (en) | 2009-07-31 | 2012-07-17 | Hewlett-Packard Development Company, L.P. | Selectivity-based optimized-query-plan caching |
US8484176B2 (en) | 2009-09-08 | 2013-07-09 | Ricoh Co., Ltd. | Multi-provider forms processing system with retry upon failure |
US8688683B2 (en) | 2009-11-30 | 2014-04-01 | Business Objects Software Ltd. | Query plan reformulation |
US8396831B2 (en) | 2009-12-18 | 2013-03-12 | Microsoft Corporation | Optimistic serializable snapshot isolation |
US9043769B2 (en) | 2009-12-28 | 2015-05-26 | Hyperion Core Inc. | Optimization of loops and data flow sections in multi-core processor environment |
CN101834845B (zh) | 2010-03-26 | 2012-11-28 | 南京联创科技集团股份有限公司 | 基于tcp短连接的soap客户端协议封装方法 |
US8464261B2 (en) | 2010-03-31 | 2013-06-11 | Oracle International Corporation | System and method for executing a transaction using parallel co-transactions |
US9251214B2 (en) | 2010-04-08 | 2016-02-02 | Microsoft Technology Licensing, Llc | In-memory database system |
CN102918507A (zh) | 2010-05-18 | 2013-02-06 | 国际商业机器公司 | 事务处理系统 |
JP5536568B2 (ja) | 2010-07-01 | 2014-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクションを集約して処理する方法、システム、およびプログラム |
US8818963B2 (en) | 2010-10-29 | 2014-08-26 | Microsoft Corporation | Halloween protection in a multi-version database system |
US9063969B2 (en) | 2010-12-28 | 2015-06-23 | Sap Se | Distributed transaction management using optimization of local transactions |
US8983985B2 (en) | 2011-01-28 | 2015-03-17 | International Business Machines Corporation | Masking sensitive data of table columns retrieved from a database |
US8930344B2 (en) | 2011-02-04 | 2015-01-06 | Hewlett-Packard Development Company, L.P. | Systems and methods for holding a query |
US9767214B2 (en) | 2011-06-29 | 2017-09-19 | Oracle International Corporation | Technique and framework to provide diagnosability for XML query/DML rewrite and XML index selection |
US9195712B2 (en) | 2013-03-12 | 2015-11-24 | Microsoft Technology Licensing, Llc | Method of converting query plans to native code |
US9760596B2 (en) | 2013-05-13 | 2017-09-12 | Amazon Technologies, Inc. | Transaction ordering |
US10474645B2 (en) | 2014-02-24 | 2019-11-12 | Microsoft Technology Licensing, Llc | Automatically retrying transactions with split procedure execution |
-
2010
- 2010-10-29 US US12/915,994 patent/US8818963B2/en active Active
-
2011
- 2011-10-31 CN CN201110358461.2A patent/CN102567453B/zh active Active
-
2014
- 2014-05-07 US US14/272,074 patent/US9116943B2/en active Active
-
2015
- 2015-08-18 US US14/829,325 patent/US9547685B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6122644A (en) * | 1998-07-01 | 2000-09-19 | Microsoft Corporation | System for halloween protection in a database system |
US20040249838A1 (en) * | 2002-09-13 | 2004-12-09 | Netezza Corporation | Controlling visibility in multi-version database systems |
US20090172641A1 (en) * | 2008-01-02 | 2009-07-02 | Wanmo Wong | Recycled version number values in flash memory |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714090B (zh) * | 2012-10-09 | 2018-04-10 | 阿里巴巴集团控股有限公司 | 多索引数据库事务处理方法及数据库 |
CN103714090A (zh) * | 2012-10-09 | 2014-04-09 | 阿里巴巴集团控股有限公司 | 多索引数据库事务处理方法及数据库 |
US10706036B2 (en) | 2014-03-28 | 2020-07-07 | Futurewei Technologies, Inc. | Systems and methods to optimize multi-version support in indexes |
US9645844B2 (en) | 2014-03-28 | 2017-05-09 | Futurewei Technologies, Inc. | Systems and methods to optimize multi-version support in indexes |
US9430274B2 (en) | 2014-03-28 | 2016-08-30 | Futurewei Technologies, Inc. | Efficient methods and systems for consistent read in record-based multi-version concurrency control |
WO2015144003A1 (en) * | 2014-03-28 | 2015-10-01 | Huawei Technologies Co., Ltd. | Systems and methods to optimize multi-version support in indexes |
US11797502B2 (en) | 2015-08-28 | 2023-10-24 | Hedera Hashgraph, Llc | Methods and apparatus for a distributed database within a network |
US11734260B2 (en) | 2015-08-28 | 2023-08-22 | Hedera Hashgraph, Llc | Methods and apparatus for a distributed database within a network |
US11232081B2 (en) | 2015-08-28 | 2022-01-25 | Swirlds, Inc. | Methods and apparatus for a distributed database within a network |
US11677550B2 (en) | 2016-11-10 | 2023-06-13 | Hedera Hashgraph, Llc | Methods and apparatus for a distributed database including anonymous entries |
US11657036B2 (en) | 2016-12-19 | 2023-05-23 | Hedera Hashgraph, Llc | Methods and apparatus for a distributed database that enables deletion of events |
US11256823B2 (en) | 2017-07-11 | 2022-02-22 | Swirlds, Inc. | Methods and apparatus for efficiently implementing a distributed database within a network |
US11681821B2 (en) | 2017-07-11 | 2023-06-20 | Hedera Hashgraph, Llc | Methods and apparatus for efficiently implementing a distributed database within a network |
CN111279329B (zh) * | 2017-11-01 | 2021-07-06 | 斯沃尔德斯股份有限公司 | 用于高效地实现可快速复制的数据库的方法和装置 |
US11537593B2 (en) | 2017-11-01 | 2022-12-27 | Hedera Hashgraph, Llc | Methods and apparatus for efficiently implementing a fast-copyable database |
CN111279329A (zh) * | 2017-11-01 | 2020-06-12 | 斯沃尔德斯股份有限公司 | 用于高效地实现可快速复制的数据库的方法和装置 |
CN111868646A (zh) * | 2018-03-16 | 2020-10-30 | 德国克朗斯公司 | 容器处理设备和对容器处理设备的设置安全地管理的方法 |
CN111868646B (zh) * | 2018-03-16 | 2023-10-17 | 德国克朗斯公司 | 容器处理设备和对容器处理设备的设置安全地管理的方法 |
US11475150B2 (en) | 2019-05-22 | 2022-10-18 | Hedera Hashgraph, Llc | Methods and apparatus for implementing state proofs and ledger identifiers in a distributed database |
Also Published As
Publication number | Publication date |
---|---|
US8818963B2 (en) | 2014-08-26 |
US9547685B2 (en) | 2017-01-17 |
CN102567453B (zh) | 2015-02-25 |
US9116943B2 (en) | 2015-08-25 |
US20120109903A1 (en) | 2012-05-03 |
US20160048553A1 (en) | 2016-02-18 |
US20140244597A1 (en) | 2014-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567453B (zh) | 在多版本数据库系统中的万圣夜保护 | |
US11429641B2 (en) | Copying data changes to a target database | |
RU2599538C2 (ru) | Способы и системы загрузки данных в хранилища временных данных | |
US10585862B2 (en) | Efficient data migration with reversible database schema modification | |
CN103221949B (zh) | Mysql数据库的异构的基于日志的复制 | |
US8996458B2 (en) | High volume, high speed adaptive data replication | |
KR100556594B1 (ko) | 데이터베이스에 관한 방법 | |
US7467163B1 (en) | System and method to manipulate large objects on enterprise server data management system | |
CN101080715B (zh) | 用于管理二进制大对象的系统和方法 | |
US20120150797A1 (en) | Method and system for safely transporting legacy data to an object semantic form data grid | |
EP2746971A2 (en) | Replication mechanisms for database environments | |
CN105144162B (zh) | 集成数据库框架 | |
CN109891402A (zh) | 可撤销和在线模式转换 | |
US10496401B2 (en) | Managing rename of tables and table fields | |
US20090083337A1 (en) | Performing synchronization among relational database tables with minimal contention | |
Schönig | Mastering PostgreSQL 13: Build, administer, and maintain database applications efficiently with PostgreSQL 13 | |
CN116569161A (zh) | 受版本控制的关系数据集管理 | |
CN113868028A (zh) | 一种在数据节点上回放日志的方法、数据节点及系统 | |
US10915513B2 (en) | Archival of data in a relational database management system using block level copy | |
Schönig | Mastering PostgreSQL 12: Advanced techniques to build and administer scalable and reliable PostgreSQL database applications | |
US20060123059A1 (en) | Method for organizing a digital database in a traceable form | |
Schönig | Mastering PostgreSQL 11: Expert techniques to build scalable, reliable, and fault-tolerant database applications | |
Schonig | Mastering PostgreSQL 9.6 | |
Schönig | Mastering PostgreSQL 10: Expert techniques on PostgreSQL 10 development and administration | |
Goksu et al. | Managing Ever-increasing Amounts of Data with IBM DB2 for Z/OS: Using Temporal Data Management, Archive Transparency, and the DB2 Analytics Accelerator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150728 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150728 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |