CN109947768A - local identifier for database objects - Google Patents
local identifier for database objects 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
- row
- group
- 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
各种示例针对的是用于在分布式数据库系统中利用局部标识符的系统和方法。数据库管理系统服务器可接收描述第一数据库查询的第一执行单元的第一执行单元数据。第一执行单元数据可包括描述用于第一执行单元的一组运算元的第一运算元数据。数据库管理系统服务器可确定第一运算元数据描述来自第一分区的至少一个运算元和来自第二分区的至少一个运算元。数据库管理系统服务器可生成描述第一分区处的行的第一组局部标识符和描述第二分区处的行的第一组局部标识符。数据库管理系统服务器可至少部分基于描述第一分区处的行的第一组局部标识符和描述第二分区处的行的第一组局部标识符来执行第一执行单元。
Various examples are directed to systems and methods for utilizing local identifiers in distributed database systems. The database management system server may receive first execution unit data describing the first execution unit of the first database query. The first execution unit data may include first operand metadata describing a set of operands for the first execution unit. The database management system server may determine that the first operand metadata describes at least one operand from the first partition and at least one operand from the second partition. The database management system server may generate a first set of local identifiers describing rows at the first partition and a first set of local identifiers describing rows at the second partition. The database management system server may execute the first execution unit based at least in part on the first set of local identifiers describing the row at the first partition and the first set of local identifiers describing the row at the second partition.
Description
技术领域technical field
本文档概括而言涉及结合计算机设备——包括联网计算设备——使用的方法和系统。更具体而言,本文档涉及用于有效地执行数据库查询的系统和方法。This document generally relates to methods and systems for use with computer devices, including networked computing devices. More specifically, this document relates to systems and methods for efficiently performing database queries.
背景技术Background technique
在分布式数据库系统中,数据库被划分成多个分区。例如,单个表格可被划分成两个或更多个分区。分区在不同的数据库管理系统服务器之间可以是可传送的。例如,单个数据库管理系统服务器可负责一组分区,该组分区可包括构成特定表格的分区的一部分。分布式数据库系统通常利用全局唯一标识符的系统来引用诸如表格、切片(slice)、行等等之类的数据库对象。In a distributed database system, the database is divided into multiple partitions. For example, a single table can be divided into two or more partitions. Partitions can be transportable between different database management system servers. For example, a single database management system server may be responsible for a set of partitions, which may include a portion of the partitions that make up a particular table. Distributed database systems typically utilize a system of globally unique identifiers to refer to database objects such as tables, slices, rows, and the like.
附图说明Description of drawings
在以下附图中以示例而非限制方式图示了本公开。The present disclosure is illustrated by way of example and not limitation in the following figures.
图1是示出用于为数据库对象生成和使用局部标识符的分布式数据库系统的一个示例的图。1 is a diagram illustrating one example of a distributed database system for generating and using local identifiers for database objects.
图2是示出可由分布式数据库系统的数据库管理系统(database managementsystem,DBMS)服务器执行来执行具有局部标识符的执行单元的过程流的一个示例的流程图。2 is a flowchart illustrating one example of a process flow that may be executed by a database management system (DBMS) server of a distributed database system to execute an execution unit having a local identifier.
图3是示出可由分布式数据库系统的DBMS服务器执行来利用现有的一组局部标识符执行一执行单元的过程流的一个示例的流程图。3 is a flowchart illustrating one example of a process flow that may be executed by a DBMS server of a distributed database system to execute an execution unit using an existing set of local identifiers.
图4是示出可由分布式数据库系统的DBMS服务器执行来利用局部标识符的索引执行一执行单元的过程流的一个示例的流程图。4 is a flow diagram illustrating one example of a process flow that may be executed by a DBMS server of a distributed database system to execute an execution unit with an index of local identifiers.
图5是图示出在本文描述的网络虚拟化系统和方法的一些示例中可用于实现web应用的内存数据库管理系统的示例的图。5 is a diagram illustrating an example of an in-memory database management system that may be used to implement a web application in some examples of the network virtualization systems and methods described herein.
图6是图示出图5的索引服务器的示例的图。FIG. 6 is a diagram illustrating an example of the indexing server of FIG. 5 .
图7是图示出图6的请求处理和执行控制的一个示例的图。FIG. 7 is a diagram illustrating one example of request processing and execution control of FIG. 6 .
图8是示出计算设备的软件体系结构的一个示例的框图。8 is a block diagram illustrating one example of a software architecture of a computing device.
图9是采取计算机系统的示例形式的机器的框图,在该机器内可执行指令以使得该机器执行本文论述的方法中的任何一者或多者。9 is a block diagram of a machine in the example form of a computer system within which instructions are executable to cause the machine to perform any one or more of the methods discussed herein.
具体实施方式Detailed ways
接下来的描述包括体现例示性实施例的例示性系统、方法、技术、指令序列和计算机器程序产品。在以下描述中,出于说明目的,记载了许多具体细节以便提供对发明主题的各种实施例的理解。然而,本领域技术人员将会明白,没有这些具体细节也可实现发明主题的实施例。一般而言,没有详细示出公知的指令实例、协议、结构和技术。The description that follows includes exemplary systems, methods, techniques, instruction sequences, and computing machine program products embodying the exemplary embodiments. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the inventive subject matter. However, it will be apparent to those skilled in the art that embodiments of the inventive subject matter may be practiced without these specific details. In general, well-known instruction instances, protocols, structures and techniques have not been shown in detail.
本文描述的各种示例针对的是例如在分布式数据库系统中为数据库对象生成和/或使用局部标识符。在许多示例中,分布式数据库系统中的全局唯一标识符(全局标识符)不一定被顺序地指派给一个或多个特定分区内的对象。也就是说,接连的切片、行等等可能不一定具有接连的全局标识符。例如,在一些分布式数据库系统中,全局标识符是由全局定序器指派的。全局标识符可例如按照创建对象的顺序被指派给整个分布式数据库系统上的对象。结果,知道分布式数据库系统中的某一数据库对象的全局标识符可能不会提供关于周围对象的任何信息。另外,因为唯一全局标识符被用于大量的对象(例如,分布式数据库系统中的所有对象),所以全局标识符的大小可能是很大的。Various examples described herein are directed to generating and/or using local identifiers for database objects, eg, in a distributed database system. In many examples, globally unique identifiers (global identifiers) in a distributed database system are not necessarily sequentially assigned to objects within one or more particular partitions. That is, successive slices, rows, etc. may not necessarily have successive global identifiers. For example, in some distributed database systems, global identifiers are assigned by the global sequencer. Global identifiers may be assigned to objects across the distributed database system, eg, in the order in which the objects were created. As a result, knowing the global identifier of a database object in a distributed database system may not provide any information about surrounding objects. Additionally, because the unique global identifier is used for a large number of objects (eg, all objects in a distributed database system), the size of the global identifier can be large.
全局标识符可被分布式数据库管理系统用来访问特定的数据库对象。例如,全局标识符可被转化成相应对象的地址(例如,行的主键、切片的主键的范围,等等)。因为在分布式数据库系统中可能使用的全局标识符的巨大数目,所以诸如散列映射之类的映射数据结构可用于将全局标识符映射到相应的对象地址。例如,为了找到与特定全局标识符相关联的数据库对象的地址,分布式数据库管理系统利用映射查找来从映射结构获得关联的物理地址。然而,当分布式数据库系统中的全局标识符的数目很大时,映射查找操作可能是计算上昂贵且效率低下的。Global identifiers can be used by distributed database management systems to access specific database objects. For example, global identifiers can be translated into addresses of corresponding objects (eg, primary keys of rows, ranges of primary keys of slices, etc.). Because of the large number of global identifiers that may be used in a distributed database system, a mapping data structure such as a hash map can be used to map global identifiers to corresponding object addresses. For example, to find the address of a database object associated with a particular global identifier, a distributed database management system utilizes a map lookup to obtain the associated physical address from a map structure. However, when the number of global identifiers in a distributed database system is large, map lookup operations can be computationally expensive and inefficient.
因此,本文描述的各种示例利用局部标识符。分布式数据库管理系统可向包括用于特定执行单元的运算元的一个或多个分区中的对象指派局部标识符。执行单元可以是任何离散的数据库操作。例如,数据库查询可包括一个或多个执行单元。在一些示例中,执行单元可由单个数据库管理系统服务器在例如由单个数据库管理系统服务器管理的分区上执行。Accordingly, various examples described herein utilize local identifiers. The distributed database management system may assign local identifiers to objects in one or more partitions that include operands for a particular execution unit. An execution unit can be any discrete database operation. For example, a database query may include one or more execution units. In some examples, an execution unit may be executed by a single database management system server, eg, on a partition managed by a single database management system server.
在一些示例中,分布式数据库管理系统(例如,其数据库管理系统服务器)生成将全局标识符映射到适当的局部标识符的局部到全局映射。在一些示例中,对于给定的分区和执行单元,从连续的值范围中抽取局部标识符。这样,某一分区内的接连的对象(例如,接连的行、接连的切片等等)可被指派以接连的局部标识符。在一些示例中,局部标识符被维持,至少直到执行单元的执行完成为止。因为在任何给定的查询或其执行单元中通常只使用所有全局标识符的小子集,所以局部标识符可在运行时间被有效地映射到全局标识符和/或物理地址,例如直接访问列表或阵列来实现局部到全局映射。In some examples, the distributed database management system (eg, its database management system server) generates a local-to-global mapping that maps global identifiers to appropriate local identifiers. In some examples, for a given partition and execution unit, local identifiers are extracted from a contiguous range of values. In this way, successive objects (eg, successive rows, successive slices, etc.) within a partition may be assigned successive local identifiers. In some examples, the local identifier is maintained at least until execution of the execution unit completes. Because only a small subset of all global identifiers are typically used in any given query or its execution unit, local identifiers can be efficiently mapped to global identifiers and/or physical addresses at runtime, such as direct access lists or Array to implement local to global mapping.
在一些示例中,可能希望为第二(例如,相关)执行单元再使用来自第一执行单元的一组局部标识符和/或为第二执行单元迅速地生成一组局部标识符。例如,第二执行单元可接受作为第一执行单元的结果的一个或多个运算元。例如,数据库查询可包括请求第一城市中在第一日提交订单的客户的名称的查看操作。第一执行单元可在订单表格的一个或多个分区上操作以识别在第一日提交的订单。第二执行单元可在所识别的订单上操作以确定哪些是由第一城市中的客户提交的。因此,第二执行单元在由第一执行单元操作的分区的子集上操作。在一些示例中,分布式数据库管理系统通过向为第一执行单元生成的那组局部标识符应用一个或多个分区偏移量来为第二执行单元生成第二组局部标识符。In some examples, it may be desirable to reuse a set of local identifiers from the first execution unit for a second (eg, related) execution unit and/or to rapidly generate a set of local identifiers for the second execution unit. For example, the second execution unit may accept one or more operands as a result of the first execution unit. For example, a database query may include a view operation requesting the names of customers in a first city who placed orders on the first day. The first execution unit may operate on one or more partitions of the order form to identify orders submitted on the first day. The second execution unit may operate on the identified orders to determine which were submitted by customers in the first city. Thus, the second execution unit operates on a subset of the partitions operated on by the first execution unit. In some examples, the distributed database management system generates the second set of local identifiers for the second execution unit by applying one or more partition offsets to the set of local identifiers generated for the first execution unit.
图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可位于相同的物理位置或不同的物理位置。FIG. 1 is a diagram illustrating one example of a distributed database system 100 for generating and using local identifiers for database objects. The distributed database system 100 includes a distributed database management system 102 . Distributed database management system 102 may manage distributed database system 100, eg, including executing its queries and/or execution units using local identifiers as described herein. The distributed database management system 102 may include one or more DBMS servers 104A, 104B, 104N. The DBMS servers 104A, 104B, 104N may manage one or more partitions of one or more tables of the distributed database system 100 . In some examples, different DBMS servers 104A, 104B, 104N manage different partitions or different sets of partitions. Additionally, in some examples, management of one or more partitions may be transferred from one DBMS server 104A, 104B, 104N to another. Each DBMS server 104A, 104B, 104N may include one or more physical computing devices, eg, at a common physical location (eg, a server farm, etc.). The different DBMS servers 104A, 104B, 104N may be located in the same physical location or in different physical locations.
图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可以是不同大小的,例如具有不同数目的行和/或不同的数据大小。FIG. 1 also shows example tables 106 , 110 of the distributed database system 100 that may be managed by the distributed database management system 102 . Although two tables 106 , 110 are shown in FIG. 1 , in practice a distributed database system such as distributed database system 100 may utilize a scheme using additional tables. Tables 106, 110 include respective partitions. For example, table 106 includes partitions 108A, 108B, 108N, and table 110 includes partitions 112A, 112B, 112N. Although three partitions are shown for each table 106, 110, the table may be divided into any suitable number of partitions. For example, table 106 has a different number of partitions than table 110 in some examples. Responsibility for managing the various partitions 108A, 108B, 108N, 112A, 112B, 112N may be assigned to one or more of the DBMS servers 104A, 104B, 104N. For example, partition 108A may be managed by DBMS server 104A; partition 108B may be managed by DBMS server 104B, and so on. Partitions 108A, 108B, 108N, 112A, 112B, 112N may be of different sizes, eg, with different numbers of rows and/or different data sizes.
图1还图示了可被DBMS服务器104A、104B、104N生成和/或使用来在分布式数据库系统100处执行一个或多个执行单元的局部标识符。在一些示例中,一个或多个DBMS服务器104A、104B、104N向分区108A、108B、108N、112A、112B、112N中的一者或多者的行指派分区标识符114A、114B、114C、116A、116B、116C。分区标识符可被顺序地指派到分区。例如,一个分区处的第一行可被指派以第一数字,该分区处的第二行可被指派以下一整数,该分区处的第三行可被指派以再下一整数,等等依此类推。FIG. 1 also illustrates local identifiers that may be generated and/or used by DBMS servers 104A, 104B, 104N to execute one or more execution units at distributed database system 100 . In some examples, one or more DBMS servers 104A, 104B, 104N assign partition identifiers 114A, 114B, 114C, 116A, 116B, 116C. Partition identifiers can be assigned to partitions sequentially. For example, the first row at a partition can be assigned a first number, the second row at that partition can be assigned the following integer, the third row at the partition can be assigned the next integer, and so on depending on And so on.
从用于一个分区的分区标识符,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指示)和/或映射到相应行的地址。From the partition identifier for a partition, the DBMS server 104A, 104B, 104N can generate a local identifier for a given execution unit. For example, the DBMS servers 104A, 104B, 104N may receive execution unit data describing the execution units to execute. The DBMS server 104A, 104B, 104N may identify a partition that includes operands for the execution unit. In the example of FIG. 1, partitions 108A and 108N from table 106 and partition 112A from table 110 include operands for the example execution units. The DBMS servers 104A, 104B, 104N may utilize the partition identifiers to generate local identifiers for execution units. For example, DBMS servers 104A, 104B, 104N may generate local-to-global mappings 118 . The local identifier for any given row can be determined by adding the partition offset to the partition identifier for that row. The partition offset for a partition may indicate the number of rows added to the partition of the local-to-global map 118 before the partition. In the example of FIG. 1, the partition offset (POS1) of partition 108A is zero; the partition offset (POS3) of partition 108N is equal to the number of rows in partition 108A; and the partition offset (POS3) of partition 112A Equal to the sum of the number of rows in partitions 108A and 108N. The local-to-global mapping 118 may map local identifiers to corresponding global identifiers (indicated by G1-G9 in FIG. 1) and/or to addresses of corresponding rows.
在各种示例中,DBMS服务器104A、104B、104N可利用为一个执行单元生成的局部标识符来为第二执行单元生成第二组局部标识符,例如利用分区偏移量来生成。例如,考虑利用来自分区108A和112A的运算元但不利用来自分区108N的运算元的一个执行单元。DBMS服务器104A、104B、104N可从中性标识符114A和116A开始来生成与118类似的新的局部到全局映射。例如,用于分区112A的局部标识符的分区偏移量可指示分区108A中的行的数目。In various examples, DBMS servers 104A, 104B, 104N may utilize local identifiers generated for one execution unit to generate a second set of local identifiers for a second execution unit, eg, using a partition offset. For example, consider one execution unit that utilizes operands from partitions 108A and 112A but not operands from partition 108N. DBMS servers 104A, 104B, 104N may generate new local-to-global mappings similar to 118 starting from neutral identifiers 114A and 116A. For example, the partition offset for the local identifier of partition 112A may indicate the number of rows in partition 108A.
在一些示例中,中性标识符可被省略,并且DBMS服务器104A、104B、104N可将局部到全局映射118转化成用于第二执行单元的新的局部到全局映射118。返回到最后一个示例,DBMS服务器104A、104B、104N可从局部到全局映射118中删除与不包括用于第二执行单元的运算元的分区(例如,图1中的分区108N)相对应的条目。可以为包括用于第二执行单元的运算元的分区找到新的分区偏移量。In some examples, the neutral identifier may be omitted, and the DBMS server 104A, 104B, 104N may convert the local-to-global mapping 118 into a new local-to-global mapping 118 for the second execution unit. Returning to the last example, DBMS servers 104A, 104B, 104N may delete entries from local-to-global map 118 corresponding to partitions that do not include operands for the second execution unit (eg, partition 108N in FIG. 1 ) . A new partition offset may be found for the partition that includes the operand for the second execution unit.
在图1的示例中,中性标识符和局部标识符被按行指派给分区108A、108B、108N、112A、112B、112N。然而,在一些示例中,局部标识符也可被指派给切片。例如,切片可包括预定数目的行(例如,128k行、64k行,等等)。切片的大小可由方案或者描述分布式数据库系统的其他元数据来指示。在其他示例中,不同的DBMS服务器104A、104B、104N可应用不同的切片大小。在一些示例中,切片也可被指派以中性标识符和/或局部标识符。例如,特定切片中的行的中性标识符可由切片中性标识符和指示对象在切片中的位置的偏移量来指示。In the example of FIG. 1, neutral identifiers and local identifiers are assigned to partitions 108A, 108B, 108N, 112A, 112B, 112N by row. However, in some examples, local identifiers may also be assigned to slices. For example, a slice may include a predetermined number of rows (eg, 128k rows, 64k rows, etc.). The size of the slice may be indicated by the schema or other metadata describing the distributed database system. In other examples, different DBMS servers 104A, 104B, 104N may apply different slice sizes. In some examples, slices may also be assigned neutral identifiers and/or local identifiers. For example, a neutral identifier for a row in a particular slice may be indicated by a slice neutral identifier and an offset indicating the position of the object in the slice.
图2是示出可由分布式数据库系统的DBMS服务器(例如DBMS服务器104A、104B、104N之一)执行来执行具有局部标识符的执行单元的过程流200的一个示例的流程图。在操作202,DBMS服务器接收描述执行单元的执行单元数据。该执行单元可以是要在该DBMS服务器处被执行的执行单元。例如,执行单元可构成要在分布式数据库系统处执行的查询的全部或一部分。执行单元数据可包括描述用于该执行单元的运算元的运算元数据。运算元包括来自由该DBMS服务器管理的一个或多个分区的、要被操作来执行该执行单元的一个或多个行。2 is a flowchart illustrating one example of a process flow 200 executable by a DBMS server of a distributed database system (eg, one of DBMS servers 104A, 104B, 104N) to execute an execution unit having a local identifier. At operation 202, the DBMS server receives execution unit data describing the execution unit. The execution unit may be an execution unit to be executed at the DBMS server. For example, an execution unit may constitute all or a portion of a query to be executed at the distributed database system. Execution unit data may include operand metadata describing operands for the execution unit. Operands include one or more rows from one or more partitions managed by the DBMS server that are to be operated on to execute the execution unit.
在操作204,DBMS服务器可确定由执行单元数据描述的运算元是否被存储在多个分区(例如,由该DBMS服务器管理的多个分区)处。如果否(例如,如果用于该执行单元的运算元在单个分区处),则DBMS服务器可在操作中为该单个分区生成局部标识符。为单个分区生成局部标识符可例如包括按顺序枚举该单个分区处的行、切片等等的全部或一部分。例如,当存在单个分区时,局部标识符可类似于本文针对图1描述的中性标识符。At operation 204, the DBMS server may determine whether the operands described by the execution unit data are stored at multiple partitions (eg, multiple partitions managed by the DBMS server). If not (eg, if the operand for the execution unit is at a single partition), the DBMS server may in operation generate a local identifier for that single partition. Generating a local identifier for a single partition may, for example, include sequentially enumerating all or a portion of the rows, slices, etc. at the single partition. For example, when there is a single partition, the local identifier may be similar to the neutral identifier described herein with respect to FIG. 1 .
如果用于执行单元的运算元被存储在多个分区处,则DBMS服务器可在操作208中为该组多个分区生成局部标识符。DBMS可按任何适当的方式生成局部标识符。例如,DBMS服务器可为该组分区的每个分区生成中性标识符。DBMS服务器随后可串接关于这些分区的中性标识符。例如,如针对图1所描述的,DBMS服务器可向每个中性标识符添加分区偏移量。用于每个分区的分区偏移量可等于具有更低分区偏移量的分区(例如,已经被指派了局部标识符的分区)中的对象(例如,行、切片等等)之和。在另一示例中,代替生成中性标识符,DBMS服务器可向该组分区处的对象指派接连的局部标识符,例如开始于第一分区中的对象,然后是第二分区中的对象,等等依此类推。If the operands for the execution unit are stored at multiple partitions, the DBMS server may generate local identifiers for the set of multiple partitions in operation 208 . The DBMS may generate local identifiers in any suitable manner. For example, the DBMS server may generate neutral identifiers for each partition of the set of partitions. The DBMS server can then concatenate neutral identifiers for these partitions. For example, as described with respect to Figure 1, the DBMS server may add a partition offset to each neutral identifier. The partition offset for each partition may be equal to the sum of the objects (eg, rows, slices, etc.) in the partition with the lower partition offset (eg, the partition that has been assigned a local identifier). In another example, instead of generating neutral identifiers, the DBMS server may assign successive local identifiers to objects at the set of partitions, eg, starting with objects in a first partition, followed by objects in a second partition, etc. and so on.
在操作210,DBMS服务器可至少部分基于在操作206和/或在操作208生成的局部标识符来执行该执行单元。例如,DBMS服务器可利用局部到全局映射(例如图1的映射118)来在由执行单元数据指示的对象名称和全局标识符之间转化。At operation 210 , the DBMS server may execute the execution unit based at least in part on the local identifier generated at operation 206 and/or at operation 208 . For example, the DBMS server may utilize a local-to-global mapping (eg, mapping 118 of FIG. 1 ) to translate between object names and global identifiers indicated by execution unit data.
图3是示出可由分布式数据库系统的DBMS服务器(例如DBMS服务器104A、104B、104N之一)执行来利用现有的一组局部标识符执行一执行单元的过程流300的一个示例的流程图。例如,过程流300可在图2的过程流200之后被执行。在操作304,DBMS服务器可接收描述要被DBMS服务器执行的下一执行单元的下一执行单元数据。在一些示例中,下一执行单元是与先前执行单元相同的数据库查询的一部分。3 is a flowchart illustrating one example of a process flow 300 that may be executed by a DBMS server of a distributed database system (eg, one of DBMS servers 104A, 104B, 104N) to execute an execution unit using an existing set of local identifiers . For example, process flow 300 may be executed after process flow 200 of FIG. 2 . At operation 304, the DBMS server may receive next execution unit data describing a next execution unit to be executed by the DBMS server. In some examples, the next execution unit is part of the same database query as the previous execution unit.
在操作304,DBMS服务器可确定下一执行单元是否具有在与由先前执行单元使用的那组分区不同的一组分区处的运算元。如果否(例如,如果下一执行单元使用来自与先前执行单元相同的一组分区的运算元),则DBMS服务器在操作306可利用先前为先前执行单元生成的局部标识符来执行该执行单元。At operation 304, the DBMS server may determine whether the next execution unit has operands at a different set of partitions than the set of partitions used by the previous execution unit. If not (eg, if the next execution unit uses operands from the same set of partitions as the previous execution unit), the DBMS server may execute the execution unit at operation 306 using the local identifier previously generated for the previous execution unit.
如果下一执行单元具有在与由先前执行单元使用的那组分区不同的一组分区处的运算元,则DBMS服务器在操作308可从现有的那组局部标识符得出下一组局部标识符。这例如可包括从现有的那组局部标识符中去除与不包括用于下一执行单元的运算元的分区相对应的任何局部标识符。用于剩余局部标识符的分区偏移量可被修改。来自公共分区的行也可具有公共的偏移量。另外,如果存在任何在现有的那组局部标识符中没有考虑的要包括的分区,则用于这些分区的局部标识符可例如被添加以新生成的分区偏移量。DBMS服务器在操作310可利用下一组局部标识符来执行下一执行单元。在一些示例中,DBMS服务器可向来自前一组局部标识符的局部标识符添加偏移量差值来得出下一组局部标识符。用于一行的偏移量差值可以是在前一组局部标识符中用于该行的分区偏移量与在下一组局部标识符中用于该行的分区偏移量之间的差值。If the next execution unit has operands at a different set of partitions than the set of partitions used by the previous execution unit, the DBMS server may derive the next set of local identifiers from the existing set of local identifiers at operation 308 symbol. This may include, for example, removing from the existing set of local identifiers any local identifiers corresponding to partitions that do not include operands for the next execution unit. The partition offsets for the remaining local identifiers can be modified. Rows from common partitions can also have common offsets. Additionally, if there are any partitions to include that are not considered in the existing set of local identifiers, the local identifiers for these partitions may be added, for example, with the newly generated partition offset. The DBMS server at operation 310 may utilize the next set of local identifiers to execute the next execution unit. In some examples, the DBMS server may add the offset difference value to the local identifier from the previous set of local identifiers to derive the next set of local identifiers. The offset difference for a row can be the difference between the partition offset used for the row in the previous set of local identifiers and the partition offset used for the row in the next set of local identifiers .
图4是示出可由分布式数据库系统的DBMS服务器(例如DBMS服务器104A、104B、104N之一)执行来利用局部标识符的索引执行一执行单元的过程流400的一个示例的流程图。在操作402,DBMS服务器可生成引用至少两个分区的索引。该索引例如可将来自一个或多个分区的行或其他对象映射到一个或多个其他分区处的行或对象。索引可例如用于提高DBMS服务器执行执行单元的效率。例如,连接索引可被DBMS服务器用于加速和/或简化连接查询和/或执行单元的执行。利用索引中的局部标识符可允许DBMS服务器确定不同行或其他对象之间的关系,而无需为这些对象找出全局标识符。4 is a flowchart illustrating one example of a process flow 400 that may be executed by a DBMS server of a distributed database system (eg, one of DBMS servers 104A, 104B, 104N) to execute an execution unit using an index of local identifiers. At operation 402, the DBMS server may generate an index referencing at least two partitions. The index may, for example, map rows or other objects from one or more partitions to rows or objects at one or more other partitions. Indexes can be used, for example, to improve the efficiency with which a DBMS server executes execution units. For example, join indexes may be used by the DBMS server to speed up and/or simplify the execution of join queries and/or execution units. Utilizing local identifiers in an index allows the DBMS server to determine relationships between different rows or other objects without finding global identifiers for those objects.
在操作404,DBMS服务器可接收描述第一执行单元的第一执行单元数据。在操作406,DBMS服务器可从在操作402生成的索引生成第一执行单元索引。这例如可包括更新索引以(例如仅仅)引用包括用于第一执行单元的运算元的分区处的局部标识符。例如,DBMS服务器可确定哪个或哪些分区包括用于第一执行单元的运算元。局部标识符例如可被从索引去除和/或添加到索引,以使得索引包括与第一执行单元相关的那组分区之间的关系。包括用于第一执行单元的运算元的分区可被指派接连的局部标识符。例如,可生成用于第一执行单元的那组分区处的局部标识符的分区偏移量。这些分区偏移量可用于更新由该索引处的局部标识符先前使用的分区偏移量。在操作408,DBMS服务器可利用经更新的索引来执行第一执行单元。At operation 404, the DBMS server may receive first execution unit data describing the first execution unit. At operation 406 , the DBMS server may generate a first execution unit index from the index generated at operation 402 . This may include, for example, updating the index to refer (eg, only) to the local identifier at the partition that includes the operand for the first execution unit. For example, the DBMS server may determine which partition or partitions contain operands for the first execution unit. The local identifier may, for example, be removed from and/or added to the index such that the index includes the relationship between the set of partitions associated with the first execution unit. Partitions including operands for the first execution unit may be assigned consecutive local identifiers. For example, a partition offset for the local identifier at the set of partitions of the first execution unit may be generated. These partition offsets can be used to update the partition offset previously used by the local identifier at this index. At operation 408, the DBMS server may utilize the updated index to execute the first execution unit.
在操作410,DBMS系统可接收描述第二执行单元的第二执行单元数据,其中例如包括用于第二执行单元的运算元。在操作412,DBMS可从现有索引(例如,来自在操作402生成的经更新的索引和/或来自第一执行单元索引)为第二执行单元索引生成经更新的索引。生成第二执行单元索引例如可包括从先前索引添加和/或去除分区,基于分区的添加或减去修改分区偏移量,等等。在操作414,DBMS系统可利用第二执行单元索引来执行第二执行单元。At operation 410, the DBMS system may receive second execution unit data describing the second execution unit, including, for example, operands for the second execution unit. At operation 412, the DBMS may generate an updated index for the second execution unit index from an existing index (eg, from the updated index generated at operation 402 and/or from the first execution unit index). Generating the second execution unit index may include, for example, adding and/or removing partitions from a previous index, modifying partition offsets based on the addition or subtraction of partitions, and the like. At operation 414, the DBMS system may execute the second execution unit using the second execution unit index.
为了进一步说明为数据库对象使用局部标识符,如本文所述,考虑DBMS服务器管理具有由以下表格1-4指示的示例行的标注为A-D的四个分区的示例。表格1-4示出了分区A-D处的行的全局标识符以及这些行的示例中性标识符。例如,DBMS服务器如本文所述可例如在接收到执行单元数据之前和/或之后向这些行指派中性标识符。To further illustrate the use of local identifiers for database objects, as described herein, consider an example of a DBMS server managing four partitions labeled A-D with example rows indicated by Tables 1-4 below. Tables 1-4 show global identifiers for rows at partitions A-D and example neutral identifiers for those rows. For example, the DBMS server as described herein may assign neutral identifiers to these rows, eg, before and/or after execution unit data is received.
表格1:分区AForm 1: Partition A
表格2:分区BForm 2: Partition B
表格3:分区CForm 3: Partition C
表格4:分区DTable 4: Partition D
接下来,考虑包括来自所有四个分区的运算元的第一执行单元。DBMS服务器可向分区A-D的行指派局部标识符,例如结果是由以下的表格5指示的局部到全局映射。Next, consider the first execution unit that includes operands from all four partitions. The DBMS server may assign local identifiers to rows of partitions A-D, eg, the result is a local-to-global mapping indicated by Table 5 below.
表格5:局部到全局映射Table 5: Local to global mapping
在这个示例中,分区A的四个行被指派以局部标识符0-3。分区B的三个行被指派以局部标识符4-6。分区B的分区偏移量是4,指示(位于分区B之前的)分区A中的行的数目。分区C的分区偏移量是7,指示分区A和B中的行之和。类似地,分区D的分区偏移量是10,指示分区A、B和C中的行之和。虽然为了示范在这个示例中利用了小的数字,但在各种示例分布式数据库系统中,全局和/或局部标识符的大小可能足够大到使得关于存储和处理能力的考虑变得相关。在一个示例中,全局标识符可以是256比特,而用于执行单元的局部标识符可能小得多(例如,8比特、16比特、32比特,等等)。这可允许在执行查询及其执行单元中的效率提高。In this example, the four rows of partition A are assigned local identifiers 0-3. The three rows of partition B are assigned local identifiers 4-6. The partition offset for partition B is 4, indicating the number of rows in partition A (preceding partition B). The partition offset for partition C is 7, indicating the sum of the rows in partitions A and B. Similarly, the partition offset of partition D is 10, indicating the sum of the rows in partitions A, B, and C. Although small numbers are utilized in this example for demonstration purposes, in various example distributed database systems, the size of the global and/or local identifiers may be large enough that considerations regarding storage and processing power become relevant. In one example, the global identifier may be 256 bits, while the local identifiers for execution units may be much smaller (eg, 8 bits, 16 bits, 32 bits, etc.). This may allow for increased efficiency in executing queries and their execution units.
第一执行单元可以是连接查询或者是连接查询的一部分。因此,DBMS服务器可生成连接索引。例如,分区C和D可如以下表格6所示那样连接。表格6The first execution unit may be or be part of a join query. Therefore, the DBMS server can generate the join index. For example, partitions C and D may be connected as shown in Table 6 below. Form 6
由以下的表格7提供利用如表格5的局部到全局映射处所阐述的局部标识符表述的相同连接索引:The same connection index expressed using the local identifier as set forth at the local to global mapping of Table 5 is provided by Table 7 below:
表格7Form 7
用中性标识符表述的相同连接索引可通过从局部标识符中减去各自的分区偏移量来找到(例如,对于分区C是7,对于分区D是10)。这产生了表格8:The same join index expressed in terms of neutral identifiers can be found by subtracting the respective partition offsets from the local identifier (eg, 7 for partition C, 10 for partition D). This produces Form 8:
表格8:Form 8:
DBMS服务器可利用例如表格7的连接索引和/或表格8的连接索引来执行第一执行单元。The DBMS server may utilize, for example, the join index of Table 7 and/or the join index of Table 8 to execute the first execution unit.
现在考虑只包括只来自分区A、C和D的运算元的第二执行单元(例如,用于第二执行单元的运算元没有来自分区B的)。用于第二执行单元的局部到全局映射由以下的表格9示出:Now consider a second execution unit that includes only operands from partitions A, C, and D (eg, no operands for the second execution unit from partition B). The local-to-global mapping for the second execution unit is shown in Table 9 below:
表格9:局部到全局映射Table 9: Local to global mapping
如图所示,因为分区B被省略,所以用于分区C和D的分区偏移量分别被改变到4和7。在一些示例中,DBMS服务器可调整来自第一执行单元的连接索引来与用于第二执行单元的那组局部标识符一起使用,例如以下的表格10中所示:As shown, since partition B is omitted, the partition offsets for partitions C and D are changed to 4 and 7, respectively. In some examples, the DBMS server may adjust the join index from the first execution unit for use with the set of local identifiers for the second execution unit, such as shown in Table 10 below:
表格10Form 10
图5是图示出内存数据库管理系统500的示例的图。例如,数据库管理系统500可描述例如本文所述的DBMS服务器处的实现方式。内存数据库主要在主存储器处存储数据,例如随机访问存储器(RAM)。这与主要采用盘存储机制的数据库不同。在一些示例中,数据库管理系统500可以是或者可以包括来自德国沃尔多夫的SAP SE的HANA系统的示例。虽然本文在内存数据库的上下文中描述web应用的各种特征,但如本文所述的对于服务人员的web应用安全性一般可对任何类型的web应用实现。FIG. 5 is a diagram illustrating an example of an in-memory database management system 500 . For example, database management system 500 may describe an implementation at a DBMS server such as those described herein. In-memory databases store data primarily at main memory, such as random access memory (RAM). This is different from databases that mainly use disk storage mechanisms. In some examples, database management system 500 may be or may include an example of the HANA system from SAP SE of Walldorf, Germany. Although various features of web applications are described herein in the context of an in-memory database, web application security for service personnel as described herein can generally be implemented for any type of web application.
内存数据库管理系统500可耦合到一个或多个客户端应用502A、502B。客户端应用502A、502B可利用来自数据库的数据执行一个或多个查询,例如向一个或多个用户呈现用户界面(UI)、输入数据、访问数据,等等。客户端应用502A、502B可通过多种不同的协议与内存数据库管理系统500通信,这些协议包括SQL、多维表达式(MultidimensionalExpressions,MDX)、超文本传送协议(HTTP)、表示性状态转移(Representational StateTransfer,REST)、超文本标记语言(HTML)。The in-memory database management system 500 may be coupled to one or more client applications 502A, 502B. Client applications 502A, 502B may utilize data from the database to perform one or more queries, such as presenting a user interface (UI) to one or more users, entering data, accessing data, and the like. Client applications 502A, 502B can communicate with in-memory database management system 500 through a variety of different protocols, including SQL, Multidimensional Expressions (MDX), Hypertext Transfer Protocol (HTTP), Representational StateTransfer , REST), Hypertext Markup Language (HTML).
图5还示出了可用于通过访问内存数据库管理系统500来执行建模的工作室504。在一些示例中,工作室504可允许对不仅从实时事件数据和窗口而且从存储的数据库信息抽取的数据执行复杂的分析。内存数据库管理系统500可包括数个不同的组件,其中包括索引服务器506、XS引擎508、统计服务器510、预处理器服务器512和名称服务器514。这些组件可在单个计算设备上操作或者可分散在多个计算设备之间(例如,分开的服务器)。索引服务器506包含实际数据和用于处理数据的引擎。它还可协调和使用其他服务器。FIG. 5 also shows a studio 504 that can be used to perform modeling by accessing the in-memory database management system 500 . In some examples, studio 504 may allow complex analysis to be performed on data extracted not only from real-time event data and windows, but also from stored database information. In-memory database management system 500 may include several different components, including index server 506 , XS engine 508 , statistics server 510 , preprocessor server 512 , and name server 514 . These components may operate on a single computing device or may be distributed among multiple computing devices (eg, separate servers). Index server 506 contains the actual data and an engine for processing the data. It also coordinates and uses other servers.
XS引擎508允许客户端利用web协议(例如HTTP)连接到内存数据库管理系统500。虽然XS引擎508被图示为内存数据库管理系统500的组件,但在一些示例中,XS引擎508可实现为位于客户端应用502A、502B和内存数据库管理系统500之间的一个或多个应用程序接口(Application Program Interface,API)和/或服务。例如,XS引擎508可被配置为处理以不是SQL的语言、例如是MDX、HTTP、REST、HTML等等接收到的客户端请求。The XS engine 508 allows clients to connect to the in-memory database management system 500 using a web protocol (eg, HTTP). Although XS engine 508 is illustrated as a component of in-memory database management system 500 , in some examples, XS engine 508 may be implemented as one or more applications located between client applications 502A, 502B and in-memory database management system 500 Interface (Application Program Interface, API) and/or service. For example, XS engine 508 may be configured to process client requests received in languages other than SQL, such as MDX, HTTP, REST, HTML, and the like.
统计服务器510从所有其他服务器组件收集关于状态、性能和资源消耗的信息。可从工作室504访问统计服务器510以获得各种警报监视器的状态。Statistics server 510 collects information about status, performance and resource consumption from all other server components. Statistics server 510 may be accessed from studio 504 to obtain the status of various alarm monitors.
预处理器服务器512用于分析文本数据和提取文本搜索能力所基于的信息。The preprocessor server 512 is used to analyze the textual data and extract information on which the textual search capabilities are based.
名称服务器514保存关于数据库拓扑的信息。这被用在具有不同主机上的数据库的实例的分布式系统中。名称服务器514知道组件在何处运行以及哪些数据位于哪个服务器上。在示例实施例中,一个单独的入队服务器可按上文对于入队服务器(enqueueserver)描述的方式操作,具体而言是就创建和管理轻量型入队会话(lightweightenqueue session)而言。The name server 514 maintains information about the database topology. This is used in distributed systems with instances of the database on different hosts. The name server 514 knows where components run and what data resides on which server. In an example embodiment, a single enqueue server may operate in the manner described above for the enqueue server, in particular with respect to creating and managing lightweight enqueue sessions.
图6是图示出索引服务器506的示例的图。具体而言,更详细描绘了图5的索引服务器506。索引服务器506包括连接和会话管理组件600,其负责为数据库客户端(例如,客户端应用502A、502B)创建和管理会话和连接。一旦建立了会话,客户端就可利用SQL语句与数据库管理系统500通信。对于每个会话,可维持一组会话参数602,例如自动提交、当前事务隔离水平,等等。用户(例如,系统管理员、开发者)可由数据库管理系统500自身认证(例如,通过利用认证组件604以诸如用户名和口令之类的登录信息登录),或者认证可被委托给外部认证提供者,例如轻量型目录访问协议(Lightweight Directory Access Protocol,LDAP)目录。FIG. 6 is a diagram illustrating an example of the index server 506 . Specifically, the index server 506 of FIG. 5 is depicted in greater detail. Index server 506 includes connection and session management component 600, which is responsible for creating and managing sessions and connections for database clients (eg, client applications 502A, 502B). Once the session is established, the client can communicate with the database management system 500 using SQL statements. For each session, a set of session parameters 602 may be maintained, such as autocommit, current transaction isolation level, and the like. Users (eg, system administrators, developers) can be authenticated by database management system 500 itself (eg, by logging in with login information such as username and password using authentication component 604), or authentication can be delegated to an external authentication provider, For example, a Lightweight Directory Access Protocol (LDAP) directory.
客户端查询可由被总结为请求处理和执行控制606的一组组件来分析和执行。SQL处理器608检查客户端SQL语句的语法和语义并且生成逻辑执行计划。在一些示例中,生成逻辑执行计划包括如本文所述为分区对象生成和/或利用局部标识符。例如,生成逻辑执行计划可包括执行本文描述的过程流200、300、400的一些或全部。MDX是用于查询和操纵存储在在线分析处理(online analytical processing,OLAP)立方中的多维数据的语言。这样,可提供MDX引擎610来允许对MDX命令的解析和执行。规划引擎612允许应用在数据库层中执行基本规划操作。一个这种操作是创建数据集的新版本作为现有数据集的拷贝,同时应用过滤器和变换。Client queries may be analyzed and executed by a set of components summarized as request processing and execution control 606 . SQL processor 608 examines the syntax and semantics of client SQL statements and generates a logical execution plan. In some examples, generating the logical execution plan includes generating and/or utilizing local identifiers for partition objects as described herein. For example, generating a logical execution plan may include executing some or all of the process flows 200, 300, 400 described herein. MDX is a language for querying and manipulating multidimensional data stored in online analytical processing (OLAP) cubes. As such, an MDX engine 610 may be provided to allow parsing and execution of MDX commands. The planning engine 612 allows applications to perform basic planning operations in the database layer. One such operation is to create a new version of the dataset as a copy of the existing dataset, while applying filters and transformations.
计算引擎614实现各种SQL脚本和规划操作。计算引擎614为从SQL脚本、MDX、规划和域特定模型得出的计算模型创建逻辑执行计划。此逻辑执行计划例如可包括将模型分解成能够被并行处理的操作。数据被存储在关系存储库616中,该关系存储库616在主存储器中实现关系数据库。每个SQL语句可在事务的上下文中被处理。新的会话被隐式指派到新的事务。事务管理器618协调数据库事务、控制事务性隔离并且保持跟踪运行中的和关闭的事务。当事务被提交或回滚时,事务管理器618向涉及的引擎通知关于此事件以便它们可执行需要的动作。事务管理器618还与持久层620合作以实现原子化的和持久的事务。The calculation engine 614 implements various SQL scripts and planning operations. The computation engine 614 creates logical execution plans for computation models derived from SQL scripts, MDX, plans, and domain-specific models. This logical execution plan may include, for example, decomposing the model into operations that can be processed in parallel. Data is stored in relational store 616, which implements a relational database in main memory. Each SQL statement can be processed in the context of a transaction. New sessions are implicitly assigned to new transactions. Transaction manager 618 coordinates database transactions, controls transactional isolation, and keeps track of running and closed transactions. When a transaction is committed or rolled back, the transaction manager 618 notifies the involved engines about this event so that they can perform the required action. Transaction manager 618 also cooperates with persistence layer 620 to implement atomic and durable transactions.
授权管理器622被其他数据库系统组件调用来检查用户是否具有指定的权限来执行所请求的操作。数据库管理系统500允许向用户或角色授予权限。权限授予在指定的对象上执行指定的操作的权利。The authorization manager 622 is called by other database system components to check whether the user has the specified authority to perform the requested operation. Database management system 500 allows permissions to be granted to users or roles. A permission grants the right to perform the specified action on the specified object.
持久层620确保数据库在重启之后恢复到最近提交状态并且确保事务或者被完全执行或者被完全撤消。为了以有效的方式实现这个目标,持久层620使用先写日志、影式分页和保存点的组合。持久层620还提供用于向单独的盘存储626写入和读取数据的页管理接口624,并且还包含管理事务日志的记录器628。日志条目在数据被经由持久接口写入时可由持久层620隐式写入,或者通过利用日志接口来显式写入。Persistence layer 620 ensures that the database is restored to the most recently committed state after a restart and that transactions are either fully executed or fully undone. To achieve this goal in an efficient manner, the persistence layer 620 uses a combination of write-ahead journaling, shadow paging, and savepoints. Persistence layer 620 also provides a page management interface 624 for writing and reading data to and from separate disk storage 626, and also contains a logger 628 that manages transaction logs. Log entries may be written by persistence layer 620 either implicitly by persistence layer 620 when data is written via the persistence interface, or explicitly by utilizing the log interface.
图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。FIG. 7 is a diagram illustrating one example of request processing and execution control 606 . This figure depicts the request processing and execution control 606 of FIG. 6 in greater detail. SQL processor 608 includes SQL parser 700 that parses SQL statements and generates a logical execution plan 702 which SQL parser 700 passes to SQL optimizer 704 . SQL optimizer 704 optimizes logical execution plan 702 and converts it into physical execution plan 706 , which is then passed to SQL executor 708 . Compute engine 614 implements various SQL scripts and planning operations, and includes a compute engine optimizer 710 that optimizes operations and a compute engine executor 712 that executes operations, as well as native compute engine operators 714, L operators 716, and R operators 718.
L基础设施720包括数个组件来辅助L程序的运行,包括L运行时间(系统模式)722、L编译器724和L运行时间(用户模式)726。L infrastructure 720 includes several components to assist in the running of L programs, including L runtime (system mode) 722 , L compiler 724 , and L runtime (user mode) 726 .
示例: Example :
示例1是一种分布式数据库系统的数据库管理系统服务器,该数据库管理系统服务器包括处理器和与处理器通信的存储器,其中数据库管理系统服务器被编程为执行操作,这些操作包括:接收描述第一数据库查询的第一执行单元的第一执行单元数据,第一执行单元数据包括描述用于第一执行单元的一组运算元的第一运算元数据;由数据库管理系统服务器确定第一运算元数据描述来自分布式数据库系统的第一分区的至少一个运算元和来自分布式数据库系统的第二分区的至少一个运算元;由数据库管理系统服务器生成描述第一分区处的行的第一组局部标识符;由数据库管理系统服务器生成描述第二分区处的行的第一组局部标识符;以及至少部分基于描述第一分区处的行的第一组局部标识符和描述第二分区处的行的第一组局部标识符来在分布式数据库系统处执行第一执行单元。Example 1 is a database management system server of a distributed database system, the database management system server including a processor and a memory in communication with the processor, wherein the database management system server is programmed to perform operations comprising: receiving a description of a first First execution unit data of the first execution unit of the database query, the first execution unit data includes first operation metadata describing a set of operands for the first execution unit; the first operation metadata is determined by the database management system server describing at least one operand from a first partition of the distributed database system and at least one operand from a second partition of the distributed database system; a first set of local identifiers describing rows at the first partition are generated by the database management system server identifier; generating, by the database management system server, a first set of local identifiers describing the row at the second partition; and based at least in part on the first set of local identifiers describing the row at the first partition and the identifier describing the row at the second partition the first set of local identifiers to execute the first execution unit at the distributed database system.
在示例2中,示例1的主题可选地包括其中数据库管理系统服务器还被编程为执行包括以下的操作:接收描述第二执行单元的第二执行单元数据,第二执行单元数据包括描述用于第二执行单元的一组运算元的第二运算元数据;确定第二运算元数据描述来自第一分区的至少一个运算元;至少部分通过向从描述第一分区处的行的第一组局部标识符中选择的局部标识符添加第一偏移量来生成描述第一分区处的行的第二组局部标识符;以及至少部分基于描述第一分区处的行的第二组局部标识符来在分布式数据库系统处执行第二执行单元。In Example 2, the subject matter of Example 1 optionally includes wherein the database management system server is further programmed to perform operations comprising: receiving second execution unit data describing a second execution unit, the second execution unit data comprising describing second operand metadata for a set of operands of the second execution unit; determining that the second operand data describes at least one operand from the first partition; adding a first offset to a local identifier selected from the identifiers to generate a second set of local identifiers describing the row at the first partition; and generating a second set of local identifiers describing the row at the first partition based at least in part on the second set of local identifiers describing the row at the first partition A second execution unit is executed at the distributed database system.
在示例3中,示例2的主题可选地包括其中第二运算元数据还描述来自分布式数据库系统的第三分区的至少一个运算元,其中第一分区和第三分区是共同的表格的一部分。In Example 3, the subject matter of Example 2 optionally includes wherein the second operand metadata also describes at least one operand from a third partition of the distributed database system, wherein the first partition and the third partition are part of a common table .
在示例4中,示例1-3的任何一者或多者的主题可选地包括其中数据库管理系统服务器还被编程为执行包括生成关联第一分区处的行的至少一部分和第二分区的行的至少一部分的索引的操作,其中索引是至少部分基于第一组局部标识符的。In Example 4, the subject matter of any one or more of Examples 1-3 optionally includes wherein the database management system server is further programmed to perform execution comprising generating at least a portion of the row associated with the first partition and the row at the second partition An operation of indexing at least a portion of the index, wherein the indexing is based at least in part on the first set of local identifiers.
在示例5中,示例4的主题可选地包括其中数据库管理系统服务器还被编程为执行包括以下的操作:接收包括描述用于第二执行单元的一组运算元的第二运算元数据的第二执行单元;确定第二运算元数据描述来自第一分区的至少一个运算元;至少部分通过向索引的第一局部标识符添加第一偏移量差值来生成经更新的索引,其中第一偏移量差值是来自第一组局部标识符的第一分区的分区偏移量和第二组局部标识符中的第一分区的分区偏移量之间的差值;以及至少部分基于经更新的索引来在分布式数据库系统处执行第二执行单元。In Example 5, the subject matter of Example 4 optionally includes wherein the database management system server is further programmed to perform operations comprising: receiving a first operation metadata including second operation metadata describing a set of operands for the second execution unit two execution units; determining that second operand metadata describes at least one operand from the first partition; generating an updated index at least in part by adding a first offset difference to a first local identifier of the index, wherein the first The offset difference is a difference between the partition offset of the first partition from the first set of local identifiers and the partition offset of the first partition of the second set of local identifiers; and based at least in part on the The updated index is used to execute the second execution unit at the distributed database system.
在示例6中,示例1-5的任何一者或多者的主题可选地包括其中描述第一分区处的行的第一组局部标识符的第一局部标识符包括指示第一分区处的切片的切片标识符和指示第一分区处的第一行的偏移量的行偏移量。In Example 6, the subject matter of any one or more of Examples 1-5 optionally includes wherein the first local identifier describing the first set of local identifiers for the row at the first partition includes indicating the row at the first partition. The slice identifier of the slice and a row offset indicating the offset of the first row at the first partition.
在示例7中,示例1-6的任何一者或多者的主题可选地包括其中描述第一分区处的行的第一组局部标识符的第一局部标识符包括指示分区中性标识符的第一部分和指示第一分区的第一执行单元分区偏移量的第二部分。In Example 7, the subject matter of any one or more of Examples 1-6 optionally includes wherein the first local identifier that describes the first set of local identifiers for the row at the first partition includes indicating a partition neutral identifier and a second portion indicating the partition offset of the first execution unit of the first partition.
在示例8中,示例1-7的任何一者或多者的主题可选地包括其中数据库管理系统服务器还被编程为执行包括以下的操作:接收描述第二执行单元的第二执行单元数据,第二执行单元数据包括描述用于第二执行单元的一组运算元的第二运算元数据;确定第二运算元数据描述来自第一分区的至少一个运算元;至少部分基于第二执行单元分区偏移量来生成描述第一分区处的行的第二组局部标识符;以及至少部分基于描述第一分区处的行的第二组局部标识符来在分布式数据库系统处执行第二执行单元。In Example 8, the subject matter of any one or more of Examples 1-7 optionally includes wherein the database management system server is further programmed to perform operations comprising: receiving second execution unit data describing the second execution unit, the second execution unit data includes second operand metadata describing a set of operands for the second execution unit; determining that the second operand data describes at least one operand from the first partition; based at least in part on the second execution unit partition offsets to generate a second set of local identifiers describing the row at the first partition; and executing a second execution unit at the distributed database system based at least in part on the second set of local identifiers describing the row at the first partition .
示例9是一种在分布式数据库管理系统中执行数据库查询的方法,该方法包括:由数据库管理系统服务器接收描述第一数据库查询的第一执行单元的第一执行单元数据,第一执行单元数据包括描述用于第一执行单元的一组运算元的第一运算元数据;由数据库管理系统服务器确定第一运算元数据描述来自分布式数据库系统的第一分区的至少一个运算元和来自分布式数据库系统的第二分区的至少一个运算元;由数据库管理系统服务器生成描述第一分区处的行的第一组局部标识符;由数据库管理系统服务器生成描述第二分区处的行的第一组局部标识符;以及由数据库管理系统服务器至少部分基于描述第一分区处的行的第一组局部标识符和描述第二分区处的行的第一组局部标识符来在分布式数据库系统处执行第一执行单元。Example 9 is a method of executing a database query in a distributed database management system, the method comprising: receiving, by a database management system server, first execution unit data describing a first execution unit of a first database query, the first execution unit data including first operation metadata describing a set of operands for the first execution unit; the first operation metadata is determined by the database management system server to describe at least one operand from the first partition of the distributed database system and from the distributed database system. at least one operand of a second partition of the database system; a first set of local identifiers describing rows at the first partition is generated by the database management system server; a first set of local identifiers describing rows at the second partition is generated by the database management system server a local identifier; and executed by the database management system server at the distributed database system based at least in part on a first set of local identifiers describing rows at the first partition and a first set of local identifiers describing rows at the second partition first execution unit.
在示例10中,示例9的主题可选地包括由数据库管理系统服务器接收描述第二执行单元的第二执行单元数据,第二执行单元数据包括描述用于第二执行单元的一组运算元的第二运算元数据;由数据库管理系统服务器确定第二运算元数据描述来自第一分区的至少一个运算元;由数据库管理系统服务器至少部分通过向从描述第一分区处的行的第一组局部标识符中选择的局部标识符添加第一偏移量来生成描述第一分区处的行的第二组局部标识符;以及由数据库管理系统服务器至少部分基于描述第一分区处的行的第二组局部标识符来在分布式数据库系统处执行第二执行单元。In Example 10, the subject matter of Example 9 optionally includes receiving, by a database management system server, second execution unit data describing a second execution unit, the second execution unit data including a set of operands describing a set of operands for the second execution unit second operational metadata; it is determined by the database management system server that the second operational metadata describes at least one operand from the first partition; by the database management system server at least in part by passing to the first set of partials from the row describing the row at the first partition adding a first offset to a local identifier selected from the identifiers to generate a second set of local identifiers describing the row at the first partition; and by the database management system server based at least in part on the second set of local identifiers describing the row at the first partition the group local identifier to execute the second execution unit at the distributed database system.
在示例11中,示例10的主题可选地包括其中第二运算元数据还描述来自分布式数据库系统的第三分区的至少一个运算元,其中第一分区和第三分区是共同的表格的一部分。In Example 11, the subject matter of Example 10 optionally includes wherein the second operand metadata also describes at least one operand from a third partition of the distributed database system, wherein the first partition and the third partition are part of a common table .
在示例12中,示例9-11的任何一者或多者的主题可选地包括由数据库管理系统服务器生成关联第一分区处的行的至少一部分和第二分区的行的至少一部分的索引,其中索引是至少部分基于第一组局部标识符的。In Example 12, the subject matter of any one or more of Examples 9-11 optionally includes generating, by the database management system server, an index that associates at least a portion of the row at the first partition with at least a portion of the row at the second partition, wherein the index is based at least in part on the first set of local identifiers.
在示例13中,示例12的主题可选地包括由数据库管理系统服务器接收包括描述用于第二执行单元的一组运算元的第二运算元数据的第二执行单元;由数据库管理系统服务器确定第二运算元数据描述来自第一分区的至少一个运算元;由数据库管理系统服务器至少部分通过向索引的第一局部标识符添加第一偏移量差值来生成经更新的索引,其中第一偏移量差值是来自第一组局部标识符的第一分区的分区偏移量和第二组局部标识符中的第一分区的分区偏移量之间的差值;以及由数据库管理系统服务器至少部分基于经更新的索引来在分布式数据库系统处执行第二执行单元。In Example 13, the subject matter of Example 12 optionally includes receiving, by a database management system server, a second execution unit including second operational metadata describing a set of operands for the second execution unit; determining by the database management system server second operand metadata describes at least one operand from the first partition; the updated index is generated by the database management system server at least in part by adding a first offset difference to a first local identifier of the index, wherein the first the offset difference is the difference between the partition offset of the first partition from the first set of local identifiers and the partition offset of the first partition of the second set of local identifiers; and by the database management system The server executes the second execution unit at the distributed database system based at least in part on the updated index.
在示例14中,示例9-13的任何一者或多者的主题可选地包括其中描述第一分区处的行的第一组局部标识符的第一局部标识符包括指示第一分区处的切片的切片标识符和指示第一分区处的第一行的偏移量的行偏移量。In Example 14, the subject matter of any one or more of Examples 9-13 optionally includes wherein the first local identifier that describes the first set of local identifiers for the row at the first partition includes indicating that the row at the first partition The slice identifier of the slice and a row offset indicating the offset of the first row at the first partition.
在示例15中,示例9-14的任何一者或多者的主题可选地包括其中描述第一分区处的行的第一组局部标识符的第一局部标识符包括指示分区中性标识符的第一部分和指示第一分区的第一执行单元分区偏移量的第二部分。In Example 15, the subject matter of any one or more of Examples 9-14 optionally includes wherein the first local identifier that describes the first set of local identifiers for the row at the first partition includes indicating a partition neutral identifier and a second portion indicating the partition offset of the first execution unit of the first partition.
在示例16中,示例9-15的任何一者或多者的主题可选地包括由数据库管理系统服务器接收描述第二执行单元的第二执行单元数据,第二执行单元数据包括描述用于第二执行单元的一组运算元的第二运算元数据;由数据库管理系统服务器确定第二运算元数据描述来自第一分区的至少一个运算元;由数据库管理系统服务器至少部分基于第二执行单元分区偏移量来生成描述第一分区处的行的第二组局部标识符;以及由数据库管理系统服务器至少部分基于描述第一分区处的行的第二组局部标识符来在分布式数据库系统处执行第二执行单元。In Example 16, the subject matter of any one or more of Examples 9-15 optionally includes receiving, by the database management system server, second execution unit data describing the second execution unit, the second execution unit data including the description for the first execution unit second operation metadata for a set of operands of two execution units; the second operation metadata is determined by the database management system server to describe at least one operand from the first partition; the second operation unit partition is determined by the database management system server at least in part based on the second execution unit an offset to generate a second set of local identifiers describing the row at the first partition; and generating a second set of local identifiers at the distributed database system by the database management system server based at least in part on the second set of local identifiers describing the row at the first partition Execute the second execution unit.
示例17是一种包括存储在其上的指令的机器可读介质,这些指令当被至少一个处理器执行时使得至少一个处理器执行操作,这些操作包括:接收描述分布式数据库系统处的第一数据库查询的第一执行单元的第一执行单元数据,第一执行单元数据包括描述用于第一执行单元的一组运算元的第一运算元数据;确定第一运算元数据描述来自分布式数据库系统的第一分区的至少一个运算元和来自分布式数据库系统的第二分区的至少一个运算元;生成描述第一分区处的行的第一组局部标识符;生成描述第二分区处的行的第一组局部标识符;以及至少部分基于描述第一分区处的行的第一组局部标识符和描述第二分区处的行的第一组局部标识符来执行第一执行单元。Example 17 is a machine-readable medium including instructions stored thereon that, when executed by at least one processor, cause at least one processor to perform operations comprising: receiving a description of a first at a distributed database system First execution unit data of the first execution unit of the database query, the first execution unit data includes first operation metadata describing a set of operands for the first execution unit; determining that the first operation metadata description is from a distributed database at least one operand of a first partition of the system and at least one operand from a second partition of the distributed database system; generating a first set of local identifiers describing rows at the first partition; generating rows describing rows at the second partition and executing the first execution unit based at least in part on the first set of local identifiers describing the row at the first partition and the first set of local identifiers describing the row at the second partition.
在示例18中,示例17的主题可选地包括其中机器可读介质还包括存储在其上的如下指令:这些指令当被至少一个处理器执行时使得至少一个处理器执行包括以下各项在内的操作:接收描述第二执行单元的第二执行单元数据,第二执行单元数据包括描述用于第二执行单元的一组运算元的第二运算元数据;确定第二运算元数据描述来自第一分区的至少一个运算元;至少部分通过向从描述第一分区处的行的第一组局部标识符中选择的局部标识符添加第一偏移量来生成描述第一分区处的行的第二组局部标识符;以及至少部分基于描述第一分区处的行的第二组局部标识符来在分布式数据库系统处执行第二执行单元。In Example 18, the subject matter of Example 17 optionally includes wherein the machine-readable medium further includes instructions stored thereon that, when executed by the at least one processor, cause the at least one processor to execute an The operation of: receiving second execution unit data describing the second execution unit, the second execution unit data including second operation metadata describing a set of operands for the second execution unit; determining that the second operation metadata description is from the at least one operand of a partition; generating a th two sets of local identifiers; and executing the second execution unit at the distributed database system based at least in part on the second set of local identifiers describing the row at the first partition.
在示例19中,示例18的主题可选地包括其中第二运算元数据还描述来自分布式数据库系统的第三分区的至少一个运算元,其中第一分区和第三分区是共同的表格的一部分。In Example 19, the subject matter of Example 18 optionally includes wherein the second operand metadata also describes at least one operand from a third partition of the distributed database system, wherein the first partition and the third partition are part of a common table .
在示例20中,示例17-19的任何一者或多者的主题可选地包括其中机器可读介质还包括存储在其上的如下指令:这些指令当被至少一个处理器执行时使得至少一个处理器执行包括生成关联第一分区处的行的至少一部分和第二分区处的行的至少一部分的索引的操作,其中索引是至少部分基于第一组局部标识符的。In Example 20, the subject matter of any one or more of Examples 17-19 optionally includes wherein the machine-readable medium further includes instructions stored thereon that, when executed by the at least one processor, cause the at least one The processor performs operations including generating an index that associates at least a portion of the row at the first partition with at least a portion of the row at the second partition, wherein the index is based at least in part on the first set of local identifiers.
图8是示出计算设备的软件体系结构802的一个示例的框图800。体系结构802可结合例如这里描述的各种硬件体系结构使用。图8只是软件体系结构的非限制性示例,而许多其他体系结构可被实现来促进本文描述的功能。代表性硬件层804被图示并且可代表例如任何以上提到的计算设备。在一些示例中,硬件层804可根据图9的计算机系统900的体系结构来实现。8 is a block diagram 800 illustrating one example of a software architecture 802 of a computing device. Architecture 802 may be used in conjunction with various hardware architectures such as those described herein. Figure 8 is only a non-limiting example of a software architecture, and many other architectures may be implemented to facilitate the functionality described herein. A representative hardware layer 804 is illustrated and may represent, for example, any of the computing devices mentioned above. In some examples, hardware layer 804 may be implemented according to the architecture of computer system 900 of FIG. 9 .
代表性硬件层804包括具有关联的可执行指令808的一个或多个处理单元806。可执行指令808表示软件体系结构802的可执行指令,包括本文描述的方法、模块、子系统和组件等等的实现,并且也可包括存储器和/或存储模块810,存储器和/或存储模块810也具有可执行指令808。硬件层804还可包括如其他硬件812指示的其他硬件,这可代表硬件层804的任何其他硬件,例如作为计算机系统900的一部分图示的其他硬件。The representative hardware layer 804 includes one or more processing units 806 with associated executable instructions 808 . Executable instructions 808 represent executable instructions for software architecture 802, including implementations of the methods, modules, subsystems, and components, etc. described herein, and may also include memory and/or storage module 810, memory and/or storage module 810 There are also executable instructions 808 . Hardware layer 804 may also include other hardware as indicated by other hardware 812 , which may represent any other hardware of hardware layer 804 , such as the other hardware illustrated as part of computer system 900 .
在图8的示例体系结构中,软件体系结构802可被概念化为层的栈,其中每一层提供特定的功能。例如,软件体系结构802可包括诸如以下的层:操作系统814、库816、框架/中间件818、应用820和呈现层844。在操作上,应用820和/或层内的其他组件可通过软件栈调用API调用824并且响应于API调用824而访问被示为消息826的响应、返回的值等等。图示的层是代表性的,而并非所有软件体系结构都具有所有的层。例如,一些移动或专用操作系统可不提供框架/中间件818,而其他的可提供这样的层。其他软件体系结构可包括额外的或不同的层。In the example architecture of FIG. 8, software architecture 802 may be conceptualized as a stack of layers, where each layer provides specific functionality. For example, software architecture 802 may include layers such as operating system 814 , libraries 816 , frameworks/middleware 818 , applications 820 , and presentation layer 844 . Operationally, application 820 and/or other components within the layer may invoke API call 824 through the software stack and in response to API call 824 access responses shown as messages 826, returned values, and the like. The illustrated layers are representative, and not all software architectures have all layers. For example, some mobile or specialized operating systems may not provide framework/middleware 818, while others may provide such a layer. Other software architectures may include additional or different layers.
操作系统814可管理硬件资源并且提供常见服务。操作系统814例如可包括内核828、服务830和驱动器832。内核828可充当硬件和其他软件层之间的抽象层。例如,内核828可负责存储器管理、处理器管理(例如,调度)、组件管理、联网、安全性设置,等等。服务830可为其他软件层提供其他常见服务。在一些示例中,服务830包括中断服务。中断服务可检测对中断的接收,并且作为响应,使得体系结构802暂停其当前处理并且在中断被访问时执行中断服务例程(interrupt service routine,ISR)。Operating system 814 can manage hardware resources and provide common services. Operating system 814 may include, for example, kernel 828 , services 830 , and drivers 832 . Kernel 828 may act as an abstraction layer between hardware and other software layers. For example, the kernel 828 may be responsible for memory management, processor management (eg, scheduling), component management, networking, security settings, and the like. Services 830 may provide other common services for other software layers. In some examples, servicing 830 includes interrupt servicing. The interrupt service may detect receipt of an interrupt and, in response, cause the architecture 802 to suspend its current processing and execute an interrupt service routine (ISR) when the interrupt is accessed.
驱动器832可负责控制下层硬件或与下层硬件接口。例如,取决于硬件配置,驱动器832可包括显示驱动器、相机驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(Universal Serial Bus,USB)驱动器)、驱动器、NFC驱动器、音频驱动器、电力管理驱动器,等等。Driver 832 may be responsible for controlling or interfacing with the underlying hardware. For example, depending on the hardware configuration, drivers 832 may include display drivers, camera drivers, drives, flash drives, serial communication drives (eg, Universal Serial Bus (USB) drives), Drivers, NFC Drivers, Audio Drivers, Power Management Drivers, etc.
库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。Libraries 816 may provide common infrastructure that may be utilized by applications 820 and/or other components and/or layers. Libraries 816 typically provide functionality that allows other software modules to perform tasks in a manner that is easier than interfacing directly with underlying operating system 814 functionality (eg, kernel 828, services 830, and/or drivers 832). Libraries 816 may include system libraries 834 (eg, C standard libraries) that may provide functions such as memory allocation functions, string manipulation functions, math functions, and the like. Additionally, the library 816 may provide an API library 836, such as a media library (eg, a library that supports rendering and manipulation of various media formats such as MPEG4, H.264, MP3, AAC, AMR, JPG, PNG), a graphics library (eg, OpenGL frameworks that can be used to render 2D and 8D in graphics content on a display), database libraries (eg, SQLite, which can provide various relational database functions), web libraries (eg, WebKit, which can provide web browsing capabilities) ,and many more. Libraries 816 may also include various other libraries 838 to provide many other APIs to applications 820 and other software components/modules. In some examples, library 816 may provide one or more APIs that are served by message-oriented middleware.
框架818(有时也称为中间件)可提供可被应用820和/或其他软件组件/模块利用的更高级别常见基础设施。例如,框架818可提供各种图形用户界面(graphic userinterface,GUI)功能、高级别资源管理、高级别位置服务,等等。框架818可提供可被应用820和/或其他软件组件/模块利用的很宽范围的其他API,其中一些可能是特定的操作系统或平台特定的。Framework 818 (also sometimes referred to as middleware) may provide higher-level common infrastructure that may be utilized by applications 820 and/or other software components/modules. For example, framework 818 may provide various graphical user interface (GUI) functions, high-level resource management, high-level location services, and the like. Framework 818 may provide a wide range of other APIs that may be utilized by applications 820 and/or other software components/modules, some of which may be specific to a particular operating system or platform.
应用820包括内置应用840和/或第三方应用842。代表性内置应用840的示例可包括——但不限于——联系人应用、浏览器应用、书籍阅读器应用、位置应用、媒体应用、消息传递应用和/或游戏应用。第三方应用842可包括内置应用840的任何一者以及各种各样的其他应用。在特定示例中,第三方应用842(例如,由不是特定平台的厂商的实体利用AndroidTM或iOSTM软件开发套件(software development kit,SDK)开发的应用)可以是在诸如iOSTM、AndroidTM、Phone或其他移动计算设备操作系统之类的移动操作系统上运行的移动软件。在这个示例中,第三方应用842可调用由诸如操作系统814之类的移动操作系统提供的API调用824来促进本文描述的功能。Applications 820 include built-in applications 840 and/or third-party applications 842 . Examples of representative built-in applications 840 may include, but are not limited to, a contacts application, a browser application, a book reader application, a location application, a media application, a messaging application, and/or a gaming application. The third-party applications 842 may include any of the built-in applications 840 as well as a wide variety of other applications. In a particular example, a third-party application 842 (eg, an application developed using Android ™ or an iOS ™ software development kit (SDK) by an entity that is not a vendor of a particular platform) may be a software development kit such as iOS ™ , Android ™ , Mobile software running on a mobile operating system such as a Phone or other mobile computing device operating system. In this example, third-party applications 842 may invoke API calls 824 provided by a mobile operating system, such as operating system 814, to facilitate the functionality described herein.
应用820可利用内置的操作系统功能(例如,内核828、驱动器832和/或驱动器832)、库(例如,系统834、API 836和其他库838)、框架/中间件818来创建用户接口以与系统的用户交互。替换地或者额外地,在一些系统中,与用户的交互可通过呈现层(例如呈现层844)发生。在这些系统中,应用/模块“逻辑”可与应用/模块的与用户交互的那些方面相分离。Applications 820 may utilize built-in operating system functions (eg, kernel 828, drivers 832, and/or drivers 832), libraries (eg, system 834, API 836, and other libraries 838), frameworks/middleware 818 to create user interfaces to interact with User interaction of the system. Alternatively or additionally, in some systems, interaction with the user may occur through a presentation layer (eg, presentation layer 844). In these systems, the application/module "logic" may be separated from those aspects of the application/module that interact with the user.
一些软件体系结构利用虚拟机。在图8的示例中,这由虚拟机848来图示。虚拟机创建一种软件环境,在其中应用/模块可以就像它们在硬件计算设备上执行那样执行。虚拟机848被主机操作系统(操作系统814)所托管并且通常——虽然并非始终——具有虚拟机监视器846,该虚拟机监视器846管理虚拟机848的操作以及与主机操作系统(即,操作系统814)的接口。软件体系结构在虚拟机848内执行,例如操作系统850、库852、框架/中间件854、应用856和/或呈现层858。在虚拟机848内执行的软件体系结构的这些层可与先前描述的相应层相同或者可以不同。Some software architectures utilize virtual machines. In the example of FIG. 8, this is illustrated by virtual machine 848. A virtual machine creates a software environment in which applications/modules can execute as if they were executing on a hardware computing device. The virtual machine 848 is hosted by the host operating system (operating system 814) and typically, though not always, has a virtual machine monitor 846 that manages the operation of the virtual machine 848 and its interaction with the host operating system (ie, interface to the operating system 814). Software architecture executes within virtual machine 848 , such as operating system 850 , libraries 852 , frameworks/middleware 854 , applications 856 and/or presentation layer 858 . These layers of the software architecture executing within virtual machine 848 may be the same as the corresponding layers previously described or may be different.
模块、组件和逻辑Modules, Components and Logic
某些实施例在本文中被描述为包括逻辑或数个组件、模块或机构。模块可构成软件模块(例如,(1)在非暂态机器可读介质上或(2)在传输信号中体现的代码)或者硬件实现模块。硬件实现模块是能够执行某些操作的有形单元并且可按特定方式被配置或安排。在示例实施例中,一个或多个计算机系统(例如,单机、客户端或服务器计算机系统)或一个或多个处理器可被软件(例如,应用或应用部分)配置为进行操作以执行如本文所述的某些操作的硬件实现模块。Certain embodiments are described herein as including logic or several components, modules or mechanisms. A module may constitute a software module (eg, (1) code embodied on a non-transitory machine-readable medium or (2) in a transmission signal) or a hardware implemented module. A hardware-implemented module is a tangible unit capable of performing certain operations and may be configured or arranged in a particular manner. In example embodiments, one or more computer systems (eg, stand-alone, client, or server computer systems) or one or more processors may be configured by software (eg, applications or application portions) to operate to perform operations as described herein Hardware implementation modules for some of the operations described.
在各种实施例中,可以机械地或者电子地实现硬件实现模块。例如,硬件实现模块可包括被永久配置来执行某些操作的专用电路或逻辑(例如,专用处理器,比如现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specificintegrated circuit,ASIC))。硬件实现模块也可包括由软件临时配置来执行某些操作的可编程逻辑或电路(例如,包含在通用处理器或另一可编程处理器内)。将会明白,关于是以机械方式、还是用专用且永久配置的电路还是用临时配置的电路(例如,由软件配置)来实现硬件实现模块的决定可由成本和时间考虑来驱动。In various embodiments, hardware-implemented modules may be implemented mechanically or electronically. For example, hardware-implemented modules may include special-purpose circuits or logic (eg, special-purpose processors such as field programmable gate arrays (FPGAs) or application-specific integrated circuits (application-specific integrated circuits) that are permanently configured to perform certain operations , ASIC)). A hardware-implemented module may also include programmable logic or circuitry (eg, contained within a general-purpose processor or another programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision as to whether to implement a hardware-implemented module mechanically, with dedicated and permanently configured circuitry, or with temporarily configured circuitry (eg, configured by software) may be driven by cost and time considerations.
因此,术语“硬件实现模块”应当被理解为涵盖有形实体,不论该实体是被物理地构造、永久地配置(例如,硬连线)的实体,还是被临时或暂时配置(例如,编程)来按某种方式操作和/或执行本文描述的某些操作的实体。考虑硬件实现模块被临时配置(例如,编程)的实施例,在任何一个时刻不需要配置或实例化每个硬件实现模块。例如,在硬件实现模块包括利用软件配置的通用处理器的情况下,该通用处理器在不同时间可被配置为各个不同的硬件实现模块。软件可相应地将处理器配置为例如在一个时刻构成一特定的硬件实现模块并且在一不同的时刻构成一不同的硬件实现模块。Accordingly, the term "hardware-implemented module" should be understood to encompass a tangible entity, whether physically constructed, permanently configured (eg, hardwired), or temporarily or temporarily configured (eg, programmed) to An entity that operates in a certain way and/or performs some of the operations described herein. Considering embodiments in which hardware-implemented modules are temporarily configured (eg, programmed), each hardware-implemented module need not be configured or instantiated at any one time. For example, where the hardware-implemented modules include a general-purpose processor configured using software, the general-purpose processor may be configured as various hardware-implemented modules at different times. Software may accordingly configure the processor to constitute a particular hardware-implemented module at one time and a different hardware-implemented module at a different time, for example.
硬件实现模块可向其他硬件实现模块提供信息并且可从其他硬件实现模块接收信息。因此,描述的硬件实现模块可被视为是通信耦合的。在多个这样的硬件实现模块同时存在的情况下,通信可通过信号传输来实现(例如,通过连接硬件实现模块的适当电路和总线)。在在不同时间配置或实例化多个硬件实现模块的实施例中,这种硬件实现模块之间的通信可例如通过在这多个硬件实现模块能够访问的存储器结构中存储和取回信息来实现。例如,一个硬件实现模块可执行一操作并且将该操作的输出存储在其通信耦合到的存储器设备中。另一硬件实现模块随后在以后某时可访问该存储器设备以取回并处理存储的输出。硬件实现模块也可发起与输入或输出设备的通信,并且可对资源(例如,信息的集合)进行操作。Hardware-implemented modules may provide information to and may receive information from other hardware-implemented modules. Accordingly, the described hardware-implemented modules may be considered to be communicatively coupled. Where multiple such hardware-implemented modules exist concurrently, communication may be accomplished through signal transmission (eg, by connecting appropriate circuits and buses of the hardware-implemented modules). In embodiments where multiple hardware-implemented modules are configured or instantiated at different times, communication between such hardware-implemented modules may be accomplished, for example, by storing and retrieving information in memory structures accessible to the multiple hardware-implemented modules . For example, a hardware-implemented module may perform an operation and store the output of the operation in a memory device to which it is communicatively coupled. Another hardware-implemented module may then access the memory device at some later time to retrieve and process the stored output. Hardware-implemented modules may also initiate communications with input or output devices, and may operate on resources (eg, collections of information).
本文描述的示例方法的各种操作可至少部分地由被临时配置(例如,由软件)或永久配置来执行相关操作的一个或多个处理器执行。无论是临时还是永久地配置,这种处理器都可构成处理器实现模块,这些模块进行操作来执行一个或多个操作或功能。本文提及的模块在一些示例实施例中可包括处理器实现模块。The various operations of the example methods described herein may be performed, at least in part, by one or more processors that are temporarily configured (eg, by software) or permanently configured to perform the associated operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
类似地,本文描述的方法可至少部分是由处理器实现的。例如,方法的操作之中的至少一些可由一个或多个处理器或者处理器实现模块来执行。某些操作的执行可分布在一个或多个处理器之间,不仅是驻留在单个机器内,而是部署在多个机器上。在一些示例实施例中,一个或多个处理器可位于单个位置中(例如,在家庭环境、办公室环境或服务器农场内),而在其他实施例中处理器可分布在多个位置上。Similarly, the methods described herein may be implemented, at least in part, by a processor. For example, at least some of the operations of the methods may be performed by one or more processors or processor-implemented modules. The execution of certain operations may be distributed among one or more processors, not only residing within a single machine, but deployed across multiple machines. In some example embodiments, one or more processors may be located in a single location (eg, within a home environment, office environment, or server farm), while in other embodiments processors may be distributed across multiple locations.
一个或多个处理器也可进行操作来支持在“云计算”环境中或者作为“软件即服务”(software as a service,SaaS)的相关操作的执行。例如,这些操作之中的至少一些可由一组计算机(作为包括处理器的机器的示例)来执行,这些操作是经由网络(例如,因特网)和经由一个或多个适当的接口(例如,API)可访问的。One or more processors are also operable to support the execution of related operations in a "cloud computing" environment or as a "software as a service" (SaaS). For example, at least some of these operations may be performed by a set of computers (as an example of a machine including a processor) via a network (eg, the Internet) and via one or more suitable interfaces (eg, an API) Accessible.
电子装置和系统Electronic Devices and Systems
示例实施例可在数字电子电路中实现,或者在计算机硬件、固件或软件或者在它们的组合中实现。示例实施例可利用计算机程序产品来实现,例如,有形地体现在信息载体中(例如机器可读介质中)的计算机程序,以供数据处理装置执行或者控制数据处理装置的操作,其中数据处理装置例如是可编程处理器、计算机或多个计算机。Example embodiments may be implemented in digital electronic circuitry, or in computer hardware, firmware, or software, or in combinations of them. Example embodiments may be implemented using a computer program product, eg, a computer program tangibly embodied in an information carrier (eg, in a machine-readable medium), for execution by or to control the operation of a data processing apparatus, wherein the data processing apparatus For example, a programmable processor, a computer or multiple computers.
计算机程序可以用任何形式的编程语言来编写,所述语言包括经编译或解释的语言,并且计算机程序可按任何形式来部署,包括被部署为独立程序或被部署为模块、子例程或者适合用在计算环境中的其他单元。计算机程序可被部署来在一个计算机上或多个计算机上执行,所述多个计算机位于一个地点或分布在多个地点并由通信网络互连。Computer programs may be written in any form of programming language, including compiled or interpreted languages, and may be deployed in any form, including as stand-alone programs or as modules, subroutines, or suitable Other units used in the computing environment. A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
在示例实施例中,操作可由一个或多个可编程处理器执行,这些可编程处理器执行计算机程序以通过操作输入数据并生成输出来执行功能。方法操作也可由专用逻辑电路(例如,FPGA或ASIC)来执行,并且示例实施例的装置可实现为专用逻辑电路。In example embodiments, operations may be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output. Method operations can also be performed by, and the apparatus of, example embodiments can be implemented as, special purpose logic circuitry (eg, an FPGA or ASIC).
计算系统可包括客户端和服务器。客户端和服务器一般可彼此远离并且通常通过通信网络来交互。客户端和服务器的关系是由于计算机程序在各计算机上运行且相互之间具有客户端-服务器关系而发生的。在部署可编程计算系统的实施例中,将会明白硬件和软件体系结构都值得考虑。具体而言,将会明白,关于是以永久配置的硬件(例如,ASIC),以临时配置的硬件(例如,软件和可编程处理器的组合)还是以永久和临时配置的硬件的组合实现某个功能的选择,可以是一个设计选择。下面阐述了在各种示例实施例中可部署的硬件(例如,机器)和软件体系结构。A computing system may include clients and servers. Clients and servers are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and by virtue of a client-server relationship to each other. In embodiments deploying programmable computing systems, it will be appreciated that both hardware and software architectures merit consideration. In particular, it will be appreciated whether a certain implementation is in permanently configured hardware (eg, an ASIC), in temporarily configured hardware (eg, a combination of software and a programmable processor), or in a combination of permanently and temporarily configured hardware. A functional choice can be a design choice. The hardware (eg, machine) and software architectures that may be deployed in various example embodiments are set forth below.
示例机器体系结构和机器可读介质Example Machine Architecture and Machine-Readable Media
图9是采取计算机系统900的示例形式的机器的框图,在该机器内可执行指令924以使得该机器执行本文论述的方法中的任何一者或多者。在替换实施例中,机器可作为独立的设备来操作或者可连接(例如,联网)到其他机器。在联网部署中,机器可在服务器-客户端网络环境中作为服务器或者客户端机器来操作,或者在对等(或分布式)网络环境中作为对等机器来操作。机器可以是个人计算机(personal computer,PC)、平板PC、机顶盒(set-top box,STB)、个人数字助理(personal digital assistant,PDA)、蜂窝电话、web器具、网络路由器、交换机或网桥,或者任何能够执行指定机器要采取的动作的(顺序的或其他方式的)指令的机器。另外,虽然只图示了单个机器,但术语“机器”也应当被理解为包括单独或联合执行指令的集合(或多个集合)以执行本文论述的方法之中的任何一者或多者的机器的任何集合。9 is a block diagram of a machine in the example form of a computer system 900 within which instructions 924 are executable to cause the machine to perform any one or more of the methods discussed herein. In alternate embodiments, a machine may operate as a stand-alone device or may be connected (eg, networked) to other machines. In a networked deployment, a machine may operate as a server or client machine in a server-client network environment, or as a peer-to-peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), tablet PC, set-top box (STB), personal digital assistant (PDA), cellular phone, web appliance, network router, switch or bridge, Or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by the machine. Additionally, although only a single machine is illustrated, the term "machine" should also be understood to include a set (or sets) of instructions executing, individually or jointly, any one or more of the methods discussed herein. any collection of machines.
示例计算机系统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。The example computer system 900 includes a processor 902 (eg, a central processing unit (CPU), a graphics processing unit (GPU), or both), a main memory 904 and a static memory 906 , which are connected to the computer via a bus 908 . communicate with each other. Computer system 900 may also include a video display unit 910 (eg, a liquid crystal display (graphics processing unit, LCD) or cathode ray tube (CRT)). Computer system 900 also includes alphanumeric input device 912 (eg, a keyboard or touch-sensitive display screen), UI navigation (or cursor control) device 914 (eg, mouse), disk drive or storage device 916, signal generation device 918 (eg, speakers) and network interface device 920.
机器可读介质machine readable medium
盘驱动设备916包括机器可读介质922,其上存储了实现本文描述的方法或功能中的任何一者或多者或者被本文描述的方法或功能中的任何一者或多者所利用的一组或多组数据结构和指令924(例如,软件)。指令924在其被计算机系统900执行期间可完全或至少部分驻留在主存储器904内和/或处理器902内,其中主存储器904和处理器902也构成机器可读介质922。The disk drive device 916 includes a machine-readable medium 922 on which is stored a device that implements or is utilized by any one or more of the methods or functions described herein. Set or sets of data structures and instructions 924 (eg, software). Instructions 924 may reside entirely or at least partially within main memory 904 and/or within processor 902 during their execution by computer system 900 , where main memory 904 and processor 902 also constitute machine-readable medium 922 .
虽然机器可读介质922在示例实施例中被示为单个介质,但术语“机器可读介质”可包括存储一个或多个指令924或数据结构的单个介质或多个介质(例如,集中式或分布式数据库,和/或关联的缓存和服务器)。术语“机器可读介质”应当被理解为包括任何如下的有形介质:其能够存储、编码或承载供机器执行并且使得机器执行本公开的方法中的任何一者或多者的指令924,或者能够存储、编码或承载被这种指令924利用或者与这种指令924相关联的数据结构。术语“机器可读介质”因此应当被理解为包括——但不限于——固态存储器以及光介质和磁介质。机器可读介质922的具体示例包括非易失性存储器,例如包括半导体存储器设备,例如可擦除可编程只读存储器(erasable programmable read-onlymemory,EPROM)、电可擦除可编程只读存储器(electrically erasable programmableread-only memory,EEPROM)以及闪存设备;磁盘,例如内部硬盘和可移除盘;磁光盘;以及CD-ROM和DVD-ROM盘。Although machine-readable medium 922 is shown in example embodiments as a single medium, the term "machine-readable medium" may include a single medium or multiple media (eg, centralized or distributed databases, and/or associated caches and servers). The term "machine-readable medium" should be understood to include any tangible medium capable of storing, encoding, or carrying instructions 924 for execution by a machine and causing the machine to perform any one or more of the methods of the present disclosure, or capable of Stores, encodes, or carries data structures utilized by or associated with such instructions 924 . The term "machine-readable medium" should thus be understood to include, but not be limited to, solid-state memory as well as optical and magnetic media. Specific examples of machine-readable media 922 include non-volatile memory, including, for example, semiconductor memory devices such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory, EEPROM) and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
传输介质Transmission medium
还可利用传输介质在通信网络926上发送或接收指令924。可利用网络接口设备920和多种公知的传送协议(例如HTTP)中的任何一种来传输指令924。通信网络的示例包括局域网(local area network,LAN)、广域网(wide area network,WAN)、因特网、移动电话网络、普通老式电话(plain old telephone,POTS)网络和无线数据网络(例如,WiFi和WiMax网络)。术语“传输介质”应当被理解为包括能够存储、编码或承载指令924来供机器执行的任何无形介质,并且包括数字或模拟通信信号或其他无形介质来促进这种软件的通信。Instructions 924 may also be sent or received over a communications network 926 utilizing a transmission medium. Instructions 924 may be transmitted using network interface device 920 and any of a variety of well-known transport protocols (eg, HTTP). Examples of communication networks include local area networks (LANs), wide area networks (WANs), the Internet, mobile phone networks, plain old telephone (POTS) networks, and wireless data networks (eg, WiFi and WiMax) network). The term "transmission medium" should be understood to include any intangible medium capable of storing, encoding, or carrying instructions 924 for execution by a machine, and includes digital or analog communication signals or other intangible media to facilitate communication of such software.
虽然已参考具体的示例实施例描述了实施例,但将会明白,在不脱离本公开的更宽精神和范围的情况下,可对这些实施例做出各种修改和改变。因此,说明书和附图应被认为是例示性的,而不是限制性的。形成本文一部分的附图以例示而非限制方式示出了其中可实现主题的具体实施例。例示的实施例被充分详细地描述以使得本领域技术人员能够实现本文公开的教导。可从其利用和得出其他实施例,从而可在不脱离本公开的范围的情况下做出结构上和逻辑上的替代和改变。这个“具体实施方式”部分因此不应当从限制意义上来理解,而各种实施例的范围仅由所附权利要求以及这种权利要求被授权的等同物的完全范围来限定。Although embodiments have been described with reference to specific example embodiments, it will be understood that various modifications and changes can be made to these embodiments without departing from the broader spirit and scope of the present disclosure. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. The accompanying drawings, which form a part hereof, show, by way of illustration and not limitation, specific embodiments in which the subject matter may be implemented. The illustrated embodiments are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed herein. Other embodiments may be utilized and derived therefrom, and structural and logical substitutions and changes may be made without departing from the scope of the present disclosure. This "Detailed Description" section is therefore not to be taken in a limiting sense, and the scope of the various embodiments is defined only by the appended claims, along with the full scope of equivalents to which such claims are entitled.
发明主题的这种实施例在本文中可单独和/或总体上由术语“发明”来指代,这只是为了方便,而并不打算主动将本申请的范围限制到任何单个发明或发明构思,如果实际上公开了多于一个的话。从而,虽然本文已图示和描述了具体实施例,但应当明白,任何打算实现相同目的的布置都可替代示出的具体实施例。本公开打算覆盖各种实施例的任何和全部适应性改变或变化。本领域技术人员在阅读以上描述后将清楚看出上述实施例的组合以及本文没有具体描述的其他实施例。Such embodiments of the inventive subject matter may be referred to herein individually and/or collectively by the term "invention" for convenience only and not intended to actively limit the scope of this application to any single invention or inventive concept, If in fact more than one is disclosed. Thus, although specific embodiments have been illustrated and described herein, it should be understood that any arrangement, which is calculated to achieve the same purpose, may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. Combinations of the above-described embodiments, as well as other embodiments not specifically described herein, will be apparent to those skilled in the art upon reading the above description.
Claims (20)
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 (en) | 2019-06-28 |
| CN109947768B CN109947768B (en) | 2023-09-22 |
Family
ID=63012912
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201810803252.6A Active CN109947768B (en) | 2017-09-27 | 2018-07-20 | local identifier for database objects |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US11106670B2 (en) |
| EP (1) | EP3462341B1 (en) |
| CN (1) | CN109947768B (en) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111708761A (en) * | 2020-06-18 | 2020-09-25 | 浪潮云信息技术股份公司 | Partitioned autonomous distributed heterogeneous database management system and method |
| CN114020462A (en) * | 2021-11-05 | 2022-02-08 | 北京青云科技股份有限公司 | A method, apparatus, device and storage medium for generating a global identifier |
| KR102788936B1 (en) * | 2022-03-16 | 2025-04-01 | 주식회사 티맥스티베로 | A method for querying tables with different partition information |
| US12032596B1 (en) * | 2022-12-30 | 2024-07-09 | Monday.com Ltd. | System and method for managing storage of partitioned datasets in a distributed database |
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 (en) * | 2014-06-26 | 2016-02-10 | 赛贝斯股份有限公司 | Transaction completion in a synchronous replication environment |
| CN105630864A (en) * | 2014-11-25 | 2016-06-01 | Sap欧洲公司 | Forced ordering of a dictionary storing row identifier values |
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 (en) * | 2005-07-12 | 2011-12-21 | 株式会社日立製作所 | Index management method for database management system |
| 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 |
| EP3882767B1 (en) * | 2015-07-10 | 2022-09-07 | AB Initio Technology LLC | Method and architecture for providing database access control in a network with a distributed database system |
| 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/en 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 (en) * | 2014-06-26 | 2016-02-10 | 赛贝斯股份有限公司 | Transaction completion in a synchronous replication environment |
| CN105630864A (en) * | 2014-11-25 | 2016-06-01 | Sap欧洲公司 | Forced ordering of a dictionary storing row identifier values |
Also Published As
| Publication number | Publication date |
|---|---|
| CN109947768B (en) | 2023-09-22 |
| US11106670B2 (en) | 2021-08-31 |
| US20190095485A1 (en) | 2019-03-28 |
| EP3462341A1 (en) | 2019-04-03 |
| EP3462341B1 (en) | 2022-02-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11243981B2 (en) | Database replication based on data access scores | |
| US12339844B2 (en) | Self-service data platform | |
| JP7271734B2 (en) | Data serialization in distributed event processing systems | |
| US11308079B2 (en) | Maintaining data stream history for generating materialized views | |
| US12079342B2 (en) | Data lineage management | |
| US9646041B2 (en) | Testing of inactive design-time artifacts | |
| US10719506B2 (en) | Natural language query generation | |
| US12282781B2 (en) | Cluster bootstrapping for distributed computing systems | |
| US10803043B2 (en) | Managing hash indexing | |
| CN109947768B (en) | local identifier for database objects | |
| US11275806B2 (en) | Dynamic materialization of feeds for enabling access of the feed in an online social network | |
| US11416476B2 (en) | Event ordering based on an identifier for a transaction | |
| US20190079974A1 (en) | Optimizing database queries | |
| US10324908B2 (en) | Exposing database artifacts | |
| US12111832B2 (en) | Techniques for a deterministic distributed cache to accelerate SQL queries | |
| JP2013131218A (en) | Analysis and display of relations among persons | |
| CN104050182A (en) | Configurable rule for monitoring data of in-memory database | |
| US10963479B1 (en) | Hosting version controlled extract, transform, load (ETL) code | |
| CN113722346A (en) | Data access through external cloud-based analytics system | |
| US11995046B2 (en) | Record management for database systems using fuzzy field matching | |
| US20240169009A1 (en) | System and method for estimated update timing of cached data | |
| Diaz et al. | Working with NoSQL Alternatives | |
| Nagireddy | Job recommendation system with NoSQL databases: Neo4j, MongoDB, DynamoDB, Cassandra and their critical comparison |
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 |