结合Teradata数据仓库特点浅谈其检索机制

1、数据自动分配

Teradata中只有一种基于HASH算法的数据分配机制,当要插入一条记录时,根据主索引计算出相应的AMP,该条记录即通过此AMP存到其对应的磁盘上。由于主索引值的不同,一个表的各条记录将通过各AMP均匀地分布到各个磁盘上。分配过程完全自动进行,不需要DBA干预,这一点和其它OLTP DBMS有很大的区别。Teradata的HASHING算法经过长期的发展,已经十分完善。它采用了一个类似矩阵的HASH MAP,将计算出来的HASH值通过此矩阵的映射与AMP进行联系。这样,当重新配置AMP数时,只需要变动HASH MAP,速度非常快。

对于OLTP系统而言,其查询的特点是预先知道要回答什么样的问题,因此,DBA会根据业务问题的特点把数据按照相应的规律进行分配,例如把数据按照时间的不同分配到不同的硬盘上。这种由DBA手工进行的数据分配机制对OLTP系统而言是有意义的,也确实能提高系统性能。但对数据仓库系统来说,其查询往往比较复杂而且具有不确定性,不同的业务部门可能会提出各种不同的问题,如果再按照一种规律进行数据的分配,则有可能对某些问题系统的响应速度很快,而对另外一些问题的反应则很慢。

在Teradata数据库中,通过选择合适的主索引就可以保证数据在各磁盘上的自动均匀分配,使得其并行处理性能得以充分的发挥,特别适合于数据仓库环境下各种不确定的、动态的业务问题。另一方面,所有记录的插入、更新都按同样的HASHING算法进行,使得各磁盘上的数据总是混合存储而且是均衡的,不存在“有序”或者“无序”的概念,因而也就不存在数据库的重组问题(Reorganization)。对于传统的OLTP RDBMS而言,投产运行一段时间后系统性能常常因某种原因(如不断追加记录后造成数据存储不平衡)下降,这时就要考虑对数据库的重组。这是一项非常耗时而且需要经验丰富DBA参与的工作。在Teradata中,由于不存在数据库重组这类的工作,使得其管理十分简单。

、强大的并行处理能力和复杂查询处理能力

Teradata最显著的特色之一是其强大的并行处理能力,这也是为什么说它是数据仓库专用引擎的主要原因之一。其实现方式被称为多维并行处理机制,简单描述如下:

查询并行(Query并行):这种并行处理是基于上面介绍的HASHING数据分配机制实现的。每个AMP都是一个VPROC,各自独立负责一部分数据的处理,相互之间没有关系,每个节点一般配置4至16个这样的VPROC。所有关系运算如表的搜索、索引检索、投影、选择、联接、聚集、排序等都是由各个VPROC并行进行的。

步内并行(Within-a-Step并行):一个SQL查询进入系统后,首先由优化器进行优化处理,分解成一些小的步骤(Step),然后再分发给各VPROC进行处理。一个步骤可能非常简单,如“搜索一个表并返回结果”,也可能非常复杂,如“按照某条件搜索两个表,然后联接,结果投影到某几个列,对它们加和(SUM)后返回结果”。象这种复杂查询将处理多个关系运算,每个关系运算在一个VPROC内将启动多个进程来实现并行处理,称为步内并行。

多步并行(Multi-Step并行):上面说过,一个SQL被分解成多个小的步骤,这些步骤的执行将同时进行,称为多步并行。优化器分解一个SQL查询请求的原则是尽可能使各步独立。在目前所有的DBMS产品中,只有Teradata实现了多步并行。

下图以一个复杂查询的实例形象地说明了Teradata的多维并行处理机制。

 

 

这里假设系统配置有4个虚拟处理器(VPROC),某个复杂查询被优化器分解成了7个步骤,图中SUPPLIERS、PARTS、PARTSUPP等为数据库中表的名字。在每个步骤执行时,4个VPROC同时处理与各自相关的数据块,例如搜索SUPPLIERS表(步骤1.1),该表的记录是通过HASH算法均匀分布在四个VPROC各自负责的磁盘中的,搜索时4个VPROC将同时进行,把相关的记录搜索出来,这就是所谓的查询并行;步骤1.1和1.2、2.1和2.2也是同时执行的,这是所谓的多步并行;步骤2.2(或步骤1.2)中包含有三个操作,它们借助于一种管线(Pipeline)的机制实现了步内的并行处理。

除了上面描述的多维并行处理机制外,Teradata还作了进一步的优化和扩展,使得处理复杂查询时响应速度进一步加快。举例来说,在多用户环境下,一个部门中许多用户的查询常常是大同小异的,经过优化器分解后,它们具有一些相同的步骤,由于每个步骤的执行结果会在一个系统缓冲区中暂存,相同的步骤往往只需要执行一次即可。从而大大减少了磁盘I/O,提高了响应速度。

3、通过UIP(Unique Primary Index)进行操作的例子


4、通过NUPI(Non-Unique Primary Index)进行操作的例子


第一章 数据仓库基本概念 1 1.1 背景介绍 1 1.2 OLTP与OLAP 2 1.3 数据仓库系统的查询特点 3 1.4 详细数据与小结数据(DETAIL DATA与SUMMARY DATA) 5 1.5 数据仓库与数据集市(DATA WAREHOUSE与DATA MART) 7 1.6 TERADATA的出现 10 1.7 如何衡量数据仓库引擎 11 1.7.1 TPC-D 12 1.7.2 TPC-H/R 20 1.8 NCR可扩展数据仓库方法论与实施框架 22 1.8.1 NCR可扩展数据仓库方法论 22 1.8.2 NCR可扩展数据仓库框架 27 1.8.3 NCR可扩展数据仓库合作伙伴 29 第二章 TERADATA关系型数据库管理系统概要 30 2.1 TERADATA数据库的设计思想 30 2.2 TERADATA数据库的体系结构 30 2.2.1 Teradata V1/DBC体系结构 31 2.2.2 Teradata V1/NCR 3600体系结构 34 2.2.3 开放的Teradata V2/SMP体系结构 40 2.2.4 Teradata V2/MPP体系结构 45 2.3 TERADATA 的 并 行 处 理 机 制 51 2.4 WINDOWS平台的TERADATA数据库 53 2.5 TERADATA多媒体数据库 54 第三章 TERADATA数据库的数据分配机制 56 3.1 哈希算法、主索引、与数据分配 56 3.2 TERADATA数据分配示例 58 3.3 主索引与表的创建 60 3.4 哈希冲突与不唯一主索引 61 3.5 TERADATA数据库系统的在线升级 63 第四章 TERADATA数据库的数据访问机制 65 4.1 基于主索引的数据访问 65 4.2 基于唯一次索引USI的数据访问 67 4.3 基于非唯一次索引NUSI的数据访问 71 4.4 全表扫描 74 4.5 总结 75 第五章 如何选择主索引 78 5.1 TERADATA数据库中的AMP与PDISK 78 5.2 数据记录的分配 79 5.3 选择主索引的基本原则 83 第六章 数据库的空间管理、用户管理、访问权限 85 6.1 TERADATA中的用户与数据库 85 6.1.1 数据库 85 6.1.2 用户 88 6.2 TERADATA数据库的层次型结构 88 6.3 拥有者(OWNER)与创建者(CREATOR) 92 6.4 TERADATA数据库的访问权限 94 6.4.1 访问权限概述 94 6.4.2 显示权限 102 6.4.3 监控权限 103 6.4.4 如何检查一个用户或数据库的权限 103 6.4.5 GRANT命令的操作 106 6.4.6 REVOKE命令的操作 107 第七章 数据保护与恢复 109 7.1 锁(LOCK) 109 7.2 优先权(PRIORITY) 113 7.3 交易完整性(TRANSACTION INTEGRITY) 114 7.4 临时流水(TRANSIENT JOURNAL) 115 7.5 永久流水(PERMANENT JOURNAL) 115 7.6 FALLBACK保护 116 第八章 客户端访问TERADATA数据库的方法 120 8.1 概述 120 8.2 TERADATA数据库的编程接口 122 8.2.1 调用层接口CLI 122 8.2.2 嵌入式预处理器 123 8.2.3 ODBC 123 8.3 TERADATA应用工具 124 8.3.1 BTEQ 124 8.3.2 FastLoad 125 8.3.3 MultiLoad 126 8.3.4 FastExport 127 8.3.5 TPump 127 第九章 使用TERADATA的主要客户分析 129 9.1 零售业 130 9.2 消费品制造与零售业供货商 131 9.3 货运业 132 9.4 客运业 133 9.5 电信业 134 9.6 健康保险业 135 9.7 金融业 137 9.8 共用事业类 139 9.9 其它行业 140 附录一 CLIENT/SERVER结构下的TERADATA数据库 153 附录二 TERADATA ODBC驱动程序设置 155 附录三 QUERYMAN介绍 158 附录四 WINDDI介绍 164
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值