CN112540982B - 具有可更新逻辑表指针的虚拟数据库表 - Google Patents
具有可更新逻辑表指针的虚拟数据库表 Download PDFInfo
- Publication number
- CN112540982B CN112540982B CN202010951759.3A CN202010951759A CN112540982B CN 112540982 B CN112540982 B CN 112540982B CN 202010951759 A CN202010951759 A CN 202010951759A CN 112540982 B CN112540982 B CN 112540982B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- virtual
- schema
- computing system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 87
- 230000015654 memory Effects 0.000 claims description 32
- 238000005192 partition Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 11
- 239000000872 buffer Substances 0.000 description 37
- 238000007726 management method Methods 0.000 description 27
- 230000008859 change Effects 0.000 description 26
- 230000010076 replication Effects 0.000 description 25
- 238000004891 communication Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 230000002085 persistent effect Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- WVCHIGAIXREVNS-UHFFFAOYSA-N 2-hydroxy-1,4-naphthoquinone Chemical compound C1=CC=C2C(O)=CC(=O)C(=O)C2=C1 WVCHIGAIXREVNS-UHFFFAOYSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000000969 carrier Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/256—Integrating or interfacing systems involving database management systems in federated or virtual 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/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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述了用于实现虚拟表模式的技术和解决方案。虚拟表模式包括逻辑指针,所述逻辑指针用于确定包括数据并根据虚拟表模式定义的表。分配给逻辑指针的值可用于对准不同位置处的表,诸如在联合数据库系统中或在中央计算系统的数据库管理系统的高速缓存中的表。当请求与虚拟表相关联的数据时,或者在接收请求之前,可以将数据存储在高速缓存中的表中。可以更新逻辑指针以引用高速缓存。如果高速缓存已满,则可以从高速缓存中移除表,并且可以更新逻辑指针以引用联合数据库系统处的表。
Description
技术领域
本公开一般涉及管理数据储存器(诸如由数据库管理系统管理的数据储存器)中的数据。特定实施方式涉及具有可用于引用不同位置的表的逻辑指针的表模式(schema)。
背景技术
企业越来越普遍地将数据存储在多种系统中,包括存储在一个或多个本地系统以及一个或多个云系统中。所述系统可以具有不同的类型——诸如以不同的格式存储数据(例如,关系数据库与存储JAVA文档的数据库)或使用不同的数据库管理系统(例如,使用由不同供应商提供的软件和/或硬件)存储数据。即使在以相同格式和使用相同供应商的软件存储数据的情况下,在特定位置存储什么数据以及用于存储该数据的模式也可能存在差异。
为了帮助解决这些问题,已经创建了联合数据库。与分布式数据库(它是涉及多个计算机节点(例如,一个主节点和一个或多个从属节点)的单个数据库管理系统)相反,联合数据库包括从可通过通用平台或界面获得的多个不同的数据库管理系统(或其他数据源)制造数据的功能。然而,联合数据库系统中的数据通常需要从多个不同的数据源中检索。即使在单个查询中,也可能需要来自不同数据源的数据。尽管联合数据库可以使此类数据可用,但是将请求发送到远程系统、由远程系统检索数据、将数据发送到联合主机、处理查询以及返回查询结果的过程可能是耗时的并且资源密集的(例如使用网络带宽)。因此,存在改进的空间。
发明内容
提供本发明内容以简化形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
描述了用于实现虚拟表模式的技术和解决方案。虚拟表模式包括逻辑指针,所述逻辑指针用于对准(target)包括数据并根据虚拟表模式定义的表。分配给逻辑指针的值可用于对准诸如在联合数据库系统中或在中央计算系统的数据库管理系统的高速缓存(cache)中的不同位置的表。当请求与虚拟表相关联的数据时,或者在接收到请求之前,可以将数据存储在高速缓存中的表中。可以更新逻辑指针以引用高速缓存。如果高速缓存已满,则可以从高速缓存中删除该表,并且可以更新逻辑指针以引用联合数据库系统处的表。
在一个方面,提供了一种用于更新用于虚拟表模式的逻辑指针的方法。在数据字典中为第一虚拟表创建第一模式。第一模式包括第一逻辑指针,第一逻辑指针指定具有第一数据并根据第一模式定义的第一表的第一位置。第一位置在第一联合数据库系统中。
第一数据的至少一部分被接收。在托管数据库管理系统的中央计算系统的高速缓存中创建第二表。根据第一模式定义第二表。第一数据的所接收的至少一部分被存储在第二表中。第二值被分配给第一逻辑指针。第二值标识第二表在高速缓存中的位置
在另一方面,提供了另一种用于更新用于虚拟表模式的逻辑指针的方法。在数据字典中创建第一表定义。第一表定义包括标识第一位置处的第一表的第一数据元素。根据第一表定义来定义第一表。第一位置不在托管包括数据字典的数据库管理系统的中央计算系统的高速缓存中。
接收存储在第一表中的数据的至少一部分。在高速缓存中创建第二表。根据第一表定义来定义第二表。数据的所接收的至少一部分被存储在第二表中。第二值被分配给第一数据元素。第二值标识第二表在高速缓存中的位置。
在另一方面,提供了一种用于更新用于虚拟表模式的逻辑指针的附加方法。在数据字典中创建用于第一虚拟表的第一模式。第一模式包括第一逻辑指针,第一逻辑指针指定具有第一数据并根据第一模式定义的第一表的第一位置。第一位置不在托管包括数据字典的数据库管理系统的中央计算系统的高速缓存中。
第一数据的至少一部分被接收。在高速缓存中创建第二表。根据第一模式定义第二表。第一数据的所接收的至少一部分被存储在第二表中。第二值被分配给第一逻辑指针。第二值标识第二表在高速缓存中的位置。
本公开还包括被配置为执行或包括用于执行上述方法的指令的计算系统和有形的非暂时性计算机可读存储介质。如本文所述,各种其他特征和优点可以根据需要并入技术中。
附图说明
图1是示出具有虚拟表模式的计算架构的图,所述虚拟表模式具有可以对准远程表或副本表的逻辑指针。
图2是示出具有虚拟表模式的计算架构的图,所述虚拟表模式具有可以对准远程表或高速缓存的表的逻辑指针。
图3是示出具有虚拟表模式的计算架构的图,所述虚拟表模式具有可以对准远程表、副本表或高速缓存的表的逻辑指针。
图4是示出具有虚拟表模式的计算架构的图,所述虚拟表模式具有可以对准远程表、副本表或高速缓存的表的逻辑指针,并且在该计算架构中副本表可以存储在数据湖(data lake)中。
图5是示出具有虚拟表模式的计算架构的图,所述虚拟表模式具有可以对准远程表、副本表或高速缓存的表的逻辑指针,并且在该计算架构中副本表可以存储在动态储存器中。
图6是示出具有虚拟表模式的计算架构的图,所述虚拟表模式具有可以对准远程表、副本表或高速缓存的表的逻辑指针,并且在该计算架构中副本表可以存储在动态储存器中,并可以具有在动态储存器中可独立管理的子集。
图7是示出其中多个虚拟表模式可以对准远程表或者可以共享副本表的情形的图。
图8是示出当用于虚拟表模式的逻辑指针被更新以对准不同的表时用于重新编译查询计划的情形的图。
图9A和图9B提供示例列定义,所述示例列定义可以与可用于管理虚拟表模式或与虚拟表模式一起使用的副本表的数据库工件一起使用。
图10提供用于执行与虚拟表模式相关的动作的示例查询语言语句。
图11是示出用于更新虚拟表模式的逻辑指针以对准副本表的方法中的操作的流程图。
图12是示出用于将虚拟表模式的逻辑指针从对准副本表更新的方法中的操作的流程图。
图13是示出在用于确定何时在对准远程表和对准副本表之间更新虚拟表模式的逻辑指针的方法中的操作的流程图。
图14是示出用于确定是否应将远程表数据存储在高速缓存中的方法中的操作的流程图。
图15是示出用于管理动态储存器中的副本表数据的方法中的操作的流程图。
图16是示出用于管理副本表数据是存储在主储存器还是动态储存器中的方法中的操作的流程图。
图17-图19是示出所公开的用于更新虚拟表模式的逻辑指针的实施例中的操作的流程图。
图20是其中可以实现一些所描述的实施例的示例计算系统的图。
图21是可以与本文描述的技术结合使用的示例云计算环境。
具体实施方式
示例1–概述
企业越来越普遍地将数据存储在多种系统中,包括存储在一个或多个本地系统以及一个或多个云系统中。所述系统可以具有不同的类型——诸如以不同的格式存储数据(例如,关系数据库与存储JAVA文档的数据库)或使用不同的数据库管理系统(例如,使用由不同供应商提供的软件和/或硬件)存储数据。即使在以相同格式和使用相同供应商的软件存储数据的情况下,在特定位置存储什么数据以及用于存储该数据的模式也可能存在差异。
为了帮助解决这些问题,已经创建了联合数据库。与分布式数据库(它是涉及多个计算机节点(例如,一个主节点和一个或多个从属节点)的单个数据库管理系统)相反,联合数据库包括从可通过通用平台或界面获得的多个不同的数据库管理系统(或其他数据源)制造数据的功能。然而,联合数据库系统中的数据通常需要从多个不同的数据源中检索。即使在单个查询中,也可能需要来自不同数据源的数据。尽管联合数据库可以使此类数据可用,但是将请求发送到远程系统、由远程系统检索数据、将数据发送到联合主机、处理查询以及返回查询结果的过程可能是耗时的并且资源密集的(例如使用网络带宽)。
此外,如果期望更改数据的位置,则可能有必要显着更改数据库系统以及已经基于特定数据库模式准备的查询。例如,如果要在联合主机(federation master)(例如,托管充当联合主机的数据库管理系统的中央计算系统)处使用联合数据库内存在的表的副本,则远程表的数据库工件(例如,数据字典条目)可能需要被丢弃,并且可能需要为数据库管理系统中的副本表添加表模式。
引用位于联合数据库系统上的表的查询可能需要被重写和重新编译。因此,一旦已经创建了数据库模式,包括确定哪些表将可在本地访问以及哪些表将被远程访问,则修改数据库模式可能非常困难且耗时。因此,如果被经常访问的数据或与高度重要的查询相关联的数据位于远程系统上,则某些查询可能比期望的更慢地执行。相反,在联盟主机上维护很少使用或优先级低的数据可能会导致过高的成本(例如,如果企业向第三方付费以托管基于云的数据库系统的数据),或者可能会导致不必要的设备支出(如果企业托管其自己的数据库系统(云数据库系统或其他数据库系统))。因此,存在改进的空间。
本公开提供了可以帮助解决上述问题的技术。在特定实施例中,本公开提供虚拟表,其中虚拟表可以由数据库模式对象(例如,数据字典中的条目)表示,所述数据库模式对象包括指向应与表定义/模式对象一起使用的表(例如,包含与表模式相关联的实际数据)的逻辑指针。逻辑指针可以在两个或多个位置之间动态更新。位置可以包括远程计算系统(可以是联合数据库)上的表、从远程计算系统上的远程表复制数据的副本表、本地表或高速缓存的表。此外,对于副本表,可以改变副本的复制类型或位置,包括改变副本表是本地存储在主存储器中、本地存储在磁盘上、在主存储器和磁盘访问之间本地存储和管理、还是存储在另一远程计算系统(诸如,数据湖)上。
当表(与字典对象相关联的数据)的位置改变时,所述位置可以在字典对象中更新。因此,对表位置的改变不必导致对数据库模式的改变——可以更新表模式(例如,经由ALTER TABLE DDL语句),而无需删除和添加表模式。查询优化器可以重新编译涉及此类虚拟表的查询计划,以解决表位置中的改变。在一些情况下,对表模式定义的改变可能导致使用受影响的表模式的存储的查询计划的自动重新编译。这样,可以使用更新的查询计划来执行未来的查询。在其他情况下,查询计划不会自动重新编译,但是会在事件(诸如执行查询的请求)发生时重新编译。执行查询的请求可以生成已编译查询计划已过期的指示,在这种情况下,可以重新编译然后执行该查询。
在一种情况下,可能希望将表从经由联合来远程访问改变为具有所述表的本地(或至少是没有联合的情况下本机可用的表)副本。然而,一旦收到将远程(或联合)表更新为副本表的请求,就可能需要花费一些时间让副本表变得可用(例如,要从远程系统传输并存储在副本表中的数据)。因此,本公开的各方面提供了可以更新表的数据字典条目以指示所述表是副本表,但是所述条目指向的表不改变,直到副本表可用为止。在其他情况下,查询被拒绝或保留,直到副本可用为止。
在另一方面,本公开提供可由多个模式共享的副本表,包括由多租户数据库系统(包括以多租户方式操作的云数据库系统)中用于不同用户的模式共享的副本表。在一些情况下,当虚拟表的模式指向远程表时,所有用户(例如,租户)都可以访问所述远程表。由于无论如何都远程访问数据,因此维护对远程表的单独引用不会造成性能损失。如果将虚拟表的模式改变为指向副本表,则所有数据库模式都可以指向副本表。也就是说,不必为每个数据库模式都创建副本表,并且至少在一些情况下,即使对准副本表的改变是由单个用户请求的或者以单个用户的名义请求的,所有数据库模式也可以使用所述副本表。
然而,其他配置也是可能的。例如,在一种情形下,当未对副本表进行任何改变(例如,所述表为只读)时,用户可以共享副本表。如果用户尝试写入表,则可以更新所述用户使用的虚拟表的模式,使其指向与其他用户不同的表,根据实施方式或配置的不同,所述不同的表可以是远程表或副本表。在其他情况下,当请求创建用于虚拟表的副本表时,可以在请求中指定不共享副本表。
在一些实施方式中,当选择要复制的虚拟表时,复制整个表。在其他情况下,仅复制该表的一部分,而其余部分可以通过其他方式访问。例如,可以选择特定的表分区、列或列值进行复制。副本表为访问与复制的数据相关联的数据的请求提供服务。可以以另一种方式来为访问未复制的数据的请求提供服务,诸如通过联合(例如,从远程数据源检索数据,包括使用德国瓦尔多夫的SAP SE的智能数据访问协议)或从高速缓存中检索表数据。
通常,用户无法直接访问虚拟表模式使用的副本表。另外,在一些情况下,即使在创建了副本表之后,也可能希望允许用户直接访问远程系统上的远程表(充当副本表的源)。因此,可以提供查询语言的命令来强制访问远程表,而不是使用副本表。例如,可以将以下命令添加到SQL语句(例如,诸如使用SELECT语句的查询):NO_VIRTUAL_TABLE_REPLICA。类似地,可以提供会话级命令或变量,以指定对于指向副本表的虚拟表模式,会话期间的任何查询语言操作都应使用远程表而不是副本表。例如,VIRTUAL_TABLE_REPLICA会话变量可以存储布尔值,所述布尔值指示是否应使用副本表。布尔值可以具有默认值,例如TRUE(真)(即应使用副本表)。
用户(取决于实施方式,可以是最终用户、数据库管理员、云系统的管理员等)在一些情况下可以决定用于虚拟表模式的目标表是什么,并且可以决定何时以及如何改变命名(designation)。在其他情况下,数据库系统可以自动确定用于虚拟表模式的目标表的类型,以及何时以及如何更新目标表类型。例如,数据库管理系统可以确定用于执行特定查询的执行参数何时超过阈值。如果超过阈值,则可以确定查询是否涉及指向远程表的虚拟表。如果是这样,并且远程操作对查询执行时间有很大影响,则可以创建副本表,并且可以更新虚拟表模式以指向副本表。如果保存副本表的系统上的空间成为问题,则数据库系统可以分析虚拟表以确定是否应将任何目标表从副本表转换为远程表。例如,诸如最近最少使用(LRU)算法之类的高速缓存管理技术可以确定将哪些虚拟表从指向副本表转换为指向远程表(例如,其目标副本表最近最少使用的虚拟表可以被转换为指向远程表,并移除副本表)。
所公开的技术可以提供许多优点。通过允许用户选择虚拟表是对准远程表还是副本表(或高速缓存的表),用户可以选择与远程表相关联的更长查询时间是否可以接受。也就是说,出于成本原因或基于其他考虑因素(例如,希望在远程系统上而不是在维护虚拟表的中央计算系统上本地维护用于特定数据的源表),可能不希望将所有数据复制到中央计算系统或集成来自多个源的数据的其他系统。成本也可能与传输数据相关联,因此在某些时候,将复制的数据存储在云系统中可能比每次访问数据都从远程(源)系统发送数据更具成本效益。同样,用户可以选择(或配置自动选择的算法)副本表数据是应维护在存储器中、(在内存缓冲器和磁盘储存器之间迁移数据的)动态储存器中、磁盘中还是数据湖中。
示例2–具有远程目标表或副本目标表的虚拟表的示例架构
图1示出了其中可以实现所公开的实施例的架构100。图1的基本架构100包括对于所公开的技术的不同实施例可以是共同的许多特征,包括可以访问可以是云计算系统的中央计算系统110的一个或多个应用108。中央计算系统110可以通过提供对存储在一个或多个远程数据库系统112中的数据的访问来起到这样的作用。反过来,一个或多个应用114可以访问远程数据库系统112。在一些情况下,应用114可以也可以是应用108。也就是说,某些应用只能(直接)访问中央计算系统110中的数据,某些应用只能访问远程数据库系统112中的数据,而其他应用可以访问中央计算系统中的数据和远程数据库系统中的数据两者。
本文所述的其他示例可以包括除应用108、114、远程数据库系统112和中央计算系统110之外的组件。此外,所述架构的组件108、110、112、114,尤其是中央计算系统110,可以如将进一步描述的在不同示例之间不同地配置。
中央计算系统110可以包括查询处理器120。查询处理器120可以包括多个组件,包括查询优化器122和查询执行器124。查询优化器122可以负责确定用于使用中央计算系统110执行查询的查询执行计划126。由查询优化器122生成的查询计划126可以包括逻辑计划(指示例如要在查询中执行的操作的顺序(例如,联接、投影))和物理计划(用于实现这样的操作)两者。一旦由查询优化器122开发,查询计划126就可以由查询执行器124执行。查询计划126可以作为高速缓存的查询计划130被存储在查询计划高速缓存128中。当重新提交查询以执行时,查询处理器120可以确定是否存在针对所述查询的高速缓存的查询计划130。如果是这样,则高速缓存的查询计划130可以由查询执行器124执行。如果不是这样,则由查询优化器122生成查询计划126。在一些情况下,可以使高速缓存的查询计划130无效,诸如如果对数据库模式或者查询所使用的数据库模式的至少一部分(例如,表或视图)进行了改变。
数据字典134可以为中央计算系统110维护一个或多个数据库模式。在一些情况下,中央计算系统110可以实现多租户环境,并且不同的租户可以具有不同的数据库模式。在至少某些情况下,多个数据库模式可以共享至少一些数据库模式元素。
数据字典134可以包括用于不同类型的数据库对象的定义(或模式),诸如用于表或视图的模式。尽管以下讨论为了便于说明而参考了表格,但是应该理解,所述讨论可以应用于其他类型的数据库对象,尤其是与可检索数据相关联的数据库对象,诸如物化视图。表模式可以包括信息,诸如表的名称、表中的属性(或列或字段)的数量、属性的名称、属性的数据类型、应显示属性的顺序、主键值、外键、与其他数据库对象的关联、分区信息或复制信息。
由数据字典134维护的表模式可以包括本地表模式136,其可以表示主要在中央计算系统110上维护的表。数据字典134可以包括副本表模式138,其可以表示这样的表:表数据的至少一部分存储在中央计算系统110中(或主要由中央计算系统的数据库管理系统管理,即使存储在中央计算系统之外也是如此,诸如存储在数据中湖或其他云服务中)。具有与副本表模式138相关联的数据的表通常将周期性从源表(诸如,远程数据库系统112的数据储存器142的远程表144)更新其数据。
复制可以使用远程数据库系统112的复制服务146或中央计算系统110的复制服务148中的一个或两个来完成。在特定示例中,复制服务可以是智能数据集成(SDI)服务、SAP景观转换复制服务器、SAP数据服务、SAP复制服务器、SAP事件流处理器或SAP HANA直接提取器连接(它们全部属于德国瓦尔多夫的SAP SE)。
如示例1所述,在一些情况下,中央计算系统110可以访问远程数据库系统112中的数据,而无需诸如使用联合从远程数据库系统中复制数据。数据字典134可以存储用于远程表(诸如,远程数据库系统112的远程表144)的远程表模式152。可以使用联合服务156(诸如,使用德国瓦尔多夫的SAP SE的智能数据访问协议)来访问远程表144中的数据。联合服务156可以负责将查询操作转换为可由适当的远程数据库系统112处理的格式,将查询操作发送到远程数据库系统,接收查询结果,并将查询结果提供给查询执行器124。
数据字典134可以包括虚拟表模式160。虚拟表模式160可以与表指针162以及可选地与状态信息164相关联。表指针162可以是用于标识应该访问哪个表以得到对应的虚拟表模式160的数据的逻辑指针。例如,取决于表指针162的状态,表指针可以指向远程数据库系统112的远程表144或位于中央计算系统110的数据储存器168中的副本表166(可以从远程表144生成)。数据储存器168还可以存储用于本地表170的数据,所述本地表170可以由本地表模式136定义。
如将进一步描述的,可以在远程表144和副本表166之间改变表指针162。在一些情况下,用户可以手动改变表指针162指向的表。在其他情况下,表指针162可以诸如响应于定义条件的检测而自动改变。
状态信息164可以包括将虚拟表模式160标识为与远程表144或副本表166相关联的指示符。状态信息164还可以包括关于副本表166的复制状态的信息。例如,一旦请求改变表指针162以指向副本表166,则在准备好使用副本表之前可能要花费一些时间。状态信息164可以包括复制过程是否已经开始、已经完成,或者生成副本表166的进度状态。
可以由虚拟表服务172管理对虚拟表模式160的改变以及管理与虚拟表模式相关联的副本表166。尽管示出为中央计算系统110的单独组件,但是可以将虚拟表服务172合并到中央计算系统110的其他组件(诸如,查询处理器120或数据字典134)中。
当执行查询时,查询由查询处理器120处理,包括使用查询执行器124执行查询以从远程数据库系统112的数据储存器142或中央计算系统110的数据储存器168中的一个或两个获取数据。查询结果可以返回到应用108。查询结果也可以被高速缓存,诸如被高速缓存在中央计算系统110的高速缓存178中。高速缓存的结果可以表示为高速缓存的视图180(例如,物化查询结果)。
应用114可以诸如通过会话管理器186访问远程数据库系统112中的数据。应用114可以修改远程表144。当虚拟表模式160的表指针162引用远程表144时,应用114所做的改变反映在远程表中。当表指针162引用副本表166时,可以使用复制服务146或复制服务148将应用114所做的改变反映在副本表中。
示例3–具有远程目标表或高速缓存的目标表的虚拟表的示例架构
图2示出了通常类似于图1的架构100的示例架构200。在架构100和架构200之间相同的组件维持图1的编号。图1和2之间的对应组件可以具有如示例2中讨论的功能,但本示例3中的任何讨论所修改的功能除外。
与架构100相比,虚拟表模式160可以引用远程表144或存储在虚拟表高速缓存204中的数据。尽管数据储存器168可以存储副本表166,但是副本表模式可以由副本表模式138而不是虚拟表模式160引用。
虚拟表高速缓存204可以包括高速缓存的表数据208,其可以包含响应于对远程表的数据的先前请求而从远程表144检索的数据的全部或一部分。当来自远程表144的数据的一部分存储在高速缓存的表数据208中时,所述数据可以表示被发送到远程数据库系统112的查询的一部分。如果另一虚拟表模式160引用相同的远程表144(或者更新其表指针162以引用高速缓存204中的表),则可以从高速缓存204中检索数据(如果该数据存在于高速缓存中的话)。
在至少某些情况下,如果表或表的一部分是由虚拟表模式160指定的,并在特定查询计划126或130中使用,但是所述数据不存在于高速缓存204中,则所述数据可以从远程表144中检索,并被存储在高速缓存中。在其他情况下,当虚拟表模式160指定要使用高速缓存时,可以前瞻性地(例如,从远程表144中)检索用于表的数据,并将所述数据包括在虚拟表高速缓存204中(例如,在对接收与所述虚拟表模式相关联的数据的请求之前)。
在特定实施方式中,可以为高速缓存204指定大小。如果将超过高速缓存204的大小,则可以从高速缓存中删除高速缓存的表数据208。通常,使用适当的高速缓存管理策略来管理数据删除,这样的策略使用最近最少使用的(LRU)算法、FIFO算法或其他算法。表可以与优先级相关联,使得更低优先级的表更有可能从高速缓存204中被逐出。高速缓存管理策略还可以将特定用户、查询计划126、130或其他因素与更高或更低优先级相关联。
高速缓存管理策略还可以包括用于移除陈旧数据或用于更新陈旧数据的策略。例如,如果高速缓存204中的数据早于阈值(可以是全局的或为特定表设置的),则可以检索更新的数据并将其存储在高速缓存中。或者,可以将所述表标记为与陈旧的数据相关联,并在对数据的下一数据请求时提取并高速缓存新数据。
如果接收到请求与虚拟表模式160(其数据已从高速缓存204中删除)相关联的数据的查询,则可以响应于该查询而从远程表144重新检索所述数据,提供该数据,并将该数据存储在高速缓存中。
在一些情况下,用于虚拟表模式160的表指针162可以指向高速缓存204中的表。在其他情况下,表指针162并不直接指向高速缓存204中的特定表。例如,表指针162可以指向远程表144。然而,可以更新用于虚拟表模式160的指示符(诸如标志)以反映来自远程表144的数据是可高速缓存的。当请求与虚拟表模式160相关联的数据时,可以首先在高速缓存204中检查请求的数据,如果不存在所述数据,则可以使用表指针162中的用于远程表144的值从该远程表请求数据。在进一步的实施方式中,可以设置“高速缓存”选项,使得如果请求的数据不存在于高速缓存中,则通过首先检查高速缓存204然后跟随表指针162到远程表来处理虚拟表模式160的全部子集或选定子集。
当表指针162引用高速缓存204中的表时,当从高速缓存中删除表时,可以更新对应的表指针以反映可以从中获取表数据的另一位置,诸如指定远程表144的位置的值。类似地,如果为特定的虚拟表模式160禁用了高速缓存,则可以利用指定在另一位置(诸如,远程表144的位置)处的表的值来更新表指针162。在一些情况下,虚拟表模式160可以存储远程表144的位置,使得当没有其他值可用于表指针或没有为表指针明确分配其他值时,指定所述位置的值可用于表指针162。
在一些情况下,与虚拟表模式160相关联的数据可以在多个表之间分区,其中可以在虚拟表模式中指定分区或以另一种方式指定分区。如果用于虚拟表模式160的数据被分区,则可以指定所有数据与高速缓存204一起使用,或者可以指定数据的一部分与高速缓存一起使用。类似地,即使指定了与虚拟表模式160相关联的所有数据与高速缓存204一起使用,也可以在分区的基础上处理获取并存储在高速缓存204中的数据。即,例如,如果查询请求用于第一分区的数据,但是查询不需要用于第二分区的数据,则仅第一分区数据被获取并存储在高速缓存204中。在其他情况下,用于所有分区的数据被预期地或响应于对与表的至少一个分区相关联的数据的请求而被存储在高速缓存204中。
示例4–具有远程目标表、副本目标表副本或高速缓存的目标表的虚拟表的示例架构
图3示出了总体上类似于图2的架构200的示例架构300。架构300与架构100、架构200之间相同的组件维持图1和图2的编号。与图1和图2的组件相对应的架构300的组件可以具有如示例2和3中所讨论的功能,但本示例4中的任何讨论所修改的功能除外。
架构300的虚拟表模式160被配置为引用远程表144、(使用来自远程表144的数据创建的)副本表166、或高速缓存的表数据208。用户可以选择性地改变给定虚拟表模式160的表指针162以引用远程表144、副本表166或高速缓存的表数据208。在其他情况下,可以为何时将表指针162更新为不同的目标表类型定义特定标准,如将在本公开中进一步描述的。
示例5–具有可用数据湖的虚拟表的示例架构
图4示出了总体上类似于图3的架构300的示例架构400。在架构400与架构100、架构200或架构300之间相同的组件维持图1-图3的编号。与图1-图3中任何一个的组件相对应的图4的组件可以具有如示例2-4中讨论的功能,但本示例3中的任何讨论所修改的功能除外。
架构400包括数据湖410。数据湖410可以包括多种格式的数据,包括结构化数据、半结构化数据、非结构化数据或二进制数据。特别相关的是,数据湖410可以存储副本表414。副本表414可以类似于副本表166。如图所示,数据湖410与中央计算系统110分离。在其他情况下,数据湖410可以集成到中央计算系统110中。
副本表166可以可选地继续包括在中央计算系统110中,并且可以是与副本表模式138对应的副本表或作为虚拟表模式160的表指针162的目标的副本表。因此,在图4的实施例中,表指针162可以至少指向数据湖410的副本表414或远程表144。在特定实施方式中,表指针162也可以指向副本表166或高速缓存的表数据208。
当表指针162可以指向副本表144或副本表166时,在一些情况下,用户可以选择副本表的位置。在其他情况下,可以根据特定标准(诸如客户端成本/访问偏好、使用频率或其他考虑因素)来确定副本表的位置。例如,可以将频繁使用的副本表414移动到副本表166。或者,可以将不频繁使用的副本表166移动到数据湖410。
与存储在中央计算系统110的副本表166中的数据相比,从存储在数据湖410上的(即由虚拟表模式160定义的)虚拟表中检索数据的查询可能具有降低的性能。然而,查询可以比虚拟表模式160引用远程表144的情况更快地执行。具体地,数据湖410可以比远程数据库系统112更紧密地与中央计算系统110集成。当从远程数据库系统112检索数据时,数据湖410和中央计算系统110系统110与联合数据库相比而言可以用作分布式数据库或者更类似于分布式数据库。
示例6–具有用于虚拟表的动态储存器的示例架构
图5示出了总体上类似于图4的架构400的示例架构500。在架构500与架构100、架构200、架构300、架构400之间相同的组件维持图1-图4的编号。与图1-图4中的任何一个中的组件相对应的架构500的组件可以具有如示例2-5中所讨论的功能,但本示例5中的任何讨论所修改的功能除外。架构500可选地包括数据湖410或高速缓存204。
架构500包括数据储存器168的形式的动态储存器,其被指定为内存数据储存器(例如,所存储的信息维护在RAM中)以及物理储存器510(例如,存储在磁盘、磁带、光学介质或其他物理介质上的数据)。在特定示例中,动态储存器是使用德国瓦尔多夫的SAP SE的本机存储扩展技术实现的。数据储存器168可以将存储在存储器中的特定表(诸如,与副本表模式138或指定的虚拟表模式160相关联的表)作为副本表166来进行维护。
数据储存器168包括缓冲器高速缓存514,其使用在内存数据储存器168中可用的存储器的通常分配的一部分。缓冲器高速缓存514包括副本表518。可以向缓冲器高速缓存514传送数据和从缓冲器高速缓存514传送数据,包括向存储副本表520的物理储存器510传送数据和从物理储存器510传送数据。缓冲器高速缓存514和物理储存器510之间的信息传送可以由(例如,管理动态储存器的)存储主机(storage master)524介导。
如已经描述的,维护与远程表144相对应的副本表166可以改善查询性能,并且可以减少与在远程数据库系统112和云计算系统110之间传送数据相关联的成本。然而,在存储器中维护所有数据可能是成本高昂的,并带来技术挑战。提供缓冲器高速缓存514允许用户选择由表指针162引用的副本表应作为副本表166被完全维护在存储器中,还是应被包括在由存储主机524管理的动态存储系统中,在所述动态存储系统中可以基于各种标准在缓冲器高速缓存514和物理储存器510之间传送数据。
最初,指定为指向副本表518、520的虚拟表模式可以将相关联的数据存储在缓冲器高速缓存514中。如果对于特定操作而言缓冲器高速缓存大小514被超过或将被超过,则存储管理器524可以确定数据从缓冲器高速缓存移动到物理储存器510。在管理缓冲器高速缓存514时,存储主机524可以使用合适的高速缓存管理算法,包括LRU算法。然而,缓冲器高速缓存514的管理可以合并其他因素,诸如为特定虚拟表160、查询、用户等指定的优先级等级。
缓冲器高速缓存514的大小可以是可配置的,包括用户可配置的。通过增加缓冲器高速缓存514的大小,可以维护更多的副本表518,但是更少的数据可以用于数据储存器168中的本地表170或副本表166。减小缓冲器高速缓存514的大小可以导致对于特定数据的更多的高速缓存未命中,这在需要从物理储存器510中检索数据的情况下会增加查询时间,并且会增加高速缓存的易失性。然而,虚拟表模式160的好处在于,就像对表指针162的改变一样,可以从应用108中提取对存储副本数据的位置的改变,并且不需要对数据字典134进行改变。在一些情况下,当副本表数据的位置改变(包括数据作为副本表166存储、存储在副本表518中或存储在副本表520之间的改变)时,查询优化器122可以重新编译查询计划130。因此,所公开的技术促进对数据库的改变,以实现特定的性能和成本目标。
除了管理什么数据存储在缓冲器高速缓存514和物理储存器510中之外,存储主机524或中央计算系统110的另一组件可以确定何时应将副本表作为副本表166存储在存储器中或者存储在使用副本表518、520的动态存储组件中。在用户可以手动进行此类改变的同时,存储主机524可以在存储在副本表166中和存储在副本表518、520中之间改变数据。例如,如果特定表518始终用于查询,则可以将其改变为表166。类似地,如果未足够频繁地访问表166,则可以将它们转换为动态储存器,并可以将它们存储在副本表518、520中。
示例7–具有可配置副本表的虚拟表的示例架构
图6示出了通常类似于图5的架构500的示例架构600。在架构600和架构100、架构200、架构300、架构400、架构500之间相同的组件维持图1-图5的编号。与图1-图5中的组件相对应的架构600的组件可以具有如示例2-6中所讨论的功能,但本示例7中的任何讨论所修改的功能除外。为了方便表示,图6中未示出数据湖410,但如果需要可以包括数据湖140。
在一些情况下,给定虚拟表模式160的数据要么作为表518完全存储在缓冲器高速缓存514中,要么作为表520完全存储在物理储存器510中。然而,在某些实施例中,给定虚拟表模式160的数据可以存储在物理储存器510和缓冲器高速缓存514两者中。可以使用诸如表分区、特定列或特定列值之类的标准(在一些情况下,可以由特定查询条件)来选择数据的子集。代替在缓冲器高速缓存514和物理储存器510之间传送整个表,存储主机524可以基于与用于管理整个表的位置的相似标准来传送数据的相关子集。允许由存储主机524管理表的子集可以提供对查询性能的更精细的控制,并且可以帮助最大化具有缓冲器高速缓存514的值。允许由存储主机524管理表的子集也可以允许与整个表是用于存储主机524的管理单元时相比,缓冲器高速缓存514的大小减小,同时保持相似或更高的性能水平。在将副本表用作虚拟表的目标表的其他实施例中,可以使用类似的子集划分,诸如示例2-6中描述的实施例。
图6示出了这个实施例。存储管理器524管理副本表1和2,每个副本表具有第一和第二子集(它们又可以对应于分区、特定列、特定过滤条件等,并且其中给定表可以具有两个或更多个子集)。另外,并非由存储管理器524管理的所有表都需要与子集相关联。即,当表被定义为管理单元时,存储管理器524可以在整个表的基础上管理表,或者当子集可用并且被指定为管理单元时,存储管理器524可以在子集的基础上管理表。
缓冲器高速缓存514包括第一副本表的第一子集610和第二副本表的第二子集614。物理储存器510包括第一副本表的第二子集618和第二副本表的第一子集622。如果第二副本表的第一子集622满足特定标准,例如被请求或被请求阈值次数,则可以将其从物理储存器510移动到缓冲器高速缓存514。如果有必要在缓冲器高速缓存514中制造空间,则可以从缓冲器高速缓存中移除第一副本表的第一子集610或第二副本表的第二子集614,并将其存储在物理储存器510中。注意,给定表的多个子集可以包括在缓冲器高速缓存514或物理储存器510中,包括将整个表维护在缓冲器高速缓存或物理储存器中。然而,根据此示例7的实施例,整个表仍在其子集的级别上进行管理。
示例8–具有共享副本表的虚拟表的示例架构
如上所述,在一些实施例中,与中央计算系统相关联的数据库可以与多个数据库模式相关联,诸如用于数据库系统的不同租户的模式。在一些实施方式中,多个模式可以与对准同一远程表的虚拟表(例如,由用于虚拟表的模式定义的表)相关联。
图7示出了这种情形:中央计算系统710与多个数据库模式714相关联。每个模式714包括用于包括表指针722的虚拟表的模式718,所述表指针722包括用于第一远程对象的标识符726。如图所示,第一远程对象是位于远程数据库系统734上的表730。
由于将诸如使用联合过程736从远程数据库系统734中检索用于虚拟表718中的任何一个的数据,因此,使模式714中的每一个都包括用于远程表730的标识符726不存在性能缺陷。然而,如果模式714中的任何一个被更新以反映应将表指针722更新为指向副本表,则对其他数据库模式714进行改变可能是有益的。
一旦将用于虚拟表模式718的表指针722更新为指向副本表,就可以使用复制过程746在中央计算系统710的数据储存器742中创建适当的副本表738。处理746可以是进行中的复制过程,使得利用对表730所做的改变来更新副本表738。
当已经创建了副本表738时,可以将请求对表指针进行改变的模式714的表指针722更新为指向副本表,而不是指向远程表730。在一些情形中,可以更新用于包括引用远程表730的虚拟表模式的其余模式714的指针722,以也引用副本表738。因此,如果单个模式请求使用副本表738,则可以改善所有模式714的查询性能。通过使所有模式714引用相同的副本表738,就不必在数据储存器742上创建多个副本表738。
在一些情况下,虚拟表模式718可以指定是否应共享副本表738。如果副本表738被指定为可共享的,则可能导致图7的情形。如果副本表738被指定为不可共享,则副本表仅可用于请求对副本表进行改变的模式714。其余模式718引用远程表730,直到并且除非它们请求在数据储存器742中创建另一副本表(在这种情况下,数据储存器中可能存在同一远程表730的多个副本表)或请求创建副本表738的模式714请求将副本表的状态改变为可共享。
在共享表的情况下,以不同模式714的名义发出的命令之间可能会发生冲突。例如,假定第一模式714发出第一命令以在第一位置创建副本表738。如果第二模式714发出第二命令以在第一位置创建具有副本表738的虚拟表模式718,则可以忽略第二命令中用于创建副本表的指令。如果第二命令是在第二位置创建副本表738,则可以引发异常。在一些情况下,第二请求将被视为将副本表738移动到第二位置的请求。
类似地,如果第二命令请求副本表738具有与第一命令中指定的分区规范或加载单元(例如,可页面加载与可列加载)不同的分区规范或加载单元,则可以引发异常。第二请求可以被视为重新划分副本表738或改变副本表的加载单元的请求。然而,如果第一命令所请求的副本表738的加载单元是可列加载的,则第二请求中用于创建可页面加载副本表的命令可以被忽略。如果第二请求是添加副本表作为先前对准远程表730的虚拟表模式718的目标表的请求,则可以采取类似的动作。
模式714可以与丢弃副本表738的请求相关联。如果副本表738由多个模式714共享,则除非可共享副本表仅由与丢弃该表的请求相关联的模式引用,否则副本表可以不被丢弃。即,如果其他表指针722指向副本表,则副本表738可以不被丢弃。计数器可用于跟踪多少模式714正在共享特定的可共享副本表738。然而,如果接收到丢弃可列加载副本表738的请求,则如果没有共享副本表的其他方案714请求可列加载副本表,则该请求可以用于将表更改为可页面加载副本表。
在一些实施方式中,可以通过处理最近的请求来处理更改副本表738的分区或位置信息的请求。对于加载单元,可以处理将副本表738从可页面加载改变为可列加载的请求。然而,如果除与将副本表738从可列加载改变为可页面加载的请求相关联的模式之外的其他模式714已经指定将使用可列加载副本表,则所述请求可以被忽略。
示例9–虚拟表指针的更新时的示例查询计划重新编译
如上所述,所公开技术的优点在于它们提供了用于虚拟表的模式,在该模式中可以动态地更新保存对应表模式的数据的表而不必添加或丢弃表模式。然而,在至少一些情况下,可以更新任何先前编译的查询计划,以反映虚拟表模式对准不同的表。图8示出了用于查询计划重新编译的过程800。
基于用于虚拟表模式的第一目标表来编译第一查询计划810。在814处,接收到将虚拟表模式对准的表更新为第二目标表的请求。例如,第一目标表可以是远程表,并且第二目标表可以是副本表。或者,第一目标表可以是副本表,并且第二目标表可以是远程表。然而,过程800中也可以包括其他类型的目标表,包括位于不同存储位置(例如,数据湖、持久性储存器、高速缓存缓冲器)中的高速缓存的目标表和副本目标表。
在818,使用用于虚拟表模式的更新的目标表来重新编译查询计划,以产生引用更新的目标表的查询计划822。
示例10–支持虚拟表的示例数据库工件
图9A和9B示出了可用于实现本公开的技术的示例数据库工件。
数据库系统可以跟踪查询性能。可以将满足特定条件的(例如,执行时间足够长以满足阈值)或者以其他方式具有满足阈值的资源使用的查询指定为昂贵的查询。可以跟踪昂贵的查询,诸如通过在昂贵查询的表中为查询创建记录。
图9A的表900列出了可以被添加到跟踪昂贵查询(例如M_EXPENSIVE_STATEMENTS)的表中的列902的属性。列902TABLE_TYPES可以列出查询是包括格式化为在行储存器中使用的表、格式化为在列储存器中使用的表还是与虚拟表模式相关联的表(因此可以具有各种类型的目标表,诸如远程表、副本表或高速缓存的表)。在一些情况下,查询可以包括多个类型的表,在这种情况下,列902可以包括多个值。在其他情况下,如果查询包括多个表类型,则所述查询的多个条目可以包括在昂贵查询的表中,其中每个条目都包括列902的单个值。
在另外的情况下,类似于表900的表被包括,但是没有专门标识用于查询的表类型。取而代之的是,诸如布尔值的值可以指示查询是否包括任何虚拟表。在另一实施方式中,类似于表900的表被包括,但是对于包括虚拟表的查询,包括指定查询中的虚拟表的目标类型的信息(例如,远程表目标、副本表目标、高速缓存的表目标)。
图9A的表906列出了可添加到列出虚拟表的属性的表(例如,可以是描述虚拟表模式的表中的列)中的列908的属性。列908HAS_REPLICA可用于提供指示符,例如布尔值,以指示虚拟表是否对准副本表。例如,如果虚拟表对准远程表,则所述值可以为FALSE(假)。如果将虚拟表更新为对准副本表,则所述值可以更新为TRUE。
图9A的表912列出了可以包括在表VIRTUAL_TABLE_REPLICAS中的各种列的属性,所述表包括关于由一个或多个虚拟表模式对准的副本表的信息。列914为包括虚拟表的模式提供模式名称。模式名称可以标识例如图7的模式714之一。列916列出了在列914中提供的模式中的虚拟表模式的名称。模式名称可以例如标识虚拟表模式718。类似地,列918和920可以为列916中标识的虚拟表模式所引用的副本表提供数据库模式和副本表模式的名称。注意,在一些情况下,副本表可以与除特定用户数据库模式(例如,在列914中标识的模式)以外的模式(诸如根据本公开的与中央计算系统相关联并在内部用于管理虚拟表的模式)相关联。
列922可以提供副本表的类型。在一些情况下,所述类型可以指代用于副本表的复制类型,诸如是使用异步复制还是同步复制将数据从源表(例如,远程表)复制到副本表。在其他情况下,类型可以表示在准备副本表的同时如何处理查询。指定异步可能会导致在准备副本表的同时远程表继续用于查询。换句话说,在查询行为实际改变之前,更改表状态的DDL语句可以是有效的。指定同步可能会导致查询被拒绝或保留,直到复制完成为止——在这种情况下,DDL改变和查询行为改变实质上是并发的。在进一步的实施方式中,列922中的同步的指定可以指示应使用联合表(或当前反映在表指针的值中的表位置,诸如虚拟表高速缓存中的表的位置)进行查询直到有最新的副本表可用,并且异步的指定指示所述副本表应立即用于查询,即使所述副本表与其源表(例如,远程表或联合表)相比不是最新的。
列924可以指示虚拟表当前是否正在使用副本表。也就是说,如果列924的值为FALSE,则可以将远程表指定为虚拟表模式的目标。如果列924的值为TRUE,则启用远程表的复制,并且虚拟表模式对准副本表。
列926可用于指示副本表是否可以被多个虚拟表共享(例如,与多个用户的不同数据库模式共享),诸如,如果所述表是可共享的,则其值为TRUE,否则为FALSE。列928可用于指示将如何加载用于副本表的数据,诸如何时将副本表存储在具有动态储存器的系统中。列928的值可以指示所述表是完全保留在持久性储存器中还是保留在缓冲器高速缓存中,是可以按页面加载还是可以按特定列加载。如果副本表也是共享表,则可以使用各种协议来确定列928的值。例如,如果多个用户请求副本表,但使用列928的不同值,则协议可以选择最后一个请求的值用于列928。也就是说,如果副本表已经存在,则创建具有不同于当前值的列928的值的副本表的请求可能导致现有副本表的列928中的值发生变化,而不是创建新的副本表。
或者,可以给列928的某些值优先。例如,如果任何虚拟表模式请求副本表为可列加载,则所述值将覆盖副本表为可页面加载的任何请求。然而,如果与请求可列加载表相关联的模式选择丢弃副本表(例如,切换到远程表),但其他模式正在使用副本表,则丢弃副本表的请求可能导致副本表从可列加载改变为可页面加载,至少没有从另一数据库模式接收到副本表应该为可列加载的另一明确请求。
参照图9B,表960可用于跟踪副本表的信息。表960可以用于为副本表提供附加信息,诸如用于监视副本表的状态。表960可以包括列962和列964,所述列962包括主机信息,所述列964包括用于系统的端口信息,在所述系统中可以访问副本表(可以用来例如指示副本表是位于存储器中、缓冲器高速缓存中、持久性储存器中还是数据湖中等等)。
表960包括列966、968、970、972,其用于副本表的模式名称、副本表的表名称用于虚拟表的模式名称以及虚拟表的模式名称。可以至少大体上如针对图9A的表格912的列918、920、914、916所描述的那样来实施列966、968、970、972。列970可以指定副本类型,并且可以至少通常如针对表912的列922所描述的那样实现。
如示例7中所讨论的,副本表可以与子集(诸如分区)相关联。列976可以用于指示与表960的记录相关联的特定表分区,其中值“0”可以用于未分区的表。
列980可用于指示副本表的状态,诸如是禁用还是启用复制,或者当前是否正在生成副本。在一些情况下,是禁用复制还是启用复制可以与是否有任何虚拟表模式对准副本表相关。然而,在一些情况下,即使虚拟表模式当前未对准表,也可以复制所述表。如果副本正处于生成过程中,则副本生成过程的进度可以记录在列978中(例如,复制过程是完成25%、完成50%、完成75%、还是完成99%等)。
可以启用或禁用复制,包括取决于虚拟表模式是否对准副本表。与启用或禁用复制相关联的时间可以分别记录在列982、984中。
如示例8中所述,在某些实施方式中,可以共享副本表。当副本表是可共享的时,列986可以用于指示对准给定副本表的虚拟表模式的数量。
示例11–支持虚拟表的示例查询语言操作
图10示出了示例查询语言语句,诸如DDL语句,其可以用于实现本公开中所描述的各种特征,包括如示例1-10中所描述的。语句1008是用于创建对准从远程表创建的副本表的虚拟表的示例语句。语句1008包括以下参数:虚拟表的名称、远程表的位置(可以包括远程表名称)、可选地为远程表/位置指定的任何属性(例如,如德国瓦尔多夫的SAP SE的HANA数据库系统中所使用的“远程属性子句”,更一般而言,此类属性可以包括被远程数据库系统或与远程数据库系统进行通信的适配器使用以获取远程数据对象(诸如远程数据库表)的元数据或来自远程数据对象的数据的参数)、指示是否将共享副本表的指示符、可选地对副本表进行分区的信息、可选地用于副本表的任何加载单元参数(例如,副本表将是可页面加载还是可列加载的)以及副本表的位置(例如,在与内存表相关联的位置处的,在数据湖中的位置处的,在由动态存储管理器管理的位置处的)。
语句1012是用于为虚拟表模式所对准的远程表创建副本表的示例命令。语句1012包括以下参数:虚拟表的名称、是否要共享所述表、可选地如针对语句1008所描述的关于分区信息或加载单元信息的信息以及副本表的位置。
语句1016是用于丢弃副本表的示例命令。语句1016将以下各项作为参数:虚拟表模式的名称、和应该丢弃所有副本还是仅丢弃一个或多个指定位置处的副本的标识符。也就是说,例如,虚拟表模式可用于多个副本表可用的横向扩展情形中,或仅具有单个副本的情形中。因此,更改或丢弃副本表的请求可以包括足以标识应向其发送/应用请求的所选表的信息或所述请求是否应该应用于所有副本表。同样,DML语句或类似语句可用于创建附加副本表,以创建横向扩展系统或向横向扩展系统添加一个或多个附加副本。
如果虚拟表模式与远程表和副本表相关联,则语句1020、1022可用于分别在对准副本表和对准远程表之间进行切换。语句1020、1022将虚拟表模式的名称以及关于是否应对准所有副本或一个或多个指定副本(例如,如上所述,在横向扩展系统中,请求可以选择性地禁用/启用一个或多个指定的副本表,或可以对准所有副本表)的标识符。
语句1026可用于改变副本表的位置,例如在主数据库储存器(例如,内存储存器)与持久性储存器、动态储存器或外部储存器(诸如,数据湖中的储存器)之间。语句1026将虚拟表模式的名称、副本表的当前位置以及副本表应移动到的位置作为参数。
可以使用语句1030改变副本表的属性(诸如分区信息或加载单元类型)。语句1030的参数包括虚拟表模式的名称、副本表位置(例如,在横向扩展系统的情况下,一个或多个特定副本表的位置或所述语句应适用于所有副本表的指示)、以及改变属性的指示符(诸如,分区信息或加载单元信息)。
查询语言语句可以用于创建或修改表以选择所公开技术的其他方面以供使用(或不使用)。例如,用于创建表的DDL语句可以包括启用高速缓存的选项(例如,在图2的虚拟表高速缓存204中)。DDL语句可用于更改现有表的高速缓存行为,诸如启用或禁用高速缓存。类似地,可以更改高速缓存行为,诸如指定是应将数据预期地放置在高速缓存中,还是应根据对数据的请求来获取和高速缓存数据。包括高速缓存大小或特定表的优先级(例如,可用于确定哪些表已满时应从高速缓存中移除)的高速缓存选项也可以由DDL语句或类似命令指定。
示例12–创建副本表目标时的示例操作
图11是示出用于创建副本表作为虚拟表模式的目标的方法1100中的操作的流程图。在1104,确定是否已经接收到改变虚拟表模式的目标的请求。所述请求可以是来自用户的请求,或者可以是在检测到满足特定条件(诸如以足够的频率请求远程表)时生成的请求。如果没有接收到请求,则方法1100在1104处循环。如果已经接收到改变表目标的请求,则方法1110进行至1108。
在1108,更新虚拟表模式的表元数据以反映所述虚拟表模式对准副本表而不是远程表。在1112,启动远程表的复制。在方法1100中,直到副本表可用为止,对虚拟表模式的查询继续使用远程表。决策1116确定复制过程是否完成并且副本表可供使用。直到副本表准备就绪为止,方法1100在1116循环。一旦副本表可用,方法1100便进行到1120,在1120处更新虚拟表模式的表指针以对准副本表。也就是说,即使在1108处更新了一些表元数据以指示虚拟表对准副本表而不是远程表,但是直到副本表准备好使用为止,实际的表指针才被改变。在一些实施方式中,可以响应于对准副本表的先前请求,在仍在生成副本表的同时,处理将虚拟表模式的目标从副本表更新为远程表的请求。在这种情况下,副本表生成过程可能会中止。
在响应于重新对准远程表的先前请求而创建副本并且不删除副本的情况下,方法1100可以同时更新虚拟表元数据以指示副本表是目标并将表指针更新到副本表。或者,如果禁用了复制但未移除副本表,则可以更新虚拟表元数据以反映副本表已被对准,并且一旦副本是最新的,就可以将表指针更新到副本表。
示例13–删除副本表目标中的示例操作
图12是示出用于将虚拟表模式所对准的表从副本表改变为远程表的方法1200中的操作的流程图。在1204,确定是否已经接收到改变虚拟表模式的目标的请求。所述请求可以是来自用户的请求,或者可以是在检测到满足特定条件(诸如未以足够的频率请求远程表)时生成的请求。如果没有接收到请求,则方法1200在1204处循环。如果已经接收到改变表目标的请求,则方法1200前进至1208。
在1208,更新虚拟表模式的元数据以反映虚拟表对准远程表。在1212更新表指针以对准标远程表。在1216禁用副本表的复制,并在1220删除副本表。
在一些实施方式中,在1220不删除副本,或者至少不立即删除副本,如果用户决定重新对准副本表,则这可能是有益的。类似地,在一些情形下,在1216不禁用复制,至少不立即禁用复制。
示例14–在远程和副本之间改变虚拟表目标的示例操作
图13是示出用于确定虚拟表是应当对准远程表还是对准副本表的方法1300中的操作的流程图。在1304,测量虚拟表的使用统计信息。使用统计信息可以包括确定多频繁地访问虚拟表、从虚拟表中检索多少数据、执行使用虚拟表的查询需要花费多长时间、具有使用虚拟表的查询的用户数量、其他因素或这些因素的组合。特别地,可以跟踪访问远程表的查询的性能(例如,在列出访问远程表的查询并提供性能细节(诸如执行时间)的表中)。可以预期,此类查询将花费更长的时间执行,并且可能需要更紧密地监视,因为它们从联合数据库系统中检索数据。另外,可以跟踪满足性能参数(诸如,超过阈值执行时间)的查询,诸如将查询包括在列出查询和性能参数(诸如执行时间)的“昂贵”查询的表中。在一些实施方式中,还可以通过查询查询计划高速缓存来定位昂贵的查询,所述查询计划高速缓存包括用于高速缓存的查询计划的性能统计信息。
在1308处,确定使用统计信息是否满足用于改变虚拟表模式所对准的表的阈值标准。如果统计信息不满足所述标准,则所述方法可以返回到1304。如果使用统计信息指示所述虚拟表应对准副本表而不是远程表(诸如,虚拟表超出使用频率),则所述方法1300可以继续进行到1312。在1312,将虚拟表的表指针从远程表改变为副本表。1312可以使用图11的过程1100。
如果使用统计信息指示虚拟表应对准远程表而不是副本表,诸如使用统计信息小于阈值量,则方法1300可以进行到1316。在1316,虚拟表的表指针虚拟表模式可以被更新为对准远程表而不是副本表,并且可以使用图12的过程1200。在1312或1316之后,方法1300可以返回到1304。
示例15–管理虚拟表高速缓存中的示例操作
图14是示出确定是否应将远程表添加到高速缓存或从高速缓存中移除的方法1400中的操作的流程图。在1404,监视虚拟表的使用统计信息。使用统计信息可以包括确定多频繁地访问虚拟表、从虚拟表中检索多少数据、执行使用虚拟表的查询需要花费多长时间、具有使用虚拟表的查询的用户数量、其他因素、或这些因素的组合。特别地,可以跟踪访问远程表的查询的性能(例如,在列出访问远程表的查询并提供性能细节(诸如执行时间)的表中)。可以预期,此类查询将花费更长的时间执行,并且可能需要更紧密地监视,因为它们从联合数据库系统中检索数据。另外,可以跟踪满足性能参数(诸如超过阈值执行时间)的查询,诸如将查询包括在列出查询和性能参数(诸如执行时间)的“昂贵”查询的表中。在一些实施方式中,还可以通过查询查询计划高速缓存来定位昂贵的查询,所述查询计划高速缓存包括用于高速缓存的查询计划的性能统计信息。
在1408处,确定使用统计信息是否满足用于改变虚拟表模式所对准的表的阈值标准。如果统计信息不满足所述标准,则所述方法可以返回到1404。如果使用统计信息指示应该从高速缓存中删除虚拟表模式所对准的并且存储在高速缓存中的远程表中的数据,则可以在1412从高速缓存中移除表数据。指示应该从高速缓存中移除远程表数据的使用统计信息可以包括确定在(诸如,使用LRU算法确定的)阈值频率内未使用存储在高速缓存中的数据。
如果在1408中,使用统计信息指示在高速缓存中不存在用于远程表的数据,并且应该将其存储在高速缓存中,则可以在1416将数据存储在高速缓存中。指示远程表数据应被添加到高速缓存中的统计信息可以包括确定在(诸如使用LRU算法确定的)阈值频率内使用存储在高速缓存中的数据。在一些情况下,总是在请求数据而高速缓存中不存在数据时将数据添加到高速缓存中。在其他情况下,在1408处的确定要求在进行到1416之前请求数据阈值次数。在1412、1416之后,方法1400返回到1404。
示例16–在内存缓冲器和磁盘储存器之间改变虚拟表副本的示例操作
图15是示出用于管理动态储存器的方法1500中的操作的流程图,所述管理动态储存器诸如确定是将虚拟表模式所对准的副本表的数据存储在缓冲器高速缓存中还是持久储存器中(诸如磁盘上)。在1504,测量虚拟表的使用统计信息。使用统计信息可以包括确定多频繁地访问虚拟表、从虚拟表中检索多少数据、执行使用虚拟表的查询需要花费多长时间、具有使用虚拟表的查询的用户数量、其他因素或这些因素的组合。特别地,可以跟踪满足性能参数(诸如,超过阈值执行时间)的查询,诸如将查询包括在列出查询和性能参数(诸如执行时间)的“昂贵”查询的表中。在一些实施方式中,还可以通过查询查询计划高速缓存来定位昂贵的查询,所述查询计划高速缓存包括用于高速缓存的查询计划的性能统计信息。
在1508,确定使用统计信息是否满足用于改变副本表数据的位置的阈值标准。如果统计信息不满足所述标准,则所述方法可以返回到1504。如果使用统计信息指示应将副本表数据从磁盘移动到高速缓存缓冲器,诸如副本表数据超过了使用频率,则方法1500可以继续进行到1512。在1512,将副本表数据从磁盘移动到高速缓存缓冲器。
如果使用统计信息指示应将存储在高速缓存缓冲器中的副本表数据移动到磁盘,诸如使用统计信息小于阈值量,则方法1500可以前进至1516。在1516,副本表数据可以从高速缓存缓冲器移动到磁盘。在1512或1516之后,方法1500可以返回到1504。
示例17–在主储存器和动态储存器之间改变虚拟表副本的示例操作
图16是示出用于管理是将表维护在诸如主存储器的主储存器中,还是维护在动态存储系统(诸如使用图15的方法1500管理的动态存储系统)中的方法1600中的操作的流程图。在1604,测量虚拟表的使用统计信息。使用统计信息可以包括确定多频繁地访问虚拟表、从虚拟表中检索多少数据、执行使用虚拟表的查询需要花费多长时间、具有使用虚拟表的查询的用户数量、其他因素或这些因素的组合。特别地,可以跟踪满足性能参数(诸如,超过阈值执行时间)的查询,诸如将查询包括在列出查询和性能参数(诸如执行时间)的“昂贵”查询的表中。在一些实施方式中,还可以通过查询查询计划高速缓存来定位昂贵的查询,所述查询计划高速缓存包括用于高速缓存的查询计划的性能统计信息。
在1608处确定使用统计信息是否满足用于改变副本表数据的位置的阈值标准。如果统计信息不满足所述标准,则所述方法可以返回到1604。如果使用统计信息指示应将副本表数据从动态储存器移动到主存储器,诸如副本表数据超出使用频率,则方法1600可以继续进行到1612。在1612,将副本表数据从动态储存器移动到主存储器。
如果使用统计信息指示应将存储在主存储器中的副本表数据移动到动态储存器,诸如使用统计信息小于阈值量,则方法1600可以前进至1616。在1616,副本表数据可以从主储存器移动到动态储存器(可以是高速缓存缓冲器或持久性储存器之一或两者)。在1612或1616之后,方法1600可以返回到1604。
示例18–虚拟表模式的逻辑指针的更新时的示例操作
图17是示出用于更新虚拟表模式的逻辑指针的操作1700的流程图。可以例如使用图2-图6的架构200-600中的任何一个以及示例1-17中的任何一个中描述的技术来执行操作1700。
在1710,在数据字典中为第一虚拟表创建第一模式。第一模式包括第一逻辑指针,第一逻辑指针指定具有第一数据并根据第一模式定义的第一表的第一位置。第一位置在第一联合数据库系统中。
在1720处接收第一数据的至少一部分。在1730处,在托管数据库管理系统的中央计算系统的高速缓存中创建第二表。根据第一模式定义第二表。在1740,接收到的第一数据的至少一部分被存储在第二表中。在1750,将第二值分配给第一逻辑指针。第二值标识第二表在高速缓存中的位置。
图18是示出用于更新虚拟表模式的逻辑指针的操作1800的流程图。可以例如使用图2-图6的架构200-600中的任何一个以及示例1-17中的任何一个中描述的技术来执行操作1800。
在1810,在数据字典中创建第一表定义。第一表定义包括在第一位置标识第一表的第一数据元素。根据第一表定义来定义第一表。第一位置不在托管包括数据字典的数据库管理系统的中央计算系统的高速缓存中。
在1820处接收存储在第一表中的数据的至少一部分。在1830处,在高速缓存中创建第二表。根据第一表定义来定义第二表。在1840,接收到的数据的至少一部分被存储在第二表中。在1850,将第二值分配给第一数据元素。第二值标识第二表在高速缓存中的位置。
图19是示出用于更新虚拟表模式的逻辑指针的操作1900的流程图。可以例如使用图2-图6的架构200-600中的任何一个以及示例1-17中的任何一个中描述的技术来执行操作1900。
在1910,在数据字典中为第一虚拟表创建第一模式。第一模式包括第一逻辑指针,第一逻辑指针指定具有第一数据并根据第一模式定义的第一表的第一位置。第一位置不在托管包括数据字典的数据库管理系统的中央计算系统的高速缓存中。
在1920接收第一数据的至少一部分。在1930,在高速缓存中创建第二表。根据第一模式定义第二表。在1940,第一数据的接收到的至少一部分存储在第二表中。在1950,将第二值分配给第一逻辑指针。第二值标识第二表在高速缓存中的位置。
示例19–计算系统
图20描绘了其中可以实现所描述的创新的合适的计算系统2000的一般示例。由于可以在各种通用或专用计算系统中实现本创新,因此计算系统2000无意建议对本公开的使用范围或功能进行任何限制。
参考图20,计算系统2000包括一个或多个处理单元2010、2015和存储器2020、2025。在图20中,这个基本配置2030包括在虚线内。处理单元2010、2015执行计算机可执行指令,诸如用于实现示例1-18中描述的特征。处理单元可以是通用中央处理单元(CPU)、专用集成电路(ASIC)中的处理器或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。例如,图20示出了中央处理单元2010以及图形处理单元或协同处理单元2015。有形存储器2020、2025可以是可由(多个)处理单元2010、2015访问的易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如ROM、EEPROM、闪存等)、或两者的某种组合。存储器2020、2025以适用于由(多个)处理单元2010、2015执行的计算机可执行指令的形式存储实现本文所述的一个或多个创新的软件2080。
计算系统2000可以具有附加特征。例如,计算系统2000包括储存器2040、一个或多个输入设备2050、一个或多个输出设备2060、以及一个或多个通信连接2070,包括输入设备、输出设备和用于与用户交互的通信连接。诸如总线、控制器或网络的互连机制(未示出)使计算系统2000的组件互连。通常,操作系统软件(未示出)为在计算系统2000中执行的其他软件提供操作环境,并协调计算系统2000的组件的活动。
有形储存器2040可以是可移动的或不可移动的,并且包括磁盘、磁带或盒带、CD-ROM、DVD或可用于以非暂时性方式存储信息并且可以在计算系统2000内访问的任何其他介质。存器储2040存储用于实现本文描述的一个或多个创新的软件2080的指令。
(多个)输入设备2050可以是诸如键盘、鼠标、笔或轨迹球的触摸输入设备,语音输入设备,扫描设备或向计算系统2000提供输入的另一设备。(多个)输出设备2060可以是显示器、打印机、扬声器、CD刻录机或提供来自计算系统2000的输出的另一设备。
(多个)通信连接2070使得能够通过通信介质与另一计算实体进行通信。通信介质在调制数据信号中传达诸如计算机可执行指令、音频或视频输入或输出或其他数据的信息。调制数据信号是一种特性中的一个或多个特性能够以在该信号中编码信息的方式来设置或改变的信号。作为示例而非限制,通信介质可以使用电、光、RF或其他载体。
可以在诸如在目标真实或虚拟处理器上的计算系统中执行的程序模块中包括的指令的计算机可执行指令的一般上下文中描述本创新。通常,程序模块或组件包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。如在各种实施例中期望的,程序模块的功能可以在程序模块之间组合或分割。用于程序模块的计算机可执行指令可以在本地或分布式计算系统内执行。
术语“系统”和“设备”在本文中可互换使用。除非上下文另外明确指出,否则两个术语均不暗示对计算系统或计算设备的类型进行任何限制。通常,计算系统或计算设备可以是本地的或分布式的,并且可以包括专用硬件和/或通用硬件与实现本文所述功能的软件的任意组合。
在本文描述的各种示例中,模块(例如,组件或引擎)可以被“编码”以执行某些操作或提供某些功能,指示可以执行所述模块的计算机可执行指令以执行这些操作,使得这些操作被执行,或以其他方式提供这样的功能。尽管关于软件组件、模块或引擎描述的功能可以作为离散的软件单元(例如,程序、功能、类方法)来执行,但是不必将其实现为离散的单元。也就是说,可以将功能合并到更大或更通用的程序中,例如更大或更通用的程序中的一行或多行代码。
为了表示,详细描述使用诸如“确定”和“使用”的术语来描述计算系统中的计算机操作。这些术语是计算机执行的操作的高级抽象,不应与人类执行的行为混淆。与这些术语相对应的实际计算机操作取决于实施方式。
示例20–云计算环境
图21描绘了其中可以实现所描述的技术的示例云计算环境2100。云计算环境2100包括云计算服务2110。云计算服务2110可以包括各种类型的云计算资源,诸如计算机服务器、数据存储库、网络资源等。云计算服务2110可以是位于中心的(例如,由企业或组织的数据中心提供)或分布式的(例如,由位于不同位置(诸如不同数据中心和/或位于不同城市或国家/地区)的各种计算资源提供)。
云计算服务2110被诸如计算设备2120、2122和2124的各种类型的计算设备(例如,客户端计算设备)利用。例如,计算设备(例如2120、2122和2124)可以是:计算机(例如,桌上型或膝上型计算机),移动设备(例如,平板计算机或智能电话)或其他类型的计算设备。例如,计算设备(例如2120、2122和2124)可以利用云计算服务2110来执行计算操作(例如,数据处理,数据存储等)。
示例21–实施方式
尽管为了方便呈现,以特定的顺序描述了所公开的方法中的一些的操作,但是应当理解,这种描述方式包括重排,除非本文阐述的特定语言要求特定的排序。例如,在一些情况下,顺序描述的操作可以重新排列或同时执行。而且,为了简单起见,附图可能未示出可以将所公开的方法与其他方法结合使用的各种方式。
所公开的方法中的任何一种可以被实现为存储在一个或多个计算机可读存储介质上并在计算设备(例如,任何可用的计算设备,包括智能电话或包括计算硬件的其他移动设备)上存储的计算机可执行指令或计算机程序产品)。有形计算机可读存储介质是可以在计算环境中访问的任何可用有形介质(例如,一个或多个光学介质光盘,诸如DVD或CD,易失性存储器组件(诸如DRAM或SRAM)或非易失性存储组件(诸如闪存或硬盘驱动器))。举例来说并参考图20,计算机可读存储介质包括存储器2020和2025以及储存器2040。术语计算机可读存储介质不包括信号和载波。另外,术语计算机可读存储介质不包括通信连接(例如2070)。
用于实现所公开的技术的计算机可执行指令中的任何一个以及在所公开的实施例的实现期间创建和使用的任何数据都可以存储在一个或多个计算机可读存储介质上。计算机可执行指令可以是例如专用软件应用或经由网络浏览器或其他软件应用(诸如远程计算应用)访问或下载的软件应用的一部分。这样的软件可以在例如单个本地计算机(例如,任何合适的市售计算机)上或在网络环境中(例如,经由因特网、广域网、局域网、使用一个或多个网络计算机的客户端-服务器网络(例如,云计算网络或其他此类网络))执行。
为了清楚起见,仅描述了基于软件的实施方式的某些选定方面。应当理解,所公开的技术不限于任何特定的计算机语言或程序。例如,公开的技术可以由用C++、Java、Perl、JavaScript、Python、Ruby、ABAP、SQL、Adobe Flash或任何其他合适的编程语言、或者在某些示例中诸如html或XML的标记语言、或者合适的编程语言和标记语言的组合编写的软件来实现。同样,所公开的技术不限于任何特定的计算机或硬件类型。
此外,任何基于软件的实施例(例如,包括用于使计算机执行所公开的方法中的任一个的计算机可执行指令)都可以通过适当的通信工具上载、下载或远程访问。此类合适的通信工具包括,例如,互联网、万维网、内联网、软件应用、电缆(包括光缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信、或其他此类通信工具。
所公开的方法、装置和系统不应以任何方式解释为限制。相反,本公开仅针对各种公开的实施例的新颖的和非显而易见的所有特征和方面中的每一个或者它们之间的各种组合和子组合。所公开的方法、装置和系统不限于任何特定方面或特征或其组合,所公开的实施例也不要求存在任何一个或多个特定优点,也不要求解决问题。
来自任何示例的技术可以与在其他示例中的一个或多个中描述的技术结合。鉴于可以应用所公开技术的原理的许多可能的实施例,应该认识到,所示出的实施例是所公开技术的示例,并且不应被视为对所公开技术的范围的限制。相反,所公开的技术的范围包括所附权利要求的范围和精神所覆盖的内容。
Claims (20)
1.一种计算系统,包括:
一个或多个存储器;
一个或多个处理单元,其耦接至所述一个或多个存储器;和
一个或多个计算机可读存储介质,其存储指定以下操作的计算机可执行指令:
在数据字典中为第一虚拟表创建第一模式,第一模式包括指定第一表的第一位置的第一逻辑指针,第一表包括第一数据并根据第一模式定义,第一位置在第一联合数据库系统中;
接收第一数据的至少一部分;
在托管数据库管理系统的中央计算系统的高速缓存中创建第二表,第二表根据第一模式定义;
将接收到的第一数据的至少一部分存储在第二表中;和
将第二值分配给第一逻辑指针,第二值标识第二表在高速缓存中的位置。
2.根据权利要求1所述的计算系统,所述操作还包括:
接收使用根据第一模式定义的高速缓存的表而不是第一表的请求,响应于接收到使用高速缓存的表的请求,执行创建、存储和分配。
3.根据权利要求1所述的计算系统,所述操作还包括:
接收启用对第一虚拟表的高速缓存的数据定义语言语句。
4.根据权利要求1所述的计算系统,其中,在接收到对与第一虚拟表相关联的数据的请求时,执行在所述高速缓存中创建第二表。
5.根据权利要求1所述的计算系统,其中,在接收到对与第一虚拟表相关联的数据的请求之前执行在所述高速缓存中创建第二表。
6.根据权利要求1所述的计算系统,所述操作还包括:
接收对与第二虚拟表相关联的数据的请求;
确定高速缓存已满;
从高速缓存中移除第二表;
将第一逻辑指针更新为第一值;和
在高速缓存中存储根据第二虚拟表的模式定义的第三表。
7.根据权利要求1所述的计算系统,所述操作还包括:
接收禁用对第一虚拟表的高速缓存的数据定义语言语句;和
响应于接收到禁用对第一虚拟表的高速缓存的数据定义语言语句,将第一逻辑指针更新为第一值。
8.根据权利要求1所述的计算系统,其中,存储在第二表中的第一数据的至少一部分包括全部的第一数据。
9.根据权利要求1所述的计算系统,其中,存储在第二表中的第一数据的至少一部分包括少于全部的第一数据。
10.根据权利要求1所述的计算系统,其中,第一虚拟表包括多个分区,并且存储在第二表中的第一数据的至少一部分包括所述多个分区中的至少第一分区。
11.根据权利要求1所述的计算系统,所述操作还包括:
确定存储在第二表中的接收到的第一数据的至少一部分是陈旧的;
从第一表中检索更新的数据;和
将更新的数据存储在第二表中。
12.根据权利要求11所述的计算系统,其中,所述检索是响应于检索与第一虚拟表相关联的数据的请求而执行的。
13.根据权利要求1所述的计算系统,所述操作还包括:
接收指示第一逻辑指针应指向副本表的数据定义语言语句;
创建副本表;和
将第一逻辑指针更新为第三值,第三值标识副本表的位置。
14.一种计算环境中的方法,包括:
在数据字典中创建第一表定义,第一表定义包括第一数据元素,第一数据元素指定包括数据并根据第一表定义来定义的第一表的第一位置,第一位置不在托管包括数据字典的数据库管理系统的中央计算系统的高速缓存中;
接收存储在第一表中的数据的至少一部分;
在高速缓存中创建第二表,第二表根据第一表定义来定义;
将接收到的数据的至少一部分存储在第二表中;和
将第二值分配给第一数据元素,第二值标识第二表在高速缓存中的位置。
15.根据权利要求14所述的方法,还包括:
接收禁用对第一表定义的高速缓存的数据定义语言语句;和
响应于接收到禁用对第一表定义的高速缓存的数据定义语言语句,将第一数据元素更新为第一值。
16.根据权利要求14所述的方法,还包括:
接收启用对第一表定义的高速缓存的数据定义语言语句。
17.根据权利要求14所述的方法,还包括:
接收对与第二表定义相关联的数据的请求,第二表定义包括第二数据元素,第二数据元素指定第三表的第三位置,第三表包括数据并且根据第二表定义来定义;
确定高速缓存已满;
从高速缓存中移除第二表;
将第一数据元素更新为第一值;和
将第三表存储在高速缓存中。
18.一个或多个计算机可读存储介质,包括:
能够在数据字典中为第一虚拟表创建第一模式的计算机可执行指令,第一模式包括指定第一表的第一位置的第一逻辑指针,第一表包括第一数据并根据第一模式定义,第一位置不在由中央计算系统托管的数据库管理系统的高速缓存中;
能够接收第一数据的至少一部分的计算机可执行指令;
能够在高速缓存中创建第二表的计算机可执行指令,第二表是根据第一模式定义的;
能够将接收到的第一数据的至少一部分存储在第二表中的计算机可执行指令;和
能够将第二值分配给第一逻辑指针的计算机可执行指令,第二值标识第二表在高速缓存中的位置。
19.根据权利要求18所述的一个或多个计算机可读存储介质,还包括:
能够接收对与第二虚拟表相关联的数据的请求的计算机可执行指令;
能够确定高速缓存已满的计算机可执行指令;
能够从高速缓存中移除第二表的计算机可执行指令;
能够将第一逻辑指针更新为第一值的计算机可执行指令;和
能够在高速缓存中存储根据第二虚拟表的模式定义的第三表的计算机可执行指令。
20.根据权利要求18所述的一个或多个计算机可读存储介质,还包括:
能够接收禁用对第一虚拟表的高速缓存的数据定义语言语句的计算机可执行指令;和
能够响应于接收到禁用对第一虚拟表的高速缓存的数据定义语言语句而将第一逻辑指针更新为第一值的计算机可执行指令。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962903459P | 2019-09-20 | 2019-09-20 | |
US62/903,459 | 2019-09-20 | ||
US16/713,850 US11321344B2 (en) | 2019-09-20 | 2019-12-13 | Virtual database tables with updatable logical table pointers |
US16/713,850 | 2019-12-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112540982A CN112540982A (zh) | 2021-03-23 |
CN112540982B true CN112540982B (zh) | 2024-04-16 |
Family
ID=72432831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010951759.3A Active CN112540982B (zh) | 2019-09-20 | 2020-09-11 | 具有可更新逻辑表指针的虚拟数据库表 |
Country Status (3)
Country | Link |
---|---|
US (3) | US11321344B2 (zh) |
EP (1) | EP3796185B1 (zh) |
CN (1) | CN112540982B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11379486B2 (en) | 2019-09-20 | 2022-07-05 | Sap Se | Virtual database tables with updatable logical table pointers |
US11321344B2 (en) | 2019-09-20 | 2022-05-03 | Sap Se | Virtual database tables with updatable logical table pointers |
KR102202792B1 (ko) * | 2020-08-06 | 2021-01-15 | (주)시큐레이어 | 클러스터 기반 처리 시스템을 이용해 동종 및 이기종 데이터 소스에 대해 멀티 캐싱을 수행하는 방법 및 장치 |
US11748327B2 (en) * | 2021-01-29 | 2023-09-05 | Snowflake Inc. | Streams using persistent tables |
US20230081067A1 (en) * | 2021-08-27 | 2023-03-16 | Oracle International Corporation | System and method for query acceleration for use with data analytics environments |
US20240303249A1 (en) * | 2023-03-09 | 2024-09-12 | Sap Se | Automatic data federation/replication toggle |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6594751B1 (en) * | 1999-03-25 | 2003-07-15 | Progress Software Corporation | Method and apparatus for pointer relocation optimization for virtual memory mapping and transaction management in a database system |
US6686920B1 (en) * | 2000-05-10 | 2004-02-03 | Advanced Micro Devices, Inc. | Optimizing the translation of virtual addresses into physical addresses using a pipeline implementation for least recently used pointer |
CN103092905A (zh) * | 2011-11-07 | 2013-05-08 | Sap股份公司 | 使用虚拟文件数据对象的列式数据库 |
CN103207839A (zh) * | 2012-01-17 | 2013-07-17 | 国际商业机器公司 | 存储的高速缓存内的轨道清除的高速缓存管理方法和系统 |
CN103827865A (zh) * | 2011-09-23 | 2014-05-28 | 国际商业机器公司 | 利用异步的基于日志的复制来改进数据库高速缓存 |
CN104049950A (zh) * | 2013-03-15 | 2014-09-17 | 英特尔公司 | 带有旁路多个实例化表的移动消除的系统和方法 |
CN104049906A (zh) * | 2013-03-11 | 2014-09-17 | Lsi公司 | 用于动态高速缓存共享的系统、方法和计算机可读介质 |
CN104823170A (zh) * | 2012-11-26 | 2015-08-05 | 亚马逊技术股份有限公司 | 分布式缓存群集管理 |
CN106471489A (zh) * | 2014-06-30 | 2017-03-01 | 微软技术许可有限责任公司 | 管理具有灵活模式的数据 |
CN107066467A (zh) * | 2015-11-24 | 2017-08-18 | Sap欧洲公司 | 用于事务高速缓存无效的原子可见性切换 |
CN109815167A (zh) * | 2017-11-20 | 2019-05-28 | 三星电子株式会社 | 用于高效虚拟标记的高速缓存实现的系统和方法 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6549901B1 (en) | 1997-05-30 | 2003-04-15 | Oracle Corporation | Using transportable tablespaces for hosting data of multiple users |
JP4552242B2 (ja) | 1999-10-06 | 2010-09-29 | 株式会社日立製作所 | 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法 |
US7395258B2 (en) | 2004-07-30 | 2008-07-01 | International Business Machines Corporation | System and method for adaptive database caching |
US20060294058A1 (en) | 2005-06-28 | 2006-12-28 | Microsoft Corporation | System and method for an asynchronous queue in a database management system |
JP5068062B2 (ja) | 2006-10-30 | 2012-11-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベースを統合するためのシステム、方法、およびプログラム |
US9183267B2 (en) * | 2010-05-24 | 2015-11-10 | Microsoft Technology Licensing, Llc | Linked databases |
US8577936B2 (en) * | 2010-11-29 | 2013-11-05 | International Business Machines Corporation | Fixup cache tool for object memory compaction in an information handling system |
US20120179874A1 (en) * | 2011-01-07 | 2012-07-12 | International Business Machines Corporation | Scalable cloud storage architecture |
US8874620B1 (en) | 2011-06-15 | 2014-10-28 | Amazon Technologies, Inc. | Data transfer optimization |
US10102117B2 (en) * | 2012-01-12 | 2018-10-16 | Sandisk Technologies Llc | Systems and methods for cache and storage device coordination |
US9454314B2 (en) * | 2014-03-07 | 2016-09-27 | ProfitBricks, Inc. | Systems and methods for creating an image of a virtual storage device |
US20150256601A1 (en) * | 2014-03-10 | 2015-09-10 | Palo Alto Research Center Incorporated | System and method for efficient content caching in a streaming storage |
US20150363435A1 (en) * | 2014-06-13 | 2015-12-17 | Cisco Technology, Inc. | Declarative Virtual Data Model Management |
US20160224594A1 (en) * | 2015-02-03 | 2016-08-04 | Simba Technologies Inc. | Schema Definition Tool |
US10649964B2 (en) * | 2015-02-26 | 2020-05-12 | Red Hat, Inc. | Incorporating external data into a database schema |
US10095720B2 (en) * | 2016-02-05 | 2018-10-09 | Amadeus S.A.S. | Database table index |
US10275177B2 (en) | 2016-10-31 | 2019-04-30 | Oracle International Corporation | Data layout schemas for seamless data migration |
US10810102B2 (en) | 2016-11-28 | 2020-10-20 | Sap Se | Database monitoring by data virtualization |
US10489356B1 (en) * | 2016-12-19 | 2019-11-26 | Amazon Technologies, Inc. | Truncate and append database operation |
US10768905B2 (en) * | 2017-01-31 | 2020-09-08 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing schema-driven on-the-fly code generation within a cloud based computing environment |
US11573947B2 (en) * | 2017-05-08 | 2023-02-07 | Sap Se | Adaptive query routing in a replicated database environment |
US10831591B2 (en) | 2018-01-11 | 2020-11-10 | Commvault Systems, Inc. | Remedial action based on maintaining process awareness in data storage management |
US11030195B2 (en) | 2018-01-18 | 2021-06-08 | Fmr Llc | Identifying and mitigating high-risk database queries through ranked variance analysis |
US10896176B1 (en) | 2018-02-15 | 2021-01-19 | EMC IP Holding Company LLC | Machine learning based query optimization for federated databases |
US10970306B2 (en) * | 2018-03-20 | 2021-04-06 | Locus Robotics Corp. | Change management system for data synchronization within an enterprise portal application |
US11703933B2 (en) * | 2019-01-24 | 2023-07-18 | Intel Corporation | Remote register updates |
US11321344B2 (en) | 2019-09-20 | 2022-05-03 | Sap Se | Virtual database tables with updatable logical table pointers |
US11379486B2 (en) | 2019-09-20 | 2022-07-05 | Sap Se | Virtual database tables with updatable logical table pointers |
US20210089552A1 (en) | 2019-09-20 | 2021-03-25 | Sap Se | Virtual database tables with updatable logical table pointers |
-
2019
- 2019-12-13 US US16/713,850 patent/US11321344B2/en active Active
-
2020
- 2020-09-09 EP EP20195250.4A patent/EP3796185B1/en active Active
- 2020-09-11 CN CN202010951759.3A patent/CN112540982B/zh active Active
-
2022
- 2022-01-04 US US17/646,982 patent/US11669539B2/en active Active
-
2023
- 2023-04-21 US US18/137,693 patent/US12079237B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6594751B1 (en) * | 1999-03-25 | 2003-07-15 | Progress Software Corporation | Method and apparatus for pointer relocation optimization for virtual memory mapping and transaction management in a database system |
US6686920B1 (en) * | 2000-05-10 | 2004-02-03 | Advanced Micro Devices, Inc. | Optimizing the translation of virtual addresses into physical addresses using a pipeline implementation for least recently used pointer |
CN103827865A (zh) * | 2011-09-23 | 2014-05-28 | 国际商业机器公司 | 利用异步的基于日志的复制来改进数据库高速缓存 |
CN103092905A (zh) * | 2011-11-07 | 2013-05-08 | Sap股份公司 | 使用虚拟文件数据对象的列式数据库 |
CN103207839A (zh) * | 2012-01-17 | 2013-07-17 | 国际商业机器公司 | 存储的高速缓存内的轨道清除的高速缓存管理方法和系统 |
CN104823170A (zh) * | 2012-11-26 | 2015-08-05 | 亚马逊技术股份有限公司 | 分布式缓存群集管理 |
CN104049906A (zh) * | 2013-03-11 | 2014-09-17 | Lsi公司 | 用于动态高速缓存共享的系统、方法和计算机可读介质 |
CN104049950A (zh) * | 2013-03-15 | 2014-09-17 | 英特尔公司 | 带有旁路多个实例化表的移动消除的系统和方法 |
CN106471489A (zh) * | 2014-06-30 | 2017-03-01 | 微软技术许可有限责任公司 | 管理具有灵活模式的数据 |
CN107066467A (zh) * | 2015-11-24 | 2017-08-18 | Sap欧洲公司 | 用于事务高速缓存无效的原子可见性切换 |
CN109815167A (zh) * | 2017-11-20 | 2019-05-28 | 三星电子株式会社 | 用于高效虚拟标记的高速缓存实现的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US12079237B2 (en) | 2024-09-03 |
US11669539B2 (en) | 2023-06-06 |
CN112540982A (zh) | 2021-03-23 |
US20220197922A1 (en) | 2022-06-23 |
EP3796185B1 (en) | 2023-04-26 |
US20210089550A1 (en) | 2021-03-25 |
US20230259522A1 (en) | 2023-08-17 |
US11321344B2 (en) | 2022-05-03 |
EP3796185A1 (en) | 2021-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3796184B1 (en) | Virtual database tables with updatable logical table pointers | |
CN112540982B (zh) | 具有可更新逻辑表指针的虚拟数据库表 | |
EP3796183B1 (en) | Virtual database tables with updatable logical table pointers | |
US8326839B2 (en) | Efficient file access in a large repository using a two-level cache | |
US9569475B2 (en) | Distributed consistent grid of in-memory database caches | |
US7797275B2 (en) | System and method of time-based cache coherency maintenance in user file manager of object-based storage system | |
US10275489B1 (en) | Binary encoding-based optimizations at datastore accelerators | |
US20160267132A1 (en) | Abstraction layer between a database query engine and a distributed file system | |
US20200081867A1 (en) | Independent evictions from datastore accelerator fleet nodes | |
US10146833B1 (en) | Write-back techniques at datastore accelerators | |
EP4258127A1 (en) | Data artifact instances faciliating flexible data access | |
US8140493B2 (en) | Changing metadata without invalidating cursors | |
US11599543B2 (en) | Routing SQL statements to elastic compute nodes using workload class | |
CN116414843A (zh) | 一种数据更新方法及装置 | |
US20230342355A1 (en) | Diskless active data guard as cache | |
US20240232159A9 (en) | Flexible routing of database operations accessing remote tables | |
JPH11161660A (ja) | 文書管理方法及びその実施システム並びにその処理プログラムを記録した媒体 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |