CN109947768A - 用于数据库对象的局部标识符 - Google Patents
用于数据库对象的局部标识符 Download PDFInfo
- Publication number
- CN109947768A CN109947768A CN201810803252.6A CN201810803252A CN109947768A CN 109947768 A CN109947768 A CN 109947768A CN 201810803252 A CN201810803252 A CN 201810803252A CN 109947768 A CN109947768 A CN 109947768A
- Authority
- CN
- China
- Prior art keywords
- subregion
- execution unit
- group
- row
- management 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.)
- Granted
Links
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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24537—Query rewriting; Transformation of operators
-
- 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/2228—Indexing structures
-
- 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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- 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/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
各种示例针对的是用于在分布式数据库***中利用局部标识符的***和方法。数据库管理***服务器可接收描述第一数据库查询的第一执行单元的第一执行单元数据。第一执行单元数据可包括描述用于第一执行单元的一组运算元的第一运算元数据。数据库管理***服务器可确定第一运算元数据描述来自第一分区的至少一个运算元和来自第二分区的至少一个运算元。数据库管理***服务器可生成描述第一分区处的行的第一组局部标识符和描述第二分区处的行的第一组局部标识符。数据库管理***服务器可至少部分基于描述第一分区处的行的第一组局部标识符和描述第二分区处的行的第一组局部标识符来执行第一执行单元。
Description
技术领域
本文档概括而言涉及结合计算机设备——包括联网计算设备——使用的方法和***。更具体而言,本文档涉及用于有效地执行数据库查询的***和方法。
背景技术
在分布式数据库***中,数据库被划分成多个分区。例如,单个表格可被划分成两个或更多个分区。分区在不同的数据库管理***服务器之间可以是可传送的。例如,单个数据库管理***服务器可负责一组分区,该组分区可包括构成特定表格的分区的一部分。分布式数据库***通常利用全局唯一标识符的***来引用诸如表格、切片(slice)、行等等之类的数据库对象。
附图说明
在以下附图中以示例而非限制方式图示了本公开。
图1是示出用于为数据库对象生成和使用局部标识符的分布式数据库***的一个示例的图。
图2是示出可由分布式数据库***的数据库管理***(database managementsystem,DBMS)服务器执行来执行具有局部标识符的执行单元的过程流的一个示例的流程图。
图3是示出可由分布式数据库***的DBMS服务器执行来利用现有的一组局部标识符执行一执行单元的过程流的一个示例的流程图。
图4是示出可由分布式数据库***的DBMS服务器执行来利用局部标识符的索引执行一执行单元的过程流的一个示例的流程图。
图5是图示出在本文描述的网络虚拟化***和方法的一些示例中可用于实现web应用的内存数据库管理***的示例的图。
图6是图示出图5的索引服务器的示例的图。
图7是图示出图6的请求处理和执行控制的一个示例的图。
图8是示出计算设备的软件体系结构的一个示例的框图。
图9是采取计算机***的示例形式的机器的框图,在该机器内可执行指令以使得该机器执行本文论述的方法中的任何一者或多者。
具体实施方式
接下来的描述包括体现例示性实施例的例示性***、方法、技术、指令序列和计算机器程序产品。在以下描述中,出于说明目的,记载了许多具体细节以便提供对发明主题的各种实施例的理解。然而,本领域技术人员将会明白,没有这些具体细节也可实现发明主题的实施例。一般而言,没有详细示出公知的指令实例、协议、结构和技术。
本文描述的各种示例针对的是例如在分布式数据库***中为数据库对象生成和/或使用局部标识符。在许多示例中,分布式数据库***中的全局唯一标识符(全局标识符)不一定被顺序地指派给一个或多个特定分区内的对象。也就是说,接连的切片、行等等可能不一定具有接连的全局标识符。例如,在一些分布式数据库***中,全局标识符是由全局定序器指派的。全局标识符可例如按照创建对象的顺序被指派给整个分布式数据库***上的对象。结果,知道分布式数据库***中的某一数据库对象的全局标识符可能不会提供关于周围对象的任何信息。另外,因为唯一全局标识符被用于大量的对象(例如,分布式数据库***中的所有对象),所以全局标识符的大小可能是很大的。
全局标识符可被分布式数据库管理***用来访问特定的数据库对象。例如,全局标识符可被转化成相应对象的地址(例如,行的主键、切片的主键的范围,等等)。因为在分布式数据库***中可能使用的全局标识符的巨大数目,所以诸如散列映射之类的映射数据结构可用于将全局标识符映射到相应的对象地址。例如,为了找到与特定全局标识符相关联的数据库对象的地址,分布式数据库管理***利用映射查找来从映射结构获得关联的物理地址。然而,当分布式数据库***中的全局标识符的数目很大时,映射查找操作可能是计算上昂贵且效率低下的。
因此,本文描述的各种示例利用局部标识符。分布式数据库管理***可向包括用于特定执行单元的运算元的一个或多个分区中的对象指派局部标识符。执行单元可以是任何离散的数据库操作。例如,数据库查询可包括一个或多个执行单元。在一些示例中,执行单元可由单个数据库管理***服务器在例如由单个数据库管理***服务器管理的分区上执行。
在一些示例中,分布式数据库管理***(例如,其数据库管理***服务器)生成将全局标识符映射到适当的局部标识符的局部到全局映射。在一些示例中,对于给定的分区和执行单元,从连续的值范围中抽取局部标识符。这样,某一分区内的接连的对象(例如,接连的行、接连的切片等等)可被指派以接连的局部标识符。在一些示例中,局部标识符被维持,至少直到执行单元的执行完成为止。因为在任何给定的查询或其执行单元中通常只使用所有全局标识符的小子集,所以局部标识符可在运行时间被有效地映射到全局标识符和/或物理地址,例如直接访问列表或阵列来实现局部到全局映射。
在一些示例中,可能希望为第二(例如,相关)执行单元再使用来自第一执行单元的一组局部标识符和/或为第二执行单元迅速地生成一组局部标识符。例如,第二执行单元可接受作为第一执行单元的结果的一个或多个运算元。例如,数据库查询可包括请求第一城市中在第一日提交订单的客户的名称的查看操作。第一执行单元可在订单表格的一个或多个分区上操作以识别在第一日提交的订单。第二执行单元可在所识别的订单上操作以确定哪些是由第一城市中的客户提交的。因此,第二执行单元在由第一执行单元操作的分区的子集上操作。在一些示例中,分布式数据库管理***通过向为第一执行单元生成的那组局部标识符应用一个或多个分区偏移量来为第二执行单元生成第二组局部标识符。
图1是示出用于为数据库对象生成和使用局部标识符的分布式数据库***100的一个示例的图。分布式数据库***100包括分布式数据库管理***102。分布式数据库管理***102可管理分布式数据库***100,例如包括如本文所述利用局部标识符执行其查询和/或执行单元。分布式数据库管理***102可包括一个或多个DBMS服务器104A、104B、104N。DBMS服务器104A、104B、104N可管理分布式数据库***100的一个或多个表格的一个或多个分区。在一些示例中,不同的DBMS服务器104A、104B、104N管理不同的分区或不同的分区集合。另外,在一些示例中,对一个或多个分区的管理可被从一个DBMS服务器104A、104B、104N转移到另一个。每个DBMS服务器104A、104B、104N可包括例如在共同物理位置(例如,服务器农场等等)的一个或多个物理计算设备。不同的DBMS服务器104A、104B、104N可位于相同的物理位置或不同的物理位置。
图1还示出了可由分布式数据库管理***102管理的分布式数据库***100的示例表格106、110。虽然在图1中示出了两个表格106、110,但在实践中例如分布式数据库***100这样的分布式数据库***可利用使用额外表格的方案。表格106、110包括各自的分区。例如,表格106包括分区108A、108B、108N,并且表格110包括分区112A、112B、112N。虽然对于每个表格106、110示出了三个分区,但表格可被划分成任何适当数目的分区。例如,表格106在一些示例中具有与表格110不同数目的分区。管理各种分区108A、108B、108N、112A、112B、112N的责任可被指派给DBMS服务器104A、104B、104N中的一个或多个。例如,分区108A可由DBMS服务器104A管理;分区108B可由DBMS服务器104B管理,等等。分区108A、108B、108N、112A、112B、112N可以是不同大小的,例如具有不同数目的行和/或不同的数据大小。
图1还图示了可被DBMS服务器104A、104B、104N生成和/或使用来在分布式数据库***100处执行一个或多个执行单元的局部标识符。在一些示例中,一个或多个DBMS服务器104A、104B、104N向分区108A、108B、108N、112A、112B、112N中的一者或多者的行指派分区标识符114A、114B、114C、116A、116B、116C。分区标识符可被顺序地指派到分区。例如,一个分区处的第一行可被指派以第一数字,该分区处的第二行可被指派以下一整数,该分区处的第三行可被指派以再下一整数,等等依此类推。
从用于一个分区的分区标识符,DBMS服务器104A、104B、104N可以为给定的执行单元生成局部标识符。例如,DBMS服务器104A、104B、104N可接收描述要执行的执行单元的执行单元数据。DBMS服务器104A、104B、104N可识别包括用于该执行单元的运算元的分区。在图1的示例中,来自表格106的分区108A和108N和来自表格110的分区112A包括用于示例执行单元的运算元。DBMS服务器104A、104B、104N可利用分区标识符来为执行单元生成局部标识符。例如,DBMS服务器104A、104B、104N可生成局部到全局映射118。用于任何给定行的局部标识符可通过向用于该行的分区标识符添加分区偏移量来确定。一个分区的分区偏移量可指示在该分区之前添加到局部到全局映射118的分区中的行的数目。在图1的示例中,分区108A的分区偏移量(POS1)是零;分区108N的分区偏移量(POS3)等于分区108A中的行的数目;并且分区112A的分区偏移量(POS3)等于分区108A和108N中的行的数目之和。局部到全局映射118可将局部标识符映射到相应的全局标识符(在图1中由G1-G9指示)和/或映射到相应行的地址。
在各种示例中,DBMS服务器104A、104B、104N可利用为一个执行单元生成的局部标识符来为第二执行单元生成第二组局部标识符,例如利用分区偏移量来生成。例如,考虑利用来自分区108A和112A的运算元但不利用来自分区108N的运算元的一个执行单元。DBMS服务器104A、104B、104N可从中性标识符114A和116A开始来生成与118类似的新的局部到全局映射。例如,用于分区112A的局部标识符的分区偏移量可指示分区108A中的行的数目。
在一些示例中,中性标识符可被省略,并且DBMS服务器104A、104B、104N可将局部到全局映射118转化成用于第二执行单元的新的局部到全局映射118。返回到最后一个示例,DBMS服务器104A、104B、104N可从局部到全局映射118中删除与不包括用于第二执行单元的运算元的分区(例如,图1中的分区108N)相对应的条目。可以为包括用于第二执行单元的运算元的分区找到新的分区偏移量。
在图1的示例中,中性标识符和局部标识符被按行指派给分区108A、108B、108N、112A、112B、112N。然而,在一些示例中,局部标识符也可被指派给切片。例如,切片可包括预定数目的行(例如,128k行、64k行,等等)。切片的大小可由方案或者描述分布式数据库***的其他元数据来指示。在其他示例中,不同的DBMS服务器104A、104B、104N可应用不同的切片大小。在一些示例中,切片也可被指派以中性标识符和/或局部标识符。例如,特定切片中的行的中性标识符可由切片中性标识符和指示对象在切片中的位置的偏移量来指示。
图2是示出可由分布式数据库***的DBMS服务器(例如DBMS服务器104A、104B、104N之一)执行来执行具有局部标识符的执行单元的过程流200的一个示例的流程图。在操作202,DBMS服务器接收描述执行单元的执行单元数据。该执行单元可以是要在该DBMS服务器处被执行的执行单元。例如,执行单元可构成要在分布式数据库***处执行的查询的全部或一部分。执行单元数据可包括描述用于该执行单元的运算元的运算元数据。运算元包括来自由该DBMS服务器管理的一个或多个分区的、要***作来执行该执行单元的一个或多个行。
在操作204,DBMS服务器可确定由执行单元数据描述的运算元是否被存储在多个分区(例如,由该DBMS服务器管理的多个分区)处。如果否(例如,如果用于该执行单元的运算元在单个分区处),则DBMS服务器可在操作中为该单个分区生成局部标识符。为单个分区生成局部标识符可例如包括按顺序枚举该单个分区处的行、切片等等的全部或一部分。例如,当存在单个分区时,局部标识符可类似于本文针对图1描述的中性标识符。
如果用于执行单元的运算元被存储在多个分区处,则DBMS服务器可在操作208中为该组多个分区生成局部标识符。DBMS可按任何适当的方式生成局部标识符。例如,DBMS服务器可为该组分区的每个分区生成中性标识符。DBMS服务器随后可串接关于这些分区的中性标识符。例如,如针对图1所描述的,DBMS服务器可向每个中性标识符添加分区偏移量。用于每个分区的分区偏移量可等于具有更低分区偏移量的分区(例如,已经被指派了局部标识符的分区)中的对象(例如,行、切片等等)之和。在另一示例中,代替生成中性标识符,DBMS服务器可向该组分区处的对象指派接连的局部标识符,例如开始于第一分区中的对象,然后是第二分区中的对象,等等依此类推。
在操作210,DBMS服务器可至少部分基于在操作206和/或在操作208生成的局部标识符来执行该执行单元。例如,DBMS服务器可利用局部到全局映射(例如图1的映射118)来在由执行单元数据指示的对象名称和全局标识符之间转化。
图3是示出可由分布式数据库***的DBMS服务器(例如DBMS服务器104A、104B、104N之一)执行来利用现有的一组局部标识符执行一执行单元的过程流300的一个示例的流程图。例如,过程流300可在图2的过程流200之后被执行。在操作304,DBMS服务器可接收描述要被DBMS服务器执行的下一执行单元的下一执行单元数据。在一些示例中,下一执行单元是与先前执行单元相同的数据库查询的一部分。
在操作304,DBMS服务器可确定下一执行单元是否具有在与由先前执行单元使用的那组分区不同的一组分区处的运算元。如果否(例如,如果下一执行单元使用来自与先前执行单元相同的一组分区的运算元),则DBMS服务器在操作306可利用先前为先前执行单元生成的局部标识符来执行该执行单元。
如果下一执行单元具有在与由先前执行单元使用的那组分区不同的一组分区处的运算元,则DBMS服务器在操作308可从现有的那组局部标识符得出下一组局部标识符。这例如可包括从现有的那组局部标识符中去除与不包括用于下一执行单元的运算元的分区相对应的任何局部标识符。用于剩余局部标识符的分区偏移量可被修改。来自公共分区的行也可具有公共的偏移量。另外,如果存在任何在现有的那组局部标识符中没有考虑的要包括的分区,则用于这些分区的局部标识符可例如被添加以新生成的分区偏移量。DBMS服务器在操作310可利用下一组局部标识符来执行下一执行单元。在一些示例中,DBMS服务器可向来自前一组局部标识符的局部标识符添加偏移量差值来得出下一组局部标识符。用于一行的偏移量差值可以是在前一组局部标识符中用于该行的分区偏移量与在下一组局部标识符中用于该行的分区偏移量之间的差值。
图4是示出可由分布式数据库***的DBMS服务器(例如DBMS服务器104A、104B、104N之一)执行来利用局部标识符的索引执行一执行单元的过程流400的一个示例的流程图。在操作402,DBMS服务器可生成引用至少两个分区的索引。该索引例如可将来自一个或多个分区的行或其他对象映射到一个或多个其他分区处的行或对象。索引可例如用于提高DBMS服务器执行执行单元的效率。例如,连接索引可被DBMS服务器用于加速和/或简化连接查询和/或执行单元的执行。利用索引中的局部标识符可允许DBMS服务器确定不同行或其他对象之间的关系,而无需为这些对象找出全局标识符。
在操作404,DBMS服务器可接收描述第一执行单元的第一执行单元数据。在操作406,DBMS服务器可从在操作402生成的索引生成第一执行单元索引。这例如可包括更新索引以(例如仅仅)引用包括用于第一执行单元的运算元的分区处的局部标识符。例如,DBMS服务器可确定哪个或哪些分区包括用于第一执行单元的运算元。局部标识符例如可被从索引去除和/或添加到索引,以使得索引包括与第一执行单元相关的那组分区之间的关系。包括用于第一执行单元的运算元的分区可被指派接连的局部标识符。例如,可生成用于第一执行单元的那组分区处的局部标识符的分区偏移量。这些分区偏移量可用于更新由该索引处的局部标识符先前使用的分区偏移量。在操作408,DBMS服务器可利用经更新的索引来执行第一执行单元。
在操作410,DBMS***可接收描述第二执行单元的第二执行单元数据,其中例如包括用于第二执行单元的运算元。在操作412,DBMS可从现有索引(例如,来自在操作402生成的经更新的索引和/或来自第一执行单元索引)为第二执行单元索引生成经更新的索引。生成第二执行单元索引例如可包括从先前索引添加和/或去除分区,基于分区的添加或减去修改分区偏移量,等等。在操作414,DBMS***可利用第二执行单元索引来执行第二执行单元。
为了进一步说明为数据库对象使用局部标识符,如本文所述,考虑DBMS服务器管理具有由以下表格1-4指示的示例行的标注为A-D的四个分区的示例。表格1-4示出了分区A-D处的行的全局标识符以及这些行的示例中性标识符。例如,DBMS服务器如本文所述可例如在接收到执行单元数据之前和/或之后向这些行指派中性标识符。
表格1:分区A
行全局ID | 行中性ID |
1000 | 0 |
2452 | 1 |
3699 | 2 |
4721 | 3 |
表格2:分区B
行全局ID | 行中性ID |
1111 | 0 |
2222 | 1 |
3333 | 2 |
表格3:分区C
行全局ID | 行中性ID |
4444 | 0 |
5555 | 1 |
6666 | 2 |
表格4:分区D
行全局ID | 行中性ID |
1484 | 0 |
1792 | 1 |
1801 | 2 |
接下来,考虑包括来自所有四个分区的运算元的第一执行单元。DBMS服务器可向分区A-D的行指派局部标识符,例如结果是由以下的表格5指示的局部到全局映射。
表格5:局部到全局映射
在这个示例中,分区A的四个行被指派以局部标识符0-3。分区B的三个行被指派以局部标识符4-6。分区B的分区偏移量是4,指示(位于分区B之前的)分区A中的行的数目。分区C的分区偏移量是7,指示分区A和B中的行之和。类似地,分区D的分区偏移量是10,指示分区A、B和C中的行之和。虽然为了示范在这个示例中利用了小的数字,但在各种示例分布式数据库***中,全局和/或局部标识符的大小可能足够大到使得关于存储和处理能力的考虑变得相关。在一个示例中,全局标识符可以是256比特,而用于执行单元的局部标识符可能小得多(例如,8比特、16比特、32比特,等等)。这可允许在执行查询及其执行单元中的效率提高。
第一执行单元可以是连接查询或者是连接查询的一部分。因此,DBMS服务器可生成连接索引。例如,分区C和D可如以下表格6所示那样连接。表格6
由以下的表格7提供利用如表格5的局部到全局映射处所阐述的局部标识符表述的相同连接索引:
表格7
用中性标识符表述的相同连接索引可通过从局部标识符中减去各自的分区偏移量来找到(例如,对于分区C是7,对于分区D是10)。这产生了表格8:
表格8:
DBMS服务器可利用例如表格7的连接索引和/或表格8的连接索引来执行第一执行单元。
现在考虑只包括只来自分区A、C和D的运算元的第二执行单元(例如,用于第二执行单元的运算元没有来自分区B的)。用于第二执行单元的局部到全局映射由以下的表格9示出:
表格9:局部到全局映射
如图所示,因为分区B被省略,所以用于分区C和D的分区偏移量分别被改变到4和7。在一些示例中,DBMS服务器可调整来自第一执行单元的连接索引来与用于第二执行单元的那组局部标识符一起使用,例如以下的表格10中所示:
表格10
图5是图示出内存数据库管理***500的示例的图。例如,数据库管理***500可描述例如本文所述的DBMS服务器处的实现方式。内存数据库主要在主存储器处存储数据,例如随机访问存储器(RAM)。这与主要采用盘存储机制的数据库不同。在一些示例中,数据库管理***500可以是或者可以包括来自德国沃尔多夫的SAP SE的HANA***的示例。虽然本文在内存数据库的上下文中描述web应用的各种特征,但如本文所述的对于服务人员的web应用安全性一般可对任何类型的web应用实现。
内存数据库管理***500可耦合到一个或多个客户端应用502A、502B。客户端应用502A、502B可利用来自数据库的数据执行一个或多个查询,例如向一个或多个用户呈现用户界面(UI)、输入数据、访问数据,等等。客户端应用502A、502B可通过多种不同的协议与内存数据库管理***500通信,这些协议包括SQL、多维表达式(MultidimensionalExpressions,MDX)、超文本传送协议(HTTP)、表示性状态转移(Representational StateTransfer,REST)、超文本标记语言(HTML)。
图5还示出了可用于通过访问内存数据库管理***500来执行建模的工作室504。在一些示例中,工作室504可允许对不仅从实时事件数据和窗口而且从存储的数据库信息抽取的数据执行复杂的分析。内存数据库管理***500可包括数个不同的组件,其中包括索引服务器506、XS引擎508、统计服务器510、预处理器服务器512和名称服务器514。这些组件可在单个计算设备上操作或者可分散在多个计算设备之间(例如,分开的服务器)。索引服务器506包含实际数据和用于处理数据的引擎。它还可协调和使用其他服务器。
XS引擎508允许客户端利用web协议(例如HTTP)连接到内存数据库管理***500。虽然XS引擎508被图示为内存数据库管理***500的组件,但在一些示例中,XS引擎508可实现为位于客户端应用502A、502B和内存数据库管理***500之间的一个或多个应用程序接口(Application Program Interface,API)和/或服务。例如,XS引擎508可被配置为处理以不是SQL的语言、例如是MDX、HTTP、REST、HTML等等接收到的客户端请求。
统计服务器510从所有其他服务器组件收集关于状态、性能和资源消耗的信息。可从工作室504访问统计服务器510以获得各种警报监视器的状态。
预处理器服务器512用于分析文本数据和提取文本搜索能力所基于的信息。
名称服务器514保存关于数据库拓扑的信息。这被用在具有不同主机上的数据库的实例的分布式***中。名称服务器514知道组件在何处运行以及哪些数据位于哪个服务器上。在示例实施例中,一个单独的入队服务器可按上文对于入队服务器(enqueueserver)描述的方式操作,具体而言是就创建和管理轻量型入队会话(lightweightenqueue session)而言。
图6是图示出索引服务器506的示例的图。具体而言,更详细描绘了图5的索引服务器506。索引服务器506包括连接和会话管理组件600,其负责为数据库客户端(例如,客户端应用502A、502B)创建和管理会话和连接。一旦建立了会话,客户端就可利用SQL语句与数据库管理***500通信。对于每个会话,可维持一组会话参数602,例如自动提交、当前事务隔离水平,等等。用户(例如,***管理员、开发者)可由数据库管理***500自身认证(例如,通过利用认证组件604以诸如用户名和口令之类的登录信息登录),或者认证可被委托给外部认证提供者,例如轻量型目录访问协议(Lightweight Directory Access Protocol,LDAP)目录。
客户端查询可由被总结为请求处理和执行控制606的一组组件来分析和执行。SQL处理器608检查客户端SQL语句的语法和语义并且生成逻辑执行计划。在一些示例中,生成逻辑执行计划包括如本文所述为分区对象生成和/或利用局部标识符。例如,生成逻辑执行计划可包括执行本文描述的过程流200、300、400的一些或全部。MDX是用于查询和操纵存储在在线分析处理(online analytical processing,OLAP)立方中的多维数据的语言。这样,可提供MDX引擎610来允许对MDX命令的解析和执行。规划引擎612允许应用在数据库层中执行基本规划操作。一个这种操作是创建数据集的新版本作为现有数据集的拷贝,同时应用过滤器和变换。
计算引擎614实现各种SQL脚本和规划操作。计算引擎614为从SQL脚本、MDX、规划和域特定模型得出的计算模型创建逻辑执行计划。此逻辑执行计划例如可包括将模型分解成能够被并行处理的操作。数据被存储在关系存储库616中,该关系存储库616在主存储器中实现关系数据库。每个SQL语句可在事务的上下文中被处理。新的会话被隐式指派到新的事务。事务管理器618协调数据库事务、控制事务性隔离并且保持跟踪运行中的和关闭的事务。当事务被提交或回滚时,事务管理器618向涉及的引擎通知关于此事件以便它们可执行需要的动作。事务管理器618还与持久层620合作以实现原子化的和持久的事务。
授权管理器622被其他数据库***组件调用来检查用户是否具有指定的权限来执行所请求的操作。数据库管理***500允许向用户或角色授予权限。权限授予在指定的对象上执行指定的操作的权利。
持久层620确保数据库在重启之后恢复到最近提交状态并且确保事务或者被完全执行或者被完全撤消。为了以有效的方式实现这个目标,持久层620使用先写日志、影式分页和保存点的组合。持久层620还提供用于向单独的盘存储626写入和读取数据的页管理接口624,并且还包含管理事务日志的记录器628。日志条目在数据被经由持久接口写入时可由持久层620隐式写入,或者通过利用日志接口来显式写入。
图7是图示出请求处理和执行控制606的一个示例的图。此图更详细描绘了图6的请求处理和执行控制606。SQL处理器608包含SQL解析器700,SQL解析器700解析SQL语句并且生成逻辑执行计划702,SQL解析器700将该逻辑执行计划702传递到SQL优化器704。SQL优化器704优化逻辑执行计划702并且将其转换成物理执行计划706,然后将该物理执行计划706传递到SQL执行器708。计算引擎614实现各种SQL脚本和规划操作,并且包括优化操作的计算引擎优化器710和执行操作的计算引擎执行器712,以及固有计算引擎操作器714、L操作器716和R操作器718。
L基础设施720包括数个组件来辅助L程序的运行,包括L运行时间(***模式)722、L编译器724和L运行时间(用户模式)726。
示例:
示例1是一种分布式数据库***的数据库管理***服务器,该数据库管理***服务器包括处理器和与处理器通信的存储器,其中数据库管理***服务器被编程为执行操作,这些操作包括:接收描述第一数据库查询的第一执行单元的第一执行单元数据,第一执行单元数据包括描述用于第一执行单元的一组运算元的第一运算元数据;由数据库管理***服务器确定第一运算元数据描述来自分布式数据库***的第一分区的至少一个运算元和来自分布式数据库***的第二分区的至少一个运算元;由数据库管理***服务器生成描述第一分区处的行的第一组局部标识符;由数据库管理***服务器生成描述第二分区处的行的第一组局部标识符;以及至少部分基于描述第一分区处的行的第一组局部标识符和描述第二分区处的行的第一组局部标识符来在分布式数据库***处执行第一执行单元。
在示例2中,示例1的主题可选地包括其中数据库管理***服务器还被编程为执行包括以下的操作:接收描述第二执行单元的第二执行单元数据,第二执行单元数据包括描述用于第二执行单元的一组运算元的第二运算元数据;确定第二运算元数据描述来自第一分区的至少一个运算元;至少部分通过向从描述第一分区处的行的第一组局部标识符中选择的局部标识符添加第一偏移量来生成描述第一分区处的行的第二组局部标识符;以及至少部分基于描述第一分区处的行的第二组局部标识符来在分布式数据库***处执行第二执行单元。
在示例3中,示例2的主题可选地包括其中第二运算元数据还描述来自分布式数据库***的第三分区的至少一个运算元,其中第一分区和第三分区是共同的表格的一部分。
在示例4中,示例1-3的任何一者或多者的主题可选地包括其中数据库管理***服务器还被编程为执行包括生成关联第一分区处的行的至少一部分和第二分区的行的至少一部分的索引的操作,其中索引是至少部分基于第一组局部标识符的。
在示例5中,示例4的主题可选地包括其中数据库管理***服务器还被编程为执行包括以下的操作:接收包括描述用于第二执行单元的一组运算元的第二运算元数据的第二执行单元;确定第二运算元数据描述来自第一分区的至少一个运算元;至少部分通过向索引的第一局部标识符添加第一偏移量差值来生成经更新的索引,其中第一偏移量差值是来自第一组局部标识符的第一分区的分区偏移量和第二组局部标识符中的第一分区的分区偏移量之间的差值;以及至少部分基于经更新的索引来在分布式数据库***处执行第二执行单元。
在示例6中,示例1-5的任何一者或多者的主题可选地包括其中描述第一分区处的行的第一组局部标识符的第一局部标识符包括指示第一分区处的切片的切片标识符和指示第一分区处的第一行的偏移量的行偏移量。
在示例7中,示例1-6的任何一者或多者的主题可选地包括其中描述第一分区处的行的第一组局部标识符的第一局部标识符包括指示分区中性标识符的第一部分和指示第一分区的第一执行单元分区偏移量的第二部分。
在示例8中,示例1-7的任何一者或多者的主题可选地包括其中数据库管理***服务器还被编程为执行包括以下的操作:接收描述第二执行单元的第二执行单元数据,第二执行单元数据包括描述用于第二执行单元的一组运算元的第二运算元数据;确定第二运算元数据描述来自第一分区的至少一个运算元;至少部分基于第二执行单元分区偏移量来生成描述第一分区处的行的第二组局部标识符;以及至少部分基于描述第一分区处的行的第二组局部标识符来在分布式数据库***处执行第二执行单元。
示例9是一种在分布式数据库管理***中执行数据库查询的方法,该方法包括:由数据库管理***服务器接收描述第一数据库查询的第一执行单元的第一执行单元数据,第一执行单元数据包括描述用于第一执行单元的一组运算元的第一运算元数据;由数据库管理***服务器确定第一运算元数据描述来自分布式数据库***的第一分区的至少一个运算元和来自分布式数据库***的第二分区的至少一个运算元;由数据库管理***服务器生成描述第一分区处的行的第一组局部标识符;由数据库管理***服务器生成描述第二分区处的行的第一组局部标识符;以及由数据库管理***服务器至少部分基于描述第一分区处的行的第一组局部标识符和描述第二分区处的行的第一组局部标识符来在分布式数据库***处执行第一执行单元。
在示例10中,示例9的主题可选地包括由数据库管理***服务器接收描述第二执行单元的第二执行单元数据,第二执行单元数据包括描述用于第二执行单元的一组运算元的第二运算元数据;由数据库管理***服务器确定第二运算元数据描述来自第一分区的至少一个运算元;由数据库管理***服务器至少部分通过向从描述第一分区处的行的第一组局部标识符中选择的局部标识符添加第一偏移量来生成描述第一分区处的行的第二组局部标识符;以及由数据库管理***服务器至少部分基于描述第一分区处的行的第二组局部标识符来在分布式数据库***处执行第二执行单元。
在示例11中,示例10的主题可选地包括其中第二运算元数据还描述来自分布式数据库***的第三分区的至少一个运算元,其中第一分区和第三分区是共同的表格的一部分。
在示例12中,示例9-11的任何一者或多者的主题可选地包括由数据库管理***服务器生成关联第一分区处的行的至少一部分和第二分区的行的至少一部分的索引,其中索引是至少部分基于第一组局部标识符的。
在示例13中,示例12的主题可选地包括由数据库管理***服务器接收包括描述用于第二执行单元的一组运算元的第二运算元数据的第二执行单元;由数据库管理***服务器确定第二运算元数据描述来自第一分区的至少一个运算元;由数据库管理***服务器至少部分通过向索引的第一局部标识符添加第一偏移量差值来生成经更新的索引,其中第一偏移量差值是来自第一组局部标识符的第一分区的分区偏移量和第二组局部标识符中的第一分区的分区偏移量之间的差值;以及由数据库管理***服务器至少部分基于经更新的索引来在分布式数据库***处执行第二执行单元。
在示例14中,示例9-13的任何一者或多者的主题可选地包括其中描述第一分区处的行的第一组局部标识符的第一局部标识符包括指示第一分区处的切片的切片标识符和指示第一分区处的第一行的偏移量的行偏移量。
在示例15中,示例9-14的任何一者或多者的主题可选地包括其中描述第一分区处的行的第一组局部标识符的第一局部标识符包括指示分区中性标识符的第一部分和指示第一分区的第一执行单元分区偏移量的第二部分。
在示例16中,示例9-15的任何一者或多者的主题可选地包括由数据库管理***服务器接收描述第二执行单元的第二执行单元数据,第二执行单元数据包括描述用于第二执行单元的一组运算元的第二运算元数据;由数据库管理***服务器确定第二运算元数据描述来自第一分区的至少一个运算元;由数据库管理***服务器至少部分基于第二执行单元分区偏移量来生成描述第一分区处的行的第二组局部标识符;以及由数据库管理***服务器至少部分基于描述第一分区处的行的第二组局部标识符来在分布式数据库***处执行第二执行单元。
示例17是一种包括存储在其上的指令的机器可读介质,这些指令当被至少一个处理器执行时使得至少一个处理器执行操作,这些操作包括:接收描述分布式数据库***处的第一数据库查询的第一执行单元的第一执行单元数据,第一执行单元数据包括描述用于第一执行单元的一组运算元的第一运算元数据;确定第一运算元数据描述来自分布式数据库***的第一分区的至少一个运算元和来自分布式数据库***的第二分区的至少一个运算元;生成描述第一分区处的行的第一组局部标识符;生成描述第二分区处的行的第一组局部标识符;以及至少部分基于描述第一分区处的行的第一组局部标识符和描述第二分区处的行的第一组局部标识符来执行第一执行单元。
在示例18中,示例17的主题可选地包括其中机器可读介质还包括存储在其上的如下指令:这些指令当被至少一个处理器执行时使得至少一个处理器执行包括以下各项在内的操作:接收描述第二执行单元的第二执行单元数据,第二执行单元数据包括描述用于第二执行单元的一组运算元的第二运算元数据;确定第二运算元数据描述来自第一分区的至少一个运算元;至少部分通过向从描述第一分区处的行的第一组局部标识符中选择的局部标识符添加第一偏移量来生成描述第一分区处的行的第二组局部标识符;以及至少部分基于描述第一分区处的行的第二组局部标识符来在分布式数据库***处执行第二执行单元。
在示例19中,示例18的主题可选地包括其中第二运算元数据还描述来自分布式数据库***的第三分区的至少一个运算元,其中第一分区和第三分区是共同的表格的一部分。
在示例20中,示例17-19的任何一者或多者的主题可选地包括其中机器可读介质还包括存储在其上的如下指令:这些指令当被至少一个处理器执行时使得至少一个处理器执行包括生成关联第一分区处的行的至少一部分和第二分区处的行的至少一部分的索引的操作,其中索引是至少部分基于第一组局部标识符的。
图8是示出计算设备的软件体系结构802的一个示例的框图800。体系结构802可结合例如这里描述的各种硬件体系结构使用。图8只是软件体系结构的非限制性示例,而许多其他体系结构可被实现来促进本文描述的功能。代表性硬件层804被图示并且可代表例如任何以上提到的计算设备。在一些示例中,硬件层804可根据图9的计算机***900的体系结构来实现。
代表性硬件层804包括具有关联的可执行指令808的一个或多个处理单元806。可执行指令808表示软件体系结构802的可执行指令,包括本文描述的方法、模块、子***和组件等等的实现,并且也可包括存储器和/或存储模块810,存储器和/或存储模块810也具有可执行指令808。硬件层804还可包括如其他硬件812指示的其他硬件,这可代表硬件层804的任何其他硬件,例如作为计算机***900的一部分图示的其他硬件。
在图8的示例体系结构中,软件体系结构802可被概念化为层的栈,其中每一层提供特定的功能。例如,软件体系结构802可包括诸如以下的层:操作***814、库816、框架/中间件818、应用820和呈现层844。在操作上,应用820和/或层内的其他组件可通过软件栈调用API调用824并且响应于API调用824而访问被示为消息826的响应、返回的值等等。图示的层是代表性的,而并非所有软件体系结构都具有所有的层。例如,一些移动或专用操作***可不提供框架/中间件818,而其他的可提供这样的层。其他软件体系结构可包括额外的或不同的层。
操作***814可管理硬件资源并且提供常见服务。操作***814例如可包括内核828、服务830和驱动器832。内核828可充当硬件和其他软件层之间的抽象层。例如,内核828可负责存储器管理、处理器管理(例如,调度)、组件管理、联网、安全性设置,等等。服务830可为其他软件层提供其他常见服务。在一些示例中,服务830包括中断服务。中断服务可检测对中断的接收,并且作为响应,使得体系结构802暂停其当前处理并且在中断被访问时执行中断服务例程(interrupt service routine,ISR)。
驱动器832可负责控制下层硬件或与下层硬件接口。例如,取决于硬件配置,驱动器832可包括显示驱动器、相机驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(Universal Serial Bus,USB)驱动器)、驱动器、NFC驱动器、音频驱动器、电力管理驱动器,等等。
库816可提供可被应用820和/或其他组件和/或层利用的常见基础设施。库816通常提供允许其他软件模块以比与下层操作***814功能(例如,内核828、服务830和/或驱动器832)直接接口更容易的方式执行任务的功能。库816可包括可提供诸如存储器分配功能、字符串操纵功能、数学功能等等之类的功能的***库834(例如,C标准库)。此外,库816可提供API库836,例如媒体库(例如,支持诸如MPEG4、H.264、MP3、AAC、AMR、JPG、PNG之类的各种媒体格式的呈现和操纵的库)、图形库(例如,可用于在显示器上的图形内容中渲染2D和8D的OpenGL框架)、数据库库(例如,可提供各种关系数据库功能的SQLite)、web库(例如,可提供web浏览功能的WebKit),等等。库816也可包括各种各样的其他库838来向应用820和其他软件组件/模块提供许多其他API。在一些示例中,库816可提供由面向消息的中间件来服务的一个或多个API。
框架818(有时也称为中间件)可提供可被应用820和/或其他软件组件/模块利用的更高级别常见基础设施。例如,框架818可提供各种图形用户界面(graphic userinterface,GUI)功能、高级别资源管理、高级别位置服务,等等。框架818可提供可被应用820和/或其他软件组件/模块利用的很宽范围的其他API,其中一些可能是特定的操作***或平台特定的。
应用820包括内置应用840和/或第三方应用842。代表性内置应用840的示例可包括——但不限于——联系人应用、浏览器应用、书籍阅读器应用、位置应用、媒体应用、消息传递应用和/或游戏应用。第三方应用842可包括内置应用840的任何一者以及各种各样的其他应用。在特定示例中,第三方应用842(例如,由不是特定平台的厂商的实体利用AndroidTM或iOSTM软件开发套件(software development kit,SDK)开发的应用)可以是在诸如iOSTM、AndroidTM、Phone或其他移动计算设备操作***之类的移动操作***上运行的移动软件。在这个示例中,第三方应用842可调用由诸如操作***814之类的移动操作***提供的API调用824来促进本文描述的功能。
应用820可利用内置的操作***功能(例如,内核828、驱动器832和/或驱动器832)、库(例如,***834、API 836和其他库838)、框架/中间件818来创建用户接口以与***的用户交互。替换地或者额外地,在一些***中,与用户的交互可通过呈现层(例如呈现层844)发生。在这些***中,应用/模块“逻辑”可与应用/模块的与用户交互的那些方面相分离。
一些软件体系结构利用虚拟机。在图8的示例中,这由虚拟机848来图示。虚拟机创建一种软件环境,在其中应用/模块可以就像它们在硬件计算设备上执行那样执行。虚拟机848被主机操作***(操作***814)所托管并且通常——虽然并非始终——具有虚拟机监视器846,该虚拟机监视器846管理虚拟机848的操作以及与主机操作***(即,操作***814)的接口。软件体系结构在虚拟机848内执行,例如操作***850、库852、框架/中间件854、应用856和/或呈现层858。在虚拟机848内执行的软件体系结构的这些层可与先前描述的相应层相同或者可以不同。
模块、组件和逻辑
某些实施例在本文中被描述为包括逻辑或数个组件、模块或机构。模块可构成软件模块(例如,(1)在非暂态机器可读介质上或(2)在传输信号中体现的代码)或者硬件实现模块。硬件实现模块是能够执行某些操作的有形单元并且可按特定方式被配置或安排。在示例实施例中,一个或多个计算机***(例如,单机、客户端或服务器计算机***)或一个或多个处理器可被软件(例如,应用或应用部分)配置为进行操作以执行如本文所述的某些操作的硬件实现模块。
在各种实施例中,可以机械地或者电子地实现硬件实现模块。例如,硬件实现模块可包括被永久配置来执行某些操作的专用电路或逻辑(例如,专用处理器,比如现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specificintegrated circuit,ASIC))。硬件实现模块也可包括由软件临时配置来执行某些操作的可编程逻辑或电路(例如,包含在通用处理器或另一可编程处理器内)。将会明白,关于是以机械方式、还是用专用且永久配置的电路还是用临时配置的电路(例如,由软件配置)来实现硬件实现模块的决定可由成本和时间考虑来驱动。
因此,术语“硬件实现模块”应当被理解为涵盖有形实体,不论该实体是被物理地构造、永久地配置(例如,硬连线)的实体,还是被临时或暂时配置(例如,编程)来按某种方式操作和/或执行本文描述的某些操作的实体。考虑硬件实现模块被临时配置(例如,编程)的实施例,在任何一个时刻不需要配置或实例化每个硬件实现模块。例如,在硬件实现模块包括利用软件配置的通用处理器的情况下,该通用处理器在不同时间可被配置为各个不同的硬件实现模块。软件可相应地将处理器配置为例如在一个时刻构成一特定的硬件实现模块并且在一不同的时刻构成一不同的硬件实现模块。
硬件实现模块可向其他硬件实现模块提供信息并且可从其他硬件实现模块接收信息。因此,描述的硬件实现模块可被视为是通信耦合的。在多个这样的硬件实现模块同时存在的情况下,通信可通过信号传输来实现(例如,通过连接硬件实现模块的适当电路和总线)。在在不同时间配置或实例化多个硬件实现模块的实施例中,这种硬件实现模块之间的通信可例如通过在这多个硬件实现模块能够访问的存储器结构中存储和取回信息来实现。例如,一个硬件实现模块可执行一操作并且将该操作的输出存储在其通信耦合到的存储器设备中。另一硬件实现模块随后在以后某时可访问该存储器设备以取回并处理存储的输出。硬件实现模块也可发起与输入或输出设备的通信,并且可对资源(例如,信息的集合)进行操作。
本文描述的示例方法的各种操作可至少部分地由被临时配置(例如,由软件)或永久配置来执行相关操作的一个或多个处理器执行。无论是临时还是永久地配置,这种处理器都可构成处理器实现模块,这些模块进行操作来执行一个或多个操作或功能。本文提及的模块在一些示例实施例中可包括处理器实现模块。
类似地,本文描述的方法可至少部分是由处理器实现的。例如,方法的操作之中的至少一些可由一个或多个处理器或者处理器实现模块来执行。某些操作的执行可分布在一个或多个处理器之间,不仅是驻留在单个机器内,而是部署在多个机器上。在一些示例实施例中,一个或多个处理器可位于单个位置中(例如,在家庭环境、办公室环境或服务器农场内),而在其他实施例中处理器可分布在多个位置上。
一个或多个处理器也可进行操作来支持在“云计算”环境中或者作为“软件即服务”(software as a service,SaaS)的相关操作的执行。例如,这些操作之中的至少一些可由一组计算机(作为包括处理器的机器的示例)来执行,这些操作是经由网络(例如,因特网)和经由一个或多个适当的接口(例如,API)可访问的。
电子装置和***
示例实施例可在数字电子电路中实现,或者在计算机硬件、固件或软件或者在它们的组合中实现。示例实施例可利用计算机程序产品来实现,例如,有形地体现在信息载体中(例如机器可读介质中)的计算机程序,以供数据处理装置执行或者控制数据处理装置的操作,其中数据处理装置例如是可编程处理器、计算机或多个计算机。
计算机程序可以用任何形式的编程语言来编写,所述语言包括经编译或解释的语言,并且计算机程序可按任何形式来部署,包括被部署为独立程序或被部署为模块、子例程或者适合用在计算环境中的其他单元。计算机程序可被部署来在一个计算机上或多个计算机上执行,所述多个计算机位于一个地点或分布在多个地点并由通信网络互连。
在示例实施例中,操作可由一个或多个可编程处理器执行,这些可编程处理器执行计算机程序以通过操作输入数据并生成输出来执行功能。方法操作也可由专用逻辑电路(例如,FPGA或ASIC)来执行,并且示例实施例的装置可实现为专用逻辑电路。
计算***可包括客户端和服务器。客户端和服务器一般可彼此远离并且通常通过通信网络来交互。客户端和服务器的关系是由于计算机程序在各计算机上运行且相互之间具有客户端-服务器关系而发生的。在部署可编程计算***的实施例中,将会明白硬件和软件体系结构都值得考虑。具体而言,将会明白,关于是以永久配置的硬件(例如,ASIC),以临时配置的硬件(例如,软件和可编程处理器的组合)还是以永久和临时配置的硬件的组合实现某个功能的选择,可以是一个设计选择。下面阐述了在各种示例实施例中可部署的硬件(例如,机器)和软件体系结构。
示例机器体系结构和机器可读介质
图9是采取计算机***900的示例形式的机器的框图,在该机器内可执行指令924以使得该机器执行本文论述的方法中的任何一者或多者。在替换实施例中,机器可作为独立的设备来操作或者可连接(例如,联网)到其他机器。在联网部署中,机器可在服务器-客户端网络环境中作为服务器或者客户端机器来操作,或者在对等(或分布式)网络环境中作为对等机器来操作。机器可以是个人计算机(personal computer,PC)、平板PC、机顶盒(set-top box,STB)、个人数字助理(personal digital assistant,PDA)、蜂窝电话、web器具、网络路由器、交换机或网桥,或者任何能够执行指定机器要采取的动作的(顺序的或其他方式的)指令的机器。另外,虽然只图示了单个机器,但术语“机器”也应当被理解为包括单独或联合执行指令的集合(或多个集合)以执行本文论述的方法之中的任何一者或多者的机器的任何集合。
示例计算机***900包括处理器902(例如,中央处理单元(central processingunit,CPU)、图形处理单元(graphics processing unit,GPU)或者这两者)、主存储器904和静态存储器906,它们经由总线908与彼此通信。计算机***900还可包括视频显示单元910(例如,液晶显示器(graphics processing unit,LCD)或阴极射线管(cathode ray tube,CRT))。计算机***900还包括字母数字输入设备912(例如,键盘或触摸敏感显示屏)、UI导航(或光标控制)设备914(例如,鼠标)、盘驱动或存储设备916、信号生成设备918(例如,扬声器)和网络接口设备920。
机器可读介质
盘驱动设备916包括机器可读介质922,其上存储了实现本文描述的方法或功能中的任何一者或多者或者被本文描述的方法或功能中的任何一者或多者所利用的一组或多组数据结构和指令924(例如,软件)。指令924在其被计算机***900执行期间可完全或至少部分驻留在主存储器904内和/或处理器902内,其中主存储器904和处理器902也构成机器可读介质922。
虽然机器可读介质922在示例实施例中被示为单个介质,但术语“机器可读介质”可包括存储一个或多个指令924或数据结构的单个介质或多个介质(例如,集中式或分布式数据库,和/或关联的缓存和服务器)。术语“机器可读介质”应当被理解为包括任何如下的有形介质:其能够存储、编码或承载供机器执行并且使得机器执行本公开的方法中的任何一者或多者的指令924,或者能够存储、编码或承载被这种指令924利用或者与这种指令924相关联的数据结构。术语“机器可读介质”因此应当被理解为包括——但不限于——固态存储器以及光介质和磁介质。机器可读介质922的具体示例包括非易失性存储器,例如包括半导体存储器设备,例如可擦除可编程只读存储器(erasable programmable read-onlymemory,EPROM)、电可擦除可编程只读存储器(electrically erasable programmableread-only memory,EEPROM)以及闪存设备;磁盘,例如内部硬盘和可移除盘;磁光盘;以及CD-ROM和DVD-ROM盘。
传输介质
还可利用传输介质在通信网络926上发送或接收指令924。可利用网络接口设备920和多种公知的传送协议(例如HTTP)中的任何一种来传输指令924。通信网络的示例包括局域网(local area network,LAN)、广域网(wide area network,WAN)、因特网、移动电话网络、普通老式电话(plain old telephone,POTS)网络和无线数据网络(例如,WiFi和WiMax网络)。术语“传输介质”应当被理解为包括能够存储、编码或承载指令924来供机器执行的任何无形介质,并且包括数字或模拟通信信号或其他无形介质来促进这种软件的通信。
虽然已参考具体的示例实施例描述了实施例,但将会明白,在不脱离本公开的更宽精神和范围的情况下,可对这些实施例做出各种修改和改变。因此,说明书和附图应被认为是例示性的,而不是限制性的。形成本文一部分的附图以例示而非限制方式示出了其中可实现主题的具体实施例。例示的实施例被充分详细地描述以使得本领域技术人员能够实现本文公开的教导。可从其利用和得出其他实施例,从而可在不脱离本公开的范围的情况下做出结构上和逻辑上的替代和改变。这个“具体实施方式”部分因此不应当从限制意义上来理解,而各种实施例的范围仅由所附权利要求以及这种权利要求被授权的等同物的完全范围来限定。
发明主题的这种实施例在本文中可单独和/或总体上由术语“发明”来指代,这只是为了方便,而并不打算主动将本申请的范围限制到任何单个发明或发明构思,如果实际上公开了多于一个的话。从而,虽然本文已图示和描述了具体实施例,但应当明白,任何打算实现相同目的的布置都可替代示出的具体实施例。本公开打算覆盖各种实施例的任何和全部适应性改变或变化。本领域技术人员在阅读以上描述后将清楚看出上述实施例的组合以及本文没有具体描述的其他实施例。
Claims (20)
1.一种分布式数据库***的数据库管理***服务器,所述数据库管理***服务器包括处理器和与所述处理器通信的存储器,其中所述数据库管理***服务器被编程为执行操作,所述操作包括:
接收描述第一数据库查询的第一执行单元的第一执行单元数据,所述第一执行单元数据包括描述用于所述第一执行单元的一组运算元的第一运算元数据;
由所述数据库管理***服务器确定所述第一运算元数据描述来自所述分布式数据库***的第一分区的至少一个运算元和来自所述分布式数据库***的第二分区的至少一个运算元;
由所述数据库管理***服务器生成描述所述第一分区处的行的第一组局部标识符;
由所述数据库管理***服务器生成描述所述第二分区处的行的第一组局部标识符;以及
至少部分基于描述所述第一分区处的行的第一组局部标识符和描述所述第二分区处的行的第一组局部标识符来在所述分布式数据库***处执行所述第一执行单元。
2.如权利要求1所述的数据库管理***服务器,其中,所述数据库管理***服务器还被编程为执行包括以下的操作:
接收描述第二执行单元的第二执行单元数据,所述第二执行单元数据包括描述用于所述第二执行单元的一组运算元的第二运算元数据;
确定所述第二运算元数据描述来自所述第一分区的至少一个运算元;
至少部分通过向从描述所述第一分区处的行的第一组局部标识符中选择的局部标识符添加第一偏移量来生成描述所述第一分区处的行的第二组局部标识符;以及
至少部分基于描述所述第一分区处的行的第二组局部标识符来在所述分布式数据库***处执行所述第二执行单元。
3.如权利要求2所述的数据库管理***服务器,其中,所述第二运算元数据还描述来自所述分布式数据库***的第三分区的至少一个运算元,其中所述第一分区和所述第三分区是共同的表格的一部分。
4.如权利要求1所述的数据库管理***服务器,其中,所述数据库管理***服务器还被编程为执行包括生成关联所述第一分区处的行的至少一部分和所述第二分区的行的至少一部分的索引的操作,其中所述索引至少部分基于所述第一组局部标识符。
5.如权利要求4所述的数据库管理***服务器,其中,所述数据库管理***服务器还被编程为执行包括以下的操作:
接收包括描述用于所述第二执行单元的一组运算元的第二运算元数据的第二执行单元;
确定所述第二运算元数据描述来自所述第一分区的至少一个运算元;
至少部分通过向所述索引的第一局部标识符添加第一偏移量差值来生成经更新的索引,其中所述第一偏移量差值是来自所述第一组局部标识符的所述第一分区的分区偏移量和第二组局部标识符中的所述第一分区的分区偏移量之间的差值;以及
至少部分基于所述经更新的索引来在所述分布式数据库***处执行所述第二执行单元。
6.如权利要求1所述的数据库管理***服务器,其中,描述所述第一分区处的行的第一组局部标识符的第一局部标识符包括指示所述第一分区处的切片的切片标识符和指示所述第一分区处的第一行的偏移量的行偏移量。
7.如权利要求1所述的数据库管理***服务器,其中,描述所述第一分区处的行的第一组局部标识符的第一局部标识符包括指示分区中性标识符的第一部分和指示所述第一分区的第一执行单元分区偏移量的第二部分。
8.如权利要求1所述的数据库管理***服务器,其中,所述数据库管理***服务器还被编程为执行包括以下的操作:
接收描述第二执行单元的第二执行单元数据,所述第二执行单元数据包括描述用于所述第二执行单元的一组运算元的第二运算元数据;
确定所述第二运算元数据描述来自所述第一分区的至少一个运算元;
至少部分基于第二执行单元分区偏移量来生成描述所述第一分区处的行的第二组局部标识符;以及
至少部分基于描述所述第一分区处的行的第二组局部标识符来在所述分布式数据库***处执行所述第二执行单元。
9.一种在分布式数据库管理***中执行数据库查询的方法,该方法包括:
由数据库管理***服务器接收描述第一数据库查询的第一执行单元的第一执行单元数据,所述第一执行单元数据包括描述用于所述第一执行单元的一组运算元的第一运算元数据;
由所述数据库管理***服务器确定所述第一运算元数据描述来自所述分布式数据库***的第一分区的至少一个运算元和来自所述分布式数据库***的第二分区的至少一个运算元;
由所述数据库管理***服务器生成描述所述第一分区处的行的第一组局部标识符;
由所述数据库管理***服务器生成描述所述第二分区处的行的第一组局部标识符;以及
由所述数据库管理***服务器至少部分基于描述所述第一分区处的行的第一组局部标识符和描述所述第二分区处的行的第一组局部标识符来在所述分布式数据库***处执行所述第一执行单元。
10.如权利要求9所述的方法,还包括:
由所述数据库管理***服务器接收描述第二执行单元的第二执行单元数据,所述第二执行单元数据包括描述用于所述第二执行单元的一组运算元的第二运算元数据;
由所述数据库管理***服务器确定所述第二运算元数据描述来自所述第一分区的至少一个运算元;
由所述数据库管理***服务器至少部分通过向从描述所述第一分区处的行的第一组局部标识符中选择的局部标识符添加第一偏移量来生成描述所述第一分区处的行的第二组局部标识符;以及
由所述数据库管理***服务器至少部分基于描述所述第一分区处的行的第二组局部标识符来在所述分布式数据库***处执行所述第二执行单元。
11.如权利要求10所述的方法,其中,所述第二运算元数据还描述来自所述分布式数据库***的第三分区的至少一个运算元,其中所述第一分区和所述第三分区是共同的表格的一部分。
12.如权利要求9所述的方法,还包括由所述数据库管理***服务器生成关联所述第一分区处的行的至少一部分和所述第二分区的行的至少一部分的索引,其中所述索引至少部分基于所述第一组局部标识符。
13.如权利要求12所述的方法,还包括:
由所述数据库管理***服务器接收包括描述用于所述第二执行单元的一组运算元的第二运算元数据的第二执行单元;
由所述数据库管理***服务器确定所述第二运算元数据描述来自所述第一分区的至少一个运算元;
由所述数据库管理***服务器至少部分通过向所述索引的第一局部标识符添加第一偏移量差值来生成经更新的索引,其中所述第一偏移量差值是来自所述第一组局部标识符的所述第一分区的分区偏移量和第二组局部标识符中的所述第一分区的分区偏移量之间的差值;以及
由所述数据库管理***服务器至少部分基于所述经更新的索引来在所述分布式数据库***处执行所述第二执行单元。
14.如权利要求9所述的方法,其中,描述所述第一分区处的行的第一组局部标识符的第一局部标识符包括指示所述第一分区处的切片的切片标识符和指示所述第一分区处的第一行的偏移量的行偏移量。
15.如权利要求9所述的方法,其中,描述所述第一分区处的行的第一组局部标识符的第一局部标识符包括指示分区中性标识符的第一部分和指示所述第一分区的第一执行单元分区偏移量的第二部分。
16.如权利要求9所述的方法,还包括:
由所述数据库管理***服务器接收描述第二执行单元的第二执行单元数据,所述第二执行单元数据包括描述用于所述第二执行单元的一组运算元的第二运算元数据;
由所述数据库管理***服务器确定所述第二运算元数据描述来自所述第一分区的至少一个运算元;
由所述数据库管理***服务器至少部分基于第二执行单元分区偏移量来生成描述所述第一分区处的行的第二组局部标识符;以及
由所述数据库管理***服务器至少部分基于描述所述第一分区处的行的第二组局部标识符来在所述分布式数据库***处执行所述第二执行单元。
17.一种包括存储在其上的指令的机器可读介质,所述指令当被至少一个处理器执行时使得所述至少一个处理器执行操作,所述操作包括:
接收描述分布式数据库***处的第一数据库查询的第一执行单元的第一执行单元数据,所述第一执行单元数据包括描述用于所述第一执行单元的一组运算元的第一运算元数据;
确定所述第一运算元数据描述来自所述分布式数据库***的第一分区的至少一个运算元和来自所述分布式数据库***的第二分区的至少一个运算元;
生成描述所述第一分区处的行的第一组局部标识符;
生成描述所述第二分区处的行的第一组局部标识符;以及
至少部分基于描述所述第一分区处的行的第一组局部标识符和描述所述第二分区处的行的第一组局部标识符来执行所述第一执行单元。
18.如权利要求17所述的机器可读介质,其中,所述机器可读介质还包括存储在其上的指令,所述指令当被所述至少一个处理器执行时使得所述至少一个处理器执行包括以下的操作:
接收描述第二执行单元的第二执行单元数据,所述第二执行单元数据包括描述用于所述第二执行单元的一组运算元的第二运算元数据;
确定所述第二运算元数据描述来自所述第一分区的至少一个运算元;
至少部分通过向从描述所述第一分区处的行的第一组局部标识符中选择的局部标识符添加第一偏移量来生成描述所述第一分区处的行的第二组局部标识符;以及
至少部分基于描述所述第一分区处的行的第二组局部标识符来在所述分布式数据库***处执行所述第二执行单元。
19.如权利要求18所述的机器可读介质,其中,所述第二运算元数据还描述来自所述分布式数据库***的第三分区的至少一个运算元,其中所述第一分区和所述第三分区是共同的表格的一部分。
20.如权利要求17所述的机器可读介质,其中,所述机器可读介质还包括存储在其上的指令,所述指令当被所述至少一个处理器执行时使得所述至少一个处理器执行包括生成关联所述第一分区处的行的至少一部分和所述第二分区处的行的至少一部分的索引的操作,其中所述索引至少部分基于所述第一组局部标识符。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/717,463 | 2017-09-27 | ||
US15/717,463 US11106670B2 (en) | 2017-09-27 | 2017-09-27 | Local identifiers for database objects |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109947768A true CN109947768A (zh) | 2019-06-28 |
CN109947768B CN109947768B (zh) | 2023-09-22 |
Family
ID=63012912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810803252.6A Active CN109947768B (zh) | 2017-09-27 | 2018-07-20 | 用于数据库对象的局部标识符 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11106670B2 (zh) |
EP (1) | EP3462341B1 (zh) |
CN (1) | CN109947768B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708761A (zh) * | 2020-06-18 | 2020-09-25 | 浪潮云信息技术股份公司 | 一种分区自治的分布式异构数据库管理***及方法 |
KR20230135257A (ko) * | 2022-03-16 | 2023-09-25 | 주식회사 티맥스티베로 | 상이한 파티션 정보를 갖는 테이블들을 쿼리하기 위한 방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5551027A (en) * | 1993-01-07 | 1996-08-27 | International Business Machines Corporation | Multi-tiered indexing method for partitioned data |
US20120124045A1 (en) * | 2010-11-16 | 2012-05-17 | Sybase, Inc. | Parallel Partitioning Index Scan |
CN105320718A (zh) * | 2014-06-26 | 2016-02-10 | 赛贝斯股份有限公司 | 同步复制环境中的事务完成 |
CN105630864A (zh) * | 2014-11-25 | 2016-06-01 | Sap欧洲公司 | 存储行标识符值的字典的强制排序 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4769772A (en) * | 1985-02-28 | 1988-09-06 | Honeywell Bull, Inc. | Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases |
US5960194A (en) * | 1995-09-11 | 1999-09-28 | International Business Machines Corporation | Method for generating a multi-tiered index for partitioned data |
US6438562B1 (en) * | 1999-08-24 | 2002-08-20 | Oracle Corporation | Parallel index maintenance |
US6834332B2 (en) * | 2001-08-30 | 2004-12-21 | International Business Machines Corporation | Apparatus and method for swapping-out real memory by inhibiting i/o operations to a memory region and setting a quiescent indicator, responsive to determining the current number of outstanding operations |
US6934710B1 (en) * | 2002-05-02 | 2005-08-23 | Palmsource, Inc. | Generating coherent global identifiers for efficient data identification |
US7089230B2 (en) * | 2002-06-07 | 2006-08-08 | International Business Machines Corporation | Method for efficient processing of multi-state attributes |
US8126870B2 (en) * | 2005-03-28 | 2012-02-28 | Sybase, Inc. | System and methodology for parallel query optimization using semantic-based partitioning |
JP4839706B2 (ja) * | 2005-07-12 | 2011-12-21 | 株式会社日立製作所 | データベース管理システムのインデックス運用方法 |
US8799266B2 (en) * | 2006-08-31 | 2014-08-05 | International Business Machines Corporation | Method and system for managing operation of a user-defined function on a partitioned database |
US7792822B2 (en) * | 2007-03-02 | 2010-09-07 | Microsoft Corporation | Systems and methods for modeling partitioned tables as logical indexes |
US8793287B2 (en) | 2011-05-27 | 2014-07-29 | Sap Ag | Equi-joins between split tables |
JP6563111B2 (ja) * | 2015-07-10 | 2019-08-21 | アビニシオ テクノロジー エルエルシー | 分散型データベースシステムを用いるネットワーク内でデータベースアクセス制御を提供する方法及びアーキテクチャ |
US10437649B2 (en) * | 2016-03-11 | 2019-10-08 | Intel Corporation | Task mapping for heterogeneous platforms |
-
2017
- 2017-09-27 US US15/717,463 patent/US11106670B2/en active Active
-
2018
- 2018-07-19 EP EP18184492.9A patent/EP3462341B1/en active Active
- 2018-07-20 CN CN201810803252.6A patent/CN109947768B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5551027A (en) * | 1993-01-07 | 1996-08-27 | International Business Machines Corporation | Multi-tiered indexing method for partitioned data |
US20120124045A1 (en) * | 2010-11-16 | 2012-05-17 | Sybase, Inc. | Parallel Partitioning Index Scan |
CN105320718A (zh) * | 2014-06-26 | 2016-02-10 | 赛贝斯股份有限公司 | 同步复制环境中的事务完成 |
CN105630864A (zh) * | 2014-11-25 | 2016-06-01 | Sap欧洲公司 | 存储行标识符值的字典的强制排序 |
Also Published As
Publication number | Publication date |
---|---|
EP3462341A1 (en) | 2019-04-03 |
EP3462341B1 (en) | 2022-02-16 |
US11106670B2 (en) | 2021-08-31 |
US20190095485A1 (en) | 2019-03-28 |
CN109947768B (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10623476B2 (en) | Endpoint management system providing an application programming interface proxy service | |
US11979285B2 (en) | System and method for generic configuration management system application programming interface | |
US9418176B2 (en) | Graph-based system and method of information storage and retrieval | |
CN106372136B (zh) | 分布式缓存***、方法及存储介质 | |
CN109964216A (zh) | 识别未知数据对象 | |
CN110178357A (zh) | 远程设备可接入的云中基于云的手机服务 | |
US20120077521A1 (en) | Method and apparatus for information aggregation around locations | |
CN109074265A (zh) | 移动云服务的预先形成的指令 | |
US20180217819A1 (en) | Systems, methods, and apparatuses for implementing schema-driven on-the-fly code generation within a cloud based computing environment | |
US20200226615A1 (en) | Customer service representative dashboard application | |
US11005957B2 (en) | Distributed generation of live feed updates in a social networking system | |
US12019839B2 (en) | User-specific graphical user interface based on a graphical user interface template | |
US11652908B2 (en) | Split testing with custom cache keys for content delivery networks | |
CN109947768A (zh) | 用于数据库对象的局部标识符 | |
US20130054584A1 (en) | Method and apparatus for providing search with contextual processing | |
US20120096057A1 (en) | Default object fragments | |
CN110020271A (zh) | 用于缓存管理的方法和*** | |
US10963479B1 (en) | Hosting version controlled extract, transform, load (ETL) code | |
CN108831531A (zh) | 一种基于云计算的自适应医学图像远程处理方法及应用*** | |
KR102449107B1 (ko) | 게시판 서비스 제공 장치 및 방법 | |
US11876875B2 (en) | Scalable fine-grained resource count metrics for cloud-based data catalog service | |
US20220342720A1 (en) | Method and system for managing elastic accelerator resource pools with a shared storage | |
CN118043797A (zh) | 用于数据生产者和数据消费者的数据对象模式版本之间的转换 | |
Driscoll et al. | Using the Entity Framework in N-Tier Applications |
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 |