CN104685496B - 关系型数据库管理系统中删减聚类表的磁盘块 - Google Patents

关系型数据库管理系统中删减聚类表的磁盘块 Download PDF

Info

Publication number
CN104685496B
CN104685496B CN201380050528.3A CN201380050528A CN104685496B CN 104685496 B CN104685496 B CN 104685496B CN 201380050528 A CN201380050528 A CN 201380050528A CN 104685496 B CN104685496 B CN 104685496B
Authority
CN
China
Prior art keywords
row
region
dimension
inquiry
cluster
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201380050528.3A
Other languages
English (en)
Other versions
CN104685496A (zh
Inventor
M·齐亚丁
A·维特科夫斯基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN104685496A publication Critical patent/CN104685496A/zh
Application granted granted Critical
Publication of CN104685496B publication Critical patent/CN104685496B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开涉及关系型数据库管理系统中删减聚类表的磁盘块。提供了用于生成“维度区域地图”的技术,维度区域地图使得数据库服务器基于查询中限定一个或多个维度表的过滤谓词避免扫描事实表的磁盘块。区域地图将事实表分成被称为“区域”的多组连续磁盘块。对于每个区域,确定维度表的一个或多个“分区”列中每一个的最小值和最大值并在区域地图中对其进行维护。对于包含分区列上过滤谓词的查询,可以将谓词值与为该分区列的区域维护的最小值和最大值进行比较以确定该区域的磁盘块扫描是否可以被跳过。

Description

关系型数据库管理系统中删减聚类表的磁盘块
技术领域
本发明涉及关系型数据库管理系统,并且更具体地,涉及用于在关系型数据库管理系统中聚类(cluster)表的技术。
背景技术
在本节中描述的方法是可以实行的方法,但不一定是先前已被构想或实行的方法。因此,除非另外指出,否则不应当假设本节中描述的任何方法仅仅因为它们被包括在本节中就被算作为现有技术。
在数据库系统的上下文中,“维度”是为数据提供类别的值的列表。维度充当用于识别变量的值的索引。例如,如果销售数据具有每个月单独的销售数字,则该数据具有MONTH维度。即,该数据通过月进行组织。维度类似于关系型数据库中的键。通过两维或更多维组织的数据被称为“多维数据”。
多维变量中的任何数据项都可以通过为变量的每个维度指定一个成员来进行唯一且完全地选择。例如,如果sales变量通过MONTH、PRODUCT和MARKET标出维度,则为MONTH维度指定“January”、为PRODUCT维度指定“Stereos”和为MARKET维度指定“EasternRegion”就为该变量唯一地指定了单个值。因此,维度提供了简明和直观的组织和选择数据的方式,用于检索、更新和执行计算。
多维数据可以存储在关系型数据库系统中。当多维数据存储在关系型数据库系统中时,应用通过提交符合关系型数据库系统支持的数据库语言的命令访问数据,最常见的数据库语言是结构化查询语言(SQL)。
关系型数据库系统以关联表的形式存储数据,其中每个表都具有一列或多列以及一行或多行。用于在关系型数据库系统中存储多维数据的常规机制是将数据存储在表中,其中表以被称为星型架构(star schema)的方式进行布置。在关系型数据库系统中,星型架构的特点是存在一个或多个相对较大的表和若干个相对较小的表。较大的表没有重复较小表中包含的信息,而是引用较小表中的行。在星型架构中,较大的表被称为“事实表”,而较小的表被称为“维度表”。图1说明了具有两个维度的示例性星型架构。
参考图1,它说明了包括表102、104和106的数据库100。表102被命名为“stores(商店)”并且包含关于其中可能发生销售的每个商店的信息。stores表102中每一行包含唯一的store-id和关于对应于该store-id的特定商店的信息。表104被命名为“products(产品)”并且包含关于可以在任何商店销售的每种类型产品的信息。products表104中每一行包含唯一的product-id以及关于特定产品的信息。
表106被命名为“sales(销售)”并且包含在stores表102中表示的每个商店中的每笔销售的信息。sales表106中每一行包括以美元为单位的amount(量)、指示做出销售的商店的store-id、指示在销售中售出的产品的product-id以及销售的日期。通常,销售的数量将远远高于做出销售的商店的数量和由商店具有的产品数量。关于在销售中包含的商店和产品的详细信息不必存储在sales表106的行中,因为这些详细信息分别可以从stores表102和products表104中得到。相反,表106的行包含引用在其它表102和104中存储的信息的值(store-id和product-id)。因此,表102、104和106构成星型架构,其中表106是事实表并且表102和104是维度表。
存储在事实表106中的数据只有两个维度,事实表106具有两个列(STORE-ID和PRODUCT-ID)专门为这些维度存储外键值(foreign key value)。通常,事实表专门用一列为与事实表中存储的多维数据相关联的每个维度存储外键值。通过在事实表中存储引用维度表中的行的外键值,事实表中的行可以保持在相对较小的尺寸并且事实表的列的数量可以保持在相对较小的数量。例如,sales表106不是包含stores表102的MANAGER(管理员)、CITY(城市)和STATE(州)列中的值和products表104的SOURCE(来源)、PARTS(件数)和COST(成本)列中的值,而是sales表106在两个列中包含外键值,一列引用stores表102中的行并且另一列引用products表104中的行。典型的事实表中行的数量可以是数十亿或者更多。作为对照,维度表中行的数量通常少得多(例如,数十、数百或数千)。相应地,典型的星型架构被构造成最小化在事实表的每一行中储存的数据量。
对多维数据的查询可以检索受“维度键值”约束的事实表“度量”的聚合。例如,针对图1中说明的表发出的查询可能从sales表106检索在San Jose发生的所有“amount”值的总和。在这个例子中,查询的执行包括联接来自sales表106的行和来自stores表102的行,其中“city”列具有值“San Jose”。
这种类型的查询也称作“星型查询”。事实表的“度量”是不包含外键值的事实表列中的值。例如,在sales表106的AMOUNT和DATE(日期)列中的值分别是销售量度量和销售日期度量。“维度键值”是与特定维度相关联的值。例如,用于“region”维度的维度键值可以是“Northern Region”、“Southern Region”、“Eastern Region”和“Western Region”。
在星型架构中,维度的维度键值通常存储在与该维度相关联的维度表的维度键列中。例如,stores表102的维度键值存储在stores表102的“store-id”列中。类似地,products表104的维度键值存储在products表104的“product-id”列中。
星型查询通常包含维度表上的过滤谓词。以下是星型查询的例子,其联接sales事实表106与合格的stores 102和products 104维度表。stores维度表102由过滤谓词st.state=“CA”限定并且products维度表104由过滤谓词pr.cost>10限定。该示例星型查询通过商店城市和产品来源请求对California州、价格超过10美元的产品的销售量的总和。
SELECT st.city,pr.source,SUM(sa.amount)
FROM sales sa,stores st,products pr
WHERE sa.store-id=st.store-id AND sa.product-id=
pr.product-id AND st.state=“CA”AND pr.cost>10
GROUP BY st.city,pr.source
用于提高关系型数据库管理系统中星型查询性能的一种方法是将事实表中相关的数据组织在磁盘上连续的磁盘块中。“磁盘块”是被关系型数据库管理系统用于存储数据库数据的数据存储装置的逻辑单元。磁盘块具有块大小(例如,4KB)并且可以包含一个或多个底层文件系统或操作系统块。除其它信息之外,磁盘块还可以包括一个或多个表的一行或多行的数据,或者行的数据可以跨多个磁盘块。
在关系型数据库管理系统存储多维数据的上下文中,在磁盘上的连续磁盘块中组织相关事实表数据被称作“聚类(clustering)”。聚类通过促进压缩、索引和输入/输出(I/O)删减(prune)可以提高关系型数据库管理系统中星型查询的性能。在关系型数据库管理系统回答星型查询的上下文中,I/O删减指当为获得与星型查询相关的数据而扫描事实表时避免对事实表的某些磁盘块进行磁盘扫描,这些磁盘块已知不包含与星型查询有关的数据。最近的数据存储设备的技术改进已经将数据库访问提高到这一点:即,当执行查询时,即使其中有索引可用,数据库系统也有时执行表扫描来代替索引表访问。因此,用于聚类以促进I/O删减的技术最近在业界已获得相当大的关注。
有多种不同的方法在关系型数据库管理系统中聚类事实表。在一种方法中,事实表的行基于事实表的行的一列或多列中的值以线性顺序存储在磁盘上。例如,事实表的行可以首先通过带有指定事实表的一列或多列的ORDER BY子句的查询进行排序,然后将这些行以排序的顺序存储在磁盘上的一个或多个连续的磁盘块中。在另一种方法中,事实表基于事实表列中的值按照诸如Z-order曲线或Hilbert空间填充曲线的空间填充曲线沿着多个维度进行聚类。在这两种方法中,事实表仅基于事实表的列进行聚类。当星型查询包含事实表的列上的过滤谓词时,当事实表基于那些列进行聚类时,这些方法促进了I/O删减。
遗憾的是,关系型数据库管理系统中执行星型查询的性能瓶颈通常是相对较大的事实表和维度表之间的联接,该联接被称作“星型联接(star join)”。维度表通常在星型查询中被维度表上的一个或多个通常为高选择性的过滤谓词限定。在许多情况下,星型查询不包含事实表列上的任何过滤谓词。例如,以上示例星型查询包含限定stores维度表102的过滤谓词st.state=“CA”,并且包含限定products维度表104的过滤谓词pr.cost>10,但是不包含sales表106的AMOUNT列或DATE列上的任何过滤谓词。
仅基于事实表的列聚类事实表的关系型数据库管理系统在执行星型联接时可能执行了浪费的事实表的磁盘扫描。磁盘扫描可能是浪费,因为在没有事实表列上的任何过滤的情况下,事实表的聚类无所帮助,并且可能需要扫描事实表的所有磁盘块。具体而言,即使sales表106基于“date”进行聚类,与其中st.state=“CA”的stores表102的行以及与其中pr.cost>10的products表104的行联接的sales表106的行也可能在sales表106内随机地分布。
在本节中描述的方法是可以实行的方法,但不一定是先前已被构想或实行的方法。因此,除非另外指出,否则不应当假设本节中描述的任何方法仅仅因为它们被包括在本节中就被算作为现有技术。
附图说明
附图中:
图1是说明示例星型架构的框图;
图2是根据本发明实施例的用于处理带有聚类子句的DDL语句的数据库服务器组件的框图;
图3说明示例线性条目表;
图4是包含磁盘块的磁盘一部分的框图;
图5说明根据本发明的实施例的示例区域地图(zonemap)表和包含具有分组成区域的磁盘块的图4的框图;
图6说明根据本发明的实施例的可能的维度区域地图的表结构;
图7是根据本发明的实施例由数据库服务器执行的磁盘扫描的流程图;
图8说明根据本发明的实施例的可能的维度区域地图的表结构;
图9是说明本发明的实施例可以在其上实现的计算机系统的框图。
具体实施方式
描述了用于在关系型数据库管理系统中聚类表的方法和装置。在以下描述中,为了解释的目的,阐述了众多具体的细节,以便提供对本发明的透彻理解。但是,很显然,本发明没有这些具体细节也可以实践。在其它情况下,众所周知的结构和设备以框图形式示出,以避免不必要地混淆本发明。
总体概述
提供了一种技术,用于解决与关系型数据库管理系统中聚类事实表的现有方法相关联的问题。根据本发明的一个方面,数据库服务器基于来自一个或多个维度表的一列或多列的值聚类数据库中的事实表。更具体地,行以排序的顺序存储在事实表中,并且行排序的顺序是基于一个或多个维度表的一列或多列中的值。用户在“聚类标准”中规定其中排序顺序所基于的维度表的列。数据库服务器响应于特定用户发起的对事实表的数据库操作,使用聚类标准来自动地以排序的顺序存储事实表中的行。
为了解释的目的,在聚类标准中规定的并且排序顺序所基于的维度表的列在本文被称为“聚类维度列”。其中在聚类标准中规定的聚类维度列的维度表在本文被称为“聚类维度表”。
本文提供了各种技术,用于基于在聚类标准中规定的聚类维度列以排序的顺序存储事实表中的行。一般而言,过程包括数据库服务器生成“聚类”查询,其中查询(a)选择一组“源”事实表行,(b)在源事实表行和聚类维度表之间执行联接,以产生一组联接的行,其中一组联接的行中的每一行对应于最多一个源事实表行,(c)利用聚类维度列的值作为排序键排序联接的行,以及(d)以排序的顺序在事实表中存储源事实表行。很明显,用作排序事实表行的基础的来自聚类维度列的值没有存储在事实表中。
如在下文更详细解释的,源事实表行可以从事实表中或从其它来源选择(例如,从外部表)。联接的行可以以线性顺序或以交错顺序进行排序。交错排序可以基于诸如Z-order空间填充曲线或Hilbert空间填充曲线的空间填充曲线。利用聚类维度列的值作为排序键排序联接的行使得概念上彼此相关的源事实表行被存储成在事实表内物理上彼此靠近。因为概念上相关的事实表行基于聚类维度列的值被存储成物理上彼此靠近,所以在事实表的磁盘扫描期间基于聚类维度列上过滤谓词的I/O删减是可能的。
根据本发明的另一个方面,在数据库中生成了访问结构,其允许数据库服务器基于查询中限定一个或多个维度表的过滤谓词避免扫描事实表的磁盘块。这种访问结构在下文被称作“维度区域地图(zonemap)”。通常,维度区域地图生成过程包括将事实表分成下文中称作“区域”的一组连续磁盘块。对于每个区域,确定用于维度表的一个或多个“分区”列中每一个的最小值和最大值并在区域地图中对其进行维护。对于包含分区列上过滤谓词的查询,可以将谓词值与用于为区域维护的分区列的最小值和最大值进行比较,以确定该区域是否包含满足过滤谓词的任何事实表的行。由于为区域维护的最小和最大值是基于维度表的列的值确定的,因此,在事实表的磁盘扫描期间基于限定维度列的过滤谓词的I/O删减是可能的。
聚类标准
如上所述,星型查询通常利用维度表上的过滤谓词限定维度表。例如,在以下的示例星型查询中,countries维度表用两个过滤谓词进行限定,一个在countries维度表的region列上并且另一个在countries维度表的subregion列上。
SELECT countries.region,countries.subregion,countries.name,
sum(sales.amount_sold)
FROM sales JOIN countries ON sales.country_id=
countries.country_id
WHERE countries.region=‘Europe’AND countries.subregion=
‘Eastern Europe’
GROUP BY countries.region,countries.subregion,countries.name
另外,如前面提到的,执行星型查询的性能瓶颈可能是事实表和维度表之间的联接。在星型查询中的过滤谓词限定维度表的情况下,通过I/O删减减少星型联接中包含的事实表的行数将是有益的。为了促进这种I/O删减,用户使概念上相关的事实表行在事实表内物理上存储得彼此靠近,其中“概念上相关”可以基于一个或多个维度表的一列或多列中的值。
除了促进I/O删减之外,物理上将概念上相关的事实表行在事实表内存储得彼此靠近还促进事实表的数据压缩以及事实表的索引。将概念上相关的事实表行在事实表内存储得彼此靠近会导致事实表行的一列或多列中的值彼此相似,从而导致这些列值更好的压缩。例如,如果事实表行的列中的值以排序的顺序存储在磁盘上,则运行长度编码压缩算法在压缩这种列中的数据时能够非常高效。在事实表的一个或多个聚类列上创建索引有利于经这种索引提高访问事实表数据的性能。提高事实表数据可访问性的原因是由于具有相同索引键值的事实表行在磁盘上物理上接近。例如,由于事实表的聚类,如果具有特定索引键值的所有事实表行都一起存储在磁盘块(或一组磁盘块)中,则经索引检索这种事实表行会带来减少的磁盘I/O量。
在本文描述的某些实施例中,提供了用于基于一个或多个维度表的一列或多列中的值聚类事实表的技术。但是,应当理解,该技术也可以基于一个或多个维度表的一列或多列中的值和事实表的一列或多列中的值应用到聚类事实表,或仅基于事实表的一列或多列中的值应用到聚类事实表。
用于聚类标准的DDL接口
根据本发明的一个方面,提供了数据定义语言(DDL)接口,用户能够通过它规定聚类标准与事实表相关联。聚类标准可以存储在数据库中作为事实表的元数据。如以下更详细描述的,当生成聚类查询来聚类事实表时,聚类标准从数据库中读取。
在一种实施例中,附加的“聚类”子句被添加到定义事实表的DDL语句。这种DDL语句可以用在创建事实表、改变它的定义、或定义,改变或修改事实表的列或约束的任何其它DDL动作的上下文中。因此,当定义事实表时,用户可以方便地将聚类标准与事实表相关联。例如,以下创建sales表的示例性DDL语句包括由关键字“聚类”指示的聚类子句:
在这个描述中,用户规定的聚类标准的例子以示例SQL语句的形式提供。应当理解,示例SQL语句的语法仅仅是示例性的。本发明不限于例子的语法并且可以使用传递相同聚类标准语义的其它语法。
聚类标准-聚类维度列和联接标准
聚类标准用来基于一个或多个维度表中的值规定用于聚类事实表的多个不同的聚类选项。在一种实施例中,聚类标准规定一个或多个聚类维度列和联接标准。该一个或多个聚类维度列是用户希望通过其排序事实表行的维度表的列,其中排序事实表行或者通过线性排序或者通过交错排序。聚类维度列通常是用户预期星型查询包含其上过滤谓词的维度表的列。
在本文的例子中,聚类维度列在聚类子句的子子句中作为排序方法指示(sortingmethod directive)的参数规定。排序方法指示在以下更详细地描述。例如,在以上聚类子句中,聚类维度列countries.region、countries.subregion和countries.name被规定为排序方法指示BY LINEAR ORDER的参数。但是,也可以使用规定维度表的列的其它方式,其中用户希望通过其排序事实表的行,并且本发明不限于这些例子的方式。例如,在隐含缺省排序方法指示的情况下,聚类维度列可以由用户在聚类标准中规定,而无需任何排序方法指示。
联接标准规定事实表的外键列和聚类维度表中的唯一键列,其中用户希望通过其将事实表与聚类维度表联接。例如,以上示例DDL语句中的聚类子句规定聚类维度列countries.region、countries.subregion和countries.name,并且规定用于利用sales表的country_id外键列和countries表的country_id唯一键列将sales事实表与countries聚类维度表等值联接(equi-joining)的联接标准。等值联接是特殊类型的联接,其中在联接谓词中只使用了等于比较运算符(例如,“=”)并且没有使用范围比较运算符(例如,“>”,“<”)。联接标准用来制定聚类查询,如以下更详细描述的。由于联接标准中只规定了聚类维度表中的唯一键列,因此来自事实表的行将被聚类查询用来自每个聚类维度表的最多一行进行联接并且来自事实表的行将对应于由聚类查询构成的一组联接的行中的最多一行。
聚类标准可用来规定用于基于多于一个维度聚类事实表的聚类选项,其中每个维度对应于不同的维度表。在这种情况下,联接标准由用户提供,用于联接事实表和每个不同的维度表,如在以下示例聚类子句中,其规定聚类维度列promotions.subcategory和products.subcategory并且还规定用于利用sales表的promo_id外键列和promotions表的promo_id唯一键列联接sales事实表和promotions聚类维度表的联接标准。聚类子句还规定用于利用sales表的prod_id外键列和products表的prod_id唯一键列联接sales事实表和products聚类维度表的联接标准。
聚类标准-排序方法
根据本发明的实施例,聚类标准规定在由聚类查询构成的一组联接的行上执行的排序类型。由聚类查询执行的排序类型确定由聚类查询选择的一组源事实表行如何在事实表内进行聚类。一组源事实表行如何在事实表内进行聚类确定可以通过基于查询中过滤谓词的I/O删减实现的I/O效率。一般而言,排序类型是两种通用类型之一:线性的或交错的。在这两者的情况下,排序可以基于聚类维度列。
聚类标准-线性排序方法
利用线性排序,通过聚类查询构成的联接的行基于联接的行中聚类维度列的值以升序或降序顺序进行排序。如果在聚类标准中规定了多于一个的聚类维度列,则如由用户在聚类标准中规定的多个聚类维度列的序列定义排序的联接的行的组织。即,联接的行首先利用该序列中第一个聚类维度列进行排序,然后那个排序的一组联接的行利用序列中第二个聚类维度列进行排序,依此类推。源事实表行然后以排序的线性顺序存储在连续磁盘块的事实表内。
线性排序可以在聚类子句中指定,其中聚类维度列的序列被规定为线性排序顺序指示的参数。作为规定线性排序顺序的聚类子句的例子,以下创建sales表的DDL语句中的聚类子句规定由聚类查询构成的一组联接的行要首先基于联接的行的countries.region列中的值进行排序,然后一组排序的联接的行要基于countries.subregion列中的值进行排序,然后该一组排序的联接的行要通过countries.name列中的值进行排序。
利用线性排序顺序,当星型查询包含聚类标准中规定的聚类维度列序列前缀上的过滤谓词时,例如,如果星型查询包含countries.region列上的过滤谓词,则能够实现最大的I/O删减益处。但是,当星型查询包含仅仅聚类维度列的后缀上的过滤谓词或不包含任何聚类维度列上的过滤谓词时,利用线性排序只能实现有限的I/O删减益处或没有实现I/O删减益处。因此,通常只当大多数星型查询包含聚类维度列序列前缀上的过滤谓词时或当期望除I/O删减之外的诸如数据压缩(例如,通过运行长度编码)的聚类益处时,使用线性排序顺序。如果需要更大的I/O删减灵活性,则用户可以选择聚类标准中的交错排序方法。
聚类标准-交错排序方法
利用交错排序方法,事实表上的I/O删减可以在查询中的某个过滤谓词上独立于查询中的其它过滤谓词来执行。特别地,I/O删减可以针对查询中聚类维度列上的过滤谓词执行,而不管该聚类维度列在聚类标准中的位置。例如,利用以下规定交错排序顺序的聚类标准,在sales表上的I/O删减可以独立于彼此在promotions.subcategory和products.subcategory列中的一列或多列上执行。
可以使用各种不同的方法来实现事实表中存储的行的交错排序。一般而言,方法包括使用诸如Z-order曲线或Hilbert空间填充曲线的空间填充曲线,这些曲线具有如下属性,即,有限n-维空间中彼此靠近的点被映射到同样彼此接近的一维的值。概念上,n-维空间被分成n-维的“立方体”单元(cell)。按照惯例,n-维空间的分区被称为“立方体”,尽管维度的数量n可以是两或大于三。立方体的每个单元被分配值的范围,n维中的每一维都有一个值的范围。维度的数量n等于在聚类标准中规定的聚类维度列的数量。
对于要以交错顺序在事实表中存储的一组源事实表行来说,该一组源事实表行中的每个源事实表行都基于由对应于源事实表行的聚类查询构成的联接的行中聚类维度列的值和分配给单元的值的范围被映射到立方体中的单元。多于一个的源事实表行可以被映射到立方体中的单元。立方体中的一些单元可能没有任何源事实表行映射到它们。空间填充曲线对单元实行线性排序。分配给单元的源事实表行以由空间填充曲线实行的线性顺序存储在事实表中,其具有以下效果,即,在n-维立方体中彼此靠近的概念上相关的行在事实表内也彼此靠近。
在以上例子中,缺省的空间填充曲线通过指示BY INTERLEAVED ORDER暗示。缺省的空间填充曲线可以是许多已知空间填充曲线中的任何一个,诸如Z-order空间填充曲线或Hilbert空间填充曲线。作为替代,具体使用的空间填充曲线可以在聚类标准中明确规定。例如,不是BY INTERLEAVED ORDER,相反可以规定BY HILBERT ORDER或BY ZORDER。
关于用于多维聚类的Z-order空间填充曲线使用的进一步信息可以在以下找到:Morton,G.M,A Computer Oriented Geodetic Data Base and A New Technique in FileSequencing,国际商业机器公司,1966年。关于用于多维聚类的Hilbert空间填充曲线使用的进一步信息可以在以下出版物的第14章找到:Warren,Henry S.,Hacker’s Delight,Addison-Wesley Professional,2003年。
聚类标准–何时聚类
根据本发明的一种实施例,聚类标准规定何时要执行事实表的聚类。特别地,用户可以规定哪些动作触发事实表的聚类。一般而言,有两种类型的动作可以触发事实表的聚类。一种类型的动作是将数据加载到事实表中。利用这种类型,添加到事实表中的数据按照与事实表相关联的聚类标准进行聚类。另一种类型的动作是将数据从事实表的一个存储位置移动到另一个存储位置。移动的数据按照与事实表相关联的聚类标准进行聚类。
能够触发事实表聚类的数据加载类型动作的例子是提交数据建模语言(DML)语句来将行添加到事实表。INSERT语句是用于将行添加到表的DML语句的例子。例如,聚类sales事实表可以在提交以下INSERT语句时被触发:
INSERT INTO sales SELECT promo_id,prod_id,...amount_soldFROM sales_external
响应于接收到以上INSERT语句,由SELECT子子句从sales_external表中选择的行将是由自动生成的聚类查询选择并以排序的顺序存储在sales事实表中的源事实表行。
能够触发事实表聚类的数据移动类型动作的例子是事实表上的分区维护操作。很一般地,分区是表的所有行的严格子集,其与表的其它行共享相同的列和约束定义,但是可以具有与其它行不同的物理属性。例如,表的两个分区可以存储在单独的存储设备上。能够触发事实表聚类的分区维护操作包括将事实表的分区从一个数据存储位置移动到另一个位置。当移动事实表的分区触发聚类时,源事实表行是要被移动的分区的所有行。
能够触发事实表聚类的数据移动类型动作的另一个例子是事实表的在线重定义。“源”表的在线重定义一般包括定义和创建临时表并将源表的数据拷贝到临时表中,同时在复制期间允许源表可以被访问以进行读和写操作。临时表可以用相对于源表来说新的结构定义。例如,临时表可以删除列、添加列或从源表中重命名列。此外,从源表拷贝到临时表的数据可以被转换。在数据被拷贝到临时表时所做的对源表的更新被存储在日志中。在拷贝期间,日志中的数据可以与临时表进行同步。一旦拷贝完成,源表和临时表就被短暂地锁定用于排它访问,以将日志中任何剩余的变化与临时表进行同步并最终完成重定义。在重定义最终完成之后,临时表是“新的”源表并且“老的”源表可以丢弃。
为了在事实表的在线重定义期间进行聚类,由聚类查询选择的源事实表行是源表的行。与源表相关联的聚类标准在拷贝源表到临时表时被用来排序源表的行。源表的排序的行以排序的顺序存储在临时表中。源表的排序的行也可以进行由在线重定义定义的任何数据转换。存储在临时表中的行也可以在拷贝期间当源表日志与临时表同步时进行聚类。如将源表的行拷贝到临时表时那样,当源表日志中的行与临时表进行同步时,与源表相关联的聚类标准被用来在临时表中聚类源表日志的行。
何时在事实表上发生聚类可以由用户在聚类子句中规定。例如,以下创建sales表的DDL语句中聚类子句规定聚类应该在数据加载动作(例如,当行被插入到sales表中时)和数据移动动作时(例如,当sales表被分区或当sales表被在线重定义时)发生。
这里,关键字序列“YES ON LOAD”用来指示sales表的聚类应该在数据加载动作时发生。关键字序列“YES ON DATA MOVEMENT”用来指示sales表的聚类还应该在数据移动动作时发生。缺省地,如果聚类在数据加载动作和数据移动动作时执行,则关键字序列“NO ONLOAD”和/或“NO ON DATA MOVEMENT”可用来选择性地禁用缺省聚类选项。当然,也可以使用其它的语法来传达相同的语义。
处理DDL语句中的聚类子句
如上所述,定义事实表的DDL语句可能包含规定聚类标准的聚类子句。例如,以下DDL语句包含将聚类标准添加到sales表的聚类子句。
ALTER TABLE sales ADD CLUSTERING
sales JOIN promotions ON(sales.promo_id=promotions.promo_id)
JOIN products ON(sales.prod_id=products.prod_id)
BY INTERLEAVED ORDER(promotions.subcategory,
products.subcategory)
YES ON LOAD YES ONDATA MOVEMENT
用于处理DDL语句中聚类子句的数据库服务器组件在图2中进行说明。首先,接收到定义事实表并带有聚类子句的DDL语句201。语句201可以从各种不同的源接收。例如,语句201可以通过命令行或图形用户界面从用户接收。作为替代,语句201可以从另一个计算进程中接收,例如,将语句201通过网络发送到数据库服务器的远程计算进程。这些只是语句201可能来源的一些例子,并且本发明不限于从中可以接收语句201的任何特定源。
在接收到语句201时,语句201被提供给解析例程202。解析例程202解析语句201,以产生表定义控制结构203。除表定义控制结构203中其它可能的信息之外,结构203还规定DDL语句201中聚类子句的一个或多个元素。结构203的这些元素可以包括任何聚类指示,诸如事实表的聚类是否在数据加载动作时、数据移动动作时或数据加载和数据移动动作这两者时发生。结构203的元素也可以包括一个或多个聚类维度列、一个或多个聚类维度表以及在聚类子句中规定的联接标准。
表定义执行驱动器204使用结构203来验证聚类子句并在数据库中为表示聚类标准的定义的表创建表元数据。为了进行验证,驱动器204验证聚类维度列和聚类维度表的存在。如果聚类维度表中的一个或聚类维度列中的一个在数据库中不存在,则驱动器204可以利用错误拒绝语句201。驱动器204还验证联接标准。联接标准的验证包括在引用聚类维度表的事实表的外键列上执行外键验证。外键验证的至少一部分包括驱动器204验证在联接标准中引用的聚类维度表的所有联接列都具有唯一键约束并且由该联接标准规定的联接都是等值联接。执行这种验证是确保当聚类查询基于联接标准联接源事实表行和聚类维度表时,在联接的行集合中没有重复的源事实表行。如果驱动器204确定聚类维度列的联接列中的一个不具有唯一键约束,则驱动器204可以利用错误拒绝语句201。
假设语句201没有错误,则一旦被验证,驱动器204就将元数据存储在数据库中表示聚类标准。例如,驱动器204可以在数据库的数据字典表中或者在关于数据库数据的另一个信息储存库中存储元数据。
用于交错排序的函数
根据本发明的一种实施例,提供了用于在聚类查询中使用来将行以交错顺序存储在事实表中的函数。该函数接受一至四个参数(表达式),并且返回原始串作为输出。
raw_string=ORA_CLUSTERING(expr1[,expr2,expr3,expr4])
函数ORA_CLUSTERING把参数当作二进制数据并且评估这些二进制参数上的空间填充曲线(例如,Hilbert空间填充曲线或Z-order函数)。评估是基于参数二进制表示的位混合。特别地,从每个参数取第一位,然后从每个参数取第二位,然后从每个参数取第三位,依此类推,以创建作为结果的位串。为了给每个参数一致的权重,可以用填充值(例如,字节值0x00)将参数填充到其最大长度。然后,返回的原始串的大小将是作为填充的参数的长度之和。为了效率,函数的参数可以被截取成最大允许的字节数(例如,1000)。
在加载时聚类事实表
如前面提到的,与事实表相关联的聚类标准可以规定聚类要在加载到事实表中的行上执行。将行加载到表中的典型方法是利用包含SELECT子查询的INSERT DML语句。例如,以下INSERT语句基于选自sales_external表中的行将行附加到sales表。
INSERT/*+APPEND*/INTO sales SELECT promo_id,PROD_ID,...amount_soldFROM sales_external.
根据本发明的一种实施例,将行加载到与聚类标准相关联的表的DML语句被自动地转换成聚类查询。执行聚类查询而不是原始DML语句来将行以排序的顺序加载到与聚类标准相关联的表中。生成的聚类查询包括选择源事实表行的原始DML语句的select子查询、聚类标准的联接标准以及通过聚类维度列并且以由聚类标准指定的排序顺序(例如,线性或交错排序顺序)排序源事实表行的ORDER BY子句。联接标准可以按需进行转换,使得事实表和维度表之间的联接是左外联接(left outer join),其中事实表是左侧表,使得由聚类查询构成的一组联接的行中没有丢失的源事实表行。
作为例子,考虑以下创建sales表的DDL语句中规定的聚类标准。
这里,源事实表行要基于promotions维度表的subcategory列和products维度表的subcategory列以线性顺序在sales事实表中进行聚类。
现在假设以下将行加载到sales事实表中的DML语句被提交给数据库服务器。
INSERT INTO sales SELECT promo_id,prod_id,...
amount_sold FROM sales external
在接收到这个DML语句时,数据库服务器可以自动地将该DML语句转换成以下聚类查询。
INSERT INTO sales
SELECT promo_id,prod_id,...amount_sold
FROM sales_external
LEFT OUTER JOIN promotions ON(sales.promo_id=promotions.promo_id)
LEFT OUTER JOIN products ON(sales.prod_id=products.prod_id)
ORDER BY promotions.subcategory,products.subcategory
在这个示例聚类查询中,包括了原始DML语句的select子查询。因此,聚类查询将选择与原始DML语句会选择的相同的一组源事实表行。联接标准已被转换成sales事实表与promotions和products维度表之间的强制左外联接。添加了order by子句以按照聚类标准中的排序指示BY LINEAR ORDER通过promotions.subcategory和products.subcategory列的值以线性顺序排序源事实表行。
如所讨论的,源事实表行可以基于空间填充曲线以线性顺序或交错顺序进行排序。为了这样做,数据库服务器可以生成调用聚类查询的ORDER BY子句中的CLUSTERING函数的聚类查询。例如,假设以上聚类标准不是规定BY LINEAR ORDER,而是规定BYINTERLEAVED ORDER,则数据库服务器可以自动地将DML语句转换成以下聚类查询。
INSERT INTO sales
SELECT promo_id,prod_id,...amount_sold FROMsales_external
LEFT OUTER JOIN promotions ON(sales.promo_id=promotions.promo_id)
LEFT OUTER JOIN products ON(sales.prod_id=products.prod_id)
ORDER BY ORA_CLUSTERING(promotions.subcategory,products.subcategory)
这个聚类查询类似于当聚类标准中规定BY LINEAR ORDER时生成的聚类查询。这个聚类查询的不同之处在于ORA_CLUSTERING函数在ORDER BY子句中调用以实现源事实表行的交错排序顺序。
区域地图(ZONEMAPS)
根据本发明的实施例,表扫描期间的I/O删减在数据库服务器中通过使用区域地图得到促进。一般而言,区域地图是数据库访问结构,其允许数据库服务器在扫描表时跳过表的某些磁盘块的磁盘扫描,因为基于区域地图,已知跳过的磁盘块不会包含与正在为其执行表扫描的查询相关的数据。
在高的级别,为表生成区域地图包括将表的磁盘块分成称作“区域”的连续的磁盘块集合。对于每个区域,确定兴趣列的最小和最大值。根据本发明的实施例,兴趣列可以是正在为其生成区域地图的表的列(例如,事实表的列)或其它表的列(例如,维度表的列)。正在为其生成区域地图的表在下文中称作“分区表”。区域地图为其维护最小和最大值的“兴趣”列在下文中称作区域地图的“分区列”。根据本发明的实施例,区域地图的分区列不必是(但可以是)分区表的列。
当数据库服务器执行利用具有常量谓词值V的过滤谓词限定分区列C之一的查询时,数据库服务器可以将值V与为区域确定的列C的最小值和最大值进行比较,以确定该区域是否可能包含满足过滤谓词的数据。如果该区域不可能满足查询的任何过滤谓词,则该区域的磁盘块可以在分区表的表扫描期间被跳过。
过滤谓词可以是“分区列C<谓词运算符>常量V”形式的关系谓词,其中<谓词运算符>是相等运算符(例如,“=”)、小于或等于运算符(例如,“<=”)、小于运算符(例如,“<”)、大于运算符(例如,“>”)、大于或等于运算符(例如,“>=”)或不等于运算符(例如,“<>”)。在谓词运算符是等于运算符的情况下,如果谓词值V小于用于该区域的列C的最小值和如果谓词值V大于用于该区域的列C的最大值,则该区域不可能满足过滤谓词。在谓词运算符是小于运算符的情况下,如果谓词值V小于或等于用于该区域的列C的最小值,则该区域不可能满足过滤谓词。在谓词运算符是小于或等于运算符的情况下,如果谓词值V小于用于该区域的列C的最小值,则该区域不可能满足过滤谓词。在谓词运算符是大于运算符的情况下,如果谓词值V大于或等于用于该区域的列C的最大值,则该区域不可能满足过滤谓词。在谓词运算符是大于或等于运算符的情况下,如果谓词值V大于用于该区域的列C的最大值,则该区域不可能满足过滤谓词。在谓词运算符是不等于运算符的情况下,如果用于该区域的列C的最小值和最大值相等并且谓词值V等于该最小和最大值,则该区域不可能满足过滤谓词。
作为替代,过滤谓词可以包含指定可替代常量值列表的IN列表,例如,“wherecountries.region IN('Western Europe','Eastern Europe')”。在过滤谓词包含IN列表的情况下,如果IN列表中的每个谓词值V小于用于该区域的列C的最小值和如果IN列表中的每个谓词值V大于用于该区域的列C的最大值,则该区域不可能满足过滤谓词。
作为还有的另一种替代,过滤谓词可以包含具有常量字符串值或作为通配符前缀的常量字符串值的LIKE运算符,例如,“countries.region LIKE'Western%'”。在过滤谓词包含具有常量字符串值或作为通配符前缀的常量字符串值的LIKE运算符的情况下,如果被LIKE运算符覆盖的字符串值区间的上界小于用于该区域的列C的最小值或者如果被LIKE运算符覆盖的字符串值区间的下界大于用于该区域的列C的最大值,则该区域不可能满足过滤谓词。例如,如果上界串“Western”小于用于区域的列C的最小值或者如果下界串“Western”大于用于区域的列C的最大值,则该区域不可能满足“countries.region LIKE'Western%'”过滤谓词。
区域地图实例
作为利用区域地图来促进数据库服务器中I/O删减的例子,考虑图3的数据库表300。表300有五列,命名为order_key(顺序键)、ship_date(运送日期)、receipt_date(接收日期)、destination(目的地)和quantity(数量)。表300有八行,在图3中标记为301-308。实际的实施例可能有多得多的行,数量为数百万、数十亿、甚至更多。
现在参考图4,它说明了表300的行301-308可以如何以排序的顺序存储在磁盘400的一部分上,即磁盘块401-404中。磁盘部分400可以对应于磁盘的范围、片段、表空间或其它逻辑部分。磁盘部分400被数据库服务器逻辑地视为以线性顺序布置的单独可寻址的一组磁盘块。磁盘部分400的磁盘块按照其线性顺序被数据库服务器连续地编号。当表的行以排序的顺序(例如,线性顺序或交错顺序)存储在连续的磁盘块中时(例如,表300的行301-308存储在磁盘块401-404中),这些行被称为在表中被“聚类”。更一般而言,该表被称为“聚类”的表。
在这个例子中,表300的行301-308基于ship_date列的值以线性排序顺序存储。特别地,行301和302存储在磁盘块401中、行303和304存储在磁盘块402中、行305和306存储在磁盘块403中并且行307和308存储在磁盘块404中。实际的实施例中每个磁盘块可以具有更多或更少的行和/或每个磁盘块可以具有不同数量的行或在表内具有包含不同数量磁盘块的磁盘块。另外,表的行可以存储在多得多的磁盘块中,数量为数十、数百、数千、数百万或更多。还有,磁盘块可以存储多于一个表的行。
继续说明用于I/O删减的区域地图的使用,用于表300的区域地图可以构造成其中每个区域由两个磁盘块组成。区域地图的每个区域的最大磁盘块数量在本文中称为区域地图的“区域地图规模”。在一种实施例中,区域地图的区域地图规模是用户可配置的。一般而言,选择的区域地图规模是在最小化区域地图的区域数量和最大化I/O删减效率之间的权衡,其中最小化区域地图的区域数量时,区域地图规模相对较大,最大化I/O删减效率时,区域地图规模相对较小。
在一种实施例中,用户规定区域地图缩放因子S作为大于零的整数值。然后数据库服务器将区域地图规模计算为2S(即,2的S次幂,其中S>0)。例如,如果用于区域地图的区域地图缩放因子是10,则该区域地图的区域地图规模是1024个磁盘块。规定区域地图缩放因子并计算区域地图规模的其它方式也是可能的并且本发明不限于任何特定的方式。另外,数据库服务器可以基于各种因素计算用于区域地图的缺省区域地图规模,其中因素包括分区表的行的数量、分区表的磁盘块的数量以及磁盘块大小。
返回到例子,图5说明表300上的区域地图500。区域地图500可以表示为表,并且可以如此存储在数据库中。在这个例子中,区域地图缩放因子是1,并且区域地图规模是21或2。因此,图4的四个磁盘块401-404被分成如图5中示出的两个区域501和502。每个区域501和502包含两个连续的磁盘块。特别地,区域501包含连续的磁盘块401和402,并且区域502包含连续的磁盘块403和404。
区域地图500的每一行511和512对应于区域地图的区域501和502。特别地,行511对应于区域501并且行512对应于区域502。区域地图500包括区域磁盘块范围列513,其为每个区域指定被该区域覆盖的一组连续磁盘块中的第一块。更一般而言,列513为区域地图500的每个区域指示或指定被区域覆盖的连续磁盘块的范围。例如,假设磁盘块401-404被数据库服务器分别连续编号为1,2,3和4,则列513中的值指示区域501覆盖连续的磁盘块401和402,并且区域502覆盖连续的磁盘块403和404。区域地图500的列还包括用于在其上构造区域地图500的每个分区列的最小值列514和最大值列515。
基于区域地图500并且给定以下具有ship_date列上的过滤谓词的查询,执行表300的全表扫描的数据库服务器可以跳过磁盘块3和4的扫描,因为基于区域地图500的行512中列514B和515B中存储的最小和最大值,那些磁盘块不会包含与查询相关的行。而是,只有磁盘块1和2需要扫描。
SELECT*FROM lineitem WHERE ship_date='01-01-2008'
维度区域地图
“维度区域地图”是基于维度表的至少一列的聚类事实表的区域地图。事实表的维度区域地图基于查询中维度表的列上的过滤谓词促进了事实表的I/O删减。根据一种实施例,维度区域地图由“维度区域地图查询”创建。该维度区域地图查询以物化(materialized)视图的形式在数据库中创建区域地图。为了填充该视图,维度区域地图查询从聚类事实表中选择行并且将它们与一个或多个维度表的行联接。联接基于事实表的外键列和维度表的唯一键列。
根据本发明的一个方面,维度区域地图查询通过调用“区域标识符分配”函数将选择的事实表行分组成区域。区域标识符分配函数将选自事实表的行的行标识符映射到维度区域地图的区域。更具体而言,在同一N个连续数据块内选自聚类事实表的所有行被映射到同一区域,其中N基于维度区域地图的区域地图规模。此外,维度区域地图查询为每个区域每个分区列计算最小值和最大值并将计算的值存储在物化视图中。
例如,考虑按照在以下CREATE TABLE DDL语句中规定的以下聚类标准基于countries(国家)维度表的region(地区)和subregion(子地区)列聚类的sales事实表。
为了利用基于以上聚类标准聚类的sales事实表,sales事实表上的维度区域地图可以通过以下维度区域地图查询生成。
CREATE MATERIALIZED ZONEMAP sales_zmap AS
SELECT SYS_OP_ZONE_ID(f.rowid),
MIN(c.region),MAX(c.region),
MIN(c.subregion),MAX(c.subregion)
FROM sales f LEFT JOIN countries c ON(f.country_id=c.country_id)
GROUP BY SYS_OP_ZONE_ID(f.rowid)
这里,执行sales事实表和countries维度表之间的左外联接,以确保考虑了区域地图中所有选自sales事实表用于联接的行。SYS_OP_ZONE_ID函数是区域标识符分配函数。SYS_OP_ZONE_ID函数将输入行标识符映射到区域标识符。根据SYS_OP_ZONE_ID,属于sales事实表的连续N个数据块集合的所有行标识符被映射到同一区域,其中N是区域地图规模。GROUP BY子子句用来为每个区域的两个分区列(countries.region和countries.subregion)正确地计算最小值和最大值。结果产生的物化视图sales_zmap将具有五列,一列存储区域识别符并且两列用于两个分区列中的每一列,存储每个区域计算出的最小和最大值。
sales_zmap物化视图的列结构在图6中进行说明。如所示出的,物化视图600有一列用于存储区域标识符(zone_id)和两列用于countries.region和countries.subregion列中的每一列,存储为区域计算出的最小和最大值。视图600的每一行对应于sales_zmap维度区域地图的一个区域。
如提到的,当执行包含维度表列上过滤谓词的星型查询时,维度区域地图促进了事实表的扫描删减。例如,sales_zmap维度区域地图可以被数据库服务器使用,以在执行以下查询时促进I/O删减。
SELECT country_name,SUM(sales)
FROM sales f JOIN countries ON(sales.country_id=
countries.country_id)
WHERE countries.region=’Europe’AND
countries.subregion=’West Europe’
GROUP BY countries.name
这里,sales事实表上的查询包含两个过滤谓词,每个分区列上一个。这些列也是根据以上聚类标准以交错顺序聚类sales事实表的列。基于这个查询,其中任一过滤谓词值(即,“Europe(欧洲)”或“West Europe(西欧)”)都不在由维度区域地图中的最小和最大值设置的范围内的区域的扫描可以被跳过。
如果事实表的聚类是在多个维度表上,则维度区域地图的创建类似于其中事实表的聚类是在单个维度表上的情况。例如,如果sales事实表通过countries和products维度表而不仅仅是如以上例子中的countries维度表进行聚类,则可以执行以下维度区域地图查询区域地图,以生成用于sales表的维度区域地图。
CREATE MATERIALIZED ZONEMAP sales_zmap AS
SELECT SYS_OP_ZONE_ID(f.rowid),
MIN(countries.region),MAX(countries.region),
MIN(countries.subregion),MAX(countries.subregion),
MIN(products.category),MAX(products.category),
MIN(products.subcategory),MAX(products.subcategory)
FROM sales f LEFT JOIN countries c ON(f.country_id=c.country_id)
LEFT JOIN products p ON(f.prod_id=p.prod_id)
GROUP BY SYS_OP_ZONE_ID(f.rowid)
同单个维度的情况,维度区域地图查询执行事实表和每个维度表之间的左外联接。因此,事实表中的行以行在事实表中存储的顺序(例如,以聚类事实表时确定的线性或交错顺序)分配给区域地图的区域。特别地,在事实表的前N个磁盘块中存储的事实表的行被分配给区域地图的第一区域,在事实表的接下来N个磁盘块中存储的事实表的行被分配给区域地图的第二区域,依此类推,其中N是区域地图规模。
创建维度区域地图
如提到的,用于事实表的维度区域地图可以利用维度区域地图查询来创建。在内部,区域地图可以被数据库服务器实现为物化视图。根据本发明的一种实施例,维度区域地图查询是以关键字“CREATE MATERIALIZED ZONEMAP”开始的DDL语句。在本描述中根据特定的语法提供了CREATE MATERIALIZEDZONEMAP DDL语句的例子。当然,也可以使用其它的语法来传达相同的语义。
用于创建维度区域地图的维度区域地图查询具有多个特征。其一,维度区域地图查询可以引用事实表以及一个或多个维度表,每个维度表左外联接到事实表。即,在区域地图查询中,事实表是在到维度表的每个联接的左侧。这确保在区域地图中考虑了事实表的所有行。其二,维度区域地图查询包含select子查询。select子查询包含区域标识符分配函数的一次调用,连同事实表的列和/或维度表的列上的最小和最大函数对调用。其三,维度区域地图查询包含GROUP BY子句,该子句包含区域标识符分配函数的一次调用。区域标识符分配函数由数据库服务器实现并且接受事实表中行的标识符作为输入,并且返回其中输入事实表的行被分配到的维度区域地图的区域的标识符作为输出。该分配是基于其中存储行的事实表的磁盘块和维度区域地图的区域地图尺寸。维度区域地图查询的例子是:
CREATE MATERIALIZED ZONEMAP sales_zmap AS
SELECT SYS_OP_ZONE_ID(f.rowid),
MIN(countries.region),MAX(countries.region),
MIN(countries.subregion),MAX(countries.subregion),
MIN(products.category),MAX(products.category),
MIN(products.subcategory),MAX(products.subcategory)
FROM sales f LEFT JOIN countries c ON(f.country_id=c.country_id)
LEFT JOIN products p ON(f.prod_id=p.prod_id)
GROUP BY SYS_OP_ZONE_ID(f.rowid)
根据一种实施例,维度区域地图的区域地图缩放因子可以在维度区域地图查询中规定。例如,在以下维度区域地图查询中,规定区域地图缩放因子是8。因此,维度区域地图的每个区域将跨越最多28或256个磁盘块。在没有明确的区域地图缩放因子时,数据库服务器可以使用缺省的区域地图缩放因子。
CREATE MATERIALIZED ZONEMAP sales_zmap SCALE 8AS
SELECT SYS_OP_ZONE_ID(f.rowid),
MIN(countries.region),MAX(countries.region),
MIN(countries.subregion),MAX(countries.subregion),
MIN(products.category),MAX(products.category),
MIN(products.subcategory),MAX(products.subcategory)
FROM sales f JOIN countries c ON(f.country_id=c.country_id)
JOIN products p ON(f.prod_id=p.prod_id)
GROUP BY SYS_OP_ZONE_ID(f.rowid)
在另一种实施例中,响应于规定聚类标准的DDL语句,所述DDL语句包含作为聚类指示的子子句(sub-clause)的、创建维度区域地图的指示,维度区域地图查询被自动地生成,并且被数据库服务器执行。在一种实施例中,基于聚类标准创建维度区域地图的聚类标准指示包含关键字“WITH MATERIALIZED ZONEMAP”。例如,以下具有聚类标准的DDL语句创建“sales”事实表并且基于“countries”维度表的“countries.region”和“countries.subregion”列中的值按照线性排序顺序聚类“sales”事实表。该聚类标准还规定维度区域地图应该在聚类“sales”事实表时创建。
响应于以上DDL语句,在“sales”事实表已根据在DDL语句中规定的聚类标准聚类之后,数据库服务器可以创建以下维度区域地图查询来创建请求的区域地图:
CREATE MATERIALIZED ZONEMAP sales_zmap AS
SELECT SYS_OP_ZONE_ID(sales.rowid),
MIN(countries.region),MAX(countries.region),
MIN(countries.subregion),MAX(countries.subregion)
FROM sales LEFT JOIN countries ON(sales.country_id=countries.country_id)
GROUP BY SYS_OP_ZONE_ID(sales.rowid)
扫描删减
根据本发明的一种实施例,事实表的维度区域地图由数据库服务器在事实表的表扫描期间使用。维度区域地图被数据库服务器用于I/O删减。特别地,数据库服务器使用维度区域地图在表扫描期间跳过磁盘块的整个区域。由于维度区域地图的分区列可以是维度表的列,因此基于星型查询中维度表上过滤谓词的扫描删减是可能的。
图7是根据本发明的实施例利用维度区域地图的事实表的磁盘扫描700的流程图。在执行针对包含维度区域地图的一个或多个分区列上过滤谓词的事实表的星型查询或其它查询的上下文中,扫描700可以由数据库服务器执行。
查询可以包含仅仅事实表、仅仅一个或多个维度表、或在事实表和一个或多个维度表两者上的过滤谓词。分区列可以仅仅是事实表的列、仅仅是一个或多个维度表的列、或来自事实表和一个或多个维度表两者的列。
分区列可以是各种不同的数据类型,包括数值、时间戳、行标识符、浮点型、双精度型以及字符数据类型。如上所述,查询中分区列上的过滤谓词可以:(1)是“分区列C<谓词运算符>常量V”形式的关系谓词,其中<谓词运算符>是等于运算符(例如,“=”)、小于或等于运算符(例如,“<=”)、小于运算符(例如,“<”)、大于运算符(例如,“>”)、大于或等于运算符(例如,“>=”)或不等于运算符(例如,“<>”),(2)包含规定可替代常量值列表的IN列表,例如,“where countries.region IN(‘Western Europe’,‘Eastern Europe’)”,或(3)包含具有常量字符串值或作为通配符前缀的常量字符串值的LIKE运算符,例如,“countries.region LIKE'Western%'”。
查询可以利用联接词、析取或联接词与析取的混合将包括除分区列之外其它列上的过滤谓词合并成对应于该查询WHERE子句的表达式。取决于根据联接词和析取的WHERE子句表达式的构造,如果表达式中分区列上所有过滤谓词中的一个或多个所有都没有被满足,则表达式作为整体不可能被满足。例如,如果在表达式“WHERE countries.region='Europe'AND countries.subregion=‘West Europe’”中任一过滤谓词都没有被满足,则表达式作为整体不能被满足。作为另一个例子,如果在表达式“WHERE countries.region=‘Europe’OR countries.subregion='West Europe'”中两个过滤谓词都没有被满足,则表达式作为整体不能被该行满足。
如果所有都没有被满足则意味着表达式作为整体不能被满足的查询,其WHERE子句表达式中分区列上过滤谓词的最小集合在下文称为查询的“删减”过滤谓词集合。查询的删减过滤谓词集合可以是当WHERE子句表达式合并联接词中的过滤谓词时查询中分区列上所有过滤谓词的严格子集。当针对事实表的查询具有非空的删减过滤谓词集合时,可以在事实表的扫描700期间使用维度区域地图用于I/O删减。如果查询具有空的删减过滤谓词集合时,则维度区域地图不能为该查询提供I/O删减的益处。以下图7的扫描700的描述假设针对事实表执行的查询具有非空的删减过滤谓词集合。
初始地,扫描700在事实表的初始磁盘块开始(方框701)。初始磁盘块可以是事实表的第一个磁盘块,或对应于要扫描的事实表的行标识符规定区间中第一个行标识符的事实表的后续磁盘块。回忆事实表的磁盘块是被连续编号的。因此,存在构成事实表磁盘块的顺序次序。
接着,包含初始磁盘块的维度区域地图的区域被确定(方框702)。通常,这包括将初始磁盘块的磁盘块编号映射到覆盖包括初始磁盘块的磁盘块区间的维度区域地图的区域。为了该目的,数据库服务器可以维护区域标识符的磁盘块编号间的映射。作为一种可能的映射的例子,维度区域地图可以具有存储维度区域地图的每个区域中第一磁盘块编号的唯一键列。
作为磁盘块编号和维度区域地图区域之间可能的映射的例子,图8说明具有列813的维度区域地图800的列结构,其中列813存储用于维度区域地图800的区域的开始磁盘块编号。特别地,根据维度区域地图800,具有区域标识符1的区域在磁盘块编号1处开始并且具有区域标识符2的区域在磁盘块编号3处开始。由于磁盘块编号是连续的,因此,如果开始磁盘块编号列的值按顺序取得,则开始磁盘编号的值构成由维度区域地图的区域覆盖的磁盘块区间。另外,维度区域地图的区域地图规模在创建维度区域地图时被建立。因此,维度区域地图的区域地图规模在扫描700时是已知的。例如,维度区域地图800的区域地图规模是二(2)。因此,在维度区域地图800中,区域1覆盖磁盘块1至2并且区域2覆盖磁盘块3至4。
扫描700的剩余步骤703-709表示在维度区域地图的区域列表上迭代,其开始于在步骤702确定的第一区域并且继续到列表中的最后一个区域。列表中区域的顺序对应于被磁盘上的区域覆盖的磁盘块的顺序。因此,在区域列表上从第一区域迭代到最后一个区域表示从第一个区域的初始磁盘块开始到最后一个区域的最后一个磁盘块的事实表的顺序扫描。列表中的一些区域可以取决于维度区域地图中存储的最小和最大值被跳过。在步骤703,迭代从被设置为第一区域的当前区域变量开始。
在步骤704,做出检查,以确定当前区域变量是否引用维度区域地图的区域。如果初始磁盘块不在区域地图的任何区域内,则当前区域变量不可能引用维度区域地图的区域。在这种情况下,执行从初始磁盘块开始的事实表的全扫描(方框705)。如果已处理区域列表中的最后一个区域,则当前区域变量也不可能在步骤709之后引用维度区域地图的区域。在这种情况下,如果事实表没有更多的磁盘块要扫描,则扫描700结束,或者,扫描700在最后一个区域的最后一个磁盘块之后从第一磁盘块开始继续。
如果当前区域变量引用维度区域地图的区域,则在步骤705,数据库服务器确定当前区域的扫描是否可以被跳过。该确定是基于查询的一个或多个删减过滤谓词集合和如在维度区域地图中为当前区域所记录的用于分区列的最大和最小值做出的。特别地,对于集合中的给定删减过滤谓词,谓词值或删减过滤谓词的值与如在维度区域地图中为区域所记录的用于删减过滤谓词的分区列的最小和/或最大值进行比较。执行比较以确定当前区域是否可能包含满足删减过滤谓词的事实表的行。具体而言,如果删减过滤谓词规定维度表的分区列,则执行该比较来确定当前区域是否可能包含如果与维度表联接则满足删减过滤谓词的事实表的行。如果删减过滤谓词规定事实表的分区列,则执行比较来确定当前区域是否可能包含满足删减过滤谓词的事实表的行。因此,维度区域地图的分区列不限于仅仅事实表的列,而是可以包括维度表的列或只有维度表的列。如果集合中任何一个删减过滤谓词都不可能被当前区域的行满足,则扫描700可以跳过当前区域的磁盘块的磁盘扫描。如果集合中每个删减过滤谓词都可能被当前区域的行满足,则扫描700不能跳过当前区域并且执行当前区域的磁盘块的磁盘扫描。
当将谓词值或删减过滤谓词的值与如为维度区域地图中的区域所记录的用于删减过滤谓词的分区列的最小和/或最大值进行比较时,执行的比较取决于删减过滤谓词的类型。一般而言,删减过滤谓词可以是三种不同类型之一:(1)删减过滤谓词可以是“分区列C<谓词运算符>常量V”形式的关系谓词,(2)删减过滤谓词可以包含规定可替代常量值列表的IN列表,或(3)删减过滤谓词可以包含具有常量字符串值或作为通配符前缀的常量字符串值的LIKE运算符。
在删减过滤谓词是关系谓词的情况下,<谓词运算符>可以是等于运算符(例如,“=”)、小于或等于运算符(例如,“<=”)、小于运算符(例如,“<”)、大于运算符(例如,“>”)、大于或等于给运算符(例如,“>=”)或不等于运算符(例如,“<>”)。在谓词运算符是等于运算符的情况下,如果谓词值V小于用于当前区域的列C的最小值和如果谓词值V大于用于当前区域的列C的最大值,则当前区域不可能满足删减过滤谓词。在谓词运算符是小于运算符的情况下,如果谓词值V小于或等于用于当前区域的列C的最小值,则当前区域不可能满足删减过滤谓词。在谓词运算符是小于或等于运算符的情况下,如果谓词值V小于用于当前区域的列C的最小值,则当前区域不可能满足过滤谓词。在谓词运算符是大于运算符的情况下,如果谓词值V大于或等于用于该区域的列C的最大值,则该区域不可能满足删减过滤谓词。在谓词运算符是大于或等于运算符的情况下,如果谓词值V大于用于当前区域的列C的最大值,则当前区域不可能满足删减过滤谓词。在谓词运算符是不等于运算符的情况下,如果用于当前区域的列C的最小值和最大值相等并且谓词值V等于用于当前区域的列C的最小和最大值,则当前区域不可能满足删减过滤谓词。
作为替代,删减过滤谓词可以包含规定可替代常量值列表的IN列表,例如,“wherecountries.region IN('Western Europe','Eastern Europe')”。在删减过滤谓词包含IN列表的情况下,如果IN列表中每个谓词值V小于用于当前区域的列C的最小值和如果IN列表中每个谓词值V大于用于当前区域的列C的最大值,则当前区域不可能满足删减过滤谓词。
作为还有的另一种替代,删减过滤谓词可以包含具有常量字符串值或作为通配符前缀的常量字符串值的LIKE运算符,例如,“countries.region LIKE'Western'”,“countries.region LIKE'Western%'”,“countries.region LIKE'Western%abc'”或“countries.region LIKE'Western%abc%def'”。在这些例子中,串“Western”是常量字符串值并且‘%’字符是通配符。在删减过滤谓词包含具有常量字符串值或作为通配符前缀的常量字符串值的LIKE运算符的情况下,如果由LIKE运算符覆盖的字符串值的区间上界小于用于当前区域的列C的最小值或者如果由LIKE运算符覆盖的字符串值的区间下界大于用于当前区域的列C的最大值,则当前区域不可能满足删减过滤谓词。例如,如果上界串“Western”小于用于当前区域的列C的最小值或者如果下界串“Western”大于用于当前区域的列C的最大值,则当前区域不可能满足“countries.region LIKE'Western%'”删减过滤谓词。
如果查询中删减过滤谓词集合中的每个删减过滤谓词都可能被当前区域满足,则执行当前区域的磁盘块的磁盘扫描(步骤707)。如果当前区域是第一区域,则当前区域的扫描在初始磁盘块开始,并且前进到第一区域的最后一个磁盘块。由于区域覆盖一组连续的磁盘块并且磁盘块被连续地编号,因此第一区域的最后一个磁盘块可以根据区域列表中下一区域的第一磁盘块的编号来确定。如果当前区域不是第一区域,则当前区域的扫描在当前区域的第一磁盘块开始并且前进到当前区域的最后一个磁盘块。作为替代,如果查询中没有删减过滤谓词能被当前区域满足,则当前区域的扫描被跳过并且扫描前进到步骤708。
在步骤708,确定区域列表中当前区域之后的下一区域。在步骤709,当前区域变量被设置为下一区域并且扫描700返回到步骤704来考虑新的当前区域。
区域地图驱动的扫描
图7用于I/O删减的方法是被开始于初始磁盘块的事实表的扫描驱动的。当在事实表的扫描期间遇到区域时,咨询维度区域地图来确定哪些区域可以被跳过。作为扫描驱动的I/O删减的替代,区域地图驱动的事实表扫描也是可能的。根据这种替代的方法,在发起扫描之前咨询维度区域地图来确定维度区域地图的哪些区域可能满足查询中的至少一个删减过滤谓词。这种咨询产生需要被扫描的连续磁盘块的范围。然后只在这些区域上执行扫描,并且其它不可能满足任何删减过滤谓词的区域都不扫描。
硬件概述
根据一种实施例,本文所描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行所述技术,或者可以包括诸如持久性地编程为执行所述技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括编程为按照固件、存储器、其它储存器或者其组合中的程序指令执行所述技术的一个或多个通用硬件处理器。这种专用计算设备还可以组合定制的硬连线逻辑、ASIC或FPGA与定制的编程来实现所述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者结合硬连线和/或程序逻辑来实现所述技术的任何其它设备。
例如,图9是说明本发明的实施例可以在其上实现的计算机系统900的框图。计算机系统900包括总线902或者用于传送信息的其它通信机制,以及与总线902耦合用于处理信息的硬件处理器904。硬件处理器904可以是例如通用微处理器。
计算机系统900还包括耦合到总线902用于存储信息和要由处理器904执行的指令的主存储器906,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器906还可以用于在要由处理器904执行的指令执行期间存储临时变量或其它中间信息。当存储在处理器904可访问的非暂时性存储介质中时,这种指令使计算机系统900变成为执行指令中所规定的操作而定制的专用机器。
计算机系统900还包括只读存储器(ROM)908或者耦合到总线902的其它静态存储设备,用于为处理器904存储静态信息和指令。提供了存储设备910,诸如磁盘、光盘或固态驱动器,并且耦合到总线902,用于存储信息和指令。
计算机系统900可以经总线902耦合到显示器912,诸如阴极射线管(CRT),用于向计算机用户显示信息。输入设备914,包括字母数字和其它键,耦合到总线902,用于向处理器904传送信息和命令选择。另一种类型的用户输入设备是游标控制装置916,诸如鼠标、轨迹球或者游标方向键,用于向处理器904传送方向信息和命令选择并且用于控制显示器912上的游标运动。这种输入设备通常具有在两个轴,第一个轴(例如,x)和第二个轴(例如,y),中的两个自由度,以允许设备在平面内规定位置。
计算机系统900可以利用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文所述的技术,这些与计算机系统相结合,使计算机系统900或者把计算机系统900编程为专用机器。根据一种实施例,本文的技术由计算机系统900响应于执行包含在主存储器906中的一条或多条指令的一个或多个序列而执行。这种指令可以从另一存储介质,诸如存储设备910,读到主存储器906中。包含在主存储器906中的指令序列的执行使处理器904执行本文所述的过程步骤。在备选实施例中,硬连线的电路系统可以代替软件指令或者与其结合使用。
如在本文所使用的,术语“存储介质”指存储使机器以特定方式操作的数据和/或指令的任何非暂时性介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘、磁盘或固态驱动器,诸如存储设备910。易失性介质包括动态存储器,诸如主存储器906。存储介质的常见形式包括,例如,软盘、柔性盘、硬盘、固态驱动器、磁带,或者任何其它磁性数据存储介质,CD-ROM,任何其它光学数据存储介质,任何具有孔模式的物理介质,RAM、PROM和EPROM、FLASH-EPROM、NVRAM,任何其它存储器芯片或盒式磁带。
存储介质与传输介质截然不同但是可以与其结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线902的配线。传输介质还可以采取声或光波的形式,诸如在无线电波和红外线数据通信中产生的那些。
各种形式的介质可以参与把一条或多条指令的一个或多个序列携带到处理器904供执行。例如,指令最初可以在远端计算机的磁盘或固态驱动器上携带。远端计算机可以把指令加载到其动态存储器中并且利用调制解调器经电话线发送指令。位于计算机系统900本地的调制解调器可以在电话线上接收数据并且使用红外线发送器把数据转换成红外线信号。红外线检测器可以接收在红外线信号中携带的数据并且适当的电路系统可以把数据放在总线902上。总线902把数据携带到主存储器906,处理器904从该主存储器906检索并执行指令。由主存储器906接收的指令可以可选地在被处理器904执行之前或之后存储在存储设备910上。
计算机系统900还包括耦合到总线902的通信接口918。通信接口918提供耦合到网络链路920的双向数据通信,其中网络链路920连接到本地网络922。例如,通信接口918可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个例子,通信接口918可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。无线链路也可以实现。在任何此类实现中,通信接口918都发送和接收携带表示各种类型信息的数字信号流的电、电磁或光信号。
网络链路920通常通过一个或多个网络向其它数据设备提供数据通信。例如。网络链路920可以通过本地网络922提供到主计算机924或者到由因特网服务提供商(ISP)926操作的数据设备的连接。ISP 926又通过现在通常称为“因特网”928的全球分组数据通信网络提供数据通信服务。本地网络922和因特网928都使用携带数字数据流的电、电磁或光信号。通过各种网络的信号以及在网络链路920上并通过通信接口918的信号是传输介质的示例形式,其中信号把数字数据带到计算机系统900或者携带来自计算机系统900的数字数据。
计算机系统900可以通过网络、网络链路920和通信接口918发送消息和接收数据,包括程序代码。在因特网例子中,服务器930可以通过因特网928、ISP 926、本地网络922和通信接口918发送对应于程序的所请求代码。
所接收的代码可以在其被接收时由处理器904执行,和/或存储在存储设备910或其它非易失性储存器中,供随后执行。
在前面的说明书中,本发明的实施例已经参考众多的具体细节进行了描述,这些细节可以从一种实现到另一种实现变化。因此,说明书和附图应当在说明性而不是限制性的意义上考虑。本发明范围的唯一且排他指示,以及申请人预期作为本发明的范围,是由本申请产生的权利要求集合的字面和等效范围,以这种权利要求产生的具体形式,包括任何后续的校正。

Claims (14)

1.一种用于在关系型数据库管理系统中删减目标表的连续磁盘块的方法,所述方法包括:
将目标表的连续磁盘块分成多个区域,所述多个区域中的每个区域包括目标表的一组连续磁盘块;
为所述多个区域中的每个区域维护一个或多个表的一个或多个分区列中每一个的最小列值和最大列值;
其中所述一个或多个分区列中的至少一个不是目标表的列;
接收对目标表的查询;
其中查询包含所述一个或多个分区列的特定列上的过滤谓词;
其中过滤谓词具有谓词值;
其中特定列不是目标表的列;及
响应于接收到所述查询,基于谓词值和为特定列维护的最小列值和最大列值确定所述多个区域中不可能包含满足所述查询的目标表的行的一个或多个区域;
其中所述方法由一个或多个计算设备执行。
2.如权利要求1所述的方法,还包括:
响应于接收到查询,执行对所述多个区域中的至少一个区域的磁盘扫描,并且跳过对所述多个区域中不可能包含满足所述查询的目标表的行的所述一个或多个区域的磁盘扫描。
3.如权利要求1所述的方法,其中所述一个或多个分区列是多个分区列,并且其中所述多个分区列都不是目标表的列。
4.如权利要求1所述的方法,其中目标表是星型架构的事实表,并且特定列是星型架构的维度表的列。
5.如权利要求1所述的方法,还包括:
在不执行对所述多个区域中不可能包含满足查询的目标表的行的所述一个或多个区域的磁盘扫描的情况下返回对查询的应答。
6.如权利要求1所述的方法,其中将目标表的连续磁盘块分成多个区域包括:
在目标表和具有特定列的表之间执行左外联接以产生一组联接行,所述一组联接行中的每个联接行都对应于目标表的一行;及
对于所述一组联接行中的每个联接行,将目标表的对应行分配给所述多个区域中的一个区域。
7.如权利要求1所述的方法,其中所述多个区域中的每个区域包括最多预定数量的连续磁盘块。
8.如权利要求1所述的方法,其中为所述多个区域中的每个区域维护一个或多个表的所述一个或多个分区列中每一个的最小列值和最大列值包括:在数据库中维护物化视图,所述物化视图包括所述多个区域中的每个区域的一行、存储分区列的最小列值的所述一个或多个分区列中每一个的一列、以及存储分区列的最大列值的所述一个或多个分区列中每一个的一列。
9.如权利要求1所述的方法,其中过滤谓词包含LIKE运算符,并且谓词值具有常量字符串值。
10.如权利要求1所述的方法,其中查询包含联接标准,所述联接标准规定目标表和具有特定列的表之间的联接,所述联接标准还规定联接要基于目标表的外键列和具有特定列的表的唯一键列。
11.如权利要求1所述的方法,其中特定列具有数据库数据类型;并且其中数据库数据类型选自包括数值、字符、日期、时间戳、行标识符、浮点型和双精度型的组。
12.如权利要求1所述的方法,其中过滤谓词包含LIKE运算符,并且谓词值具有作为通配符运算符前缀的常量字符串值。
13.一种或多种存储指令的计算机可读介质,所述指令在被一个或多个处理器执行时使得执行如权利要求1-12中任何一项所述的方法。
14.一种关系型数据库管理系统,包括:
用于将目标表的连续磁盘块分成多个区域的装置,所述多个区域中的每个区域包括目标表的一组连续磁盘块;
用于为所述多个区域中的每个区域维护一个或多个表的一个或多个分区列中每一个的最小列值和最大列值的装置;
其中所述一个或多个分区列中的至少一个不是目标表的列;
用于接收对目标表的查询的装置,
其中查询包含所述一个或多个分区列的特定列上的过滤谓词;
其中过滤谓词具有谓词值;
其中特定列不是目标表的列;及
用于响应于接收到查询,基于谓词值和为特定列维护的最小列值和最大列值确定所述多个区域中不可能包含满足查询的目标表的行的一个或多个区域的装置。
CN201380050528.3A 2012-09-28 2013-06-13 关系型数据库管理系统中删减聚类表的磁盘块 Active CN104685496B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/629,907 US8996544B2 (en) 2012-09-28 2012-09-28 Pruning disk blocks of a clustered table in a relational database management system
US13/629,907 2012-09-28
PCT/US2013/045598 WO2014051743A2 (en) 2012-09-28 2013-06-13 Pruning disk blocks of a clustered table in a relational database management system

Publications (2)

Publication Number Publication Date
CN104685496A CN104685496A (zh) 2015-06-03
CN104685496B true CN104685496B (zh) 2018-03-06

Family

ID=48747723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380050528.3A Active CN104685496B (zh) 2012-09-28 2013-06-13 关系型数据库管理系统中删减聚类表的磁盘块

Country Status (4)

Country Link
US (2) US8996544B2 (zh)
EP (1) EP2901313B1 (zh)
CN (1) CN104685496B (zh)
WO (1) WO2014051743A2 (zh)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394848B2 (en) * 2013-07-29 2019-08-27 Amazon Technologies, Inc. Generating a multi-column index for relational databases by interleaving data bits for selectivity
US9588978B2 (en) 2013-09-30 2017-03-07 International Business Machines Corporation Merging metadata for database storage regions based on overlapping range values
US10769149B2 (en) * 2013-12-06 2020-09-08 Micro Focus Llc Transitive local predicated across multiple joins
US10108649B2 (en) * 2014-02-25 2018-10-23 Internatonal Business Machines Corporation Early exit from table scans of loosely ordered and/or grouped relations using nearly ordered maps
US9519687B2 (en) 2014-06-16 2016-12-13 International Business Machines Corporation Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices
US10042887B2 (en) * 2014-12-05 2018-08-07 International Business Machines Corporation Query optimization with zone map selectivity modeling
US10366068B2 (en) 2014-12-18 2019-07-30 International Business Machines Corporation Optimization of metadata via lossy compression
US9953065B2 (en) 2015-02-13 2018-04-24 International Business Machines Corporation Method for processing a database query
US10289707B2 (en) * 2015-08-10 2019-05-14 International Business Machines Corporation Data skipping and compression through partitioning of data
US10331645B2 (en) * 2015-08-17 2019-06-25 International Business Machines Corporation Data-partitioning for processing loosely ordered relations
GB201515950D0 (en) 2015-09-09 2015-10-21 Ibm Method for processing large data tables
US10210223B2 (en) * 2015-10-27 2019-02-19 International Business Machines Corporation Executing conditions with negation operators in analytical databases
US10089353B2 (en) 2015-10-29 2018-10-02 International Business Machines Corporation Approximate string matching optimization for a database
US9442694B1 (en) 2015-11-18 2016-09-13 International Business Machines Corporation Method for storing a dataset
CN106802900B (zh) * 2015-11-26 2020-11-06 北京国双科技有限公司 基于星形数据库的检索方法及装置
US9633072B1 (en) * 2016-01-27 2017-04-25 International Business Machines Corporation MIN/MAX query with synopsis guided scan order
US9501534B1 (en) 2016-01-28 2016-11-22 International Business Machines Corporation Extreme value computation
US10262033B2 (en) 2016-03-18 2019-04-16 International Business Machines Corporation Method for query execution planning
US10649991B2 (en) * 2016-04-26 2020-05-12 International Business Machines Corporation Pruning of columns in synopsis tables
US10318514B2 (en) 2016-05-04 2019-06-11 International Business Machines Corporation Reorganizing a data table to improve analytical database performance
US10346403B2 (en) 2016-05-06 2019-07-09 International Business Machines Corporation Value range synopsis in column-organized analytical databases
US10331662B2 (en) 2016-05-18 2019-06-25 International Business Machines Corporation Dynamic column synopsis for analytical databases
US10248695B2 (en) 2016-05-23 2019-04-02 International Business Machines Corporation Extreme value computation
US10417237B2 (en) 2016-05-24 2019-09-17 International Business Machines Corporation Sorting tables in analytical databases
US10248692B2 (en) 2016-06-15 2019-04-02 International Business Machines Corporation Cardinality estimation of a join predicate
US10311057B2 (en) 2016-08-08 2019-06-04 International Business Machines Corporation Attribute value information for a data extent
US10360240B2 (en) 2016-08-08 2019-07-23 International Business Machines Corporation Providing multidimensional attribute value information
US10733186B2 (en) * 2016-09-15 2020-08-04 Oracle International Corporation N-way hash join
US10664464B2 (en) 2016-10-17 2020-05-26 International Business Machines Corporation Self-maintaining effective value range synopsis in presence of deletes in analytical databases
US10929400B2 (en) 2016-10-26 2021-02-23 International Business Machines Corporation Self-optimizing value range synopsis in analytical databases
US10296614B2 (en) 2016-12-07 2019-05-21 International Business Machines Corporation Bulk data insertion in analytical databases
US10460052B2 (en) * 2016-12-22 2019-10-29 Sap Se Parallel model creation in cloud platform
US11176127B2 (en) * 2017-06-07 2021-11-16 Sap Se Accelerating queries based on zone expression maps
US10838963B2 (en) 2017-09-11 2020-11-17 International Business Machines Corporation Optimized access for hierarchical low cardinality value synopsis in analytical databases
US10884704B2 (en) 2017-09-21 2021-01-05 International Business Machines Corporation Sorting a table in analytical databases
CN110019337A (zh) * 2017-11-02 2019-07-16 阿里巴巴集团控股有限公司 确定数据库中有效分区的方法、装置和系统
CN110019238B (zh) * 2017-12-29 2023-01-06 阿里巴巴集团控股有限公司 多维度范围分区裁剪的方法、装置和存储介质
US11163756B2 (en) 2019-04-16 2021-11-02 Snowflake Inc. Querying over external tables in database systems
US11194795B2 (en) 2019-04-16 2021-12-07 Snowflake Inc. Automated maintenance of external tables in database systems
US11086894B1 (en) * 2019-06-25 2021-08-10 Amazon Technologies, Inc. Dynamically updated data sheets using row links
US11194793B1 (en) 2019-06-25 2021-12-07 Amazon Technologies, Inc. Dynamically materialized views for sheets based data
CN110287213B (zh) * 2019-07-03 2023-02-17 中通智新(武汉)技术研发有限公司 基于olap系统的数据查询方法、装置及系统
US12118041B2 (en) * 2019-10-13 2024-10-15 Thoughtspot, Inc. Query execution on compressed in-memory data
US10769150B1 (en) * 2019-12-26 2020-09-08 Snowflake Inc. Pruning indexes to enhance database query processing
US11868346B2 (en) 2020-12-30 2024-01-09 Oracle International Corporation Automated linear clustering recommendation for database zone maps
US11727008B1 (en) * 2022-06-30 2023-08-15 Vast Data Ltd. Database table with a minimum-maximum filter for multiple ranges
US11907263B1 (en) * 2022-10-11 2024-02-20 Oracle International Corporation Automated interleaved clustering recommendation for database zone maps

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101576881A (zh) * 2008-05-07 2009-11-11 万德洪 一种数据可视化系统及实现方法
CN101789024A (zh) * 2010-03-05 2010-07-28 北京润乾信息系统技术有限公司 一种数据处理方法
CN102110156A (zh) * 2011-02-22 2011-06-29 清华大学 基于选择性扫描的文件系统的元数据抽取方法及装置

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374232B1 (en) * 1996-08-29 2002-04-16 Oracle Corp. Method and mechanism for retrieving values from a database
US6917569B1 (en) * 1997-10-06 2005-07-12 Emc Corporation Method for determining seek times in a disk array storage device
US6269375B1 (en) * 1998-04-01 2001-07-31 International Business Machines Corporation Rebalancing partitioned data
US7089331B1 (en) 1998-05-29 2006-08-08 Oracle International Corporation Method and mechanism for reducing client-side memory footprint of transmitted data
US7076507B1 (en) 1998-07-08 2006-07-11 Required Technologies, Inc. Value-instance-connectivity computer-implemented database
US7228300B2 (en) 1998-10-05 2007-06-05 Oracle International Corporation Caching the results of security policy functions
US7320001B1 (en) 1999-01-15 2008-01-15 Hon Hai Precision Industry, Ltd. Method for visualizing information in a data warehousing environment
US7233952B1 (en) 1999-01-15 2007-06-19 Hon Hai Precision Industry, Ltd. Apparatus for visualizing information in a data warehousing environment
US7007029B1 (en) 1999-01-15 2006-02-28 Metaedge Corporation System for visualizing information in a data warehousing environment
US6804714B1 (en) 1999-04-16 2004-10-12 Oracle International Corporation Multidimensional repositories for problem discovery and capacity planning of database applications
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
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
US7389284B1 (en) 2000-02-29 2008-06-17 Oracle International Corporation Method and mechanism for efficient processing of remote-mapped queries
WO2001080095A2 (en) 2000-04-17 2001-10-25 Brio Technology, Inc. Analytical server including metrics engine
US6748394B2 (en) 2000-04-27 2004-06-08 Hyperion Solutions Corporation Graphical user interface for relational database
US7167859B2 (en) 2000-04-27 2007-01-23 Hyperion Solutions Corporation Database security
US7080090B2 (en) 2000-04-27 2006-07-18 Hyperion Solutions Corporation Allocation measures and metric calculations in star schema multi-dimensional data warehouse
US6732115B2 (en) 2000-04-27 2004-05-04 Hyperion Solutions Corporation Chameleon measure and metric calculation
US6941311B2 (en) 2000-04-27 2005-09-06 Hyperion Solutions Corporation Aggregate navigation system
US7072897B2 (en) 2000-04-27 2006-07-04 Hyperion Solutions Corporation Non-additive measures and metric calculation
US6865575B1 (en) 2000-07-06 2005-03-08 Google, Inc. Methods and apparatus for using a modified index to provide search results in response to an ambiguous search query
US6785666B1 (en) 2000-07-11 2004-08-31 Revenue Science, Inc. Method and system for parsing navigation information
US7093194B2 (en) 2000-10-27 2006-08-15 Swiftknowledge, Inc. Data access system
US7689621B1 (en) 2000-11-06 2010-03-30 Navteq North America, Llc Multi-dimensional spatial index for a geographic database
US6931390B1 (en) * 2001-02-27 2005-08-16 Oracle International Corporation Method and mechanism for database partitioning
US6965891B1 (en) * 2001-02-27 2005-11-15 Oracle International Corporation Method and mechanism for partition pruning
TW579045U (en) 2001-04-23 2004-03-01 Ind Technology Res Inst Materi Super-resolution recordable optical disk
US7103590B1 (en) 2001-08-24 2006-09-05 Oracle International Corporation Method and system for pipelined database table functions
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
US7080081B2 (en) 2002-04-15 2006-07-18 International Business Machines Corporation Multidimensional data clustering scheme for query processing and maintenance in relational databases
US7415457B2 (en) 2002-04-26 2008-08-19 Oracle International Corporation Using a cache to provide cursor isolation
US6898608B2 (en) 2002-04-26 2005-05-24 Oracle International Corporation Techniques for managing what-if analysis of data managed by a relational database system
US7366730B2 (en) 2002-04-26 2008-04-29 Oracle International Corporation Registration of solved cubes within a relational database management system
AU2003237135A1 (en) 2002-04-30 2003-11-17 Veridiem Inc. Marketing optimization system
US6973457B1 (en) 2002-05-10 2005-12-06 Oracle International Corporation Method and system for scrollable cursors
US7610351B1 (en) 2002-05-10 2009-10-27 Oracle International Corporation Method and mechanism for pipelined prefetching
US7373353B2 (en) 2002-05-10 2008-05-13 International Business Machines Corporation Reducing index size for multi-level grid indexes
US7447687B2 (en) 2002-05-10 2008-11-04 International Business Machines Corporation Methods to browse database query information
US8001112B2 (en) 2002-05-10 2011-08-16 Oracle International Corporation Using multidimensional access as surrogate for run-time hash table
US7383275B2 (en) 2002-05-10 2008-06-03 International Business Machines Corporation Methods to improve indexing of multidimensional databases
US7143098B2 (en) 2002-05-10 2006-11-28 International Business Machines Corporation Systems, methods, and computer program products to reduce computer processing in grid cell size determination for indexing of multidimensional databases
US6920460B1 (en) 2002-05-29 2005-07-19 Oracle International Corporation Systems and methods for managing partitioned indexes that are created and maintained by user-defined indexing schemes
JP2004030221A (ja) 2002-06-26 2004-01-29 Hitachi Ltd 変更対象テーブル自動検出方法
US7287022B2 (en) 2002-07-19 2007-10-23 Microsoft Corporation System and method for analytically modeling data organized according to related attributes
US7313559B2 (en) 2002-07-19 2007-12-25 Microsoft Corporation System and method for analytically modeling data organized according to a referenced attribute
JP2005534121A (ja) 2002-07-26 2005-11-10 エベレット ロン 参照を使用してジェネリック・データ・アイテムに関連するデータ管理アーキテクチャ
US7299239B1 (en) 2002-12-02 2007-11-20 Oracle International Corporation Methods for partitioning an object
US7472127B2 (en) 2002-12-18 2008-12-30 International Business Machines Corporation Methods to identify related data in a multidimensional database
US7716167B2 (en) 2002-12-18 2010-05-11 International Business Machines Corporation System and method for automatically building an OLAP model in a relational 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
EP1441293B1 (en) 2003-02-18 2004-08-04 Hermann Dr.-Ing. Tropf Database and method for organizing data elements
US7895191B2 (en) 2003-04-09 2011-02-22 International Business Machines Corporation Improving performance of database queries
US8209280B2 (en) 2003-05-07 2012-06-26 Oracle International Corporation Exposing multidimensional calculations through a relational database server
US8200612B2 (en) 2003-05-07 2012-06-12 Oracle International Corporation Efficient SQL access to multidimensional data
US7480662B2 (en) 2003-07-03 2009-01-20 Oracle International Corporation Fact table storage in a decision support system environment
US7873684B2 (en) 2003-08-14 2011-01-18 Oracle International Corporation Automatic and dynamic provisioning of databases
US7356542B2 (en) * 2003-08-22 2008-04-08 Oracle International Corporation DML statements for densifying data
US7831615B2 (en) 2003-10-17 2010-11-09 Sas Institute Inc. Computer-implemented multidimensional database processing method and system
US7433886B2 (en) 2003-10-24 2008-10-07 Microsoft Corporation SQL language extensions for modifying collection-valued and scalar valued columns in a single statement
US7657516B2 (en) 2003-12-01 2010-02-02 Siebel Systems, Inc. Conversion of a relational database query to a query of a multidimensional data source by modeling the multidimensional data source
US7346617B2 (en) 2004-01-23 2008-03-18 Oracle International Corporation Multi-table access control
US20050177553A1 (en) * 2004-02-09 2005-08-11 Alexander Berger Optimized distinct count query system and method
US7707143B2 (en) 2004-06-14 2010-04-27 International Business Machines Corporation Systems, methods, and computer program products that automatically discover metadata objects and generate multidimensional models
US7480663B2 (en) 2004-06-22 2009-01-20 International Business Machines Corporation Model based optimization with focus regions
US7505888B2 (en) 2004-11-30 2009-03-17 International Business Machines Corporation Reporting model generation within a multidimensional enterprise software system
US7418438B2 (en) 2004-11-30 2008-08-26 International Business Machines Corporation Automated default dimension selection within a multidimensional enterprise software system
US7610300B2 (en) 2004-11-30 2009-10-27 International Business Machines Corporation Automated relational schema generation within a multidimensional enterprise software system
US7593955B2 (en) 2004-11-30 2009-09-22 International Business Machines Corporation Generation of aggregatable dimension information within a multidimensional enterprise software system
US7389283B2 (en) 2004-12-07 2008-06-17 International Business Machines Corporation Method for determining an optimal grid index specification for multidimensional data
US7660823B2 (en) 2004-12-30 2010-02-09 Sas Institute Inc. Computer-implemented system and method for visualizing OLAP and multidimensional data in a calendar format
US20060190432A1 (en) 2005-02-22 2006-08-24 Sas Institute Inc. System and method for graphically distinguishing levels of a multidimensional database
US7502894B2 (en) 2005-04-20 2009-03-10 Bea Systems, Inc. Shared rowset
US7558779B2 (en) 2005-04-20 2009-07-07 Bea Systems, Inc. Sorted rowset
US7814104B2 (en) 2005-05-04 2010-10-12 Oracle International Corporation Techniques for partition pruning
US20070061287A1 (en) 2005-09-09 2007-03-15 Jian Le Method, apparatus and program storage device for optimizing a data warehouse model and operation
US7657503B1 (en) 2005-11-29 2010-02-02 At&T Corp. System and method for generating statistical descriptors for a data stream
US7685092B2 (en) 2006-01-26 2010-03-23 International Business Machines Corporation Automatic problem-oriented transformation of database performance data
DK176532B1 (da) 2006-07-17 2008-07-14 Targit As Fremgangsmåde til integration af dokumenter med OLAP ved brug af sögning, computerlæsbart medium og computer
US7979425B2 (en) 2006-10-25 2011-07-12 Google Inc. Server-side match
US8000996B1 (en) 2007-04-10 2011-08-16 Sas Institute Inc. System and method for markdown optimization
US8160917B1 (en) 2007-04-13 2012-04-17 Sas Institute Inc. Computer-implemented promotion optimization methods and systems
US8209294B2 (en) 2007-06-15 2012-06-26 Oracle International Corporation Dynamic creation of database partitions
US8135688B2 (en) 2007-06-15 2012-03-13 Oracle International Corporation Partition/table allocation on demand
US7930200B1 (en) 2007-11-02 2011-04-19 Sas Institute Inc. Computer-implemented systems and methods for cross-price analysis
US8150850B2 (en) 2008-01-07 2012-04-03 Akiban Technologies, Inc. Multiple dimensioned database architecture
US8082239B2 (en) 2008-02-04 2011-12-20 Microsoft Corporation Defining sub-cube scope based upon a query
US8195645B2 (en) 2008-07-23 2012-06-05 International Business Machines Corporation Optimized bulk computations in data warehouse environments
US10459912B2 (en) * 2008-12-11 2019-10-29 Teradata Us, Inc. Optimizing processing of group-by queries featuring maximum or minimum equality conditions in a parallel processing system
US9177021B2 (en) * 2011-06-09 2015-11-03 International Business Machines Corporation Relational query planning for non-relational data sources
US8676772B2 (en) 2011-12-09 2014-03-18 Telduráðgevin Sp/f Systems and methods for improving database performance

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101576881A (zh) * 2008-05-07 2009-11-11 万德洪 一种数据可视化系统及实现方法
CN101789024A (zh) * 2010-03-05 2010-07-28 北京润乾信息系统技术有限公司 一种数据处理方法
CN102110156A (zh) * 2011-02-22 2011-06-29 清华大学 基于选择性扫描的文件系统的元数据抽取方法及装置

Also Published As

Publication number Publication date
WO2014051743A2 (en) 2014-04-03
US8996544B2 (en) 2015-03-31
US10223422B2 (en) 2019-03-05
EP2901313A2 (en) 2015-08-05
CN104685496A (zh) 2015-06-03
US20140095520A1 (en) 2014-04-03
EP2901313B1 (en) 2017-09-06
WO2014051743A3 (en) 2014-08-28
US20150199407A1 (en) 2015-07-16

Similar Documents

Publication Publication Date Title
CN104685496B (zh) 关系型数据库管理系统中删减聚类表的磁盘块
US11537276B2 (en) Generating data visualizations according to an object model of selected data sources
US5442784A (en) Data management system for building a database with multi-dimensional search tree nodes
US9430550B2 (en) Clustering a table in a relational database management system
CN105683956B (zh) 密集分组的维度数据
EP1247165B1 (en) System and method for transforming a relational database to a hierarchical database
JP3213585B2 (ja) データ検索方法及び装置、データ検索システム、記録媒体
JP3979846B2 (ja) リレーショナルデータベース管理システムに多次元データを記憶する方法
US20020087510A1 (en) Method and apparatus for structuring, maintaining, and using families of data
CN1987861A (zh) 处理数据库查询的系统和方法
CN108369587A (zh) 创建用于交换的表
EP1450274A2 (en) Dimension-based partitioned cube
WO2001093104A2 (en) System and method for retrieving data from a database using a data management system
JP2001216307A (ja) リレーショナルデータベース管理システム及びそれを記憶した記憶媒体
CN111241176A (zh) 一种数据治理管理系统
US7433882B2 (en) Data management system and computer program
JPH0934906A (ja) 図書管理装置
CN100547584C (zh) 在关系数据库系统中用于使数据稠密的dml语句
JPH10301935A (ja) データ処理方法
JPH117402A (ja) データ処理方法
Karayannidis et al. Design of the ERATOSTHENES OLAP Server
Tam of the requirements for the degree of Master of Science
Tam Datacube: its implementation and application in olap mining.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant