CN114647633A - 创建数据库状态树 - Google Patents
创建数据库状态树 Download PDFInfo
- Publication number
- CN114647633A CN114647633A CN202111569417.6A CN202111569417A CN114647633A CN 114647633 A CN114647633 A CN 114647633A CN 202111569417 A CN202111569417 A CN 202111569417A CN 114647633 A CN114647633 A CN 114647633A
- Authority
- CN
- China
- Prior art keywords
- database
- state
- patch
- new
- computer
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 71
- 238000003860 storage Methods 0.000 claims description 53
- 238000013507 mapping Methods 0.000 claims description 39
- 238000004590 computer program Methods 0.000 claims description 10
- 238000011010 flushing procedure Methods 0.000 claims description 9
- 238000012986 modification Methods 0.000 description 18
- 230000004048 modification Effects 0.000 description 18
- 238000004519 manufacturing process Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 5
- 238000012938 design process Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 239000002253 acid Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241000208125 Nicotiana Species 0.000 description 1
- 235000002637 Nicotiana tabacum Nutrition 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000003796 beauty Effects 0.000 description 1
- 235000013361 beverage Nutrition 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 235000013305 food Nutrition 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- 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
-
- 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/219—Managing data history or 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/23—Updating
-
- 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/2358—Change logging, detection, and notification
-
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明特别涉及一种用于创建数据库状态树的计算机实现的方法。该方法包括:提供具有至少一个数据库状态分支的数据库,通过该数据库接收被应用于该数据库的被标识的状态的一个或多个写事件,从该数据库恢复该被标识的数据库状态,通过利用对被标识的状态的引用,创建新补丁作为对所述被标识的数据库状态的备选状态,来创建新分支。
Description
技术领域
本发明涉及计算机程序和系统的领域,具体地说,涉及一种用于创建数据库状态树以提供关于能够创建、查询和比较数据库的备选状态的能力的方法、系统和程序。
背景技术
市场上提供了许多用于对象的设计、工程和制造的系统和程序。CAD是计算机辅助设计的首字母缩略词,例如,其涉及用于设计对象的软件解决方案。CAE是计算机辅助工程(Computer Aided Engineering)的缩写,例如,其涉及用于模拟未来产品的物理行为的软件解决方案。CAM是计算机辅助制造的缩写,例如,其涉及用于定义制造过程和操作的软件解决方案。在这种计算机辅助设计系统中,图形用户界面在技术效率方面起着重要作用。这些技术可以嵌入到产品生命周期管理(PLM)系统中。PLM指的是一种业务战略,其帮助公司共享产品数据,应用通用过程,并利用企业知识,以用于在扩展型企业的概念范围内,开发从概念到其生命周期结束的产品。由达索系统(Dassault Systèmes)提供的PLM解决方案(商标为CATIA、ENOVIA和DELMIA)提供了:工程中心,其用于组织产品工程知识;制造中心,其用于管理制造工程知识;以及企业中心,其支持到工程中心和制造中心两者的企业集成和连接。整个系统提供了开放对象模型,其用于将产品、过程和资源链接,以支持动态的、基于知识的产品创建和决策支持,其推动优化的产品定义、制造准备、生产和服务。
这些应用是“创造性编辑应用”的示例,其为用户提供了如下能力:彼此隔离地进行工作,探索不同的解决方案,以及通过以“时间旅行”的方式访问其工作的不同的状态并浏览修改历史来使用增量方法以解决问题。所谓“时间旅行”,我们指的是高效地访问数据库的过去状态(也就是说,对于所有状态,受控时间都被视为常数),并且能够对这些状态运行只读查询。存储修改历史并以时间旅行的方式访问数据库的过去状态在认证过程(例如航空业中的现有的认证过程)中也很重要,以便审核和理解其在过去所做的上下文修改。
与短事务相比,此类创造性编辑应用包含长事务。长事务(也称为长时间运行事务)是计算机数据库事务,其避免对非局部资源的锁定,使用补偿以处理故障,并通常使用协调器以完成或中止事务。该补偿用于恢复原始状态或等效状态。因此,特别是当多个用户同时访问数据库时,事务需要遵守所谓的ACID属性,即,原子性、一致性、隔离性和耐久性,以确保在数据库中存储的数据的准确性和完整性,即使在发生错误、电源故障等时也是如此。在数据库的上下文中,满足ACID属性的一系列数据库操作(并且这些操作可以被视为对数据的单个逻辑操作)称为事务。例如,资金从一个银行账户转移到另一个银行账户,即使涉及多次变更(诸如借记一个账户和贷记另一个账户),也是单个交易。
在各ACID属性当中,一致性应是根据应用定义的语义来定义的,而不能针对通用数据库来讨论。
特别而言,对于创造性编辑应用,希望提供在数据库的任何分支的任何状态上打开事务的可能性,以便提供能够创建、查询和比较数据库的备选状态的能力,并从而符合创造性编辑应用的工作流程。数据集的版本控制的概念。数据库的版本控制的概念类似于软件开发版本控制开发,但是,不是跟踪软件代码,而是跟踪数据集的状态。在已知的数据库系统中存在不同的策略,用于为数据库提供一个或多个上述功能。
在2015年第七届创新数据系统研究两年一度的会议上的Bhardwaj等人的《DataHub:Collaborative Data Science&Dataset Version Management at Scale》为用户提供了能够执行建立在此版本控制系统上的协作数据分析的能力。两种主要的数据表示法被用于实现这一目标:版本优先表示法和记录优先表示法。在基于版本的表示法中,对应于特定分支的数据被存储在专用位置(即,SQL表),而在记录优先表示法中,数据被存储为记录列表,每个记录都用其所属的版本进行注释。
这两种表示法的共同缺点是:“版本”或备选的概念位于数据级别。这就要求数据库中的每个数据结构都意识到此概念,并在软件开发和维护方面付出代价。此外,回答查询需要:以对应的资源成本,针对给定的备选状态来重建数据结构(或重用物化状态)。当这些工具被应用于大数据和/或被应用于创造性编辑应用,以以时间旅行的方式浏览修改历史时,所需资源的缺点更加严重。
在此上下文中,仍然需要一种改进的方法来创建、查询和比较数据库备选状态,该方法结合了编辑系统的时间旅行属性和长事务处理能力,同时减少了由I/O产生的计算资源和存储器。一般而言,仍然需要一种改进的方法用于创建数据库状态树。
发明内容
因此,提供了一种用于创建数据库状态树的计算机实现的方法,包括:提供具有至少一个数据库状态分支的数据库;通过所述数据库接收被应用于所述数据库的被标识的状态的一个或多个写事件;从所述数据库恢复被标识的数据库状态;以及通过利用对被标识的状态的引用,创建新补丁作为对被标识的数据库的备选状态,来创建新分支。
用于创建数据库状态树的计算机实现的方法可以包括以下一个或多个:
-恢复被标识的数据库状态包括:
ο在来自数据库存储的数据库状态序列中,检索被标识的状态的分支上的补丁(S210);
ο检索在被检索的补丁与被标识的状态之间发生的以日志记录的写事件的列表(S220);以及
ο将以日志记录的写事件的列表应用于被检索的补丁(S230);
-通过创建新补丁来创建新分支进一步包括:如果相应的备选状态的数据库状态不是被存储在所述数据库存储中的补丁,则将缓冲器刷新到所述数据库存储;
-对被标识的状态的参考包括:
ο当被标识的状态由补丁表示时的对被检索的补丁的引用;以及
ο当被标识的状态不由补丁表示时的对在被缓冲的页被刷新到所述数据库存储后创建的补丁的引用;
-新补丁包括由新写事件修改或创建的新页的列表,由此获得状态序列,其中一些状态分别具有对应的补丁;
-新补丁还包括映射表,该映射表包括在数据库的数据结构层处在被缓冲的页的物理地址和页的逻辑地址之间的映射;
-通过复制现有的映射表并将局部映射应用到期望的以日志记录的写事件,每个以日志记录的写事件具有映射表;
-新补丁还包括:
-描述符,其包括以下各项中的至少一项:
ο由新的写事件修改或创建的物理页的数量;
ο用于检查描述符的完整性的元数据;
ο新的写事件的时间戳;
ο对数据库的对应的被标识状态的引用;
-数据库存是只附加的;
-该方法还包括:在检索以日志记录的写事件的列表之前,将通过数据库接收的一个或多个写事件中的每个写事件以日志记录在日志存储上,并将修改的历史作为事件日志写到日志存储,以用于中间事务,中间事务是在刷新到数据库存储之前的事务;和/或
-日志存储是仅追加型的(append-only)。
还提供了一种计算机程序,包括用于执行该方法的指令。
还提供了一种数据库,包括在其上记录了计算机程序的计算机可读存储介质。
还提供了在其上记录了计算机程序的计算机可读存储。
还提供了一种包括数据库的计算机化系统。
附图说明
现在将通过非限制性示例并参考附图来描述本发明的实施例,其中:
-图1示出了创建数据库状态树的方法的示例的流程图;
-图2示出了从数据库恢复被标识的数据库状态的方法的示例的流程图;
-图3示出了修改数据页以及在仅追加型存储中记录被修改的数据页的示例的示意图;
-图4示出了创建新分支的示例;
-图5示出了系统的示例。
具体实施方式
参考图1的流程图,提出了一种创建数据库状态树的计算机实现方法。该方法包括提供(S10)具有至少一个数据库状态分支的数据库。
所谓“数据库”,其是指为搜索和检索而组织的任何数据(即,信息)的集合(例如,关系数据库,例如,基于预定的结构化语言,例如,SQL)。当存储在存储器中时,数据库允许计算机快速搜索和检索。数据库的结构确实便于存储、检索、修改和删除数据以及各种数据处理操作。数据库可以由一个文件或一组文件组成,这些文件可以分解为记录,每个记录由一个或多个字段组成。字段是数据存储的基本单位。字段也称为页。数据库页是用于组织数据库文件中的数据的内部基本结构。页是I/O操作的基本单位。页大小取决于数据库的实现;例如,在SQL数据库服务器中,页大小为8kB。
用户可以主要通过查询来检索数据库中的数据。使用关键字和排序命令,用户可以快速搜索、重新排列、分组以及选择许多记录中的字段,以便根据所使用的数据库管理系统的规则检索或创建关于特定数据汇总的报告。
数据库状态是在给定时间处的一组被存储的数据。数据库始终处于一种特定状态。添加、删除或修改存储在数据库中的信息改变了其状态。例如,数据库可能包含关于CAD模型的不同设计的信息,该CAD模型以一些例如长度和/或形状参数为特征。关于例如在设计过程期间修改这些参数中的任何参数、并将这组新参数存储在数据库中的行为将改变其状态。
数据库可以被描述为概念模型,其由几个抽象层或级别组成,每个抽象层提供概念模型或算法,该概念模型或算法可能远离任何特定的实现。在示例中,数据库可以包括数据结构层和存储层。存储层(也称为物理层)负责将数据存储在持久性存储器中,例如硬盘驱动器上。存储层可以使用易失性存储器和持久性存储器来存储数据。数据结构层(也称为逻辑层)负责描述如何通过使用数据结构将数据存储在数据库中。数据结构规定了如何为特定目的(例如持久地存储数据)对数据进行建模和组织;在这个级别上,对数据允许的对数据类型和操作的实施是最特定于数据库的。
数据库的每个分支都可以看作是数据库状态的序列,其中,分支中的每个数据库状态是通过修改同一分支中较早时间的另一数据库获得的。分叉是关于从第一个分支创建第二个分支的行为,并表示第二分支和第一分支之间的关系。备选状态是在数据库的不同分支上访问的数据库状态。
该方法还包括:通过数据库接收(S20)被应用于数据库的被标识的状态的一个或多个写事件。写事件是由与数据库通信地耦合的系统对于在数据库中写信息的请求,例如,系统是运行CAD应用的计算机。在数据库中写信息包括:在数据库中添加新数据,和/或删除(即删除)在数据库中已存储的信息,和/或修改在数据库中已存储的数据。数据库可以允许在数据库上工作的多个用户同时或基本上同时发送其写请求。数据库可以将多个写请求进行排队,并按顺序执行这些写请求。因此,写事件是在数据库执行将其执行后改变数据库的状态的操作,其中,数据库的执行是对包含写事件的事务的提交。
该方法还包括:从数据库恢复(S30)被标识的数据库状态。从数据库恢复被标识的状态意味着:从数据库存储检索(即,复原)被标识的状态的值。被标识的状态可直接从数据库存储中检索,也可通过合并在数据库存储上存储的不同的项的信息来复原。后者的一个示例是从在日志策略中存储的日志文件复原数据库状态,其中,改变是首先被记录在日志文件中的,并被写在非易失性存储器上。日志文件是存储按时间顺序的动作记录的文件。
该方法还包括:通过利用对被标识的状态的引用,创建新补丁作为对被恢复的被标识的数据库状态的备选状态,来创建(S40)新分支。创建补丁意味着:计算补丁。补丁包含由一个或多个新写事件修改或创建的新页的列表。在示例中,新补丁(上一次计算的补丁)列出了在新补丁和当前补丁之间的差异,即,在计算新补丁之前获得的上一个补丁。引用是用于标识状态的一段被编码信息。该状态可以是备选状态的被标识的状态。
该方法可以用于不同类型的数据库,例如作为RDF InMemory服务的图形数据库系统。该方法提高了关于能够创建、查询以及比较数据库的不同的备选状态的能力。其可以被理解为在具有时间旅行功能的如SQL或SPARQL的语言上的类似Git的功能。根据此方法的分支功能是使用所有软件堆栈被应用于存储层级别的,而在历史上,其是在数据结构层中的。因此,所有数据结构(无论是现有的还是新的)都可以在不知道这种分支能力的情况下具有这种分支能力,即使不存在这种数据结构的“可版本”变体也是如此。作为可版本的数据结构意味着:数据结构是持久性的,也就是说,当其被修改时,其会保留其自身的先前版本。该功能是利用廉价的CPU和存储器成本以及利用较低的软件开发和维护成本来提供的。本发明方法提供了分支功能,用以创建、查询以及比较数据库的备选状态,而不会对这些数据结构产生任何影响,这是因为:查询和算法在所有分支上以相同的方式运行,而不知道其所在的分支。存储成本仅限于每个分支上的新修改,并且没有数据或页的重复。因此,用于事务创建的CPU和存储器成本与在没有任何分支功能情况下的相同成本相似。
该方法由计算机实现的。这意味着该方法的步骤(或基本上所有步骤)由至少一台计算机或任何类似系统执行。因此,该方法的步骤可能是全自动地或半自动地由计算机执行。在示例中,可以通过用户-计算机交互来执行对该方法的至少一些步骤的触发。所需的用户-计算机交互的级别可能取决于预见的自动化的级别,并与为实现用户愿望的需要相平衡。在示例中,该级别可以是用户定义的和/或预定义的。
图5示出了系统的示例,其中,系统是服务器,例如,托管数据库的服务器。
该示例的服务器包括连接到内部通信总线1000的中央处理单元(CPU)1010、也连接到总线的随机存取存储器(RAM)1070。服务器还可配备有图形处理单元(GPU)1110,其与连接到总线的视频随机存取存储器1100相关联。视频RAM 1100在本领域中也称为帧缓冲器。大容量存储设备控制器1020管理对诸如硬盘驱动器1030的大容量存储设备的访问。适于有形地实施计算机程序指令和数据的大容量存储器设备包括所有形式的非易失性存储器,包括:例如,半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘和可移动磁盘;磁光盘;以及光碟1040。上述任何内容可由专门设计的ASIC(专用集成电路)补充或并入其中。一个或多个大容量存储器设备可以被用于实现数据库的存储层。网络适配器1050管理对网络1060的访问。服务器还可以包括触觉设备1090,例如光标控制设备、键盘等。在服务器中使用光标控制设备以允许用户在显示器1080上的任何期望位置处选择性地定位光标。此外,光标控制设备允许用户选择各种命令,并输入控制信号。光标控制设备包括用于向系统输入控制信号的多个信号生成设备。通常,光标控制设备可以是鼠标,鼠标的按钮用于生成信号。替代地或另外,服务器系统可以包括敏感垫和/或敏感屏幕。
计算机程序可以包括可由计算机执行的指令,这些指令包括用于使上述系统执行该方法的单元。该程序可以是可记录在任何数据存储介质(包括系统存储器)上的。该程序可以例如在数字电子电路中,或者在计算机硬件、固件、软件中,或者在其组合中实现。该程序可以被实现为装置,例如,有形地被实施在机器可读存储设备中的产品,以供可编程处理器执行。方法步骤可以由执行指令程序的可编程处理器来执行,其中,可编程处理器执行指令程序以通过对输入数据进行操作并生成输出来执行方法的功能。因此,处理器可以是可编程的,并且可以被耦合以从数据存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及向数据存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。应用程序可以是以高级程序或面向对象编程语言实现,或者如果需要,可以用汇编语言或机器语言实现。在任何情况下,该语言都可以是编译语言或解释语言。该程序可以是完整的安装程序或更新程序。在任何情况下,在系统上应用程序都导致用于执行该方法的指令。
一种方法的计算机实现的典型示例是利用适于此目的的系统(例如,服务器)来执行该方法。该系统可以包括耦合到存储器的处理器;存储器,其上记录有包括用于执行该方法的指令的计算机程序。存储器还可以存储数据库。存储器是适于这种存储的任何硬件,可能包括几个物理上不同的部分(例如,一个用于程序,可能一个用于数据库)。
在示例中,该方法用于利用编辑应用对建模对象进行一般性操作的过程。建模对象是由存储例如在数据库中的数据定义的任何对象。通过扩展,表达式“建模对象”指定数据本身。根据系统的类型,建模对象可以由不同类型的的数据定义。该系统实际上可以是CAD系统、CAE系统、CAM系统、PDM系统和/或PLM系统的任意组合。在这些不同的系统中,建模对象由对应的数据定义。因此,我们可以谈论CAD对象、PLM对象、PDM对象、CAE对象、CAM对象、CAD数据、PLM数据、PDM数据、CAM数据、CAE数据。然而,这些系统并不是彼此排斥的,这是因为建模对象可以由与这些系统的任何组合对应的数据来定义。因此,系统可能同时是CAD和PLM系统。
为了便于解释,现在讨论在CAD系统中采用的方法的示例。
所谓CAD系统,其还意味着至少适用于基于建模对象的图形表示设计建模对象的任何系统,例如CATIA。在这种情况下,定义建模对象的数据包括允许对建模对象的表示的数据。例如,CAD系统可以使用边或线(在某些情况下为面或表面)提供对CAD建模对象的表示。线、边或表面可以各种方式表示,例如非均匀有理B样条(NURBS)。具体而言,CAD文件包含规范,可以根据该规范生成几何图形,从而允许生成表示。建模对象的规格可以存储在单个CAD文件或多个CAD文件中。在CAD系统中表示建模对象的文件的典型大小为每部件一兆字节(one Megabyte per part)。而建模对象通常可以是数千个部件的装配体。
在CAD的上下文中,建模对象通常可以是3D建模对象,例如,表示产品,例如,部件或部件装配体、或者可能是产品装配体。所谓“3D建模对象”,其是指通过数据建模以允许其3D表示的任何对象。3D表示允许从所有角度查看部件。例如,当被3D表示时,可以围绕3D建模对象的任何轴或在其上显示该表示的屏幕中的任何轴来处理和旋转3D建模对象。这明显排除了2D图标,其中2D图标不是被3D建模的。对3D表示的显示有助于设计(即,提高设计师在统计上完成其任务的速度)。这加快了行业中的制造过程,这是因为产品设计是制造过程的一部分。
3D建模对象可以表示在(例如利用CAD软件解决方案或CAD系统)完成其虚拟设计后将在现实世界中制造的产品的几何形状,诸如:(例如,机械)部件、或部件装配体(或相当于部件装配体,这是由于:从方法的角度来看,部件装配体可能被视为部件本身,或该方法可以独立地被应用于装配体中的每个部件)、或更一般的任何刚性装配体(例如,移动机构)。CAD软件解决方案允许在各种以及大量的工业领域中的产品设计,包括:航空航天、建筑、建筑、消费品、高科技设备、工业设备、运输、海洋和/或海上石油/天然气生产或运输。因此,通过该方法设计的3D建模对象可以表示工业产品,该工业产品可以是任何机械部件,诸如,地面交通工具(包括例如汽车和轻型卡车设备、赛车、摩托车、卡车和机动设备、卡车和公共汽车、火车)的部件、飞行器的部件(包括例如机身设备、航空航天设备、推进设备、国防产品、航空设备、航天设备)、海军交通工具的部件(包括例如海军设备、商船、海上设备、游艇和工作船、海上设备)、一般机械部件(包括例如工业制造机械、重型移动机械或设备、安装设备、工业设备产品、金属制品、轮胎制造产品)、机电或电子部件(包括例如消费电子产品、安全和/或控制和/或仪器产品、计算和通信设备、半导体、医疗设备和设备)、消费品(包括例如家具、家居和花园产品、休闲商品、时尚产品、耐用商品零售商的产品、非耐用商品零售商的产品)、包装(包括例如食品饮料和烟草、美容和个人护理、家用产品包装)。
CAD中的设计过程通常是协作过程,并需要几个人彼此独立地或相互依赖地工作。在这方面,对于CAD系统的数据库重要的是,为所有用户提供数据库状态的隔离和完整性。此类设计应用需要创造性的编辑,这需要通过增量方法调查不同的设计可能性,并通过时间旅行方法浏览其修改历史,并高效地创建、查询和比较数据库的备选状态。本发明的方法的示例是在CAD编辑应用的上下文中讨论的。应当理解,这些示例不限于CAD编辑应用,并且可以应用于任何编辑应用。更一般而言,本发明方法的这些示例不限于编辑应用的特定领域,即,该方法的这些示例可以应用于存储数据库状态的任何数据库。
返回参考图1,提供了进一步的解释。在步骤S10提供具有至少一个数据库状态分支的数据库。在示例中,数据库可能有多个数据库状态分支。例如,该数据库可以包括经由由设计师或多个设计师创造性地应用增量方法的CAD模型设计的被收集的信息,这多个设计师可以并行处理CAD模型。在示例中,每个分支可以归因于设计过程中的不同组的任务,并可以包括由一组设计师针对设计过程提供的CAD模型设计的被收集的信息。如前面所讨论的,数据库可以包括作为其最小单位的一组数据页;应当理解,可以使用任何其他内部基本结构用以组织数据库中的数据。
在示例中,数据库存储将记录存储到页中,并且是仅追加型的。因此,数据库是不可变的;所有事务的整个历史记录都被存储在事件日志存储中。这有助于简化审核和历史查询。
接下来,在步骤S20,数据库接收被应用于数据库的被标识的状态的一个或多个写事件。写事件是用户对于在数据库中写信息以添加一个或多个新数据或修改数据库中已存储的现有一个或多个数据的请求。在多个写事务中,多个用户可以同时发送多个写事件。每个写事件都包含用于更新数据库状态的信息的序列。写事件可以经由应用编程接口(API)或通过远程过程调用(RPC)来发送,RPC通常使用管道、套接字或共享存储器。例如,工作于同一产品的一组设计师同时修改形成产品的部件装配体中的3D部件,并且由一个或多个设计师执行的对部件的每次修改(即接收到写事件)产生要被应用于更新数据库的所述信息的序列。
接下来,在步骤S30,从数据库恢复被标识的数据库状态。从数据库中恢复被标识的状态意味着从数据库中检索其值。被标识的状态可以由用户查询,也可以由计算机自动地查询。对被标识的状态的恢复可以取决于用于在数据库存储中存储数据库状态的方法。现在讨论在数据库存储中存储数据库状态的优选示例。
在将数据库状态存储在数据库存储中的优选示例中,以日志记录通过数据库接收的写事件,并且每个以日志记录的写事件形成在数据库上的新状态,即,对包括写事件的写事务的提交形成了数据库的新状态。以日志记录写事件是将日志保存在非易失性存储器中的操作。应当理解,可以使用任何类型的非易失性存储器(也称为长期持久性存储器)。日志文件是存储将通过数据库执行的按时间顺序的操作记录的文件,例如,应与数据库通信耦合的系统请求。因此,以日志记录写事件意味着:将在通过数据库接收的写事件的序列中的在时间t-1接收到在前的上一个写事件之后,通过数据库在时间t接收到的写事件存储在日志文件中。因此,日志文件包含通过数据库接收的一组写事件。日志文件包括在提交写事务的过程中将被应用于被存储的数据的修改(写事件),写事件位于写事务的内部。写事务是数据库读/写事件的单位,同时保持数据的完整性。事务本身由用于更新数据库状态的信息的序列组成。可以根据已知状态,并通过应用被记录在日志中的改变(即写事件),来重新构造期望的数据库状态的实际信息。写事件修改写事务所看到的数据库的状态。
仍然参考在数据库存储中存储数据库状态的这个优选示例,其还包括缓冲由一个或多个写事件修改或创建的页。如前所述,数据库页是用于组织数据库文件中的数据的内部基本结构,页是I/O操作的基本单位。数据库页是作为用于数据库管理的最小数据单位的、数据库存储中的连续块。数据库的架构分配每个现有的或新的数据结构,以将其特定信息存储在页中。在示例中,页具有在存储硬件中的物理标识(物理存在的位置)和用于具有该页的固定标识符的逻辑标识(即使该页随着时间的推移而演变并且具有不同的物理标识)。在示例中,存储层是用作数据结构层的文件系统的分配器。逻辑页和物理页之间的这种映射将数据结构与存储层的并发控制模型隔离开来。概念上的需要是要具有针对在给定的标识符上运行的事务的所有页的一致映射。在一些示例中,标识符可以是时间戳。时间戳是被编码的序列信息,用于标识某个事件发生的时间。在其他示例中,标识符可以是代表数据库状态的标志(例如,“版本1.0”)。缓冲是要将数据临时存储在物理存储器的特定区域中,该特定区域称为缓冲器。在下文中,此缓冲器称为共享更改状态。这两个术语可以等价地互换使用。共享更改状态是事务之间共享的被更改的页的状态。因此,共享更改状态是从事务中产生的,并且可以在没有事务的情况下生存;其可以与另一个共享更改状态合并,以创建新的共享更改状态,该新的共享更改状态在概念上对应于两个事务的合并。因此,共享更改状态可以链接到事务,直到事务被成功提交或被中止为止。在中止事务的情况下,共享更改状态可以被丢弃。如果提交了第一事务,则共享更改状态可供第二事务使用,不再链接到第一事务:其现在被视为自上一个补丁以来的所有被修改的页(这意味着:其语义已经改变:其不再是“由给定的事务修改的页”,而是“自上一个补丁以来的被修改的页”)。
优选示例还包括:通过在已满足阈值的情况下将被缓冲的页刷新到数据库存储,来创建补丁。创建补丁意味着计算补丁。补丁包含由一个或多个新的写事件修改或创建的新页的列表。在示例中,新补丁(上一次计算的补丁)列出了新补丁和当前补丁(即,在计算新补丁之前获得的上一个补丁)之间的差异。刷新的行为清空了共享更改状态,并将其内容写到某些非易失性存储器。针对这种刷新的阈值可以是:例如,日志的大小和/或被缓冲的页的大小和/或根据日志进行重建的时间和/或自执行上次刷新以来经过的时间。根据日志进行重建的时间是用于重新应用在事件日志存储中记录的事件以重建被标识的状态的被估计的时间。
根据优选示例,以日志记录通过数据库接收的每个写事件。在示例中,这是通过维护一个或多个文件(也称为日志文件)来执行的,该一个或多个文件存储了在至少一个写事件的过程中对被存储的数据的修改的历史。在其他示例中,可以使用共享日志队列或分布式文件系统执行以日志进行记录。日志存储了由一个或多个连续的写事件引起的所有修改的历史记录,甚至数据库接收到的所有写事件。每个以日志记录的写事件创建了在数据库上的新状态,并从而日志文件存储了用于允许恢复新状态的信息,或者说,日志存储了由接收的写事件引起的数据库事务。应当理解,作为事务提交的状态可以利用时间旅行来访问。可以通过写操作在存储器中创建日志事件并在存储器中创建新页,来修改尚未提交的状态。在提交时,日志事件被写到磁盘,页被缓冲或被写到磁盘。
在示例中,以日志记录每个写事件包括:对于中间事务,即在刷新到数据库存储(例如磁盘上)之前的事务,将由接收到的写事件招致的修改的历史作为事件日志(以事件日志的形式)写到存储器上和/或临时存储器(例如临时磁盘空间或临时文件)上的事件日志存储。中间事务(也称为未被刷新的事务)是由接收到的写事件引起的并被存储在日志中、但尚未与数据库的持久状态相关联的事务。在这种情况下,以日志进行记录用作由接收到的写事件引起的所有事务的完整集合,并且尚未在数据库的数据库存储上刷新的一个或多个事务被存储为中间事务。
在示例中,事件日志存储是仅追加型的,即新日志总是被追加到文件中,而不是替换现有的数据。仅追加型日志存储记录了通过将每次改变写到文件末尾而发生的数据改变。在执行此操作时,可以通过从头到尾重放仅追加型日志来恢复整组接收到的写事件。在示例中,通过重放在仅追加型事件日志存储上存储的一个或多个事务和/或一个或多个中间事务,来再次执行(在数据库存储上被刷新的或没有被刷新的)一个或多个pas写事件。
根据优选示例,由接收到的写事件修改或创建的页被缓冲。例如,这些被修改的或被创建的页是由于关于产品的组的设计师的用户交互而获得的:他们对产品的修改正在被保存。缓冲意味着:由接收到的写事件修改或创建的页被存储在存储器中,以便系统在稍后阶段处理这些页。因此,写事件的页的被修改的版本被排队在存储器写缓冲器中,并将在稍后阶段被刷新。页的这些被修改的版本是称为共享更改状态的一组页。应理解,选择数据库页仅用于说明目的,并且可以使用任何其他数据库基本I/O操作单元。
由接收到的写事件修改或创建的这些页保留在缓冲器存储器中,直到达到阈值为止;因此,当满足阈值时,刷新缓冲器存储器(S50)。下文将讨论由于缓冲器存储器刷新而触发的对补丁的创建。
在示例中,阈值可以是事件日志的大小。因此,当事件日志的大小超过或等于阈值时,缓冲器存储器被刷新。事件日志可以是如前所述的日志文件。事件日志的大小可以包括存储在其上的接收到的写事件的数量和/或由事件日志在存储事件日志的存储介质上占用的空间(例如,以兆字节(MB)、千兆字节(GB)测得)。例如,可以将阈值设置为16MB,并且当事件日志的大小等于或大于16MB时,刷新被缓冲的页。
在示例中,阈值可以是被缓冲的页的大小。因此,当被缓冲的页的大小超过或等于阈值时,缓冲器存储器被刷新。被缓冲的页的大小可以包括存储在缓冲器上的页的数量和/或由被缓冲的页在缓冲器上占用的空间(例如,以兆字节(MB)、千兆字节(GB)测得)。例如,阈值可以设置为1GB,并且当被存储的被缓冲的页的大小等于或大于1GB时,被缓冲的页被刷新。
在示例中,阈值可以包括自执行上一次刷新以来经过的时间。因此,定期地执行存储器刷新,例如,每n秒或n分钟或n小时或n天或n周或n月等。
在示例中,阈值可以包括根据日志的重建的时间。重建的时间是对为重放部分的或全部的以日志记录的事件所需的时间的估计;因此,重建时间是用于重新计算已发生的或以日志记录的一组事务的时间。在执行此操作时,可以通过从头到尾重放仅追加型日志来恢复整组接收到的写事件。在示例中,通过重放在仅追加型事件日志存储上存储的一个或多个事务和/或一个或多个中间事务,来再次执行一个或多个pas写事件(其在数据库存储上被刷新或没有被刷新)。自上一次刷新起的重建的时间可以根据自上一次刷新被执行以来在事件日志存储中的日志事件的数量来估计。
如前所述,优选示例还包括:一旦由被存储在缓冲器中的写事件修改或创建的页已被刷新在数据库存储中,就创建这些页的补丁。被创建的补丁也可以称为新补丁,这是因为用于管理数据库的系统可以包括先前作为对被缓冲的页的刷新的结果而获得的至少一个已有补丁。每个被创建的补丁可以是通过分配标识符(例如,时间戳或升序整数索引)可标识的,以便可以按照其创建顺序对所有被创建的补丁进行排序,从而形成补丁序列。因此,通过为被刷新的补丁分配相应的标识符,被刷新的补丁是按照时间顺序被刷新的。从而,新补丁是在文件的末尾创建并存储的最新补丁。新补丁包含一个或多个页的列表,这一个或多个页由上一次接收的写事件修改或创建。新补丁仅列出在新补丁与由于对被缓冲的页的倒数第二次刷新而获得的倒数第二的补丁之间的页的修改。这有助于改进存储器使用率和I/O成本。
因此,在通过数据库接收一个或多个写事件之后,每次满足阈值时,都执行对新补丁进行创建。对于每次重复进行创建,创建了通过通过数据库接收的新写事件修改或创建的新页的列表。因此获得了状态的序列,其中,一些状态分别具有对应的补丁。事实上,无法保证补丁代表状态,这至少因为补丁的创建取决于达到阈值时触发的被缓冲的页到数据库的刷新。因此,补丁可以表示数据库的状态、或数据库的一个或多个状态的组合、和/或数据库的一个或多个状态的一部分。状态是由补丁递归地组成的。根据补丁i的一组页Di重构的一组页Pi被递归地重构。这可以说明如下:
P0=D0
Pi=Di∪(Pi-1\Di)
例如,并且使用伪表示法,假设第一补丁是P1,数据库的状态仅由P1组成,并且注意到,State(P1)=[P1]。对于第二补丁P2,可以注意到,State(P2)=[P2]+State(P1)。类似地,可以注意到,第三补丁P3是State(P3)=[P3]+State(P2)=[P1]+[P2]+[P3]。因此,补丁(例如,P2)是在状态P3的数据库状态的一部分。数据库的状态由有序的补丁序列(例如[P1]+[P2]+[P3])组成,在该序列中,[P1]和[P1]+[P2]也表示数据库状态。但是State(P3)将看不到补丁P1的在P2中也修改过的页:其只将看到最新的页(即,来自P2的页)。
因此,优选示例可以利用在一方面的与存储器写缓冲器耦合的页版本的映射表与另一方面的事件日志存储之间的对存储方法的混合选择。
前面已经讨论了数据库的概念模型的描述。在示例中,数据库包括存储层,其中可以分配存储器、修改存储器并保存修改。步骤S30–S50可以通过存储级别来实现。数据库还包括数据结构层,其中通过在存储层中分配存储器来创建数据结构(例如B-Tree),并修改存储器区域以创建所需的结构。步骤S10–S20可以通过数据结构级来实现。图4示出了数据结构层和存储层之间的关系的示例。在下面讨论图4。
现在参考图3,现在讨论创建新补丁的示意性示例。本例从被存储在仅追加型数据存储上的三个数据页开始;这三个页已被刷新在数据库上,并且与传统的影子分页架构一样,当n个页被刷新到磁盘时,创建具有n个页的补丁。这些页中的每个页具有其物理地存在于的存储层中的数据的物理标识,例如,每个页具有在存储介质(诸如磁盘驱动器)上的物理地址。在该示例中,数据库通过其逻辑标识来引用数据页,该逻辑标识不受物理标识演变的影响,例如,从数据库的角度来看,每个页具有逻辑地址。这三个页在已有补丁中被“引用”,因为这三个页已被刷新。为此,补丁可以包括映射表。在建立所述逻辑标识和物理标识之间的映射之前,应定义映射表。将理解,除了使用映射表之外的任何其他技术都可以用于访问磁盘上的文件。在刷新三个页后创建的补丁包含映射表。映射表可以被视为理论上的多版本索引。其执行与理论上的多版本索引相同的功能,但实际上没有实现完整的多版本索引,以提高性能。如图3所示,对于时间戳T1,映射表将逻辑地址(1,2,3)分别映射到存储中的物理地址(adr#1、adr#2、adr#3)。对于时间戳T2,修改了页1和页3。逻辑地址不变,并且代替地,新的映射表指向T1中针对页2的旧物理地址和T2中针对页2和页3的新物理地址。在数据库上创建(或打开)事务时,在逻辑页和物理页之间的存储器中对此映射表进行构建或实例化。因此,数据结构只看到其逻辑页,而不知道物理页,数据结构只看到其逻辑页,而不知道物理页。如果在存储器中已存在映射表,则通过复制现有映射表(例如,前一时间戳的映射表)并将局部映射应用到期望的事务和数据库状态,来创建新的映射表。如果不存在映射表,则通过从描述符跳回到描述符(例如,从时间戳为T2的补丁的描述符跳回到时间戳为T1的补丁的描述符,以此类推)来扫描所有补丁,以获得所有页的由被选择使用的第一描述符定义的最新版本。这种映射表策略将减少单个多版本索引的存储器成本及其关于锁的较高争用。可以选择映射表的实现,以用于获得在整数与整数/指针之间具有最快关联的表。在示例中,可以基于本领域所知的无锁比较和交换阵列来性能高效地创建映射表。在其他示例中,可以基于同步的用户空间读取拷贝更新(RCU)机制来创建映射表。
在图3的示例中,补丁包括由新的写事件修改或创建的一个或多个新页的列表,并且还包括描述符。表示一组页的补丁,该补丁可能受到一些对齐约束,以便能够利用被映射的存储器。例如,在处理器和处理器的虚拟存储器中分配每页4k字节;作为另一个例子,的虚拟存储器的管理器强制补丁按64k字节的块被对齐;因此,补丁是64kb块的倍数,并且描述符是被写在最后64kb块的末尾的。描述符可以被添加作为将被写在包含补丁的页的存储器块的末尾的最后元素,以支持原子性:描述符的存在表示页已被成功地提交,否则,在末尾写这个描述符提供了一种简单的方法用于验证整个补丁是否已被正确地注册。否则,在先前的描述符之后找到的所有数据被忽略,即,被丢弃。在示例中,描述符可以包括以下各项中的至少一项:
-由新的写事件修改或创建的物理页的数量。因此,可以找到当前补丁的开头,找到先前的补丁,并更容易地预分配与补丁相关联的存储器资源。
-用于检查描述符的完整性的元数据,从而确保描述符未损坏。
-由补丁表示的写事件的时间戳。可以从描述符中检索补丁的提交的顺序(即,其刷新)。这可以在必要时改进数据库的重建。
-对数据库的对应标识状态的引用。使用该引用,数据库能够找到备选状态是指哪个分支。
描述符的存在可以为页映射算法提供可靠的停止条件。回到图3的示例,补丁包括由上一次接收的写事件修改或创建的一个或多个新页的列表和描述符。补丁还可以包括映射表,映射表包括所述逻辑标识和物理标识之间的映射。
期望数据库状态(特别是与数据库存储中的补丁不对应的状态)的实际信息可以根据已知状态(即,在数据库存储中的对应补丁的状态)来重构,这与在事件日志存储中记录的事件日志文件中记录的改变的应用相结合。
现在,将讨论从数据库恢复被标识的数据库状态。图2示出了从数据库恢复被标识的数据库状态的示例。此被标识的状态可能是由于刷新缓冲器而在磁盘上已存在的数据库状态,也可能是两个被存储的补丁之间按时间顺序的状态。在任一情况下,在步骤S210,该方法从数据库存储检索状态序列中的被标识的状态的分支上的补丁。如前所述,为构建数据库状态而检索的补丁涉及检索在前的补丁,因为补丁通常不是自给自足的。在前一种情况下,此被检索的补丁是数据库状态的对应补丁,该对应补丁由于写事件而已被刷新到磁盘。在后一种情况下,该方法检索在被检索的补丁和被标识的状态之间发生的以日志记录的写事件的列表。步骤210中的被检索的补丁是与被标识的状态相比而言的相同分支相关。在一个示例中,被检索的补丁是按时间顺序在被标识的状态之前的第一补丁。在另一个示例中,被检索的补丁是按时间顺序在被标识的状态之后的第一补丁。在另一个示例中,被检索的补丁是按时间顺序与被标识的状态最接近的补丁,即,最小化在被检索的补丁和被标识的数据库状态之间发生的以日志记录的写事件的列表的长度。然后,在步骤S220中,该方法检索在被检索的补丁和被标识的数据库状态之间发生的以日志记录的写事件的列表。这些日志文件保存引入数据页修改的写事件的历史记录。在步骤S230中,通过将以日志记录的写事件的列表应用于被检索的补丁来恢复被标识的数据库。
回到图1,接下来在步骤S40,通过创建新补丁作为对被标识的状态的备选状态并利用对被标识的状态的引用来创建新分支。如果被标识的状态由于刷新缓冲器而尚未存在在磁盘上,并且是按时间顺序在两个被存储的补丁之间的状态,则新补丁的创建还包括将缓冲器刷新到数据库存储。通过将新分支的相应状态刷新到数据库,该方法可以使用日志文件以重构与该分支对应的中间状态的相应重构。
对被标识的状态的引用被添加到新分支的每个新创建的补丁中,以便数据库能够找到备选状态是指哪个分支。为了查找新的分支上的数据库状态,查找此对应的分支是重要的。对被标识的状态的引用包括对被检索的补丁的引用(如果被标识的状态由补丁表示)、以及对在被缓冲的页被刷新到数据库存储后创建的补丁的引用(如果标识状态不由补丁表示)。
图4示出了根据本发明方法创建数据库状态树作为备选状态的示例,其中,数据库状态存储了数据树。数据结构层中的树的信息被存储在存储层中的一些数据页中。如图4所示,在时间戳T1,映射表将逻辑地址(1、2、3)分别映射到存储中的物理地址(adr#1、adr#2、adr#3)。对于时间戳T2,写事件修改了页1和3,并且在数据库存储上创建了仅包括被修改的页(即,页1和页3)的对应的新补丁。此修改的结果是:映射表被更新,并将逻辑地址(1、2、3)分别映射到数据库存储中的物理地址(adr#1、adr#2、adr#2)。补丁中的地址是补丁的局部地址,而不是全局地址。时间戳T1和时间戳T2的对应补丁被认为位于名为B1的同一分支上。在时间戳T4,对在时间戳T1的数据库的历史应用分叉,并根据与时间戳T1对应的数据库的状态创建名为B2的新分支。在这个新分支中,与时间戳T1的被标识的状态相比,修改了页3,并在数据库存储上使用被修改的页3创建了对应的新补丁。在一些示例中,可以在时间戳T3执行新分支的创建,并在时间戳T4修改页3。然后,在这种情况下,由于在时间戳T3创建的分支B2指向已有补丁,因此仅在时间戳T4创建补丁。更新对应的新补丁的映射表,以将逻辑地址(1、2、3)映射到物理地址(adr#1、adr#2、adr#1)。如上所述,补丁中的地址是补丁的局部地址,而不是全局地址。对在分支上的时间戳T2的补丁的引用可以被写入在分支B2上的时间戳T4的补丁的描述符中。
在本发明中,通过仅操控页的逻辑标识符,在不影响数据结构的情况下,创建新分支上的数据库的备选状态。此策略在数据库的存储级别而不是数据结构级别实现,这使得此方法的分支能力适用于数据库的所有数据结构。由于在这些数据结构上运行的查询和算法是独立于其所在的分支执行的,因此这在软件开发和维护方面是没有成本的。
此外,两个分支之间没有重复的数据或页,这降低了所需资源的成本。在这种方法中,在给定分支上打开事务归结为创建对应的映射表,就像在单个分支上创建它一样。区别在于:需要知道何时进行分叉并跳到另一个存储项,该存储项是通过使用对被标识的状态的引用来提供的。引用可以包括在补丁的描述符中。因此,在CPU和存储器方面的成本在只有一个分支和有多个分支之间是相似的。开销和存储成本仅限于在新分支中修改的页的存储成本。
已经描述了本发明的优选实施例。将理解,可以在不脱离本发明的精神和范围的情况下进行各种修改。因此,其他实现在以下权利要求的范围内。
Claims (14)
1.一种用于创建数据库状态树的计算机实现的方法,包括:
-提供(S10)具有至少一个数据库状态分支的数据库;
-通过所述数据库接收(S20)被应用于所述数据库的被标识的状态的一个或多个写事件;
-从所述数据库恢复(S30)所识别的数据库状态;以及
-通过利用对所述被标识的状态的引用,创建新补丁作为对所述被标识的数据库状态的备选状态,来创建(S40)新分支。
2.根据权利要求1所述的计算机实现的方法,其中,恢复所述被标识的数据库状态包括:
-在来自数据库存储的数据库状态的序列中,检索(S210)所述被标识的状态的分支上的补丁;
-检索(S220)在被检索的补丁和所述被标识的状态之间发生的以日志记录的写事件的列表;以及
-将所述以日志记录的写事件的列表应用于(S230)所述被检索的补丁。
3.根据权利要求1至2中任一权利要求所述的计算机实现的方法,其中,通过创建新补丁创建新分支进一步包括:如果相应的备选状态的数据库状态不是被存储在所述数据库存储中的补丁,则将缓冲器刷新到所述数据库存储。
4.根据权利要求3所述的计算机实现的方法,其中,对所述被标识的状态的所述引用包括:
-当所述被标识的状态由补丁表示时的对所述被检索的补丁的引用;以及
-当所述被标识的状态不由补丁表示时的对在被缓冲的页被刷新到所述数据库存储后创建的补丁的引用。
5.根据权利要求3至4中任一权利要求所述的计算机实现的方法,其中,所述新补丁包括由新写事件修改或创建的新页的列表,从而获得其中一些状态分别具有对应的补丁的状态序列。
6.根据权利要求5所述的计算机实现的方法,其中,所述新补丁还包括:
-映射表,包括在所述数据库的数据结构层处在所述被缓冲的页的物理地址与所述页的逻辑地址之间的映射。
7.根据权利要求6所述的计算机实现的方法,其中,通过复制现有映射表并将局部映射应用到期望的以日志记录的写事件,每个以日志记录的写事件具有映射表。
8.根据权利要求3至7中任一权利要求所述的计算机实现的方法,其中,所述新补丁还包括:
-描述符,包括以下各项中的至少一项:
ο由所述新写事件修改或创建的物理页的数量;
ο用于检查所述描述符的完整性的元数据;
ο所述新写事件的时间戳;
ο对所述数据库的对应的所述被标识的状态的引用。
9.根据权利要求1至8中任一权利要求所述的计算机实现的方法,其中,所述数据库存储是仅追加型的。
10.根据权利要求2至9中任一权利要求所述的计算机实现的方法,还包括:在检索以日志记录的写事件的列表之前,
-在日志存储上以日志记录通过所述数据库接收的所述一个或多个写事件中的每个写事件,以及将修改的历史作为事件日志写到日志存储中,以用于中间事务,所述中间事务是在刷新到所述数据库存储之前的事务。
11.根据权利要求10所述的计算机实现的方法,其中,所述日志存储是仅追加型的。
12.一种计算机程序,包括用于执行根据权利要求1至11中任一权利要求所述的方法的指令。
13.一种计算机可读存储介质,其上记录有根据权利要求12所述的计算机程序。
14.一种数据库,包括在其上记录有根据权利要求12所述的计算机程序的计算机可读存储介质。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP20306644.4 | 2020-12-21 | ||
EP20306644.4A EP4016321A1 (en) | 2020-12-21 | 2020-12-21 | Creating a tree of database states |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114647633A true CN114647633A (zh) | 2022-06-21 |
Family
ID=74184392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111569417.6A Pending CN114647633A (zh) | 2020-12-21 | 2021-12-21 | 创建数据库状态树 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11803450B2 (zh) |
EP (1) | EP4016321A1 (zh) |
JP (1) | JP2022098496A (zh) |
CN (1) | CN114647633A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115640103A (zh) * | 2022-12-26 | 2023-01-24 | 北京云道智造科技有限公司 | 一种操作的响应方法、装置、电子设备及存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8099572B1 (en) * | 2008-09-30 | 2012-01-17 | Emc Corporation | Efficient backup and restore of storage objects in a version set |
US9710501B2 (en) * | 2012-03-30 | 2017-07-18 | Kinaxis Inc. | Enhanced performance for large versioned databases |
US8768977B2 (en) * | 2012-07-31 | 2014-07-01 | Hewlett-Packard Development Company, L.P. | Data management using writeable snapshots in multi-versioned distributed B-trees |
US9477558B2 (en) | 2013-03-08 | 2016-10-25 | Intel Corporation | Hardware supported memory logging |
US9684686B1 (en) | 2013-09-04 | 2017-06-20 | Amazon Technologies, Inc. | Database system recovery using non-volatile system memory |
US10394773B2 (en) * | 2015-01-02 | 2019-08-27 | International Business Machines Corporation | Determining when a change set was delivered to a workspace or stream and by whom |
US10409695B2 (en) * | 2017-04-25 | 2019-09-10 | Sap Se | Self-adaptive continuous flushing of pages to disk |
US10402389B2 (en) | 2017-04-25 | 2019-09-03 | Sap Se | Automatic adaptation of parameters controlling database savepoints |
US10360111B2 (en) | 2017-05-03 | 2019-07-23 | Sap Se | Self-adaptive parallel database page flusher |
US11397718B2 (en) | 2020-09-09 | 2022-07-26 | International Business Machines Corporation | Dynamic selection of synchronization update path |
US11593229B2 (en) * | 2020-09-23 | 2023-02-28 | Netapp, Inc. | Data protection methods and systems for a networked storage environment |
-
2020
- 2020-12-21 EP EP20306644.4A patent/EP4016321A1/en active Pending
-
2021
- 2021-12-21 CN CN202111569417.6A patent/CN114647633A/zh active Pending
- 2021-12-21 JP JP2021206865A patent/JP2022098496A/ja active Pending
- 2021-12-21 US US17/557,159 patent/US11803450B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115640103A (zh) * | 2022-12-26 | 2023-01-24 | 北京云道智造科技有限公司 | 一种操作的响应方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11803450B2 (en) | 2023-10-31 |
EP4016321A1 (en) | 2022-06-22 |
US20220197759A1 (en) | 2022-06-23 |
JP2022098496A (ja) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230084389A1 (en) | System and method for providing bottom-up aggregation in a multidimensional database environment | |
US11403321B2 (en) | System and method for improved performance in a multidimensional database environment | |
US10984020B2 (en) | System and method for supporting large queries in a multidimensional database environment | |
US7849114B2 (en) | Method, system, and program product for generating a virtual database | |
JP3848085B2 (ja) | トランザクションデータの高速記憶常駐処理方法および処理システム | |
CN106716409B (zh) | 一种构建和更新列存储数据库的方法和系统 | |
US5966704A (en) | Storage plane organization and storage systems based thereon using queries and subqueries for data searching | |
US9632944B2 (en) | Enhanced transactional cache | |
JP2020535554A (ja) | 多次元データベース環境において重みを有する複数の親をイネーブルにするためのシステムおよび方法 | |
US7685127B2 (en) | Database access system, method of accessing a database, and method of designing a database access system | |
CN103425722A (zh) | 无日志的原子数据移动 | |
EP1695247A2 (en) | Extended database engine providing versioning and caching of derived data | |
KR20090017461A (ko) | 모델링된 대상물의 데이터베이스를 네비게이션하기 위한 그래픽적 방법 | |
KR101400214B1 (ko) | Hybrid C 인터페이스를 지원하는 장치 | |
US20070255685A1 (en) | Method and system for modelling data | |
US11803450B2 (en) | Creating a tree of database states | |
CN114443615A (zh) | 数据库管理系统、相关装置、方法和介质 | |
US20220197885A1 (en) | Hybrid shadow paging for storing a database | |
CN113886505A (zh) | 一种基于搜索引擎和关系型数据库实现动态建模的管理系统 | |
JP4171884B2 (ja) | データ階層化およびデータ再構成方法/装置/プログラム/記録媒体、データ記録媒体 | |
US20230409545A1 (en) | Version control interface supporting time travel access of a data lake | |
US20160005141A1 (en) | Polygon Simplification | |
Logothetis et al. | Development of an Open Source Spatial DBMS for a FOSS BIM | |
GB2420196A (en) | Method and system for modelling data | |
Wang et al. | Spatio-temporal data model based on dynamic correlation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |