关系型数据库管理系统中删减聚类表的磁盘块的制作方法

文档序号:8367469阅读:284来源:国知局
关系型数据库管理系统中删减聚类表的磁盘块的制作方法
【技术领域】
[0001] 本发明涉及关系型数据库管理系统,并且更具体地,涉及用于在关系型数据库管 理系统中聚类(cluster)表的技术。
【背景技术】
[0002] 在本节中描述的方法是可以实行的方法,但不一定是先前已被构想或实行的方 法。因此,除非另外指出,否则不应当假设本节中描述的任何方法仅仅因为它们被包括在本 节中就被算作为现有技术。
[0003] 在数据库系统的上下文中,"维度"是为数据提供类别的值的列表。维度充当用 于识别变量的值的索引。例如,如果销售数据具有每个月单独的销售数字,则该数据具有 MONTH维度。即,该数据通过月进行组织。维度类似于关系型数据库中的键。通过两维或更 多维组织的数据被称为"多维数据"。
[0004] 多维变量中的任何数据项都可以通过为变量的每个维度指定一个成员来进行唯 一且完全地选择。例如,如果sales变量通过MONTH、PRODUCT和MARKET标出维度,则为 MONTH维度指定"January"、为PRODUCT维度指定"Stereos"和为MARKET维度指定"Eastern Region"就为该变量唯一地指定了单个值。因此,维度提供了简明和直观的组织和选择数据 的方式,用于检索、更新和执行计算。
[0005] 多维数据可以存储在关系型数据库系统中。当多维数据存储在关系型数据库系统 中时,应用通过提交符合关系型数据库系统支持的数据库语言的命令访问数据,最常见的 数据库语言是结构化查询语言(SQL)。
[0006] 关系型数据库系统以关联表的形式存储数据,其中每个表都具有一列或多列以及 一行或多行。用于在关系型数据库系统中存储多维数据的常规机制是将数据存储在表中, 其中表以被称为星型架构(star schema)的方式进行布置。在关系型数据库系统中,星型 架构的特点是存在一个或多个相对较大的表和若干个相对较小的表。较大的表没有重复较 小表中包含的信息,而是引用较小表中的行。在星型架构中,较大的表被称为"事实表",而 较小的表被称为"维度表"。图1说明了具有两个维度的示例性星型架构。
[0007] 参考图1,它说明了包括表102、104和106的数据库100。表102被命名为 "stores (商店)"并且包含关于其中可能发生销售的每个商店的信息。stores表102中每 一行包含唯一的store-id和关于对应于该store-id的特定商店的信息。表104被命名为 "products (产品)"并且包含关于可以在任何商店销售的每种类型产品的信息。products 表104中每一行包含唯一的product-id以及关于特定产品的信息。
[0008] 表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是维度表。
[0009] 存储在事实表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中的行。典型的事实表中行的数量可以是 数十亿或者更多。作为对照,维度表中行的数量通常少得多(例如,数十、数百或数千)。相 应地,典型的星型架构被构造成最小化在事实表的每一行中储存的数据量。
[0010] 对多维数据的查询可以检索受"维度键值"约束的事实表"度量"的聚合。例如,针 对图1中说明的表发出的查询可能从sales表106检索在San Jose发生的所有"amount" 值的总和。在这个例子中,查询的执行包括联接来自sales表106的行和来自stores表 102的行,其中"city"列具有值"San Jose"。
[0011] 这种类型的查询也称作"星型查询"。事实表的"度量"是不包含外键值的事实表列 中的值。例如,在sales表106的AMOUNT和DATE (日期)列中的值分别是销售量度量和销 售日期度量。"维度键值"是与特定维度相关联的值。例如,用于"region"维度的维度键值 可以是"Northern Region"、"Southern Region"、"Eastern Region"和"Western Region"。
[0012] 在星型架构中,维度的维度键值通常存储在与该维度相关联的维度表的维度键列 中。例如,stores表102的维度键值存储在stores表102的"store-id"列中。类似地, products表104的维度键值存储在products表104的"product-id"列中。
[0013] 星型查询通常包含维度表上的过滤谓词。以下是星型查询的例子,其联接sales 事实表106与合格的stores 102和products 104维度表。stores维度表102由过滤谓词 st. state = "CA"限定并且products维度表104由过滤谓词pr. cost>10限定。该示例星 型查询通过商店城市和产品来源请求对California州、价格超过10美元的产品的销售量 的总和。
[0014] SELECT st. city, pr. source, SUM(sa. amount)
[0015] FROM sales sa, stores st, products pr
[0016] WHERE sa. store-id = st. store-id AND sa. product-id =
[0017] pr. product-id AND st. state = "CA" AND pr. cost>10
[0018] GROUP BY st. city, pr. source
[0019] 用于提高关系型数据库管理系统中星型查询性能的一种方法是将事实表中相关 的数据组织在磁盘上连续的磁盘块中。"磁盘块"是被关系型数据库管理系统用于存储数据 库数据的数据存储装置的逻辑单元。磁盘块具有块大小(例如,4KB)并且可以包含一个或 多个底层文件系统或操作系统块。除其它信息之外,磁盘块还可以包括一个或多个表的一 行或多行的数据,或者行的数据可以跨多个磁盘块。
[0020] 在关系型数据库管理系统存储多维数据的上下文中,在磁盘上的连续磁盘块中组 织相关事实表数据被称作"聚类(clustering)"。聚类通过促进压缩、索引和输入/输出 (I/O)删减(prune)可以提高关系型数据库管理系统中星型查询的性能。在关系型数据库 管理系统回答星型查询的上下文中,I/O删减指当为获得与星型查询相关的数据而扫描事 实表时避免对事实表的某些磁盘块进行磁盘扫描,这些磁盘块已知不包含与星型查询有关 的数据。最近的数据存储设备的技术改进已经将数据库访问提高到这一点:即,当执行查询 时,即使其中有索引可用,数据库系统也有时执行表扫描来代替索引表访问。因此,用于聚 类以促进I/O删减的技术最近在业界已获得相当大的关注。
[0021] 有多种不同的方法在关系型数据库管理系统中聚类事实表。在一种方法中,事实 表的行基于事实表的行的一列或多列中的值以线性顺序存储在磁盘上。例如,事实表的行 可以首先通过带有指定事实表的一列或多列的ORDER BY子句的查询进行排序,然后将这些 行以排序的顺序存储在磁盘上的一个或多个连续的磁盘块中。在另一种方法中,事实表基 于事实表列中的值按照诸如Z-order曲线或Hilbert空间填充曲线的空间填充曲线沿着多 个维度进行聚类。在这两种方法中,事实表仅基于事实表的列进行聚类。当星型查询包含 事实表的列上的过滤谓词时,当事实表基于那些列进行聚类时,这些方法促进了 I/O删减。
[0022] 遗憾的是,关系型数据库管理系统中执行星型查询的性能瓶颈通常是相对较大的 事实表和维度表之间的联接,该联接被称作"星型联接(star join) "。维度表通常在星型查 询中被维度表上的一个或多个通常为高选择性的过滤谓词限定。在许多情况下,星型查询 不包含事实表列上的任何过滤谓词。例如,以上示例星型查询包含限定stores维度表102 的过滤谓词st. state ="CA",并且包含限定products维度表104的过滤谓词pr. cost>10, 但是不包含sales表106的AMOUNT列或DATE列上的任何过滤谓词。
[0023] 仅基于事实表的列聚类事实表的关系型数据库管理系统在执行星型联接时可能 执行了浪费的事实表的磁盘扫描。磁盘扫描可能是浪费,因为在没有事实表列上的任何过 滤的情况下,事实表的聚类无所帮助,并且可能需要扫描事实表的所有磁盘块。具体而言, 即使sales表106基于"date"进行聚类,与其中st. state = "CA"的stores表102的行 以及与其中pr. cost>10的products表104的行联接的sales表106的行也可能在sales 表106内随机地分布。
[0024] 在本节中描述的方法是可以实行的方法,但不一定是先前已被构想或实行的方 法。因此,除非另外指出,否则不应当假设本节中描述的任何方法仅仅因为它们被包括在本 节中就被算作为现有技术。
【附图说明】
[0025] 附图中:
[0026] 图1是说明示例星型架构的框图;
[0027] 图2是根据本发明实施例的用于处理带有聚类子句的DDL语句的数据库服务器组 件的框图;
[0028] 图3说明示例线性条目表;
[0029] 图4是包含磁盘块的磁盘一部分的框图;
[0030] 图5说明根据本发明的实施例的示例区域地图(zonemap)表和包含具有分组成区 域的磁盘块的图4的框图;
[0031] 图6说明根据本发明的实施例的可能的维度区域地图的表结构;
[0032] 图7是根据本发明的实施例由数据库服务器执行的磁盘扫描的流程图;
[0033] 图8说明根据本发明的实施例的可能的维度区域地图的表结构;
[0034] 图9是说明本发明的实施例可以在其上实现的计算机系统的框图。
【具体实施方式】
[0035] 描述了用于在关系型数据库管理系统中聚类表的方法和装置。在以下描述中,为 了解释的目的,阐述了众多具体的细节,以便提供对本发明的透彻理解。但是,很显然,本发 明没有这些具体细节也可以实践。在其它情况下,众所周知的结构和设备以框图形式示出, 以避免不必要地混淆本发明。
[0036] 总体概述
[0037] 提供了一种技术,用于解决与关系型数据库管理系统中聚类事实表的现有方法相 关联的问题。根据本发明的一个方面,数据库服务器基于来自一个或多个维度表的一列或 多列的值聚类数据库中的事实表。更具体地,行以排序的顺序存储在事实表中,并且行排序 的顺序是基于一个或多个维度表的一列或多列中的值。用户在"聚类标准"中规定其中排序 顺序所基于的维度表的列。数据库服务器响应于特定用户发起的对事实表的数据库操作, 使用聚类标准来自动地以排序的顺序存储事实表中的行。
[0038] 为了解释的目的,在聚类标准中规定的并且排序顺序所基于的维度表的列在本文 被称为"聚类维度列"。其中在聚类标准中规定的聚类维度列的维度表在本文被称为"聚类 维度表"。
[0039] 本文提供了各种技术,用于基于在聚类标准中规定的聚类维度列以排序的顺序存 储事实表中的行。一般而言,过程包括数据库服务器生成"聚类"查询,其中查询(a)选择 一组"源"事实表行,(b)在源事实表行和聚类维度表之间执行联接,以产生一组联接的行, 其中一组联接的行中的每一行对应于最多一个源事实表行,(c)利用聚类维度列的值作为 排序键排序联接的行,以及(d)以排序的顺序在事实表中存储源事实表行。很明显,用作排 序事实表行的基础的来自聚类维度列的值没有存储在事实表中。
[0040] 如在下文更详细解释的,源事实表行可以从事实表中或从其它来源选择(例如, 从外部表)。联接的行可以以线性顺序或以交错顺序进行排序。交错排序可以基于诸如 Z-order空间填充曲线或Hilbert空间填充曲线的空间填充曲线。利用聚类维度列的值作 为排序键排序联接的行使得概念上彼此相关的源事实表行被存储成在事实表内物理上彼 此靠近。因为概念上相关的事实表行基于聚类维度列的值被存储成物理上彼此靠近,所以 在事实表的磁盘扫描期间基于聚类维度列上过滤谓词的I/O删减是可能的。
[0041] 根据本发明的另一个方面,在数据库中生成了访问结构,其允许数据库服务器基 于查询中限定一个或多个维度表的过滤谓词避免扫描事实表的磁盘块。这种访问结构在下 文被称作"维度区域地图(zonemap)"。通常,维度区域地图生成过程包括将事实表分成下 文中称作"区域"的一组连续磁盘块。对于每个区域,确定用于维度表的一个或多个"分区" 列中每一个的最小值和最大值并在区域地图中对其进行维护。对于包含分区列上过滤谓词 的查询,可以将谓词值与用于为区域维护的分区列的最小值和最大值进行比较,以确定该 区域是否包含满足过滤谓词的任何事实表的行。由于为区域维护的最小和最大值是基于 维度表的列的值确定的,因此,在事实表的磁盘扫描期间基于限定维度列的过滤谓词的I/O 删减是可能的。
[0042] 聚类标准
[0043] 如上所述,星型查询通常利用维度表上的过滤谓词限定维度表。例如,在以下的 示例星型查询中,countries维度表用两个过滤谓词进行限定,一个在countries维度表的 region列上并且另一个在countries维度表的subregion列上。
[0044] SELECT countries, region, countries, subregion, countries, name,
[0045] sum (sales, am
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1