CN109952569A - 用于基于字典的连接和聚合的技术 - Google Patents
用于基于字典的连接和聚合的技术 Download PDFInfo
- Publication number
- CN109952569A CN109952569A CN201780068918.1A CN201780068918A CN109952569A CN 109952569 A CN109952569 A CN 109952569A CN 201780068918 A CN201780068918 A CN 201780068918A CN 109952569 A CN109952569 A CN 109952569A
- Authority
- CN
- China
- Prior art keywords
- key
- column
- dictionary
- data
- vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24537—Query rewriting; Transformation of operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文描述了用于使用列字典对接收到的查询执行连接操作和聚合操作的技术。在实施例中,接收请求基于聚合函数聚合存储在存储数据单元中的事实表的测量列并基于连接键列将事实表与维度表连接的查询。对于具有列字典和用于每列的对应列向量的存储单元,DBMS可以基于事实连接键字典和来自维度表的密集分组键生成字典‑分组键映射。基于所生成的字典‑分组键映射和事实连接键向量,DBMS在那个数据存储单元中聚合与接收到的查询中的测量列对应的列向量。
Description
技术领域
技术领域涉及数据库管理系统,特别地涉及用于基于字典的连接和聚合的技术。
背景技术
数据库管理系统(DBMS)通常被设计为维护大量数据。存储的数据量非常大,以致于存储信息的数据库可以通俗地被称为“数据仓库”。虽然存储在数据仓库中的数据很大并且描述了各种实体、事件等,但是数据的数据项可能非常相关。
为了在数据仓库中高效地存储大量相关数据,DBMS可以为数据库采用星型/雪花模式。星型/雪花模式将事实数据(销售交易、报价要求)集合与分析维度(客户、时间、地点、商品类型)相关联。基于该模式,事实数据被存储在每个项目具有一行的“事实表”中,并且分析维度被存储在“维度表”中,其描述项目的多个特性。这样的模式通过对这些项目中每个项目消除多个项目共有的特性信息的重复来节省数据仓库中的存储空间。
随着时间的推移,随着新事实被收集,数据仓库中的事实数据趋向比分析维度数据增长得快得多,使得事实表通常比维度表(具有比事实表少的行数)大得多。DBMS可以使用大小和其它数据统计信息以及数据库模式定义本身来确定哪些表是事实表以及哪些表是维度表。
通常通过针对业务分析的查询来连接维度表和事实表。维度表和事实表的组合数据被聚合,来为用户提供业务绩效的高级视图。例如,销售额可能按月和按客户的家乡州被聚合。
针对以星型/雪花模式组织的数据运行的聚合查询通常指定连接键、聚合度量和分组键。连接键确定维度表中的哪一行应与事实表中的给定行组合,而聚合度量和分组键确定哪些行和列被聚合。例如,在以下查询中:
“select D.state,SUM(F.amount)
from F,D
where F.city_id=D.city_id
group by D.state”
“city_id”列是连接键,“数量”(“amount”)列是聚合度量,并且“州”(“state”)列是分组键。
总体执行时间主要由连接和聚合的处理来主导。该查询指定事实表F中的每一行应与维度表D中与事实表行具有相同的“city_id”值的行连接。此外,一旦事实表中的行被连接到维度表中的适当行,则这些行应该基于州被分成组,并且每个唯一州的“amount”列值通过求和来聚合。
执行此类查询的一种方法是使用散列表执行散列连接。一般而言,“散列连接”操作包括两个阶段。在称为“构建阶段”的第一阶段中,DBMS通过根据(一个或多个)连接键列上的散列函数对第一表的每一行进行散列来生成散列表。在称为“探测阶段”的第二阶段中,DBMS然后迭代地扫描第二表的每一行。对于第二个表中的每一行,DBMS使用散列函数和散列表来识别第一表中具有相等连接键值的行。当匹配的行被识别时,这些行被合并并且被添加到连接操作的结果集合中,假设这些行也匹配任何适用的连接谓词。
对于大表,以这种方式使用散列表执行连接操作和聚合操作是低效的,因为它需要大量存储器来对大表的许多行进行散列。因此,在使用散列连接执行连接操作和聚合操作时,包含大量信息的数据库系统会遭受显著的性能下降。
附图说明
在附图中:
图1是描绘在实施例中的密集分组键、连接返回表和密集分组键数据结构的框图;
图2是描绘在实施例中的事实表和具有列向量和列字典的对应数据部分的框图;
图3是描绘在实施例中的维度表、密集分组键和基于来自维度表的数据创建的密集分组键数据结构的框图;
图4A和图4B是描绘在一个或多个实施例中使用列向量和字典执行连接操作和聚合操作的处理的流程图;
图5是描绘在实施例中对查询中引用的事实表和维度表的示例数据结构执行连接操作和聚合操作的处理的处理图;
图6是图示可以用于实现本文描述的技术的计算机系统的框图。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的透彻理解。但是,明显的是,可以在没有这些具体细节的情况下实践本发明。在其它情况下,以框图形式示出了众所周知的结构和设备,以避免不必要地模糊本发明。
总体概述
本文描述了用于充分利用数据列向量和字典来高效地处理事实表和维度表的连接操作和聚合操作的技术。DBMS对维度表行执行深入的预处理,以减少对事实表行的连接操作和聚合操作的处理。由于维度表的大小比事实表小,因此DBMS可以通过将处理更多地转移到维度表侧,例如通过首先在维度表上执行组/过滤操作,来节省计算资源。如本文所提及的,“维度表”是由DBMS管理的预定义的数据容器或基于将一个或多个预定义的数据容器连接的数据容器。类似地,如本文所提及的,“事实表”是由DBMS管理的预定义的数据容器或基于将一个或多个定义的数据容器连接的数据容器,其中可以在对应的维度表中描述一个或多个属性。DBMS可以利用用于事实表行的本机列向量和字典来更进一步加速连接操作和聚合操作的处理。
在实施例中,对于接收到的查询的维度表,DBMS生成“密集分组键(DGK)”数据结构,其表示维度表的连接键值与分组键值之间的映射。术语“密集分组键(DGK)”是指分组键值的编码表示,分组键值是分组列(group by column)的值。在一个实施例中,DBMS基于分组列中的唯一值生成作为整数的DGK。例如,分组列中的“Massachusetts”、“California”、“Illinois”、“New York”和“Kentucky”值可以分别被指派是“1”、“2”、“3”、“4”和“5”的DGK(如图1中的示例中所描绘的)。使用密集分组键值而不是使用分组键值本身来表示分组键值,通常使处理更高效。
对于接收到的查询中的事实表,DBMS可以对事实表的一个或多个“数据部分”的列维护一个或多个字典数据结构。术语“数据部分”在本文中指的是表、或表的分区或片段、或数据库对象的任何其它部分。数据部分可以包含来自接收到的查询中指定的连接键列和/或聚合测量列的部分或完整数据。每个数据部分可以存储在不同的存储数据单元中,存储数据单元是在易失性或持久性存储装置中的具有预定的大小的存储单元。数据部分可以以行为主的格式(每行的单元格元素存储在连续的存储器地址中)或列为主的格式(每列的单元格元素存储在连续的存储器地址中)存储在存储数据单元中。还可以使用具有特定压缩级别的压缩来压缩数据部分中的数据。
术语“列字典”用于描述数据部分中列向量的字典数据结构;字典数据结构将数据部分中的字典编码值映射到列的唯一值。在实施例中,列字典包含数据部分中的连接键列的唯一值,而数据部分的列向量包含作为对应字典的索引的编码的连接键值。换句话说,数据部分的连接键向量的每个单元格元素是指向对应列字典中的条目的指针,该条目包含连接键列的对应单元格的实际值。例如,单元格元素内的这种指针可以是到固定宽度指针的向量的索引或者是偏移量,其可以用于在列字典中定位列字典值。
在处理查询时,DBMS可以访问为维度表生成的DGK,以使用事实表列字典将DGK映射到事实表的连接键值。在实施例中,DBMS迭代通过连接键列的事实表列字典(例如,图2和图5的214)并且将连接键值与维度DGK数据结构的对应连接键值匹配(例如,图3和图5的314)。通过这样做,无论是否在查询的GROUP BY子句中引用维度表中的任何列,DBMS都会有效地过滤要进一步处理的事实表的值。只处理事实表的与和DGK数据结构中的维度连接键值已匹配的事实字典连接键值对应的那些行。因此,与查询计算中使用的其它近似过滤技术(诸如布隆过滤器)相反,DBMS基于DGK数据结构执行事实表行的确切过滤。
这种基于DGK的过滤的确切本性允许在传统连接之前推送聚合,因为可能需要被聚合的行的确切集合可以由DBMS在聚合之前确定。使用基于匹配的连接键值的这种过滤,DBMS创建DGK映射的数据结构(例如,图5的514),类似于将编码的维度连接键值映射到DGK(例如,图3和图5的314)并将对于维度和事实连接键是共同的编码的连接键值映射到DGK(例如,图5的514)的维度连接键列字典。由于生成的映射数据结构的索引类似地基于编码的连接键值,因此DBMS可以容易地访问事实表数据部分的每个连接键元素的对应DGK。基于这样的访问,然后针对每个唯一DGK来聚合一个或多个聚合键列的与连接键单元格对应的聚合测量值,以产生接收到的查询的一个或多个聚合函数的结果。
密集分组键
图1图示了密集分组键值(DGK)101和基于可以从维度表的数据创建的密集分组键值的数据结构112、122A-C、123A-C的示例。为了说明清楚的示例的目的,维度表102用于说明基于维度表的数据创建密集分组键数据结构和“连接返回表”的示例。
指定聚合操作的查询识别一个或多个分组(group-by)列。根据那些group-by列,DBMS为表的任何行中出现的、值的每个唯一组合创建密集分组键值。根据那些group-by列,在表的任何行中出现的、值的唯一组合在本文中称为“分组键值”。
在实施例中,密集分组键值是连续数字的序列,并且所有密集分组键值具有固定大小。例如,如果密集分组键值是一系列整数值,那么每个密集分组键值将是整数数据类型的大小。维度表的多个行可以由单个密集分组键值表示或指示。
连接返回表
如本文所使用的,术语“连接返回表”是指包括一个或多个密集分组键值和对应的分组键值或分组键值集合的数据结构。在实施例中,连接返回表包括用于密集分组键值和对应的分组键值的列。在实施例中,连接返回表的每个条目包括不同的密集分组键值和对应的分组键值或分组键值集合。
在实施例中,连接返回表是仅为查询创建的临时表,并且在成功处理查询之后被丢弃。
创建密集分组键值和连接返回表
可以基于DBMS接收查询来创建密集分组键值,诸如:
SELECT g.state,sum(s.amount)
FROM sales s,geog g
WHERE g.CID=s.CID AND g.country=‘USA’
GROUP BY g.state
查询Q1。
DBMS可以将由查询中指定的GROUP BY标准指示的一个或多个列识别为与计算聚合操作相关的一列或多列。然后,DBMS可以确定该相关的一个或多个列的密集分组键值,并且还确定密集分组键值的数量,以及对于每个密集分组键值,由GROUP BY标准指示的该一个或多个列中对应的一个或多个值。
在查询Q1中,表“销售”(“sales”)是事实表,并且“geog”是维度表。出于说明清楚示例的目的,表“geog”是图1中表示的维度表102。
在实施例中,DBMS基于与表相关联或对应的某些度量将查询中指定的表中的一个表识别为事实表。例如,如果DBMS确定表中的一个表的大小远大于其它表,那么DBMS将该大表识别为事实表,并将较小的表识别为维度表。
DBMS可以通过执行以下示例查询来确定和创建该相关的一个或多个列的密集分组键值,以及用于对维度数据进行分组和/或聚合维度数据的连接返回表:
CREATE TEMPORARY TABLE tt_geog as
SELECT g.state,keyvec_create(g.state)dgk
FROM geog g
WHERE g.country=‘USA’
GROUP BY g.state
查询Q2。
查询Q2表示可以对查询Q1的GROUP BY子句中或查询Q1的WHERE子句中指定的每个维度表执行的示例查询。
通过执行查询Q2的keyvec_create()函数,DBMS为由GROUP BY子句指定的分组键列的每个唯一值创建密集分组键值。因此,为维度表102的“州”(“state”)列的每个唯一分组键值创建唯一的密集分组键值。
仅为实际被用于确定结果集合的、具有维度表的值的行创建密集分组键值。因此,由密集分组键值表示的行是具有满足查询谓词中的过滤标准的值的行。因此,由密集分组键值表示的行数从维度表的所有可能行减少到仅维度表的实际被使用的那些行。
因此,在为特定分组键值创建密集分组键值之前,查询Q2还确保特定分组键值的行满足查询Q2的过滤标准。查询Q2的过滤标准由WHERE子句指定,并且它要求维度表102的“国家”(“country”)列中的值是“USA”。因此,仅针对来自维度表102的国家列中具有值“USA”的行的唯一group-by值来创建密集分组键值。
例如,在图1中,维度表102在第一行的“州”列中包括“Massachusetts”,并且在为“Massachusetts”创建密集分组键值之前,查询Q2确定与“Massachusetts”相关联的“国家”值确实是“USA”,因此满足过滤标准。在维度表102中,与“Massachusetts”相关联的“国家”值确实是“USA”,因此为“Massachusetts”创建密集分组键值。但是,对于“Queensland”不创建密集分组键值,因为与“Queensland”相关联的“国家”值为“Australia”,因此分组键值“Queensland”的行在维度表102的“国家”列中不具有“USA”的值,从而不满足过滤标准。
在查询Q2的示例中,临时表tt_geog是连接返回表。在图1中,数据结构112是连接返回表。连接返回表112包括由列名“DGK”指示的密集分组键值的列和由“州”指示的分组键值的列。连接返回表112的每个条目包括不同的密集分组键(DGK)值和对应的分组键值。在实施例中,按照由DBMS从表扫描分组键值的次序依次指派DGK值。例如,表102中的“Massachusetts”分组键值是为“州”分组键列扫描的第一个值,因此被指派给是1的DGK值。
通过执行查询Q2的keyvec_create()函数,DBMS还基于那个密集分组键值的对应分组键值将连接返回表112内的每个密集分组键值与维度表102中的行相关联。DBMS可以创建诸如数组101之类的数据结构,以存储维度表的每一行与密集分组键值之间的关联。维度表的每一行都是到数组的索引。数组101从零索引开始,因此,维度表的第一行与数组的第一个位置对应,如图1中所描绘的。
在图1中,由于密集分组键值“1”的对应维度表102值是连接返回表112中的“Massachusetts”,因此具有“Massachusetts”作为“州”列值的维度表102的每一行将与密集分组键值“1”相关联,如数组101的第一个位置所指示的。密集分组键值“2”的对应维度表102值是连接返回表112中的“California”,因此维度表102的第二行和第六行与密集分组键值“2”相关联,如数组101的位置二和六所指示的。
密集分组键值“3”、“4”、“5”的对应维度表102值分别是连接返回表112中的Illinois、New York和Kentucky。因此,维度表102的行七和行八与密集分组键值“4”相关联,维度表102的行三和行四与密集分组键值“3”相关联,维度表102的行九与密集分组键值“5”相关联。对于密集分组键值“4”,这些关联在数组101中由位置七和八表示,对于密集分组键值“3”由位置三和四表示,对于密集分组键值“5”由位置九表示。
在实施例中,DBMS可以创建具有附加列的临时维度表,其中附加列中的每一行包括与维度表的那行相关联的密集分组键值。
在另一个实施例中,在不生成数组101的情况下,DBMS可以直接继续进行以生成DGK数据结构,其中该数据结构的不同条目与唯一连接键值对应以及与每个唯一连接键值对应的密集分组键值对应。在计算查询时,DBMS可以使用来自一个或多个谓词评估的维度表的结果行来生成那些行的唯一连接键值以及那些行的相关联的分组键值的列表。
DBMS可以通过执行查询引用的keyvec_create()函数来生成DGK数据结构。用于创建数据结构的连接键值由查询Q1的WHERE子句的连接键列指定。查询Q1中指定的维度表连接键列是图1中绘出的“geog”维度表102的“CID”列。
所创建的DGK数据结构由图1中的数据结构122a、122b、122c描绘。数据结构122a、122b、122c是在不同时间点描绘的相同数据结构。在实施例中,如果连接键值是数字或者如果数值可以与非数字连接键值相关联,那么由DBMS创建的DGK数据结构可以是向量。使用向量来存储对应的连接键值的密集分组键值可以允许DBMS受益于可以在向量数据结构上执行的快速读取和写入操作。
在查询Q1中,指定的连接键列的值是数字。因此,在图1中,创建的DGK数据结构是由DGK数据结构122a、122b、122c描绘的向量。DGK数据结构122a、122b、122c是在不同时间点描绘的相同向量。数据结构的大小基于连接键值的数量。如果指定了过滤标准,那么对于DGK数据结构将仅考虑满足过滤标准的维度表的行。例如,查询Q2指定了过滤标准,该过滤标准要求维度表“geog”中的行的“国家”列中的值包括“USA”。因此,对于由DGK数据结构122a、122b、122c表示的DGK数据结构,将仅考虑满足过滤标准的维度“geog”中的行的连接键值。基于维度表102的数据,对于由DGK数据结构122a、122b、122c表示的DGK数据结构,将考虑除“国家”值为“Australia”的行之外的所有行。
维度表102中的“CID”列的每个连接键值是维度表102的City列中的唯一值的标识符。因此,维度表102的City列中的每个值在维度表102中的“CID”列中具有对应值。例如,“Boston”具有相应的“CID”值“4”,类似地“Springfield”具有“CID”值“6”。
在图1中,连接键列“CID”的数值可以用作到由DGK数据结构122a、122b、122c表示的向量的索引,该向量用于存储连接键值的对应密集分组键值。例如,维度表102的连接键列“CID”的第一行具有数值“4”。因此,与维度表102的第一行相关联的密集分组键值将被存储在向量的第四位置,如DGK数据结构122a、122b、122c中所描绘的。在一些实施例中,向量的大小可以基于连接键列的值中的最大值。在图1中,DGK数据结构122a、122b、122c是大小为10的向量。在实施例中,向量的大小可以基于其行也满足过滤标准(如果指定了的话)的连接键列的值中的最大值。
使用连接键列的数值,处理满足查询Q2中指定的过滤标准的每一行,并且将与经处理的行相关联的密集分组键值存储在DGK数据结构122a中由连接键列的数值指示的位置处。例如,在图1中,如上所述,在DGK数据结构122a的第四位置处,与维度表102的第一行相关联的密集分组键值“1”,密集分组键值“1”将被存储。类似地,在DGK数据结构122a的第二位置处,密集分组键值“4”被存储。
维度表的连接键列的连接键值可能不在维度表上提供唯一约束:一个连接键值可以与多个分组键值对应。对于这种“多对多”连接“键到密集分组键值”关系,向量中与在连接键列内出现不止一次的相同连接键值对应的多个密集分组键值被替换为标记值,该标记值指示与向量相关联的散列表应当作为DGK数据结构的一部分用于执行连接操作和聚合操作。在实施例中,散列表中的向量标志值引用的行包含多个密集分组键值。
例如,维度表102中的“CID”值“6”与多于一个密集分组键值相关联。因此,第一次处理“CID”值“6”(维度表102的第三行)时,在DGK数据结构122b的第六位置处,存储维度表102的第三行的对应密集分组键值。第二次处理“CID”值“6”时,即处理维度表102的“CID”列的第六行时,DGK数据结构122b的第六位置处的密集分组键值变为如DGK数据结构122c中所描绘的标记值。此外,包括与多于一个密集分组键值相关联的连接键值以及连接键值的每个对应密集分组键值的散列表被创建,作为DGK集合。
在图1中,处理130和131描绘了散列表123的创建,其中在列123a的第一行中描绘的连接键值“6”与分别包括对应密集分组键值3和4的DGK集合123b、123c的列表相关联。第三次处理“CID”值“6”时,即处理“geog”维度表102的“CID”列的第九行时,DGK数据结构122c的第六位置处的密集分组键值仍然保持该标记值,并且具有值5的附加DGK集合123d被添加到连接键值“6”的散列表中的DGK集合的列表。
DGK数据结构122c图示了在确定查询的结果集合中实际使用的所有连接键值被处理之后包括密集分组键值的向量看起来如何。DGK数据结构122c还图示了可以支持处理多对多关系数据的DGK数据结构的示例。
在实施例中,DBMS接收其中一个或多个连接键列是基于字符串而不是基于整数的查询。在这种实施例中,可以使用其中可以通过字符串访问条目的DGK数据结构(诸如散列表),而不是使用其中可以通过整数访问条目的向量。在相关实施例中,对于短字符串或日期数据类型的分组键,DBMS使用分组键值的原始字节值作为整数DGK值和/或应用函数以将分组键值转换为整数DGK值。
例如,DBMS可以接收诸如下面所述的查询,其中连接键列“项目”(“item”)是基于字符串值的列。DBMS可以将“item”列的字符串值转换为整数以简化(streamline)查询Q3的处理,但是,图2和图3将“项目”值描绘为字符串,以便于可读性:
SELECT f.class,sum(s.amt)
FROM sales s,food f
WHERE s.item=f.item AND f.class!=‘Vegetable’
GROUP BY f.class
查询Q3。
图2描绘了“销售”(“Sales”)表202,其是包括“项目”(“item”)204列和“数量”(“amt”)206列的查询Q3的事实表。“数量”列是在查询Q3的“SUM”聚合函数中引用的聚合测量列。“项目”列是连接键列,在查询Q3中与图3中描绘的“食物”(“Food”)表302的“项目”列连接。“食物”表302还包含“类”(“class”)列,它是查询Q3的分组键列。
“项目”连接键列具有基于字符串的值。因而,生成的维度“项目”DGK数据结构314具有与“食物”维度表302中的“项目”列的唯一字符串值对应的基于字符串的索引。维度“项目”DGK数据结构314将“项目”列的唯一字符串连接键值映射到从“类”列的分组键值生成的密集分组键值。为了执行查询Q3的连接操作,可以将项目DGK数据结构与存储在存储数据单元中的事实“销售”表202数据部分的连接键值的字典进行比较。
列字典
在实施例中,一个或多个数据部分在数据部分的单元格元素中存储数据库对象的实际值的字典编码值。每个单元格元素与数据库对象(诸如事实表)的特定行和特定列对应。单元格元素可以被布置为模仿数据库对象内的特定列布置的列向量。当多个列向量存储在数据存储单元中时,列向量可以以列为主的格式或行为主的格式存储。
此外,DBMS可以维护用于每个列向量的列字典,列向量的字典编码值到数据库对象中的对应值。用于数据部分的这种列字典至少包含数据库对象的对应列的、该数据部分中表示的数据的所有唯一数据库对象值。
类似于DGK数据结构,列字典可以使用各种基于散列和基于非散列的字典编码以许多不同方式布置该映射。在实施例中,单元格元素中的字典编码值是到包含对应数据库对象值的列字典中的条目的索引。因此,通过将字典编码值指定为到列字典的索引,可以从列字典中检索对应的数据库对象值。
图2描绘了在实施例中包括数据库对象的字典结构的数据部分的示例。数据库对象“销售”(“Sales”)表202包含两列:“项目”列204和“数量”列206。由于“项目”列204包含四个不同的值:“Apple”、“Celery”、“Date”和“Farro”,因此事实列字典214在基于零的索引向量中包含四个值。数据部分222不是存储来自“项目”列204的实际值,而是数据部分222的事实“项目”列向量224在其单元格元素中存储事实列字典214的字典编码索引,其与用于特定行的“项目”列204处的实际值对应。例如,“项目”列204的第一行包含值“Apple”。基于事实列字典214,“Apple”值在零索引处。因而,事实“项目”列向量224在第一行存储0。类似地,
“销售”表202中“项目”列的第二行处的“Date”值与事实列字典214中的索引2对应。因此,索引值2被存储在事实“项目”列向量224的第二行处。“项目”列204和“销售”列206的其余部分分别使用事实字典214和216类似地存储在事实列向量224和226中。
在实施例中,列向量中的字典编码值基于对应列字典中的条目的存储器地址。列字典可以在连续的存储空间中存储列的唯一实际值,唯一实际值的每个条目位于距第一条目的存储器地址的特定偏移量处。这些偏移量等同于列字典的索引,并且列向量的单元格元素可以将对应的唯一实际值的偏移量存储为字典编码值。根据这种布置,通过请求距第一条目存储器地址的特定偏移量处的值来执行实际值的查找。
在实施例中,生成包含列向量和列字典的数据部分,作为数据库对象的Ozip压缩的一部分。根据这些技术,从输入数据库对象数据生成打包的顺序多个令牌,并且使用诸如列字典的静态字典数据结构将令牌解码为输入数据库对象数据的实际值。
在实施例中,响应于查询的接收和处理而生成数据部分。继续DBMS处理查询Q3的示例,DBMS确定Q3的“食物”(“food”)表是“销售”(“sales”)事实表的维度表。因而,为了执行查询Q3,DBMS使用上述技术从“食物”维度表302生成维度DGK数据结构314,如图3中所描绘的。DBMS可以附加地生成具有用于“销售”和“食物”表的字典编码值的列向量以及将编码值解码为实际值的列字典,分别如图2和图3中所描绘的。一旦生成,数据部分就可以存储在由DBMS管理的易失性和/或持久性存储器中。因此,下次接收到引用相同表的查询时,可能不需要重新生成数据部分,而是使用已经存在的数据部分。
在另一个实施例中,数据部分独立于查询的接收而由DBMS生成。当以持久数据格式被持久地存储的数据库对象以镜像格式被镜像到易失性存储器中时,可以生成数据部分。
在实施例中,不同数据格式具有不同的好处。因此,本文所描述的技术用于以一种格式持久地维护数据,但是使该数据以多于一种格式对数据库服务器可用。在一个实施例中,其中使数据可用于查询处理的格式中的一种是基于盘上格式,而其中使数据可用于查询处理的另一种格式独立于该盘上格式。
与盘上格式对应的格式在本文被称为“持久格式”或“PF”。处于持久格式的数据在本文被称为PF数据。独立于盘上格式的内存(in-memory)格式被称为“镜像格式”或“MF”。处于镜像格式的数据在本文被称为MF数据。例如,在一个实施例中,持久格式是行为主的盘块,而镜像格式是列为主的格式。
根据一个实施例,镜像格式完全独立于持久格式。但是,MF数据初始地基于持久存储的PF数据,而不基于任何持久MF结构在存储器中被构建。由于不需要持久MF结构,因此现有数据库的用户不需要将其现有数据库中的数据或结构迁移到另一种格式。因此,使用行为主的盘块的传统数据库系统可以继续使用那些盘块来持久存储其数据,而无需执行任何数据迁移,同时仍然获得由于具有在易失性存储器中可用的数据的列为主的表示而引起的性能益处。
内存MF数据被维护为在事务上与PF数据一致。MF数据在事务上是一致的,因为如果数据项是从PF数据提供的话,从MF数据提供给事务的任何数据项将是可能已经被提供的相同版本。另外,这个版本反映了在事务的快照时间之前提交的所有改变,并且不反映在事务的快照时间之后提交的改变。因此,当提交对在MF数据中被镜像的数据项做出改变的事务时,使得该改变相对于PF数据和MF数据两者可见。另一方面,如果做出改变的事务被中止或回滚,那么该改变相对于PF数据和MF数据两者被回滚。
在一个实施例中,确保PF数据的读和写之间的一致性的相同事务管理器也被用于确保MF数据的读和写之间的一致性。因为MF数据以在事务上一致的方式保持最新,因此,如果内存MF数据包括由数据库操作所需的数据,那么数据库操作可以或者从内存MF数据或者从PF数据中被满足。
MF数据镜像已经在PF数据中存在的数据。但是,虽然在MF数据中的所有项都是在PF数据中的对应项的镜像版本(尽管以不同的格式被组织),但是不是所有在PF数据中的项都需要在MF数据中被镜像。因此,MF数据可以是PF数据的子集。
因为不是所有的PF数据都必须在MF数据中镜像,所以,在一些情况下,查询可能需要只能被PF数据满足的数据。例如,如果表具有列A、B和C,并且只有列A在MF数据中被镜像,那么需要来自列B的值的查询必须从PF数据中获得那些值。
但是,即使在那些情况下,MF数据仍然可以用于(a)满足查询的一部分,和/或(b)加快从PF数据中所需数据的检索。例如,MF数据可以用来识别必须从PF数据中检索的特定行。
根据一个实施例,为了减少开销,不维护MF数据的盘上拷贝。在替代的实施例中,MF的拷贝可以被存储,但不试图使MF数据的盘上拷贝与正在PF数据上执行的更新保持同步。因此,在失败之后,内存MF数据必须基于PF数据的持久性拷贝进行重建。
在一些实施例中,MF数据被压缩。压缩可以在或者由用户指定的或者基于访问模式的各种压缩级别下执行。
虽然下文将给出其中镜像格式是列式的实施例,但是镜像格式可以是与持久性格式不同的、对运行内存查询有用的任何格式。例如,在替代实施例中,PF格式是列为主的,而MF格式是行为主的。无论使用何种特定镜像格式,镜像格式数据都基于现有的PF结构(例如表和索引)在存储器中被创建,而不会引起对那些结构的格式的改变。
MF数据可以镜像所有PF数据或其子集。在一个实施例中,用户可以指定PF数据的哪一部分是“内存使能的”。可以在任何粒度级别做出该指定。例如,什么内容内存使能的指定可以至少在以下粒度级别做出:
·整个数据库
·指定的表
·指定的列
·指定的行范围
·指定的分区
·指定的段
·指定的扩展区(extents)
·或其任意组合(例如指定的列和分区)
如将在下文中进行描述的,内存使能的数据被转换成镜像格式并且在易失性存储器中存储为MF数据。因此,当查询需要内存使能的数据时,数据库服务器具有从或者PF数据或者MF数据提供数据的选项。转换和加载可以在数据库启动的时间发生,或者以懒惰或按需的方式发生。
在MF数据被压缩的实施例中,MF数据可以在DBMS的易失性存储器内被组织成“内存压缩单元”(IMCU)。每个IMCU存储MF数据的不同集合。例如,一个IMCU可以存储列向量的一半,而另一个IMCU可以存储列向量的另一半,这些列向量一起构成其基于表或列的分区。具体而言,一个IMCU可以包括存储来自表的第一列的值的一半的向量部分,以及存储来自该表的第二列的值的一半的另一个向量部分。类似地,另一个IMCU可以包括存储来自表的第一列的值的剩余一半的向量部分,以及存储来自第二列的值的剩余一半的另一个向量部分。
在这样的示例中,IMCU基于数据所属的行来划分MF数据,其中一个IMCU与表中的行的一部分对应,而另一个IMCU与表中的行的另一部分对应。但是,这只是MF数据可以在IMCU之间散布的许多不同方式中的一种。例如,不同的IMCU可以存储用于不同表、表的不同分区、表的不同列、不同片段、不同扩展区等的MF数据。
为了确定MF数据是否具有处理查询所需的数据,并且如果是,那么为了找到处理查询所需的MF数据,数据库服务器需要知道哪些PF数据在MF数据中被镜像,并且具体而言,哪些具体的PF数据被每个IMCU镜像。因此,根据一个实施例,用于MF数据的元数据被维护在易失性存储器中。
在一个实施例中,元数据包括数据到IMCU(data-to-IMCU)的映射。数据到IMCU的映射指示哪些数据被包含在每个IMCU中。这个指示可以以各种方式做出,包括存储为每个IMCU指示以下中的一个或多个的数据:
·其数据被存储在IMCU中的(一个或多个)表
·其数据被存储在IMCU中的(一个或多个)列
·存储在IMCU中的行的范围
·其数据被存储在IMCU中的盘块的范围
·其数据被存储在IMCU中的段
·其数据被存储在IMCU中的表分区
·其数据被存储在IMCU中的扩展区
·其中在IMCU内的数据已被压缩的方式
·用于解压缩存储在IMCU中的数据的字典(当已使用字典类型的编码来压缩PF数据时)
在相关实施例中,数据部分可以被维护为IMCU,并且用于数据部分的一个或多个列字典可以被存储为IMCU的元数据。因而,一旦IMCU被生成为数据库对象的MF数据,DBMS就可以使用包括列字典的IMCU来执行连接操作和/或聚合操作。
连接和聚合事实表和维度表
DBMS可以使用DGK数据结构和数据部分来执行接收到的查询的连接操作和聚合操作,DGK数据结构和数据部分包括查询的目标数据集的事实表和维度表的列向量和列字典。在实施例中,不是在扫描目标数据集合之后执行查询的连接操作和聚合操作,而是在扫描目标数据集的同时DBMS执行连接操作和聚合操作。扫描期间的连接和聚合显著降低了DBMS的资源利用率,尤其是在扫描之前已经预先生成列向量和列字典时,如IMCU的情况。
图4A是描绘在实施例中用于执行连接操作和聚合操作的处理的流程图。使用所描述的用于生成DGK数据结构的技术,在方框400处,DBMS生成用于接收到的查询的目标集合的维度表的DGK数据结构。例如,图3描绘了“食物”维度表302的“项目”列的维度“项目”DGK数据结构314。维度“项目”DGK数据结构314可以已经响应于DBMS接收到查询Q3而生成,其引用“食物”维度表302。
为了在维度表和事实表之间执行连接操作,事实表和维度表的数据结构可能需要位于DBMS的同一计算节点上。在其中DGK数据结构存储在与事实表的数据部分不同的计算节点上的实施例中,DGK数据结构的副本可以被转移到存储数据部分的计算节点,用于评估该查询。
在实施例中,通过将维度表的DGK数据结构与事实表数据部分的列字典进行比较来执行连接操作。为此,生成新字典-分组键映射,该映射将事实表部分中的每个连接键值映射到对于其该相关联的维度连接键值与来自事实表数据部分的连接键值匹配的密集分组键。在方框405处可以初始化DGK映射的字典数据结构,以存储字典-分组键映射。新DGK映射的字典具有与事实表数据部分的连接键列字典相同的索引并且映射事实表而不是维度表的连接键值与维度表的DGK。这种映射有效地执行维度表和事实表之间的连接键列的连接操作,同时保持与DGK的关联。可替代地或附加地,可以动态地分配新DGK映射的字典数据结构,因为用于映射的字典数据结构的新条目由该处理确定和在新数据结构中填充。
为了生成用于新DGK映射的字典的字典-分组键映射,在方框410处,扫描事实表数据部分的连接键列字典。在方框415处,每个检索到的连接键值用于索引,以查找DGK数据结构。如果在方框420处DGK数据结构中在索引处存在条目,那么在方框425处将匹配的字典条目的DGK添加到与检索到的连接键值相同的索引处的新DGK映射的字典。如果条目不存在,那么没有用于事实连接键值的字典-分组键映射存在,并且没有条目被添加到DGK映射的字典。在另一个实施例中,将特殊的空值添加到DGK映射的字典,以指示事实表的连接键值在维度表中不存在。该处理重复方框415到425,直到在方框430处连接键列字典被完全扫描为止。
例如,图5描绘了维度“项目”DGK数据结构314和事实“项目”字典214,它们被用于在DGK映射的字典514中生成字典-分组键映射,作为查询Q3的执行的一部分。事实“项目”字典214以及事实“项目”列向量224和“数量”列向量226也在图2中描绘,并且是查询Q3中引用的“销售”事实表的数据部分222的一部分。
DGK映射的字典514用与事实“项目”列字典214相同的索引被初始化:例如,第一条目具有索引“0”,其与事实“项目”列字典214的索引“0”一样,与事实“项目”列向量224中的编码值“0”对应。事实“项目”字典214中的每个条目被检索并与维度“项目”DGK数据结构314进行比较,如图4的方框415-420所述。例如,在维度“项目”DGK数据结构314中查找“项目”列字典的第一个条目值“Apple”。该查找将“Apple”值与维度DGK数据结构314的最后一个索引匹配,该索引包含那个条目的DGK的值“0”,并检索这个DGK值。如图4的方框425所述,该处理将检索出的DGK值添加到DGK映射字典514中与事实“项目”字典214中的原始查找值相同的索引处。对于“Apple”的连接键值,那个索引是0(第一个条目),因此,DGK值“0”被添加到DGK映射的字典514的索引0处的第一个条目。DBMS类似地生成映射的其余部分并填充DGK映射的字典514中的其余条目,如图5中所描绘的。
在实施例中,在方框440处,该处理可以初始化与数据部分的连接键向量相同大小的DGK经变换的向量。可替代地或附加地,当新映射作为连接键值扫描的结果被添加时,可以动态地分配新DGK经变换的向量。DGK经变换的向量通过为数据部分的每一行存储DGK来扩展事实表连接键值和DGK之间的映射信息。在方框445处,扫描事实表列向量的编码的连接键值。在方框450处,每个检索出的编码的连接键值用作索引,以在字典-分组键映射中查找对应的DGK。在方框460处,将对应的DGK添加到与用于查找DGK的检索出的编码的连接键值相同行处的DGK经变换的向量。在方框465处,一旦扫描完成,DGK经变换的向量就包含用于事实表数据部分的每一行的DGK值。
在实施例中,为了对事实表的聚合测量列评估聚合函数,聚合测量值基于相同行的DGK被聚合。特别地,在方框470处,可以用与DGK的唯一值对应的索引来初始化聚合结果数据结构。在另一个实施例中,当遇到新的唯一DGK值时,动态扩展聚合结果数据结构。在方框475处,该处理扫描聚合测量向量的行,并且在方框480处,基于聚合测量向量的行值在聚合测量字典中查找聚合测量值。基于同一行处的DGK值,该处理从聚合结果数据结构中检索先前的聚合结果,并在方框485处将该先前的聚合结果与查找的聚合测量值聚合,以产生DGK的新聚合结果。在方框490处,在扫描结束时,该聚合结果数据结构包含用于数据部分的每个DGK的聚合结果。
在其中多个数据部分包含事实表的数据的实施例中,为查询执行生成多个聚合结果字典。来自多个聚合结果字典的结果按照每个共同DGK进一步被聚合,以在方框495处产生查询的最终聚合结果。
在实施例中,每个DGK的最终聚合结果通过DGK的连接返回表被转换为分组键值。因此,DBMS可以返回具有对应分组键值的最终聚合结果。
继续参考“销售”表202和“食物”表302的查询Q3执行的示例,DBMS使用生成的DGK映射的字典514来基于DGK聚合测量值。特别地,DGK映射的字典514被扩展为具有用于事实“项目”列向量224的每个编码的行值的对应DGK。为此,事实“项目”列向量224的每个编码的连接键值被用作到DGK映射的字典514的索引以查找对应的DGK。例如,事实“项目”列向量224的最后一行具有值“2”。DGK映射的字典在索引值为“2”处包含DGK值“0”。因此,DGK值“0”被添加作为DGK经变换的向量524的最后一行。
基于生成的DGK经变换的向量524,将事实“数量”列向量226的编码的聚合测量值映射到同一行的DGK。基于这个映射,可以按照每个唯一的DGK来聚合事实“数量”列字典216中的聚合测量值。特别地,对于“数量”列向量中的每一行,编码的行值用于查找事实“数量”列字典216中的实际“数量”列值。该查找值与DGK经变换的向量524中的同一行DGK值对应,并且可以在聚合结果550中针对DGK值被聚合。例如,“数量”列向量的第一行的扫描产生值“0”,其与事实“数量”字典216中索引“0”处的值“100”对应。DGK经变换的向量524中的第一行具有为0的DGK,并且由于查询Q3指定SUM聚合函数,因此“数量”值“100”与DGK值“0”的初始值相加。事实“数量”列向量226中的第二行的扫描产生值“3”,其与事实“数量”字典216中索引“3”处的值“130”对应。DGK经变换的向量524的第二行具有相同的DGK值“0”,因此,检索出的“数量”值“130”在聚合结果数据结构550中与DGK索引值“0”处的先前的聚合结果“100”相加。在根据图4的方框480-485扫描和处理了事实“数量”列向量226中的所有值之后,聚合结果数据结构550包含针对数据部分222的查询Q3的聚合结果。由于DGK值跨事实表的数据部分是共同的,因此用于每个DGK的最终结果可以通过按照每个DGK来聚合数据部分的结果来获得。
在替代实施例中,不是生成DGK经变换的向量,而是可以动态地检索DGK,作为聚合处理的一部分。图4B是描绘用于执行这种实施例的连接操作和聚合操作的过程的流程图。DBMS执行类似于图4A中的方框400-430的方框400B-430B,以在方框430B处类似地生成DGK映射的字典。在方框435B处,DBMS初始化存储每个唯一DGK值的聚合结果的聚合结果数据结构。对于在方框440B处从聚合测量列扫描的每个聚合编码值,DBMS在方框450B处使用该扫描的行索引来在DGK映射的字典中查找对应DGK值。在方框480B处,DBMS基于聚合列字典中的聚合编码值查找聚合测量值。在方框485B处,对于聚合结果数据结构中的对应DGK值,DBMS将查找的聚合测量值与对应DGK值的聚合结果数据结构中的现有值聚合。在方框490B处,对事实表的聚合列的每一行重复方框440B-490B。在其中多个数据部分包含事实表的数据的实施例中,为查询执行生成多个聚合结果字典。来自多个聚合结果字典的结果按照每个共同DGK值进一步被聚合,以在方框495B处产生查询的最终聚合结果。
数据库管理系统
数据库管理系统(DBMS)管理数据库。DBMS可以包括一个或多个数据库服务器。数据库包括存储在持久性存储器机制(诸如硬盘集合)上的数据库数据和数据库字典。数据库数据可以存储在一个或多个数据容器中。每个容器包含记录。每个记录内的数据被组织成一个或多个字段。在关系DBMS中,数据容器被称为表,记录被称为行,并且字段被称为列。在面向对象的数据库中,数据容器被称为对象类,记录被称为对象,并且字段被称为属性。其它数据库体系架构可以使用其它术语。
在实施例中,DBMS可以连接到或包括可以存储一个或多个表的计算节点的集群。DBMS可以管理存储在计算节点的集群上的表,类似于管理存储在持久性存储装置中的表。
用户通过向数据库服务器提交使数据库服务器对存储在数据库中的数据执行操作的命令来与DBMS的数据库服务器交互。用户可以是运行在客户端计算机上与数据库服务器交互的一个或多个应用。本文中多个用户也可以被统称为用户。
如本文所使用的,“查询”是指数据库命令,并且可以是符合数据库语言的数据库语句的形式。在实施例中,用于表达查询的数据库语言是结构化查询语言(SQL)。有许多不同版本的SQL,一些版本是标准的,一些是专有的,并且有各种扩展。数据定义语言(“DDL”)命令被发布到数据库服务器,以创建或配置数据库对象,诸如表、视图或复杂数据类型。SQL/XML是在对象-关系数据库中操纵XML数据时使用的SQL的常见扩展。虽然本文使用术语“SQL”描述本发明的实施例,但是本发明不仅仅限于该特定的数据库查询语言,并且可以与其它数据库查询语言和构造结合使用。
客户端可以通过建立数据库会话(本文中被称为“会话”)向数据库服务器发出一系列请求,诸如执行查询的请求。会话包括为客户端建立的到数据库服务器(诸如数据库实例)的特定连接,客户端可以通过该连接发出一系列请求。数据库服务器可以维护有关会话的会话状态数据。会话状态数据反映会话的当前状态,并且可以包含为其建立会话的用户的身份、由用户使用的服务、对象类型的实例、语言和字符集数据、关于会话的资源使用的统计、由执行软件的进程生成的会话内临时变量值、以及游标和变量以及其它信息的存储。会话状态数据还可以包含为会话配置的执行计划参数。
多节点数据库管理系统由共享对同一数据库的访问的互连计算节点组成。通常,计算节点经由网络互连并且以变化的程度共享对共享存储装置的访问,例如,对一组盘驱动器和其上存储的数据块的共享访问。多节点DBMS中的计算节点可以是经由网络互连的一组计算机(例如,工作站、个人计算机)的形式。可替代地,计算节点可以是网格的计算节点,其中网格由计算节点组成,这些计算节点以刀片服务器(server blade)的形式与机架上的其它刀片服务器互连。
多节点DBMS中的每个计算节点都托管数据库服务器。服务器(诸如数据库服务器)是集成的软件组件和计算资源分配的组合,其中计算资源诸如存储器、计算节点和计算节点上用于在处理器上执行集成的软件组件的进程,软件和计算资源的组合专用于代表一个或多个客户端执行特定的功能。
来自多节点DBMS中的多个计算节点的资源可以被分配给运行特定数据库服务器的软件。软件和来自计算节点的资源分配的每种组合是在本文中被称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库实例,其中一些或全部在独立的计算机上运行,包括单独的刀片服务器。
硬件概述
根据一个实施例,本文所描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行所述技术,或者可以包括诸如被永久性地编程以执行所述技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括被编程为根据固件、存储器、其它存储装置或者其组合中的程序指令执行所述技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制的编程相结合来实现所述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持设备、联网设备或者结合硬连线和/或程序逻辑来实现所述技术的任何其它设备。
例如,图6是图示可以在其上实现本发明的实施例的计算机系统600的框图。计算机系统600包括总线602或者用于传送信息的其它通信机制,以及与总线602耦合用于处理信息的硬件处理器604。硬件处理器604可以是例如通用微处理器。
计算机系统600还包括耦合到总线602用于存储信息和要由处理器604执行的指令的主存储器606,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器606还可以用于存储在执行要由处理器604执行的指令期间的临时变量或其它中间信息。当存储在处理器604可访问的非瞬态存储介质中时,这种指令使计算机系统600成为被定制以执行指令中所规定的操作的专用机器。
计算机系统600还包括耦合到总线602的只读存储器(ROM)608或者其它静态存储设备,用于为处理器604存储静态信息和指令。存储设备610(诸如磁盘、光盘或固态驱动器)被提供并且被耦合到总线602,用于存储信息和指令。
计算机系统600可以经总线602耦合到显示器612,诸如阴极射线管(CRT),用于向计算机用户显示信息。输入设备614,包括字母数字和其它键,被耦合到总线602,用于向处理器604传送信息和命令选择。另一种类型的用户输入设备是游标控件616,诸如鼠标、轨迹球或者游标方向键,用于向处理器604传送方向信息和命令选择并且用于控制显示器612上的游标运动。这种输入设备通常在两个轴上具有两个自由度,第一个轴(例如,x)和第二个轴(例如,y),以允许设备指定平面中的位置。
计算机系统600可以利用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文所述的技术,这些与计算机系统相结合,使计算机系统600或者把计算机系统600编程为专用机器。根据本发明的一种实施例,响应于处理器804执行包含在主存储器806中的一个或多个指令的一个或多个序列,计算机系统800执行本文的技术。这种指令可以从另一存储介质,诸如存储设备610,读入到主存储器606中。包含在主存储器606中的指令序列的执行使处理器604执行本文所述的处理步骤。在替代实施例中,硬连线的电路系统可以代替软件指令或者与软件指令组合使用。
如在本文所使用的,术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘、磁盘或固体驱动器,诸如存储设备610。易失性介质包括动态存储器,诸如主存储器606。存储介质的常见形式包括,例如,软盘、柔性盘、硬盘、固态驱动器、磁带或者任何其它磁性数据存储介质、CD-ROM、任何其它光学数据存储介质、任何具有孔模式的物理介质,RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式磁带。
存储介质与传输介质截然不同但是可以与其结合使用。传输介质参与在存储介质之间传递信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线602的导线。传输介质还可以采用声或光波的形式,诸如在无线电波和红外线数据通信中生成的那些。
各种形式的介质可以参与把一条或多条指令的一个或多个序列携带到处理器604供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以把指令加载到其动态存储器中并且利用调制解调器经电话线发送指令。位于计算机系统600本地的调制解调器可以在电话线上接收数据并且使用红外线发送器把数据转换成红外信号。红外检测器可以接收在红外信号中携带的数据并且适当的电路系统可以把数据放在总线602上。总线602把数据携带到主存储器606,处理器604从该主存储器606检索并执行指令。由主存储器606接收的指令可以可选地在被处理器604执行之前或之后存储在存储设备610上。
计算机系统600还包括耦合到总线602的通信接口618。通信接口618提供耦合到网络链路620的双向数据通信,其中网络链路620连接到本地网络622。例如,通信接口618可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器或者提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口618可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。无线链路也可以被实现。在任何此类实现中,通信接口618都发送和接收携带表示各种类型信息的数字信号流的电信号、电磁信号或光信号。
网络链路620通常通过一个或多个网络向其它数据设备提供数据通信。例如。网络链路620可以通过本地网络622提供到主计算机624或者到由互联网服务提供商(ISP)626操作的数据设备的连接。ISP 626又通过现在通常称为“互联网”628的全球分组数据通信网络提供数据通信服务。本地网络622和互联网628都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路620上并通过通信接口618的信号是传输介质的示例形式,其中信号把数字数据带到计算机系统600或者携带来自计算机系统600的数字数据。
计算机系统600可以通过(一个或多个)网络、网络链路620和通信接口618发送消息和接收数据,包括程序代码。在互联网示例中,服务器630可以通过互联网628、ISP 626、本地网络622和通信接口618发送对应用程序的所请求代码。
接收到的代码可以在其被接收到时由处理器604执行,和/或存储在存储设备610或其它非易失性存储装置中,用于以后执行。
在前面的说明书中,本发明的实施例已经参考众多的具体细节进行了描述,这些细节可以从一种实现变化到另一种实现。因此,说明书和附图被认为是说明性的而不是限制性的。本发明的范围的唯一且排他指示,以及申请人所预期的作为本发明的范围的内容,是从本申请发出的权利要求集合的书面和等效范围,以这种权利要求发出的具体形式,包括任何后续更正。
扩展和替代方案
在前面的说明书中,本发明的实施例已经参考众多的具体细节进行了描述,这些细节可以从一种实现变化到另一种实现。因此,本发明的唯一和排他指示以及申请人所预期的作为本发明的内容,是从本申请发出的权利要求的集合,以这种权利要求发出的具体形式,包括任何后续更正。对于这些权利要求中包含的术语在本文明确阐述的任何定义将决定权利要求中使用的术语的含义。因此,权利要求中没有明确叙述的任何限制、元素、性质、特征、优点或属性不应当以任何方式限制这种权利要求的范围。因而,说明书和附图被认为是说明性而不是限制性的。
Claims (16)
1.一种方法,包括:
接收基于聚合函数来聚合事实表的测量列并基于连接键列将事实表与维度表连接的查询,其中事实表的数据存储在一个或多个存储数据单元中:
每个存储数据单元存储事实表的相应数据部分,
该相应数据部分包括与事实表的一个或多个列对应的一个或多个列向量,
所述相应数据部分的该一个或多个列向量中的每个单元格元素与事实表的该一个或多个列中的对应行和对应列对应,该一个或多个列向量的所述每个单元格元素包括在该对应列和该对应行处的对应值的相应字典编码值,其中该相应字典编码值通过该对应列的相应字典数据结构被映射到所述每个元素的该对应值;
响应于接收到该查询,对于该一个或多个数据存储单元中的特定数据存储单元:
基于该查询,识别该特定数据存储单元的该一个或多个列向量的事实连接键向量和与该事实连接键向量对应的事实连接键字典数据结构;
基于事实连接键字典数据结构和密集分组键数据结构生成字典-分组键映射,密集分组键数据结构表示维度表的连接键列的多个唯一维度连接键值到该维度表的分组键的分组键值的映射;
对于与所述测量列对应的测量列向量中的每个测量单元格元素:
选择与该事实连接键向量的相应单元格元素对应的密集分组键值,
选择相应测量值,以及
将该相应测量值与所述密集分组键值相关联;
通过将该相应测量值与和相同的所述密集分组键值相关联的其它测量值聚合,来聚合所述特定数据存储单元中的测量列向量;以及
其中该方法由一个或多个计算设备执行。
2.如权利要求1所述的方法,其中所述每个存储数据单元是内存压缩单元(IMCU)。
3.如权利要求1所述的方法,还包括:
在接收该查询之前,生成包括事实表的该一个或多个列的该一个或多个列向量的该相应数据部分,作为将事实表的该一个或多个列从持久存储装置镜像到易失性存储器的一部分。
4.如权利要求1所述的方法,其中该事实连接键向量以列为主的格式存储。
5.如权利要求1所述的方法,其中该多个唯一维度连接键值仅包括维度表的行满足该查询中的一个或多个谓词的标准的那些唯一维度连接键值。
6.如权利要求1所述的方法,其中该相应字典编码值是基于该对应列和该对应行处的该对应值的该相应字典数据结构中的条目的位置来编码的。
7.如权利要求1所述的方法,其中生成字典-分组键映射还包括:
将事实连接键字典数据结构的多个唯一事实连接键值与密集分组键数据结构的该多个唯一维度连接键值进行比较;以及
基于将事实连接键字典数据结构的该多个唯一事实连接键值与该多个唯一维度连接键值进行比较,生成将该多个唯一事实连接键值与密集分组键数据结构的分组键值的子集映射的字典-分组键映射。
8.如权利要求1所述的方法,其中字典-分组键映射存储在映射的字典数据结构中,该映射的字典数据结构存储事实连接键字典数据结构的唯一字典编码事实连接键值与表示密集分组键数据结构的分组键值的多个密集分组键的对应密集分组键的映射。
9.如权利要求1所述的方法,还包括:
基于该查询,识别与维度表的连接键列对应的维度连接键向量和与该维度连接键向量对应的维度连接键字典数据结构;
基于维度连接键字典数据结构和维度连接键向量,生成包括多个密集分组键值的密集分组键数据结构,密集分组键数据结构的每个条目存储该多个密集分组键值中一个或多个密集分组键值到来自该多个唯一维度连接键值的唯一维度连接键值的映射。
10.如权利要求9所述的方法,其中密集分组键数据结构存储在第一计算节点的存储装置上,并且所述相应数据部分存储在与第一计算节点不同的第二计算节点的存储装置上,并且该方法还包括:
将密集分组键数据结构的副本从第一计算节点的存储装置转移到第二计算节点的存储装置。
11.如权利要求9所述的方法,还包括:
基于该查询,识别该一个或多个列向量中与维度表的分组键对应的分组键向量,以及与该分组键向量对应的分组键数据结构;
生成密集分组键数据结构,包括:
对于维度连接键字典数据结构的条目,生成密集分组键数据结构的对应条目,
选择一个或多个编码的分组键值,该编码的分组键值是基于与和维度连接键字典数据结构的条目对应的维度连接键向量中的一个或多个位置相同的分组键向量中一个或多个位置检索的,以及
在密集分组键数据结构的该对应条目中存储表示所选择的一个或多个编码的分组键值的特定密集分组键值。
12.如权利要求11所述的方法,其中,当选择多于一个编码的分组键值作为该一个或多个编码的分组键值时,该特定密集分组键值表示指向其中存储该多于一个编码的分组键值的位置的指针。
13.一种方法,包括:
接收基于聚合函数来聚合事实表的测量列并基于连接键列将事实表与维度表连接的查询,其中事实表的数据存储在一个或多个存储数据单元中:
每个存储数据单元存储事实表的相应数据部分,
该相应数据部分包括与事实表的一个或多个列对应的一个或多个列向量,
所述相应数据部分的该一个或多个列向量中的每个单元格元素与事实表的该一个或多个列中的对应行和对应列对应,该一个或多个列向量的所述每个单元格元素包括在该对应列和该对应行处的对应值的相应字典编码值,其中该相应字典编码值通过该对应列的相应字典数据结构被映射到所述每个元素的该对应值;
响应于接收到该查询,对于该一个或多个数据存储单元中的特定数据存储单元:
基于该查询,识别该特定数据存储单元的该一个或多个列向量的事实连接键向量和与该事实连接键向量对应的事实连接键字典数据结构;
基于事实连接键字典数据结构和密集分组键数据结构生成字典-分组键映射,密集分组键数据结构表示维度表的连接键列的多个唯一维度连接键值到该维度表的分组键的分组键值的映射;
基于字典-分组键映射和该事实连接键向量生成经变换的向量,经变换的向量表示根据该事实连接键向量布置的字典-分组键映射的分组键值;
基于经变换的向量,在所述特定数据存储单元中聚合与所述测量列对应的列向量;以及
其中该方法由一个或多个计算设备执行。
14.如权利要求13所述的方法,其中字典-分组键映射存储在映射的字典数据结构中,该映射的字典数据结构存储事实连接键字典数据结构的唯一字典编码事实连接键值与表示密集分组键数据结构的分组键值的多个密集分组键的对应密集分组键的映射。
15.如权利要求14所述的方法,其中生成经变换的向量还包括:
通过从映射的字典数据结构的条目中选择密集分组键值,为事实连接键向量的每个单元格元素生成经变换的向量的单元格元素,该密集分组键值与事实连接键向量的所述每个单元格元素对应,以及
将所选择的密集分组键值存储在经变换的向量的单元格元素中。
16.一种或多种存储指令的非瞬态计算机可读介质,当所述指令由一个或多个硬件处理器执行时,使得执行如权利要求1-15中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/268,521 US10558659B2 (en) | 2016-09-16 | 2016-09-16 | Techniques for dictionary based join and aggregation |
US15/268,521 | 2016-09-16 | ||
PCT/US2017/040612 WO2018052508A1 (en) | 2016-09-16 | 2017-07-03 | Techniques for dictionary based join and aggregation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109952569A true CN109952569A (zh) | 2019-06-28 |
CN109952569B CN109952569B (zh) | 2023-05-30 |
Family
ID=59351124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780068918.1A Active CN109952569B (zh) | 2016-09-16 | 2017-07-03 | 用于基于字典的连接和聚合的方法和计算机可读介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10558659B2 (zh) |
EP (1) | EP3513305B1 (zh) |
CN (1) | CN109952569B (zh) |
WO (1) | WO2018052508A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442602A (zh) * | 2019-07-02 | 2019-11-12 | 新华三大数据技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
CN110502535A (zh) * | 2019-08-28 | 2019-11-26 | 上海达梦数据库有限公司 | 数据访问方法、装置、设备和存储介质 |
CN111221827A (zh) * | 2020-01-15 | 2020-06-02 | 成都量子象云计算科技有限公司 | 基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质 |
CN113486006A (zh) * | 2021-06-18 | 2021-10-08 | 深圳市迈安信科技有限公司 | 数据模型的构建方法及数据查询方法和计算机存储介质 |
CN113505129A (zh) * | 2021-07-07 | 2021-10-15 | 深圳市汉云科技有限公司 | 一种基于字典的数据库查询优化方法、装置及终端设备 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10572475B2 (en) | 2016-09-23 | 2020-02-25 | Oracle International Corporation | Leveraging columnar encoding for query operations |
US10846285B2 (en) * | 2017-06-02 | 2020-11-24 | Chaossearch, Inc. | Materialization for data edge platform |
US11416466B2 (en) * | 2017-06-02 | 2022-08-16 | Chaossearch, Inc. | Data edge platform for improved storage and analytics |
US11216474B2 (en) * | 2017-09-28 | 2022-01-04 | Oracle International Corporation | Statistical processing of natural language queries of data sets |
US11675761B2 (en) | 2017-09-30 | 2023-06-13 | Oracle International Corporation | Performing in-memory columnar analytic queries on externally resident data |
US11157510B2 (en) | 2018-02-28 | 2021-10-26 | Chaossearch, Inc. | Data normalization using data edge platform |
US11307977B2 (en) * | 2018-09-27 | 2022-04-19 | Intel Corporation | Technologies for direct matrix read and write operations |
US11288275B2 (en) | 2019-09-09 | 2022-03-29 | Oracle International Corporation | Technique for fast join processing of dictionary encoded key columns in relational database systems |
US11222018B2 (en) | 2019-09-09 | 2022-01-11 | Oracle International Corporation | Cache conscious techniques for generation of quasi-dense grouping codes of compressed columnar data in relational database systems |
US11429604B2 (en) | 2019-09-10 | 2022-08-30 | Oracle International Corporation | Techniques of heterogeneous hardware execution for SQL analytic queries for high volume data processing |
US11734308B2 (en) | 2019-09-12 | 2023-08-22 | Oracle International Corporation | Autonomous caching for views |
US11514055B2 (en) | 2019-09-13 | 2022-11-29 | Oracle International Corporation | Querying on hybrid formats and storages |
US11797520B2 (en) | 2019-11-29 | 2023-10-24 | Oracle International Corporation | ROWID elimination rewrite |
CN111309727B (zh) * | 2020-01-22 | 2024-03-22 | 北京明略软件系统有限公司 | 一种信息表处理方法、装置及存储介质 |
US11520790B2 (en) * | 2020-09-17 | 2022-12-06 | International Business Machines Corporation | Providing character encoding |
US11461328B2 (en) | 2020-09-21 | 2022-10-04 | Oracle International Corporation | Method for using a sematic model to transform SQL against a relational table to enable performance improvements |
US11556533B2 (en) | 2020-11-12 | 2023-01-17 | Oracle International Corporation | Method for generating views based on a semantic model, that allows for autonomous performance improvements and complex calculations |
CN113342570B (zh) * | 2021-06-17 | 2022-03-08 | 哈尔滨工业大学 | 一种适配3d tlc型nand闪存数据存储的双目标状态消除编解码方法 |
US20230120492A1 (en) * | 2021-10-17 | 2023-04-20 | Speedata Ltd. | Pipelined Hardware-Implemented Database Query Processing |
US11954134B2 (en) * | 2021-12-08 | 2024-04-09 | Sap Se | Visualization of complex hierarchy data with interactive adjustments |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020029207A1 (en) * | 2000-02-28 | 2002-03-07 | Hyperroll, Inc. | Data aggregation server for managing a multi-dimensional database and database management system having data aggregation server integrated therein |
US6487546B1 (en) * | 1998-08-27 | 2002-11-26 | Oracle Corporation | Apparatus and method for aggregate indexes |
CN102663116A (zh) * | 2012-04-11 | 2012-09-12 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
CN103294831A (zh) * | 2013-06-27 | 2013-09-11 | 中国人民大学 | 列存储数据库中基于多维数组的分组聚集计算方法 |
US20140095502A1 (en) * | 2012-09-28 | 2014-04-03 | Oracle International Corporation | Clustering a table in a relational database management system |
CN104361118A (zh) * | 2014-12-01 | 2015-02-18 | 中国人民大学 | 一种适应协处理器的混合olap查询处理方法 |
US20150088856A1 (en) * | 2013-09-20 | 2015-03-26 | Oracle International Corporation | Inferring dimensional metadata from content of a query |
Family Cites Families (102)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5359724A (en) | 1992-03-30 | 1994-10-25 | Arbor Software Corporation | Method and apparatus for storing and retrieving multi-dimensional data in computer memory |
US5963956A (en) | 1997-02-27 | 1999-10-05 | Telcontar | System and method of optimizing database queries in two or more dimensions |
US5848408A (en) | 1997-02-28 | 1998-12-08 | Oracle Corporation | Method for executing star queries |
US6073134A (en) | 1997-05-29 | 2000-06-06 | Oracle Corporation | Method article of manufacture, and apparatus for generating a multi-dimensional record management index |
US6397195B1 (en) | 1997-06-27 | 2002-05-28 | Hyperion Solutions Corporation | System for managing accounting information in a multi-dimensional database |
US6092062A (en) | 1997-06-30 | 2000-07-18 | International Business Machines Corporation | Relational database query optimization to perform query evaluation plan, pruning based on the partition properties |
US5905985A (en) | 1997-06-30 | 1999-05-18 | International Business Machines Corporation | Relational database modifications based on multi-dimensional database modifications |
US5960428A (en) | 1997-08-28 | 1999-09-28 | International Business Machines Corporation | Star/join query optimization |
US5943666A (en) | 1997-09-15 | 1999-08-24 | International Business Machines Corporation | Method and apparatus for optimizing queries across heterogeneous databases |
US6298342B1 (en) | 1998-03-16 | 2001-10-02 | Microsoft Corporation | Electronic database operations for perspective transformations on relational tables using pivot and unpivot columns |
US6341281B1 (en) | 1998-04-14 | 2002-01-22 | Sybase, Inc. | Database system with methods for optimizing performance of correlated subqueries by reusing invariant results of operator tree |
JP3213585B2 (ja) * | 1998-07-09 | 2001-10-02 | 株式会社インフォメックス | データ検索方法及び装置、データ検索システム、記録媒体 |
US6317750B1 (en) | 1998-10-26 | 2001-11-13 | Hyperion Solutions Corporation | Method and apparatus for accessing multidimensional data |
US6460045B1 (en) | 1999-03-15 | 2002-10-01 | Microsoft Corporation | Self-tuning histogram and database modeling |
US6804714B1 (en) | 1999-04-16 | 2004-10-12 | Oracle International Corporation | Multidimensional repositories for problem discovery and capacity planning of database applications |
US6353828B1 (en) | 1999-05-14 | 2002-03-05 | Oracle Corp. | Concurrency control for transactions that update base tables of a materialized view using different types of locks |
US6397204B1 (en) | 1999-06-25 | 2002-05-28 | International Business Machines Corporation | Method, system, and program for determining the join ordering of tables in a join query |
US6446063B1 (en) | 1999-06-25 | 2002-09-03 | International Business Machines Corporation | Method, system, and program for performing a join operation on a multi column table and satellite tables |
US6408292B1 (en) | 1999-08-04 | 2002-06-18 | Hyperroll, Israel, Ltd. | Method of and system for managing multi-dimensional databases using modular-arithmetic based address data mapping processes on integer-encoded business dimensions |
US6385604B1 (en) | 1999-08-04 | 2002-05-07 | Hyperroll, Israel Limited | Relational database management system having integrated non-relational multi-dimensional data store of aggregated data elements |
US6484179B1 (en) | 1999-10-25 | 2002-11-19 | Oracle Corporation | Storing multidimensional data in a relational database management system |
US6405208B1 (en) | 1999-12-13 | 2002-06-11 | Hyperion Solutions Corporation | Dynamic recursive build for multidimensional databases and methods and apparatus thereof |
US6529896B1 (en) | 2000-02-17 | 2003-03-04 | International Business Machines Corporation | Method of optimizing a query having an existi subquery and a not-exists subquery |
US6625611B1 (en) | 2000-03-15 | 2003-09-23 | Cadence Design Systems, Inc. | Method and apparatus for representing multidimensional data |
US6618729B1 (en) | 2000-04-20 | 2003-09-09 | Ncr Corporation | Optimization of a star join operation using a bitmap index structure |
EP1217540A1 (en) | 2000-11-29 | 2002-06-26 | Lafayette Software Inc. | Methods of organizing data and processing queries in a database system, and database system and software product for implementing such method |
EP1217541A1 (en) | 2000-11-29 | 2002-06-26 | Lafayette Software Inc. | Method of processing queries in a database system, and database system and software product for implementing such method |
EP1211610A1 (en) | 2000-11-29 | 2002-06-05 | Lafayette Software Inc. | Methods of organising data and processing queries in a database system |
US6965891B1 (en) | 2001-02-27 | 2005-11-15 | Oracle International Corporation | Method and mechanism for partition pruning |
US6775682B1 (en) | 2002-02-26 | 2004-08-10 | Oracle International Corporation | Evaluation of rollups with distinct aggregates by using sequence of sorts and partitioning by measures |
US7028046B2 (en) | 2002-03-19 | 2006-04-11 | Hyperion Solutions Corporation | Method of splitting a multi-dimensional cube between a multi-dimensional and a relational database |
US7366730B2 (en) | 2002-04-26 | 2008-04-29 | Oracle International Corporation | Registration of solved cubes within a relational database management system |
US6917932B2 (en) | 2002-05-01 | 2005-07-12 | International Business Machines Corporation | Dynamic optimization of multi-feature queries |
US7383275B2 (en) | 2002-05-10 | 2008-06-03 | International Business Machines Corporation | Methods to improve indexing of multidimensional databases |
US8001112B2 (en) | 2002-05-10 | 2011-08-16 | Oracle International Corporation | Using multidimensional access as surrogate for run-time hash table |
US7020661B1 (en) * | 2002-07-10 | 2006-03-28 | Oracle International Corporation | Techniques for pruning a data object during operations that join multiple data objects |
US7324991B1 (en) | 2002-08-30 | 2008-01-29 | Hyperion Solutions Corporation | Sampling in a multidimensional database |
US7152073B2 (en) | 2003-01-30 | 2006-12-19 | Decode Genetics Ehf. | Method and system for defining sets by querying relational data using a set definition language |
US8612421B2 (en) | 2003-05-07 | 2013-12-17 | Oracle International Corporation | Efficient processing of relational joins of multidimensional data |
US8200612B2 (en) | 2003-05-07 | 2012-06-12 | Oracle International Corporation | Efficient SQL access to multidimensional data |
US7213012B2 (en) | 2003-05-09 | 2007-05-01 | Oracle International Corporation | Optimizer dynamic sampling |
US7734652B2 (en) | 2003-08-29 | 2010-06-08 | Oracle International Corporation | Non-negative matrix factorization from the data in the multi-dimensional data table using the specification and to store metadata representing the built relational database management system |
US7337163B1 (en) | 2003-12-04 | 2008-02-26 | Hyperion Solutions Corporation | Multidimensional database query splitting |
US7467127B1 (en) | 2004-02-27 | 2008-12-16 | Hyperion Solutions Corporation | View selection for a multidimensional database |
US7246108B2 (en) | 2004-07-27 | 2007-07-17 | Oracle International Corporation | Reusing optimized query blocks in query processing |
US7797320B2 (en) | 2005-03-15 | 2010-09-14 | Hyperion Solutions Corporation | Dimensionality reduction |
US8719250B2 (en) | 2005-04-18 | 2014-05-06 | Oracle International Corporation | Integrating RDF data into a relational database system |
US20070027860A1 (en) | 2005-07-28 | 2007-02-01 | International Business Machines Corporation | Method and apparatus for eliminating partitions of a database table from a join query using implicit limitations on a partition key value |
US7840553B2 (en) | 2005-10-07 | 2010-11-23 | Oracle International Corp. | Recommending materialized views for queries with multiple instances of same table |
US7689553B2 (en) | 2006-03-30 | 2010-03-30 | International Business Machines Corporation | Execution cost reduction of sampled queries in a database |
US20070239673A1 (en) | 2006-04-05 | 2007-10-11 | Barsness Eric L | Removing nodes from a query tree based on a result set |
US7693820B2 (en) | 2006-04-21 | 2010-04-06 | Microsoft Corporation | Use of materialized transient views in query optimization |
US7593931B2 (en) | 2007-01-12 | 2009-09-22 | International Business Machines Corporation | Apparatus, system, and method for performing fast approximate computation of statistics on query expressions |
US7792822B2 (en) | 2007-03-02 | 2010-09-07 | Microsoft Corporation | Systems and methods for modeling partitioned tables as logical indexes |
US8438152B2 (en) | 2007-10-29 | 2013-05-07 | Oracle International Corporation | Techniques for bushy tree execution plans for snowstorm schema |
US7792823B2 (en) | 2008-01-15 | 2010-09-07 | International Business Machines Corporation | Maintained symbol table only index |
US7856416B2 (en) | 2008-04-22 | 2010-12-21 | International Business Machines Corporation | Automated latent star schema discovery tool |
US8352458B2 (en) | 2008-05-07 | 2013-01-08 | Oracle International Corporation | Techniques for transforming and loading data into a fact table in a data warehouse |
US20100088309A1 (en) | 2008-10-05 | 2010-04-08 | Microsoft Corporation | Efficient large-scale joining for querying of column based data encoded structures |
US8370326B2 (en) | 2009-03-24 | 2013-02-05 | International Business Machines Corporation | System and method for parallel computation of frequency histograms on joined tables |
US9177019B2 (en) | 2009-05-19 | 2015-11-03 | Sap Se | Computer system for optimizing the processing of a query |
US20100299367A1 (en) | 2009-05-20 | 2010-11-25 | Microsoft Corporation | Keyword Searching On Database Views |
US8321435B2 (en) | 2009-08-12 | 2012-11-27 | Apple Inc. | Quick find for data fields |
US8209208B2 (en) | 2009-08-26 | 2012-06-26 | Raytheon Company | Succession of an asset in control in response to a level of user intervention |
US20110055246A1 (en) | 2009-09-01 | 2011-03-03 | Yann Le Biannic | Navigation and visualization of relational database |
US20110137917A1 (en) | 2009-12-03 | 2011-06-09 | International Business Machines Corporation | Retrieving a data item annotation in a view |
KR101117709B1 (ko) | 2009-12-15 | 2012-02-24 | 한국과학기술원 | 공간 분할 트리의 최소 데이터-불균등 커버를 이용한 다차원 히스토그램 방법 및 이를 실행하기 위한 프로그램이 저장된 기록매체 |
US9020910B2 (en) | 2010-01-13 | 2015-04-28 | International Business Machines Corporation | Storing tables in a database system |
US8620899B2 (en) | 2010-02-09 | 2013-12-31 | International Business Machines Corporation | Generating materialized query table candidates |
US8290931B2 (en) | 2010-02-22 | 2012-10-16 | Hewlett-Packard Development Company, L.P. | Database designer |
US8655867B2 (en) | 2010-05-13 | 2014-02-18 | Salesforce.Com, Inc. | Method and system for optimizing queries in a multi-tenant database environment |
US8311975B1 (en) | 2011-02-28 | 2012-11-13 | Allan Michael Gonsalves | Data warehouse with a domain fact table |
US9396284B2 (en) | 2011-05-18 | 2016-07-19 | Oracle International Corporation | Method and system for implementing efficient updatable relational views over XML data |
FI126885B (fi) | 2011-05-31 | 2017-07-14 | Stora Enso Oyj | Terpeenifenolihartsin käyttö ekstruusiopinnoituksessa |
US8635206B2 (en) | 2011-06-30 | 2014-01-21 | International Business Machines Corporation | Database query optimization |
US20130060547A1 (en) | 2011-09-01 | 2013-03-07 | Honeywell Spol, S.R.O. | Visualization system for multidimensional space of partitions |
US9043310B2 (en) * | 2011-11-08 | 2015-05-26 | International Business Machines Corporation | Accessing a dimensional data model when processing a query |
US9165008B1 (en) * | 2011-12-28 | 2015-10-20 | Teradata Us, Inc. | System and method for data compression using a dynamic compression dictionary |
US8589382B2 (en) | 2011-12-29 | 2013-11-19 | International Business Machines Corporation | Multi-fact query processing in data processing system |
US9727608B2 (en) | 2012-01-30 | 2017-08-08 | International Business Machines Corporation | Generating statistical views in a database system |
US8660985B2 (en) * | 2012-04-11 | 2014-02-25 | Renmin University Of China | Multi-dimensional OLAP query processing method oriented to column store data warehouse |
US9230008B2 (en) | 2012-04-12 | 2016-01-05 | Ca, Inc. | System and method for automated online reorganization of sequential access databases |
US8762407B2 (en) | 2012-04-17 | 2014-06-24 | Renmin University Of China | Concurrent OLAP-oriented database query processing method |
US9183254B1 (en) | 2012-05-04 | 2015-11-10 | Paraccel Llc | Optimizing database queries using subquery composition |
US8554761B1 (en) | 2012-05-25 | 2013-10-08 | Oracle International Corporation | Transforming a single-table join predicate into a pseudo-join predicate |
US8812488B2 (en) | 2012-08-16 | 2014-08-19 | Oracle International Corporation | Constructing multidimensional histograms for complex spatial geometry objects |
US9031932B2 (en) | 2012-09-06 | 2015-05-12 | Oracle International Corporation | Automatic denormalization for analytic query processing in large-scale clusters |
US9292569B2 (en) | 2012-10-02 | 2016-03-22 | Oracle International Corporation | Semi-join acceleration |
US9858326B2 (en) | 2012-10-10 | 2018-01-02 | Microsoft Technology Licensing, Llc | Distributed data warehouse |
US9146955B2 (en) | 2012-12-18 | 2015-09-29 | Sap Se | In-memory, columnar database multidimensional analytical view integration |
US9104725B2 (en) | 2012-12-20 | 2015-08-11 | Sap Se | Automatic tuning of database queries |
US9141667B2 (en) | 2013-01-31 | 2015-09-22 | International Business Machines Corporation | Efficient join with one or more large dimension tables |
US20150088919A1 (en) | 2013-09-20 | 2015-03-26 | Oracle International Corporation | Transforming a query to reuse stored data |
US9836519B2 (en) | 2013-09-20 | 2017-12-05 | Oracle International Corporation | Densely grouping dimensional data |
US9740718B2 (en) | 2013-09-20 | 2017-08-22 | Oracle International Corporation | Aggregating dimensional data using dense containers |
US10068170B2 (en) | 2013-09-23 | 2018-09-04 | Oracle International Corporation | Minimizing global error in an artificial neural network |
US9317711B2 (en) | 2014-06-25 | 2016-04-19 | Sap Se | Privacy restrictions for columnar storage |
US9672248B2 (en) | 2014-10-08 | 2017-06-06 | International Business Machines Corporation | Embracing and exploiting data skew during a join or groupby |
US9946705B2 (en) | 2015-06-29 | 2018-04-17 | International Business Machines Corporation | Query processing using a dimension table implemented as decompression dictionaries |
US10067954B2 (en) * | 2015-07-22 | 2018-09-04 | Oracle International Corporation | Use of dynamic dictionary encoding with an associated hash table to support many-to-many joins and aggregations |
US9934304B2 (en) | 2015-08-18 | 2018-04-03 | Workday, Inc. | Systems and methods for memory optimization interest-driven business intelligence systems |
CN106249269B (zh) | 2016-08-31 | 2023-05-23 | 同方威视技术股份有限公司 | 半导体探测器 |
-
2016
- 2016-09-16 US US15/268,521 patent/US10558659B2/en active Active
-
2017
- 2017-07-03 WO PCT/US2017/040612 patent/WO2018052508A1/en active Search and Examination
- 2017-07-03 EP EP17740222.9A patent/EP3513305B1/en active Active
- 2017-07-03 CN CN201780068918.1A patent/CN109952569B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6487546B1 (en) * | 1998-08-27 | 2002-11-26 | Oracle Corporation | Apparatus and method for aggregate indexes |
US20020029207A1 (en) * | 2000-02-28 | 2002-03-07 | Hyperroll, Inc. | Data aggregation server for managing a multi-dimensional database and database management system having data aggregation server integrated therein |
CN102663116A (zh) * | 2012-04-11 | 2012-09-12 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
US20140095502A1 (en) * | 2012-09-28 | 2014-04-03 | Oracle International Corporation | Clustering a table in a relational database management system |
CN103294831A (zh) * | 2013-06-27 | 2013-09-11 | 中国人民大学 | 列存储数据库中基于多维数组的分组聚集计算方法 |
US20150088856A1 (en) * | 2013-09-20 | 2015-03-26 | Oracle International Corporation | Inferring dimensional metadata from content of a query |
CN104361118A (zh) * | 2014-12-01 | 2015-02-18 | 中国人民大学 | 一种适应协处理器的混合olap查询处理方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442602A (zh) * | 2019-07-02 | 2019-11-12 | 新华三大数据技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
CN110442602B (zh) * | 2019-07-02 | 2021-01-01 | 新华三大数据技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
CN110502535A (zh) * | 2019-08-28 | 2019-11-26 | 上海达梦数据库有限公司 | 数据访问方法、装置、设备和存储介质 |
CN110502535B (zh) * | 2019-08-28 | 2022-02-22 | 上海达梦数据库有限公司 | 数据访问方法、装置、设备和存储介质 |
CN111221827A (zh) * | 2020-01-15 | 2020-06-02 | 成都量子象云计算科技有限公司 | 基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质 |
CN111221827B (zh) * | 2020-01-15 | 2023-05-26 | 成都量子象云计算科技有限公司 | 基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质 |
CN113486006A (zh) * | 2021-06-18 | 2021-10-08 | 深圳市迈安信科技有限公司 | 数据模型的构建方法及数据查询方法和计算机存储介质 |
CN113505129A (zh) * | 2021-07-07 | 2021-10-15 | 深圳市汉云科技有限公司 | 一种基于字典的数据库查询优化方法、装置及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3513305A1 (en) | 2019-07-24 |
CN109952569B (zh) | 2023-05-30 |
EP3513305B1 (en) | 2023-07-19 |
US10558659B2 (en) | 2020-02-11 |
WO2018052508A1 (en) | 2018-03-22 |
US20180081939A1 (en) | 2018-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109952569A (zh) | 用于基于字典的连接和聚合的技术 | |
US20230334030A1 (en) | System and method for slowly changing dimension and metadata versioning in a multidimensional database environment | |
US20230084389A1 (en) | System and method for providing bottom-up aggregation in a multidimensional database environment | |
US10817534B2 (en) | Systems and methods for interest-driven data visualization systems utilizing visualization image data and trellised visualizations | |
US11789978B2 (en) | System and method for load, aggregate and batch calculation in one scan in a multidimensional database environment | |
CN105683956B (zh) | 密集分组的维度数据 | |
US9805080B2 (en) | Data driven relational algorithm formation for execution against big data | |
US7698285B2 (en) | Compression of multidimensional datasets | |
CN105122243B (zh) | 用于半结构化数据的可扩展分析平台 | |
US7454403B2 (en) | Method and mechanism of improving performance of database query language statements using data duplication information | |
CN103177061B (zh) | 分区表中的唯一值估计 | |
US9934299B2 (en) | Systems and methods for interest-driven data visualization systems utilizing visualization image data and trellised visualizations | |
US9146948B2 (en) | Hilbert ordering of multidimensional tuples within computing systems | |
CN108140040A (zh) | 存储器中数据库的选择性数据压缩 | |
TWI230344B (en) | Method and system for online analytical processing (OLAP) | |
US10877995B2 (en) | Building a distributed dwarf cube using mapreduce technique | |
CN104050213B (zh) | 包括数据分类的查询处理系统 | |
US20230418824A1 (en) | Workload-aware column inprints | |
US11151146B2 (en) | System and method for multi-dimensional real time vector search and heuristics backed insight engine | |
US20180060374A1 (en) | Optimizing column based database table compression | |
US20230004538A1 (en) | Database gateway with machine learning model | |
KR102177792B1 (ko) | 컬럼 별 바이너리 파일 저장 구조를 이용하여 대용량 데이터를 메모리 용량 제약없이 차트로 표시하는 시스템 | |
CN115829615A (zh) | 一种基于多数据库的用户分群方法、系统和存储介质 | |
CN116737753A (zh) | 业务数据处理方法、装置、计算机设备和存储介质 |
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 |