CN114207577A - 用于不同应用程序版本的数据库实现 - Google Patents
用于不同应用程序版本的数据库实现 Download PDFInfo
- Publication number
- CN114207577A CN114207577A CN202180004834.8A CN202180004834A CN114207577A CN 114207577 A CN114207577 A CN 114207577A CN 202180004834 A CN202180004834 A CN 202180004834A CN 114207577 A CN114207577 A CN 114207577A
- Authority
- CN
- China
- Prior art keywords
- database
- version
- application
- directory
- versions
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24575—Query processing with adaptation to user needs using context
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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/211—Schema design and management
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/2457—Query processing with adaptation to user needs
- G06F16/24573—Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本文公开了用于使用单个数据库处理来自多个不同应用程序版本的数据库查询的技术。执行数据库管理系统(DBMS)的计算机系统可以从具有多个版本的应用程序的特定版本接收数据库查询。数据库查询可以指定特定版本。然后计算机系统可以标识目录表格,其中目录表格包括存储版本访问信息的版本信息列。计算机系统可以确定指示对应于数据库查询的一个或多个数据库对象可被应用程序的特定版本访问的用于数据库查询的版本访问信息。基于该确定,计算机系统可以访问响应于数据库查询并且能够由应用程序的特定版本访问的一个或多个数据库对象,这可以有利地减少或避免存储在数据库中的数据的重复。
Description
背景技术
技术领域
公开文本总体上涉及数据库,并且更具体地涉及实现用于多个应用程序版本的单个数据库。
相关技术的描述
随着应用程序的更新,应用程序通常例如使用数据定义语言(DDL)语句在其对应的数据库更新时关闭。例如,可以为更新的应用程序改变数据库的模式(schema)。这通常会导致应用程序关停,这可能会妨碍应用程序的性能,进而影响用户体验。此外,应用程序的所有者或开发者可能希望在维护应用程序的新的更新版本时一同维护应用程序的先前版本。这样的多版本实现可以在由处理用于应用程序的多个版本的数据库的数据库管理系统(DBMS)实现应用程序期间引入错误和/或延迟。例如,新应用程序版本的数据库索引可能会干扰应用程序的先前版本的实现。具体地,当新版本中删除了与应用程序的先前版本对应的索引时,DBMS需要阻止新创建的索引对先前版本的干扰。如果这种阻止不成功,这可能会导致在处理来自应用程序的先前版本的查询中产生延迟。
附图说明
图1是示出根据一些实施方案的配置为处理来自不同应用程序版本的数据库查询的示例系统的框图。
图2是示出根据一些实施方案的数据库管理系统的示例系统目录的框图。
图3是示出根据一些实施方案的示例版本和模式目录表格的框图。
图4是示出根据一些实施方案的包括用于人力资源(HR)应用程序的员工表格的示例数据库的框图。
图5A-5D是示出根据一些实施方案的分别基于为数据库表格添加、停用、取消停用和删除列的列目录表格的示例改变的框图。
图6是示出根据一些实施方案的在创建数据库表格期间的示例数据库表格目录表格的框图。
图7是示出根据一些实施方案的在创建数据库索引期间的示例索引目录表格的框图。
图8是示出根据一些实施方案的在添加数据库触发器(trigger)期间的示例触发器目录表格的框图。
图9是示出根据一些实施方案的在添加数据库过程(procedure)期间的示例过程目录表格的框图。
图10是示出根据一些实施方案的在添加数据库统计期间的示例统计目录表格的框图。
图11是示出根据一些实施方案的示例数据库查询的框图。
图12是示出根据一些实施方案的用于处理来自多个不同应用程序版本的数据库查询的方法的流程图。
图13是示出根据一些实施方案的示例计算设备的框图。
公开文本包括对“一个实施方案”或“一种实施方案”的引用。短语“在一个实施方案中”或“在一种实施方案中”的出现不一定指的是相同的实施方案。特定特征、结构或特性可以以与公开文本一致的任何合适方式组合。
在公开文本中,不同实体(其可以不同地称为“单元”、“电路”、其他组件等)可以被描述或要求为“配置”以执行一个或多个任务或操作。这个公式——[实体]配置为[执行一项或多项任务]——在本文中用于指代结构(即,物理的东西,诸如电子电路)。更具体地,该公式用于指示该结构被布置为在操作期间执行一项或多项任务。可以说一个结构被“配置为”执行一些任务,即使该结构当前没有被操作。“配置为接收对数据库的数据库查询的计算机系统”旨在涵盖例如具有处理器、网络接口、具有程序指令的存储器等以在操作期间执行该功能的计算机系统,即使所讨论的该计算机系统当前未被使用(例如,其未连接到电源)。因此,被描述或记载为“配置为”执行一些任务的实体是指物理的东西,诸如设备、电路、存储可执行以实现任务的程序指令的存储器等。该短语在本文中不用于指代无形的东西。
术语“配置为”并非旨在表示“可配置为”。例如,未编程的FPGA不会被视为“配置为”执行一些特定功能,尽管它可以“可配置为”执行该功能,并且可以“配置为”在编程后执行该功能。
如本文所用,术语“第一”、“第二”等用作它们前面的名词的标签,并且不暗示任何类型的排序(例如,空间、时间、逻辑等),除非特别说明。例如,在具有多个用户账户的计算系统中,术语“第一”和“第二”用户账户可用于指代任何用户。换言之,例如,“第一”和“第二”用户账户不限于最初创建的两个用户账户。
如本文所用,术语“基于”用于描述影响确定的一个或多个因素。该术语不排除其他因素可以影响确定的可能性。也就是说,确定可以仅基于指定的因素或基于指定的因素以及其他未指定的因素。考虑短语“基于B确定A”。该短语指定B是用于确定A或影响A的确定的因素。该短语并不排除A的确定也可以基于其他一些因素,诸如C。该短语还旨在涵盖仅基于B确定A的实施方案。如本文所用,短语“基于”因此与短语“至少部分基于”同义。
具体实施方式
在先前的DBMS实现中,用于处理多个应用程序版本的一种方法包括应用程序的新版本访问数据库管理系统(DBMS)以检索用于处理用户请求的数据。在这个实现中,DBMS可以将用于该应用程序的新数据库模式以新模式名称加载到数据库中。在此示例中,新的数据库模式只是应用程序的先前版本的模式的复制,但具有与新应用程序的执行相对应的改变。尽管这种实现对于易于复制的数据库对象(非持久对象,诸如触发器、索引、统计等)效果很好,但它为持久数据库对象(诸如表格)带来了问题。例如,为多个不同的模式多次复制数据库表格的全部内容既昂贵又低效。
公开文本描述了用于在单个数据库中维护用于多个不同应用程序版本的数据的技术。例如,所公开的技术通过在数据库的系统目录内为数据库中的不同对象实现应用程序版本化,来在给定时间处理来自多个应用程序版本的查询。系统目录保持描述存储在数据库中的数据库对象的元数据。例如,应用程序可以与数据库中的特定模式相关联,并且该模式包括名称和版本(使得模式版本对应于给定的应用程序版本)。新的版本化技术涉及向数据库目录表格添加额外的列,以指定与存储在数据库中的各种数据库对象相关联的应用程序版本。例如,这些列可以使用开始版本和停止版本来指定一系列应用程序版本,或者可以为数据库中的对象指定特定的应用程序版本。这些数据库对象可以包括表格、列、触发器、索引、统计、过程、视图等。
在本文描述的实施方案中,客户应用程序的新版本可以将新列“货币”添加到“销售”数据库表格。在此示例中,数据库管理系统将新行添加到系统目录中的表格中,其中包括数据库列的元数据。此列目录表格指定数据库表格的名称(销售)、添加的列的名称(货币)以及与此添加的数据库列相关联的应用程序的开始版本和停止版本。公开文本中描述的数据库管理技术可以有利地允许同时服务于应用程序的多个不同版本,而减少或避免存储在数据库中的数据的重复。
示例DBMS
图1是示出配置为处理来自不同应用程序版本的数据库查询的示例系统的框图。在所示实施方案中,系统100包括用户计算系统110和DBMS 130,DBMS 130配置为进行通信以处理应用程序请求。
在所示实施方案中,用户计算系统110包括应用程序120。用户计算系统110可以是配置为便于各种不同用户使用应用程序120的应用程序服务器。例如,在一些实施方案中,系统110可以是管理各种不同客户的应用程序的客户关系管理系统。在一些情况下,不同用户(相同或不同客户的)使用相同的应用程序,但实现该应用程序的不同版本。例如,系统110可以为两个不同的用户管理人力资源应用程序,但是每个用户实现访问由DBMS维护的不同数据的人力资源应用程序的不同版本。在一些实施方案中,除了系统110之外的计算系统包括应用程序120的不同版本并且配置为与DBMS 130通信以处理来自这些应用程序的查询。在所示实施方案中,用户计算系统110向DBMS 130发送对应用程序120的查询102。该查询102指定特定的应用程序版本。
在所示实施方案中,DBMS 130包括系统目录140和数据库150。如本文所用,术语“系统目录”旨在根据其易于理解的含义来解释,它包括数据库的一部分,该部分存储有关存储在数据库中的数据的元数据,诸如定义数据库对象的模式。例如,系统目录可以包括各种目录表格和/或目录视图。这些目录表格可以包括描述在由DBMS管理的数据库中包括的各种对象中存储的数据的元数据,诸如数据库:表格,列,触发器,索引,统计,过程,视图等。这些目录表格可用于确定评估例如从应用程序接收的结构化查询语言(SQL)查询的最佳方法。术语“目录”和“目录表格”可以互换使用。在公开文本中,目录表格指定存储在数据库中的数据集的子集,这些子集可由不同的应用程序版本访问,包括哪些数据库表格对某些应用程序是可见的。
在所示实施方案中,系统目录140是包含关于存储在数据库150中的数据库对象的信息的表格的集合。例如,系统目录140可以包括对应于应用程序的不同版本(或不同的应用程序)的模式标识符的列表。系统目录140包括各种目录表格142A-N,每个目录表格142A-N包括用于不同版本的元数据。例如,在图1中,目录表格142A-N包括应用程序120的版本A和B的元数据144。下面参考图2讨论示例目录表格。
类似地,在所示实施方案中,数据库150包括各种数据库表格152A-N,每个数据库表格152A-N包括用于应用程序120的版本A和版本B两者的数据154。在一些实施方案中,目录表格142A-N和数据库表格152A-N包括用于不同应用程序的元数据和数据。例如,这些表格可以包括用于人力资源应用程序和会计应用程序两者的元数据和数据。此外,这些表格可以包括用于不同应用程序以及同一应用程序的不同版本的元数据和数据。例如,应用程序版本A可以是特定应用程序的旧版本,并且可以看不到为应用程序版本B(特定应用程序的较新版本)添加到数据库的列中的数据。但是,在此示例中,版本A可以仍然能够查看在版本B中已去除或停用的列中的数据。换言之,两个应用程序版本都可以看到具有不同列的集合的相同数据行。DBMS 130可以是各种数据库管理系统(包括PostgreSQL、MySQL、ORACLE等)中的任何一种。
存储在目录表格142中的元数据可以指定存储在数据库150中的数据库对象的位置以及这些对象的版本访问信息。即,目录表格142中包括的元数据可以为特定应用程序版本指示存储在数据库中的能够由该应用程序版本访问并且可以用于响应来自特定应用程序版本的查询的数据库对象。
在所示实施方案中,DBMS 130基于查询102访问系统目录140以确定存储在数据库150中的能够由查询中指定的应用程序版本访问的数据库对象。基于该确定,DBMS 130可以使用查询优化器为数据库150生成查询执行计划。然后,DBMS 130基于该计划访问数据库150以检索响应于查询102的数据。DBMS 130将查询结果106发送给用户计算系统110用于应用程序120。这些结果与查询102中指定的应用程序版本相关联。
如本文所用,术语“应用程序版本”是指与应用程序的较早或较后形式不同的应用程序的特定形式。例如,可以使用管理各种数据库内容对不同应用程序版本的可访问性的单调递增的编号方案将应用程序版本分配给应用程序的新版本或更新版本。作为一个具体示例,可以为HR应用程序的第一版本分配版本4.1.3,而为HR应用程序的第二版本分配版本4.1.4。如本文所用,术语“元数据”旨在根据其易于理解的含义来解释,其包括描述其他数据的数据集。例如,元数据可以包括在系统目录的目录表格中。具体而言,该元数据可以指定与数据库中的特定模式相关联的应用程序版本。下面参考图3和5A-10详细讨论存储在系统目录中的示例元数据。
示例系统目录
图2是示出DBMS 130的示例系统目录140的框图。在所示实施方案中,系统目录140包括以下目录表格:版本目录表格210、模式目录表格220、列目录表格230、数据库表格目录表格240、索引目录表格250、触发器目录表格260、过程目录表格270和统计目录表格280。注意,用于各种其他类型的数据库对象的各种其他目录表格中的任何一个可以包括在系统目录140中,并由DBMS 130管理。
图2中所示的目录表格可以包括数据库150中不同对象的条目(行)。例如,列目录表格230可以包括各种数据库列的条目,其中这些条目包括具有指定数据库150中列的位置以及版本访问信息的值的字段。下面参考图3和5A-10讨论不同目录表格的更多细节。
示例版本和模式目录表格
图3是示出示例版本和模式目录表格的框图。在所示实施方案中,系统目录140包括版本目录表格210和模式目录表格220。
版本目录表格210是允许DBMS 130为与应用程序的特定版本相关联的名称查找特定版本ID并且确定该特定版本的状态(应用程序版本是启用中还是停用的,等等)的表格。在所示实施方案中,版本目录表格210包括三列:版本标识符(ID)312、版本名称314和版本状态316。在表格中,为应用程序的三个不同版本示出三个不同条目(行)。具体地,版本目录表格210中的第一个条目包括应用程序版本204.7.2的模式信息,包括版本名称、2019年夏季以及指示该应用程序版本已停用的版本状态。类似地,应用程序版本204.7.3被命名为2019年秋季并且处于启用状态,而应用程序版本204.7.4被命名为2020年春季并且目前正在建设中。版本目录表格210可以包括任何数量的条目,其中应用程序处于各种版本和各种状态,具有唯一的版本ID和应用程序名称。
在所示实施方案中,系统目录140包括模式目录表格220,其可用于查找哪个特定模式(基于其模式ID)适用于给定模式名称和给定应用程序版本。具体地,模式目录表格220包括三列,指定为:模式ID 322、模式名称324和版本ID 312。模式目录表格220的版本ID312列与版本目录表格210的版本ID列相同。第一模式(由模式ID 1表示)被命名为HR(如图3中的模式名称324所示)并且对应于版本ID 204.7.2。这种模式继续适用于其他模式ID,每个新模式ID对应一个新版本ID。然而,模式ID 4对应于未版本化的模式。未版本化模式是对应用程序的现有版本可见的模式。在一些情况下,某些数据库对象(例如视图或函数)可以放置在未版本化的模式中,因为这些数据库对象预计将在各个应用程序版本中均保持不变。例如,诸如数据库表格的其他数据库对象可以放置在未版本化的模式中,使得存储在这些对象中的数据可以在应用程序的各种版本中均可用。在一些情况下,版本ID为0表示数据库对象已停用或删除。图5D示出删除数据库列和开始版本列的对应版本ID为0的示例。模式可以在每个应用程序的基础上定义(使用特定名称),但给定的模式可以由同一应用程序的多个实例共享。因此,名称“HR”可以是特定应用程序的模式的名称,在一些实施方案中也可以称为“HR”。
尽管图3示出名称为HR的模式的条目,但是该表格可以包括具有不同名称(诸如会计、招聘、流程等)的模式的条目。特定的应用程序可以使用多个不同的模式。作为一个具体示例,与版本204.7.2关联并且在2019年夏季生成的应用程序是可以使用模式“HR”和“招聘”的人力资源应用程序。
示例数据库
图4是示出包括用于人力资源(HR)应用程序的员工表格410的示例数据库150的框图。在所示实施方案中,数据库150包括hr.employee表格410、hr.emp_name_index 420、hr.emp_name_comp索引430和hr.totalcomp过程440。图4中所示的表格描述了例如可以为DBMS 130内相同应用程序的多个版本(或不同应用程序)存储的数据超集。如下面将参考后续附图更详细讨论的,基于系统目录140的元数据144中限定的版本信息,可以允许给定应用程序仅查询存储在数据库150中的信息的子集。
在所示实施方案中,hr.employee表格410包括四个不同的列:员工ID 412,员工姓名414,工资416和奖金418。hr.employee表格410包括三个条目,Michael Smith、John Doe和Jane Doe中的每个用一个条目。例如,Jane Doe与员工ID 12347关联,工资为120,000美元,并且奖金为6000美元。在一些实施方案中,数据库150包括名称为客户的第二表格。该客户表格连同hr.employee表格410可以包括用于HR应用程序的不同版本。在一些情况下,员工和客户表格包括用于不同应用程序(例如,人力资源应用程序和会计应用程序)的数据。正如下面将参考图5A-5D和图11所讨论的,一些应用程序版本可以无法访问hr.employee表格410中包括的一些列。
hr.emp_name_index 420包括员工表格410的员工姓名414和工资416列,而hr.emp_name_comp索引430包括hr.employee表格410的员工姓名414列以及包括每个员工的工资和奖金的总和值的总和432列。例如,存储在总和列432中的值可以通过执行hr.totalcomp过程440来确定,该过程是计算两个不同参数工资和奖金的总和的函数。hr.totalcomp过程440接收员工ID或员工姓名作为输入并且输出该员工的总报酬。
在一些实施方案中,数据库150包括附加的数据库对象。例如,数据库150可以包括触发器和统计以及任何其他各种数据库对象。特别地,数据库150可以包括hr.employee表格410的工资416列的统计,该统计跟踪表格410中列出的所有员工的平均工资。经由指定相应应用程序版本的查询,应用程序版本可以访问存储在数据库150中的信息,如下面参考图11所讨论的。例如,这些数据库索引可以对特定应用程序版本不可见,但对特定应用程序的其他版本可见。
示例目录表格
图5A-5D是示出分别基于添加、停用、取消停用和删除数据库表格的列的列目录表格230的示例改变的框图。在图5A-5D中,应用程序120向DBMS 150发送数据库命令,指定基于应用程序的新版本的更新。例如,这些数据库命令可以包括数据定义语言(DDL)操作。在许多情况下,应用程序120的新版本正在基于该应用程序在操作期间使用的新信息向DBMS130发送DDL操作。
在图5A中,应用程序120为数据库150生成数据库命令502并且将该命令传输到DBMS 130。从应用程序120发送到DBMS 130的数据库命令可以是SQL、Postgres、MySQL等命令。数据库命令502包括两个不同的操作。第一个操作指定当前应用程序版本为204.7.3。例如,应用程序版本204.7.3是与第二个操作关联的应用程序版本。第二个操作指定通过添加奖金418列来更新hr.employee表格410(例如,员工表格还没有包括奖金列418)。基于该数据库命令,DBMS 130更新存储在系统目录140中的元数据和存储在数据库150(未示出)中的数据库对象。
图5A中的DBMS 130包括存储数据库150中包括的数据库列的元数据的列目录表格230。例如,回到图3,数据库150包括具有四个数据库列的hr.employee表格410:员工ID412、员工姓名414、工资416和奖金418。返回到图5A,列目录表格230包括五个不同的列:表格ID 532、列号534、列名称536、开始版本590和停止版本592。这五列指定数据库150中包括的数据库列的元数据。例如,列目录表格230包括指定名称为工资416的数据库列包括在表格ID 6(hr.employee表格410)中的条目,与模式ID 3相关联,并且适用于从版本204.7.2开始的应用程序。作为一个具体示例,在PostgreSQL上下文中,列目录表格230被称为pg属性,其中术语“属性”等同于列并且出于历史原因被使用。
在所示实施方案中,列目录表格230中包括的开始版本590和停止版本592列为不同的数据库列指定能够访问该列的应用程序版本(开始版本590)以及不可再访问这些数据库列的应用程序版本(停止版本592)。例如,列目录表格230中包括的开始和停止版本列指定了知道存储在特定数据库列中的数据的一系列应用程序版本。例如,如果应用程序版本204.7.2尝试访问hr.employee表格410的所有列,则奖金列数据将不会出现在返回给该应用程序的列数据中。此外,如果此应用程序版本尝试在查询中直接引用奖金列,则查询响应消息将指定“未找到列奖金”。
开始和停止版本列的实现可以有利地防止较旧的应用程序版本由于这些版本依赖于已在较新的应用程序版本中删除的索引而变慢。这也可以防止较新的应用程序版本违反服务水平协议(SLA)(例如,来自客户应用程序的查询需要在阈值时间内得到满足)。此外,使用开始和停止版本列可以允许在单个表格而不是其中每个表格专用于特定版本的多个表格中存储有关多个应用程序版本的信息。这进而可以减少或消除DBMS在多个表格之间保持数据同步的需要。例如,列数据的版本化可以减少或消除由于数据库表格的单个副本包括对所有应用程序版本可见的列而在语义上破坏应用程序的风险。在此示例情况下,查询“SELECT*FROM employee table”可能会返回额外的列。所公开的版本化技术还可以减少或防止存储在旨在从较新版本的数据库表格中停用的列中的数据在应用程序开发人员不知道存储在已停用的对象中的该数据的情况下被较新的应用程序版本意外访问。
DBMS 130从应用程序120接收数据库命令502并且执行DDL操作,该操作可执行以基于该命令将列(图4中的奖金418)添加到数据库150。除了数据库150的DDL操作并且与数据库150的DDL操作同时,DBMS 130通过执行列添加操作512来更新列目录表格230。例如,列添加504操作可执行以将条目添加到列目录表格230。具体地,DBMS 130向列目录表格230添加一行,其值指定新列被命名为“奖金”并且包括在对应于表格ID 6的员工表格中(该新行在图中以粗体示出)。在所描绘的示例中,应用程序版本204.7.3或更新版本可以访问奖金数据库列,但应用程序版本204.7.2或更旧版本将无法访问。
在一些实施方案中,系统目录140包括用于不同目录表格的主键和唯一约束。主键可以包括在表格中具有唯一值的一组列,这些列在从另一个表格引用时用于标识一行。例如,列目录表格230可以包括由表格ID 532和列号534列组成的主键。该主键可用于标识列目录表格230内的特定行。类似地,唯一约束可以包括具有唯一值的一组列。例如,列目录表格230可以包括由表格ID 532和列名称536列组成的唯一约束。
在一些实施方案中,数据库命令包括给定应用程序版本的多个更新。例如,数据库命令502可以包括指示先前版本能够访问的数据库对象与版本204.7.3能够访问的数据库对象之间的差异的多个不同的操作(诸如第二个操作“改变表格”)。
在图5B中,应用程序120向DBMS 130发送数据库命令504,其指定应用程序版本204.7.4并且包括用于使数据库列停用的操作。基于数据库命令504,DBMS 130执行列停用操作514以通过为表格230的包括奖金数据库列的元数据的行添加停止版本592(204.7.4)来改变列目录表格230。在此示例中,包括在员工数据库表格中的奖金列只能由人力资源应用程序的版本204.7.3访问。
在一些情况下,在应用程序版本204.7.3的开发过程中(例如,在经由新的应用程序版本发布来暴露已停用的列之前),可能会错误地停用奖金栏。这种停用可以在同一应用程序版本中撤销。为了减轻该错误,应用程序120可以取消停用奖金列。例如,在图5C中,应用程序120向DBMS 130发送数据库命令506,指定应用程序版本204.7.4。数据库命令506包括用于取消停用数据库150中的奖金列的操作。基于该命令,DBMS 130执行列取消停用操作516以更新列目录表格230以指定奖金数据库列的停止版本592为“0”。
在图5D中,应用程序120向DBMS 130发送数据库命令508,该命令包括指定删除数据库150中的奖金列的操作。基于数据库命令508,DBMS 130执行列删除操作518以更新列目录表格230使得其开始版本列590为奖金数据库列指定版本“0”。在一些情况下,仅当该列不再可用于其他应用程序版本时,才允许应用程序120删除该列(或任何其他数据库对象)。也就是说,奖金列的停止版本592列必须指定比应用程序的最旧版本更早或与最旧版本相同的应用程序版本。例如,当某个列在比应用程序的最后支持版本更旧的应用程序版本中停用时,它可以被删除。
图6是示出在创建数据库表格期间示例数据库表格目录表格的框图。在所示实施方案中,数据库目录表格240包括了包括指定存储在数据库150的表格中的数据的元数据的以下列:表格ID 542、模式ID 322、表格名称644、开始版本590和停止版本592。数据库目录表格240包括指定存储在数据库150的数据库表格中的信息是否对不同的应用程序版本可见的元数据。例如,数据库表格目录表格240的第一行包括表格ID为6,模式ID为4,被命名为“员工”,并且可以由从应用程序版本204.7.1开始的应用程序访问。模式ID 4指的是未版本化的模式,并且因此,员工表格(表格ID 6)可以对多个不同的应用程序版本可见。在一些情况下,可以希望数据库表格在各个应用程序版本中均可见,因此,这些数据库表格可以存在于未版本化的模式中。
在所示实施方案中,应用程序120将数据库命令602发送到DBMS 130。该数据库命令包括用于在数据库150中创建称为“客户”的表格的操作。在数据库150中生成客户表格之后,DBMS 130执行数据库表格创建操作612以将条目添加到系统目录140中的数据库表格目录表格240。在所示实施方案中,数据库表格目录表格240的第二行指定应用程序版本204.7.1作为客户数据库表格的开始版本590。在此示例中,与204.7.1及较后版本关联的应用程序都可以访问员工和客户数据库表格。
图7是示出在创建数据库索引期间示例索引目录表格的框图。在所示实施方案中,索引目录表格250包括了包括指定存储在数据库150中的索引中的数据的元数据的以下列:表格ID 542、索引名称764、开始版本590和停止版本592。索引名称764列例如存储指定各种不同数据库索引的名称的值。
在所示实施方案中,DBMS 130从应用程序120接收指定在数据库150中创建新索引的数据库命令702。基于该命令,DBMS 130生成新索引hr.emp_name_comp 430。在生成新索引之后,DBMS 130执行索引创建操作712以将条目添加到索引430的索引目录表格250,指示该索引能够由应用程序版本204.7.3(和更新版本)访问,并且因此该索引不能由应用程序版本204.7.2和更早的版本使用。然而,DBMS 130将维护存在于数据库中的索引,即使在某些应用程序版本(诸如版本204.7.2和更早版本)无法使用(无法利用)这些索引的情况下也是如此。
图8是示出在添加数据库触发器期间示例触发器目录表格的框图。在所示实施方案中,触发器目录表格260包括具有指定存储在数据库150中的触发器的元数据的以下列:表格ID 532、触发器ID 862、触发器名称864、开始版本590和停止版本592。触发器ID 862和触发器名称864例如为各种数据库触发器存储分别指定标识符和名称的值。
在所示实施方案中,DBMS 130从应用程序120接收指定将触发器添加到数据库150的数据库命令802。基于该命令,DBMS 130在数据库150中员工表格的奖金列上生成新触发器。在将触发器添加到数据库150之后,DBMS执行触发器添加操作812以将条目添加到触发器目录表格260,用于应用程序版本204.7.3的新“奖金触发器”。在此示例中,“奖金触发器”将仅对与版本204.7.3或更高版本关联的应用程序执行。
图9是示出在添加数据库过程期间的示例过程目录表格的框图。在所示实施方案中,过程目录表格270包括具有指定存储在数据库150中的过程的元数据的以下列:过程ID972、模式ID 974和过程名称976。过程ID 972和过程名称976列例如存储分别指定各种数据库过程的标识符和名称的值。
在所示实施方案中,DBMS 130从应用程序120接收数据库命令902,指定将过程添加到数据库150。基于该命令,DBMS 130为数据库150中的特定模式(对应于根据图3中的模式目录表格220的应用程序版本204.7.4)生成称为“退休”的新过程。在将新过程添加到数据库150之后,DBMS 130执行过程添加操作912以将条目添加到过程目录表格270以用于模式ID 3的新的“退休”过程。在此示例中,过程“退休”仅对与版本204.7.4关联的应用程序的查询可见。
图10是示出在添加数据库统计期间的示例统计目录表格的框图。在所示实施方案中,统计目录表格280包括具有指定存储在数据库150中的不同数据库表格的统计的元数据的以下列:表格ID 532、宽度统计982、空统计984、开始版本590和停止版本592。宽度统计982和空统计984是可为给定数据库表格生成的统计类型的非限制性示例。宽度统计982例如可以指定给定数据库表格中非空条目的平均存储宽度(以字节为单位)。
在所示实施方案中,数据库命令1002包括用于将hr.employee数据库表格410的统计加载到数据库150中的操作。在执行该操作之后,DBMS 130执行统计添加操作1012以将条目添加到指定人力资源应用程序版本204.7.2的宽度和空统计的统计目录表格280。在此示例中,DBMS 130的查询优化器将只能为来自与版本204.7.2或较后版本关联的应用程序的查询使用空统计。
图11是示出示例数据库查询1102的框图。在所示实施方案中,系统1100包括应用程序120和DBMS 130。应用程序120将查询1102发送到DBMS 130。查询1102指定应用程序120当前在版本204.7.2下操作,并且因此,此查询请求访问此版本能够访问的数据库对象。此外,查询1102指定选择由hr.totalcomp过程440为名称为“John Doe”的员工生成的数据。
以下示例描述包括对图4中所示的数据库对象的引用。图11中所示的应用程序120可以是请求特定员工(John Doe)的报酬信息的人力资源应用程序。为了响应查询1102,DBMS 130访问系统目录140以确定过程“totalcomp”是否属于模式ID 1。基于确定它确实属于模式1,DBMS 130验证:1)模式ID 1是名称为“HR”的模式和2)模式ID 1是与应用程序版本204.7.2匹配的模式。基于该信息,DBMS 130访问数据库150以获得为John Doe计算总报酬(工资+奖金)的结果。
注意,可以通过访问hr.employee表格410以获得John Doe的工资和奖金信息、访问Hr.totalcomp过程440并且然后将这些值插入到过程440中或者通过访问hr.emp_name_comp索引430(如果此索引可被应用程序版本204.7.3访问的话——在本例中是如此)并且获得John Doe的工资416和奖金418列的总和432来满足查询1102。如果DBMS 130使用hr.emp_name_comp索引来响应查询1102,则该系统将首先访问索引目录表格250以确定从应用程序版本204.7.3开始可以访问hr.emp_name_comp索引。在这个示例场景中,DBMS 130然后检查hr.employee表格410的工资、奖金和姓名列对于版本204.7.3的应用程序是可见的。然后,DBMS确定emp_name和emp_name_comp索引对版本204.7.3的应用程序可见。基于此信息,DBMS 130然后将访问数据库索引430以获得应用程序120请求的数据。如果在应用程序版本204.7.4而不是204.7.3中添加了emp_name_comp索引,则DBMS 130将不得不放弃使用该索引。在所示实施方案中,在访问数据库150以获得John Doe的总报酬之后,DBMS 130将查询结果1104发送到应用程序120,指定John Doe的总报酬为$210,000。
示例方法
现在转向图12,其是示出根据一些实施方案的用于处理来自多个不同应用程序版本的数据库查询的示例方法1200的流程图。图12中所示的方法可以与本文公开的任何计算机电路、系统、设备、元件或组件以及其他设备结合使用。在各种实施方案中,所示的一些方法元素可以以与所示不同的顺序同时执行,或者可以被省略。还可以根据需要执行附加的方法元素。
在1210,在所示实施方案中,执行数据库管理系统(DBMS)的计算机系统来接收对数据库的数据库查询,其中数据库查询是从具有多个版本的应用程序的特定版本接收的,并且其中数据库查询指定特定版本。在一些实施方案中,在接收对数据库的数据库查询之前,计算机系统从应用程序的特定版本接收对应用程序的更新,其中更新与特定版本相关联。在一些实施方案中,计算机系统基于接收到的更新来改变一个或多个目录表格,其中改变包括改变存储在目录表格中的指定特定版本可以访问存储在数据库中的一个或多个数据库对象的元数据。在一些实施方案中,更新指示特定版本能够访问的数据库对象与应用程序的较早版本能够访问的数据库对象之间的一个或多个差异。
在一些实施方案中,DBMS可以接收未指定特定应用程序版本的数据库查询。例如,在一些情况下,DBMS可以知道当前应用程序版本,并且该已知应用程序版本用于接收查询,除非并且直到DBMS接收到指定不同的应用程序版本的SET命令(诸如图5A-8和10-11中所示的SET命令)。
在1220,计算机系统标识一个或多个目录表格,其中一个或多个目录表格包括存储版本访问信息的一个或多个版本信息列。在一些实施方案中,一个或多个版本信息列包括开始版本列和停止版本列,其指定存储在数据库中的一个或多个数据库对象能够访问的一系列应用程序版本。例如,开始版本列可以指示数据库对象开始可用的应用程序版本,并且停止版本列可以指示不可再访问数据库对象的应用程序版本。换言之,停止版本列可以指定不能访问数据库对象的应用程序版本(以及任何较后的应用程序版本)。在一些实施方案中,版本信息列指定用于一个或多个数据库对象的版本访问信息。在一些实施方案中,一种或多种数据库对象包括以下类型的对象中的一种或多种:模式、表格、列、索引、触发器、过程和统计。一个或多个数据库对象可以包括包括在该列表中的对象类型的各种组合中的任何一种,或以上列表中未明确列举的各种其他类型的数据库对象中的任何一种。例如,存储在数据库中的数据库对象可以包括模式对象和数据库对象、模式对象或表格对象但不是两者、所有七种类型的数据库对象或其任何组合。在一些实施方案中,目录表格中的一个是针对至少一个应用程序指定适用于该一个应用程序的模式的模式目录表格。在一些实施方案中,模式目录表格指定对应于不同应用程序的模式名称。
在一些实施方案中,数据库对象能够由单个应用程序版本访问。在其他实施方案中,数据库对象可以具有跨越应用程序的多个版本的生命周期。数据库对象的生命周期可以由开始和停止版本列指定。然而,在其他情况下,数据库对象的生命周期可以由使用区间数据类型的单个列指定。在这种情况下,单列指定了可以访问数据库对象的应用程序版本范围。
在一些实施方案中,版本信息列指定用于数据库的至少模式对象和数据库表格对象的版本访问信息,其中模式对象是表格的命名集合并且数据库表格对象是针对具有多个版本的应用程序在数据库中存储数据的特定类型的表格。在一些实施方案中,标识的目录表格包括以第一格式限定版本访问信息的第一目录表格以及以第二格式限定版本访问信息的第二目录表格。在一些实施方案中,第一格式将版本访问信息指定为特定应用程序版本,并且第二格式将版本访问信息指定为一系列应用程序版本。
在1230,由计算机系统来确定指示对应于数据库查询的一个或多个数据库对象可被应用程序的特定版本访问的用于数据库查询的版本访问信息。
在1240,计算机系统基于该确定来访问响应于数据库查询并且能够由应用程序的特定版本访问的一个或多个数据库对象。在一些实施方案中,用于数据库查询的版本访问信息对于应用程序的特定版本允许访问包括在一个或多个数据库对象中的数据的第一部分。例如,存储在hr.employee表格410(数据库对象的一个示例)中包括的工资列416中的信息可以被应用程序的特定版本访问。在一些实施方案中,响应于从应用程序的不同版本接收附加的数据库查询,计算系统基于应用程序的不同版本的版本访问信息访问包括在一个或多个数据库对象中的数据的第二部分。例如,存储在包括在hr.employee表格中的工资列416和奖金列418中的信息都可以由应用程序的不同版本访问。在一些实施方案中,基于接收到来自应用程序的两个不同版本的数据库查询和它们各自的版本访问信息,计算机系统访问不同的数据库对象。例如,计算系统可以确定hr.employee表格410(一个示例数据库对象)可被第一应用程序版本访问,而客户表格(另一个示例数据库对象)可被第二应用程序版本访问。
在一些实施方案中,计算机系统将索引表格添加到数据库。在一些实施方案中,基于添加索引表格,计算机系统向索引目录表格添加一行,该行包括用于数据库中一个或多个索引表格的元数据,其中该行包括开始版本列和停止版本列的相应值,其指定指示能够访问存储在数据库中的一个或多个数据库对象的应用程序的一个或多个版本的信息。
在一些实施方案中,应用程序的特定版本将对数据库的数据库查询传输到DBMS,其中数据库查询指定应用程序的特定版本。在一些实施方案中,数据库在一个或多个目录表格的一个或多个版本信息列中维护版本访问信息。在一些实施方案中,应用程序的特定版本从DBMS接收响应于数据库查询的数据。在一些实施方案中,基于指定应用程序的特定版本能够访问数据的版本访问信息从数据库中检索数据。在一些实施方案中,应用程序的特定版本向DBMS传输一个或多个数据库对象的更新,其中更新与特定版本相关联。在一些实施方案中,更新包括对存储在一个或多个目录表格中的元数据的改变。
示例计算设备
现在转向图13,描绘了根据一些实施方案的计算设备(其也可以被称为计算系统)1310的框图。计算设备1310可用于实现公开文本的各个部分。计算设备1310是可用作移动设备、服务器计算机系统、客户端计算机系统或实现公开文本的部分的任何其他计算系统的设备的一个示例。例如,计算设备1310可以实现计算系统110和/或DBMS 130。在一些情况下,计算设备1310执行应用程序130。
计算设备1310可以是任何合适类型的设备,包括但不限于个人计算机系统、台式计算机、膝上型计算机或笔记本计算机、移动电话、大型计算机系统、网络服务器、工作站或网络计算机。如图所示,计算设备1310包括处理单元1350、存储子系统1312和经由互连1360(例如,系统总线)耦合的输入/输出(I/O)接口1330。I/O接口1330可以耦合到一个或多个I/O设备1340。计算设备1310还包括网络接口1332,其可以耦合到网络1320用于与例如其他计算设备通信。
处理单元1350包括一个或多个处理器,并且在一些实施方案中,包括一个或多个协处理器单元。在一些实施方案中,处理单元1350的多个实例可以耦合到互连1360。处理单元1350(或处理单元1350内的每个处理器)可以包含高速缓存或其他形式的板载存储器。在一些实施方案中,处理单元1350可以被实现为通用处理单元,并且在其他实施方案中,它可以被实现为特殊用途处理单元(例如,ASIC)。通常,计算设备1310不限于任何特定类型的处理单元或处理器子系统。
如本文所用,术语“处理单元”指的是配置为执行操作的电路。因此,处理单元可以被实现为以多种方式实现的硬件电路。硬件电路可以包括例如定制的超大规模集成(VLSI)电路或门阵列、现成的半导体(诸如逻辑芯片、晶体管或其他分立组件)。处理单元也可以在可编程硬件器件中实现,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等。
存储子系统1312能够由处理单元1350使用(例如,存储能够由处理单元1350执行的指令和由处理单元1350使用的数据)。存储子系统1312可以由任何合适类型的物理存储介质实现,包括硬盘存储、软盘存储、可移动磁盘存储、闪存、随机存取存储器(RAM-SRAM、EDORAM、SDRAM、DDRSDRAM、RDRAM等)、ROM(PROM、EEPROM等)等等。在一些实施方案中,存储子系统1312可以仅由易失性存储器组成。存储子系统1312可以存储由计算设备1310使用处理单元1350可执行的程序指令,包括可执行以使计算设备1310实施本文公开的各种技术的程序指令。
根据各种实施方案,I/O接口1330可以表示一个或多个接口并且可以是配置为耦合到其他设备并与其他设备通信的各种类型的接口中的任一种。在一些实施方案中,I/O接口1330是从前端到一个或多个后端总线的桥接芯片。I/O接口1330可以经由一个或多个对应的总线或其他接口耦合到一个或多个I/O设备1340。I/O设备的示例包括存储设备(硬盘、光驱、可移动闪存驱动器、存储阵列、SAN或相关联的控制器)、网络接口设备、用户接口设备或其他设备(例如,图形、声音等)。
注意,图13的计算设备是用于展示所公开概念的一个实施方案。在其他实施方案中,计算设备的各个方面可以不同。例如,在一些实施方案中,可以包括附加组件或所示组件的多个实例。
本申请的主题的实现包括但不限于以下实施例1-20。
1.一种方法,包括:
由执行数据库管理系统(DBMS)的计算机系统来接收对数据库的数据库查询,其中所述数据库查询是从具有多个版本的应用程序的特定版本接收的,并且其中所述数据库查询指定所述特定版本;
由所述计算机系统来标识一个或多个目录表格,其中所述一个或多个目录表格包括存储版本访问信息的一个或多个版本信息列;
由所述计算机系统来确定用于所述数据库查询的版本访问信息指示对应于所述数据库查询的一个或多个数据库对象能够由所述应用程序的所述特定版本访问;以及
由所述计算机系统基于所述确定来访问响应于所述数据库查询并且能够由所述应用程序的所述特定版本访问的一个或多个数据库对象。
2.根据实施例1所述的方法,其中所述一个或多个版本信息列包括指定指示能够访问存储在所述数据库中的一个或多个数据库对象的一系列应用程序版本的信息的版本列。
3.根据实施例1所述的方法,其中所述版本信息列指定所述一个或多个数据库对象的版本访问信息,并且其中所述一个或多个数据库对象包括以下类型的对象中的一种或多种:模式、表格、列、索引、触发器、过程和统计。
4.根据实施例1所述的方法,还包括:
在接收对所述数据库的所述数据库查询之前:
由所述计算机系统从所述应用程序的所述特定版本接收对所述应用程序的更新,其中所述更新与所述特定版本相关联;以及
由所述计算机系统基于所述接收到的更新来改变所述一个或多个目录表格,其中所述改变包括改变存储在所述目录表格中的指定所述特定版本能够访问的存储在所述数据库中的一个或多个数据库对象的元数据。
5.根据实施例4所述的方法,其中所述更新指示所述特定版本能够访问的所述数据库对象与所述应用程序的较早版本能够访问的所述数据库对象之间的一个或多个差异。
6.根据实施例1所述的方法,其中所述目录表格中的一个是针对至少一个应用程序指定适用于所述一个应用程序的模式的模式目录表格。
7.根据实施例1所述的方法,其中用于所述数据库查询的所述版本访问信息允许对于所述应用程序的所述特定版本,访问包括在所述一个或多个数据库对象中的数据的第一部分,并且其中所述方法还包括:
响应于从所述应用程序的不同版本接收到附加的数据库查询,由所述计算系统基于用于所述应用程序的所述不同版本的版本访问信息,访问包括在所述一个或多个数据库对象中的数据的不同的第二部分。
8.根据实施例1所述的方法,其中所述标识的目录表格包括以第一格式限定版本访问信息的第一目录表格以及以第二格式限定版本访问信息的第二目录表格。
9.根据实施例8所述的方法,其中所述第一格式将版本访问信息指定为特定应用程序版本,并且其中所述第二格式将版本访问信息指定为一系列应用程序版本。
10.一种非暂时性计算机可读介质,其上存储有指令,所述指令能够使执行数据库管理系统(DBMS)的计算设备实现以下操作,包括:
接收对数据库的数据库查询,其中所述数据库查询是从具有多个版本的应用程序的特定版本接收的,并且其中所述数据库查询指定所述特定版本;
标识一个或多个目录表格,其中所述一个或多个目录表格包括存储版本访问信息的一个或多个版本信息列;
确定用于所述数据库查询的版本访问信息指示对应于所述数据库查询的一个或多个数据库对象能够由所述应用程序的所述特定版本访问;以及
基于所述确定来访问响应于所述数据库查询并且能够由所述应用程序的所述特定版本访问的数据。
11.根据实施例10所述的非暂时性计算机可读介质,其中所述一个或多个版本信息列包括开始版本列和停止版本列,其指定能够访问存储在所述数据库中的一个或多个数据库对象的一系列应用程序版本。
12.根据实施例10所述的非暂时性计算机可读介质,其中所述一个或多个版本信息列指定用于所述数据库的至少模式对象和数据库表格对象的版本访问信息,其中所述模式对象是表格的命名集合,并且所述数据库表格对象是针对具有所述多个版本的所述应用程序在所述数据库中存储数据的特定类型的表格。
13.根据实施例10所述的非暂时性计算机可读介质,其中所述操作还包括:
在接收对所述数据库的所述数据库查询之前:
从所述应用程序的所述特定版本接收对所述应用程序的更新,其中所述更新与所述特定版本相关联;以及
基于所述接收到的更新来改变所述一个或多个目录表格,其中所述改变包括改变存储在所述目录表格中的指定所述特定版本能够访问的存储在所述数据库中的一个或多个数据库对象的元数据。
14.根据实施例10所述的非暂时性计算机可读介质,其中所述目录表格中的一个是针对至少一个应用程序指定适用于所述一个应用程序的模式的模式目录表格,并且其中所述模式目录表格指定对应于不同应用程序的模式名称。
15.根据实施例10所述的非暂时性计算机可读介质,其中所述操作还包括:
向所述数据库添加索引表格;以及
基于添加所述索引表格,向索引目录表格添加一行,所述行包括用于所述数据库中的一个或多个索引表格的元数据,其中所述行包括开始版本列和停止版本列的相应值,其指定指示能够访问存储在所述数据库中的一个或多个数据库对象的所述应用程序的一个或多个版本的信息。
16.根据实施例10所述的非暂时性计算机可读介质,其中所述数据库查询的所述版本访问信息允许对于所述应用程序的所述特定版本,访问包括在所述一个或多个数据库对象中的数据的第一部分,以及其中所述操作还包括:
响应于从所述应用程序的不同版本接收附加的数据库查询,基于用于所述应用程序的所述不同版本的版本访问信息,访问包括在所述一个或多个数据库对象中的数据的不同的第二部分。
17.一种方法,包括:
由应用程序的特定版本向数据库管理系统(DBMS)传输,对数据库的数据库查询,其中所述数据库查询指定所述应用程序的所述特定版本,并且其中所述数据库在一个或多个目录表格的一个或多个版本信息列中维护版本访问信息;以及
由所述应用程序的所述特定版本从所述DBMS接收响应于所述数据库查询的数据,其中所述数据是基于指定一个或多个数据库对象能够由所述应用程序的所述特定版本访问的所述版本访问信息从所述数据库中检索的。
18.根据实施例17所述的方法,还包括:
由所述应用程序的所述特定版本向所述DBMS传输对一个或多个数据库对象的更新,其中所述更新与所述特定版本相关联,并且其中所述更新包括对存储在所述一个或多个目录表格中的元数据的改变。
19.根据实施例17所述的方法,其中所述目录表格中的一个是针对至少一个应用程序指定适用于所述一个应用程序的模式的模式目录表格。
20.根据实施例17所述的方法,其中所述一个或多个版本信息列包括指定指示能够访问存储在所述数据库中的一个或多个数据库对象的一系列应用程序版本的信息的版本列。
尽管上面已经描述了特定实施方案,但是这些实施方案并不旨在限制公开文本的范围,即使在仅针对特定特征描述了单个实施方案的情况下也是如此。除非另有说明,否则公开文本中提供的特征示例旨在为说明性而非限制性的。以上描述旨在涵盖对受益于公开文本的本领域技术人员清楚的此类替代、修改和等效方案。
公开文本的范围包括本文公开的任何特征或特征的组合(明确地或隐含地)或其任何概括,无论其是否缓解了本文所解决的任何或所有问题。因此,在本申请(或要求其优先权的申请)的审查过程中,可以对任何这样的特征组合提出新的权利要求。特别地,参考所附权利要求,来自从属权利要求的特征可以与独立权利要求的特征组合,并且来自各个独立权利要求的特征可以以任何适当的方式组合,而不仅仅是以所附权利要求中列举的特定组合。
Claims (15)
1.一种方法,包括:
由执行数据库管理系统(DBMS)的计算机系统接收对数据库的数据库查询,其中所述数据库查询是从具有多个版本的应用程序的特定版本接收的,并且其中所述数据库查询指定所述特定版本;
由所述计算机系统标识一个或多个目录表格,其中所述一个或多个目录表格包括存储版本访问信息的一个或多个版本信息列;
由所述计算机系统确定用于所述数据库查询的版本访问信息指示对应于所述数据库查询的一个或多个数据库对象能够由所述应用程序的所述特定版本访问;和
由所述计算机系统基于所述确定而访问响应于所述数据库查询并且能够由所述应用程序的所述特定版本访问的一个或多个数据库对象。
2.根据权利要求1所述的方法,其中所述一个或多个版本信息列包括指定信息的版本列,所述信息指示能够访问存储在所述数据库中的一个或多个数据库对象的一系列应用程序版本。
3.根据权利要求1或2所述的方法,其中所述版本信息列指定所述一个或多个数据库对象的版本访问信息,并且其中所述一个或多个数据库对象包括下列类型的对象中的一种或多种:模式、表格、列、索引、触发器、过程和统计。
4.根据权利要求1至3中任一项所述的方法,还包括:
在所述接收对所述数据库的数据库查询之前:
由所述计算机系统从所述应用程序的所述特定版本接收对所述应用程序的更新,其中所述更新与所述特定版本相关联;和
由所述计算机系统基于接收到的更新而改变所述一个或多个目录表格,其中所述改变包括改变存储在所述目录表格中的元数据,所述元数据指定所述特定版本能够访问的存储在所述数据库中的一个或多个数据库对象。
5.根据权利要求4所述的方法,其中所述更新指示所述特定版本能够访问的数据库对象与所述应用程序的较早版本能够访问的数据库对象之间的一个或多个差异。
6.根据权利要求1至5中任一项所述的方法,其中所述目录表格中的一个是模式目录表格,其针对至少一个应用程序指定适用于所述这个应用程序的模式。
7.根据权利要求1至6中任一项所述的方法,其中用于所述数据库查询的版本访问信息允许对于所述应用程序的所述特定版本访问包括在所述一个或多个数据库对象中的数据的第一部分,并且其中所述方法还包括:
响应于从所述应用程序的不同版本接收附加的数据库查询,由所述计算系统基于用于所述应用程序的所述不同版本的版本访问信息,访问包括在所述一个或多个数据库对象中的数据的不同的第二部分。
8.根据权利要求1至7中任一项所述的方法,其中标识的目录表格包括以第一格式限定版本访问信息的第一目录表格和以第二格式限定版本访问信息的第二目录表格。
9.根据权利要求8所述的方法,其中所述第一格式将版本访问信息指定为特定应用程序版本,并且其中所述第二格式将版本访问信息指定为一系列应用程序版本。
10.一种计算机系统,包括:
至少一个处理器;和
存储器,其上存储有程序指令,所述程序指令能够由所述至少一个处理器执行以执行权利要求1至9中任一项所述的方法。
11.一种非暂时性计算机可读介质,其上存储有指令,所述指令能够使得执行数据库管理系统(DBMS)的计算设备实现包括如下的操作:
接收对数据库的数据库查询,其中所述数据库查询是从具有多个版本的应用程序的特定版本接收的,并且其中所述数据库查询指定所述特定版本;
标识一个或多个目录表格,其中所述一个或多个目录表格包括存储版本访问信息的一个或多个版本信息列;
确定用于所述数据库查询的版本访问信息指示对应于所述数据库查询的一个或多个数据库对象能够由所述应用程序的所述特定版本访问;和
基于所述确定而访问响应于所述数据库查询并且能够由所述应用程序的所述特定版本访问的数据。
12.根据权利要求11所述的非暂时性计算机可读介质,其中所述一个或多个版本信息列包括开始版本列和停止版本列,其指定能够访问存储在所述数据库中的一个或多个数据库对象的一系列应用程序版本。
13.根据权利要求11或12所述的非暂时性计算机可读介质,其中所述一个或多个版本信息列指定至少用于所述数据库的模式对象和数据库表格对象的版本访问信息,其中所述模式对象是表格的命名集合,并且所述数据库表格对象是针对具有所述多个版本的所述应用程序在所述数据库中存储数据的特定类型的表格。
14.根据权利要求11至13中任一项所述的非暂时性计算机可读介质,其中所述操作还包括:
在接收对所述数据库的数据库查询之前:
从所述应用程序的所述特定版本接收对所述应用程序的更新,其中所述更新与所述特定版本相关联;和
基于接收到的更新而改变所述一个或多个目录表格,其中所述改变包括改变存储在所述目录表格中的元数据,所述元数据指定所述特定版本能够访问的存储在所述数据库中的一个或多个数据库对象。
15.根据权利要求11至14中任一项所述的非暂时性计算机可读介质,其中所述目录表格中的一个是模式目录表格,其针对至少一个应用程序指定适用于所述这个应用程序的模式,并且其中所述模式目录表格指定对应于不同应用程序的模式名称。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/866,331 US11397714B2 (en) | 2020-05-04 | 2020-05-04 | Database implementation for different application versions |
US16/866,331 | 2020-05-04 | ||
PCT/US2021/015025 WO2021225646A1 (en) | 2020-05-04 | 2021-01-26 | Database implementation for different application versions |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114207577A true CN114207577A (zh) | 2022-03-18 |
Family
ID=74673331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180004834.8A Pending CN114207577A (zh) | 2020-05-04 | 2021-01-26 | 用于不同应用程序版本的数据库实现 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11397714B2 (zh) |
EP (1) | EP3991061A1 (zh) |
JP (1) | JP2023525708A (zh) |
CN (1) | CN114207577A (zh) |
AU (1) | AU2021267471B2 (zh) |
CA (1) | CA3173267A1 (zh) |
WO (1) | WO2021225646A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11681698B2 (en) | 2021-05-10 | 2023-06-20 | Argo AI, LLC | Systems and methods for atomic publication of distributed writes to a distributed data warehouse |
US11853324B2 (en) | 2021-05-10 | 2023-12-26 | Argo AI, LLC | Systems and methods for atomic publication of distributed writes to a distributed data warehouse |
US11755621B2 (en) * | 2021-05-10 | 2023-09-12 | Argo AI, LLC | Systems and methods for atomic publication of distributed writes to a distributed data warehouse |
US20220398232A1 (en) * | 2021-06-14 | 2022-12-15 | Microsoft Technology Licensing, Llc | Versioned metadata using virtual databases |
US11755311B1 (en) * | 2023-02-15 | 2023-09-12 | Snowflake Inc. | Versioned schema |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5857182A (en) | 1997-01-21 | 1999-01-05 | International Business Machines Corporation | Database management system, method and program for supporting the mutation of a composite object without read/write and write/write conflicts |
US5822748A (en) | 1997-02-28 | 1998-10-13 | Oracle Corporation | Group by and distinct sort elimination using cost-based optimization |
US5903888A (en) | 1997-02-28 | 1999-05-11 | Oracle Corporation | Method and apparatus for using incompatible types of indexes to process a single query |
US5963934A (en) | 1997-06-30 | 1999-10-05 | International Business Machines Corporation | Intelligent compilation of scripting language for query processing systems |
US5987455A (en) | 1997-06-30 | 1999-11-16 | International Business Machines Corporation | Intelligent compilation of procedural functions for query processing systems |
CA2248393A1 (en) | 1998-09-24 | 2000-03-24 | Ibm Canada Limited-Ibm Canada Limitee | Identification of vacuous predicates in computer programs |
US6587854B1 (en) | 1998-10-05 | 2003-07-01 | Oracle Corporation | Virtually partitioning user data in a database system |
US6421658B1 (en) | 1999-07-30 | 2002-07-16 | International Business Machines Corporation | Efficient implementation of typed view hierarchies for ORDBMS |
US6636846B1 (en) | 2000-04-28 | 2003-10-21 | International Business Machines Corporation | Method for providing a system maintained materialized functionally dependent column for a database management system |
US20020143764A1 (en) * | 2001-04-03 | 2002-10-03 | Martin Andrew R. | Data management system and method for intercepting and changing database instructions between a database back end and an application front end |
US7107285B2 (en) * | 2002-03-16 | 2006-09-12 | Questerra Corporation | Method, system, and program for an improved enterprise spatial system |
CA2384174A1 (en) | 2002-04-29 | 2003-10-29 | Ibm Canada Limited-Ibm Canada Limitee | Classification of data for insertion into a database |
US7349910B2 (en) | 2004-08-20 | 2008-03-25 | International Business Machines Corporation | Method for inserting records into a database |
US8005868B2 (en) | 2008-03-07 | 2011-08-23 | International Business Machines Corporation | System and method for multiple distinct aggregate queries |
US8713038B2 (en) | 2009-04-02 | 2014-04-29 | Pivotal Software, Inc. | Integrating map-reduce into a distributed relational database |
US8464242B2 (en) * | 2009-07-08 | 2013-06-11 | Tranxition Corporation | Virtualization of configuration settings |
US8762333B2 (en) | 2009-07-08 | 2014-06-24 | Pivotal Software, Inc. | Apparatus and method for read optimized bulk data storage |
US8768973B2 (en) | 2010-05-26 | 2014-07-01 | Pivotal Software, Inc. | Apparatus and method for expanding a shared-nothing system |
US9286303B1 (en) | 2011-12-22 | 2016-03-15 | Emc Corporation | Unified catalog service |
US8738569B1 (en) | 2012-02-10 | 2014-05-27 | Emc Corporation | Systematic verification of database metadata upgrade |
US8745445B1 (en) | 2012-02-10 | 2014-06-03 | Pivotal Software, Inc. | Mirrored database upgrade using state machine |
US8990190B2 (en) | 2012-11-16 | 2015-03-24 | Apollo Education Group, Inc. | Contextual help article provider |
US9805053B1 (en) | 2013-02-25 | 2017-10-31 | EMC IP Holding Company LLC | Pluggable storage system for parallel query engines |
US9542439B1 (en) | 2013-06-14 | 2017-01-10 | Emc Corporation | Simplified query language for accessing metadata |
US9734186B1 (en) | 2013-06-28 | 2017-08-15 | EMC IP Holding Co., LLC | Method of testing coverage of meta data access patterns within a distributed relational system |
US10747743B2 (en) * | 2016-06-30 | 2020-08-18 | International Business Machines Corporation | On-demand database catalog upgrade |
US10261893B2 (en) | 2016-12-05 | 2019-04-16 | Salesforce.Com, Inc. | Implicit coordination of deployment and regression testing across data centers and system clusters |
US10901857B1 (en) * | 2017-04-26 | 2021-01-26 | EMC IP Holding Company LLC | Application intelligence with virtual volume data protection |
US10909092B2 (en) | 2018-06-29 | 2021-02-02 | Salesforce.Com, Inc. | Automated database creation |
US11341126B2 (en) | 2018-07-24 | 2022-05-24 | MachEye, Inc. | Modifying a scope of a canonical query |
US10810248B2 (en) | 2018-09-24 | 2020-10-20 | Salesforce.Com, Inc. | Upgrading a database from a first version to a second version |
-
2020
- 2020-05-04 US US16/866,331 patent/US11397714B2/en active Active
-
2021
- 2021-01-26 JP JP2022567071A patent/JP2023525708A/ja active Pending
- 2021-01-26 EP EP21707460.8A patent/EP3991061A1/en active Pending
- 2021-01-26 CN CN202180004834.8A patent/CN114207577A/zh active Pending
- 2021-01-26 AU AU2021267471A patent/AU2021267471B2/en active Active
- 2021-01-26 CA CA3173267A patent/CA3173267A1/en active Pending
- 2021-01-26 WO PCT/US2021/015025 patent/WO2021225646A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP3991061A1 (en) | 2022-05-04 |
CA3173267A1 (en) | 2021-11-11 |
JP2023525708A (ja) | 2023-06-19 |
US20210342322A1 (en) | 2021-11-04 |
AU2021267471B2 (en) | 2023-06-15 |
WO2021225646A1 (en) | 2021-11-11 |
US11397714B2 (en) | 2022-07-26 |
AU2021267471A1 (en) | 2022-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11030189B2 (en) | Maintaining up-to-date materialized views for time-series database analytics | |
US11314716B2 (en) | Atomic processing of compound database transactions that modify a metadata entity | |
CN114207577A (zh) | 用于不同应用程序版本的数据库实现 | |
US10585876B2 (en) | Providing snapshot isolation to a database management system | |
US20240134861A1 (en) | System and method for dynamic database split generation in a massively parallel or distributed database environment | |
US10089377B2 (en) | System and method for data transfer from JDBC to a data warehouse layer in a massively parallel or distributed database environment | |
US10180973B2 (en) | System and method for efficient connection management in a massively parallel or distributed database environment | |
US10380114B2 (en) | System and method for generating rowid range-based splits in a massively parallel or distributed database environment | |
US10528596B2 (en) | System and method for consistent reads between tasks in a massively parallel or distributed database environment | |
US11544268B2 (en) | System and method for generating size-based splits in a massively parallel or distributed database environment | |
US7707219B1 (en) | System and method for transforming a database state | |
US10078684B2 (en) | System and method for query processing with table-level predicate pushdown in a massively parallel or distributed database environment | |
US10089357B2 (en) | System and method for generating partition-based splits in a massively parallel or distributed database environment | |
US20220229822A1 (en) | Data processing method and device for distributed database, storage medium, and electronic device | |
US11714794B2 (en) | Method and apparatus for reading data maintained in a tree data structure | |
US20190340272A1 (en) | Systems and related methods for updating attributes of nodes and links in a hierarchical data structure | |
US20050234842A1 (en) | System and method for increasing system resource availability in database management systems | |
US11995084B1 (en) | Database system for querying time-series data stored in a tiered storage using a cloud platform | |
US20230315718A1 (en) | Executing transactions on distributed databases | |
Alapati et al. | Optimizing Instance Memory |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Shuo Power Co. Address before: California, USA Applicant before: SALESFORCE.COM, Inc. |