文档章节

Terdata知识点总结

o
 osc_wws45aot
发布于 2019/08/20 10:45
字数 1394
阅读 22
收藏 0
amp

精选30+云产品,助力企业轻松上云!>>>

1. teradata是业界知名MPP架构的数据库。简单理解MPP即这样的系统由多个物理上独立的节点通过高速网络互联组成的一个相互协同工作的大规模系统。从用户角度来看,用户的任务将会被透明的分割到多个节点。

teradata架构:

teradata架构由三个组件构成,从上图可以看出分别为PE、BYNET和AMP。上图只有一个PE但实际情况是由多个PE组成的。

那么各个组件都负责什么工作呢?
PE:一个PE也被称为一个vproc( virtual processor),该组件主要完成四项工作

会话控制(Session Control)
SQL解析(Parser)
SQL优化(Optimizer )
任务分发(Dispatcher)
Session Control接受客户端的连接请求,验证用户名和密码
Parser接受客户端的SQL请求,校验SQL的语法,通过查询数据字典确保客户端的操作的对象是存在的并且有权限操作对象
Optimizer 是基于成本的优化器,该组件优化SQL生成最优的执行计划
Dispatcher接受Optimizer组件的执行计划通过BYNET分布到不同的AMP
AMP处理完由PE通过BYNET接受返回结果并最终呈现给客户端
一个PE最大可以处理120个session,PE之间相互通信,自动均衡session

AMP: 也可视为一个vproc,它管理着我们的数据,下图中一个AMP连接着一个DISK,实际中一个AMP可以管理多个DISK,AMP是架在DISK上的桥梁

每个AMP管理着各自的数据,数据的存和取都是AMP的工作。当新建一张表时每个AMP上都会创建表的结构信息,例如表名、列名、索引信息等。
理想状态下我们总希望我们的表平均的分布在所有的AMP上,以更好的利用所有节点并行处理。就像这样

这样当我请求Tabel1的数据4个AMP协同工作,加快处理。假设Table1只分布在了一个AMP,此时请求Table1讲会慢很多
关于teradata的数据分布机制会单独写一篇来讲。

BYNET:也被成为MPL(message-passing layer),是AMP和PE之间的桥梁,通过BYNET网络互联将所有的AMP连在一起。PE和AMP之间所有的消息传递都是通过BYNET完成的
一个典型的teradata数据库一般由两个BYNET
BYNET的特点:
High performance:一般典型的teradata有两个BYNET同时工作
Fault tolerant:每个BYNET都都有多条连接路径,当其中一个不用时,会自动切换到另外一个BYNET上,并重新配置网络,避免将客户端请求发送到不可用的BYNET上
Load balanced: BYNET自动均衡,避免某一个负载太多
实际中我们BYNET是这样的:


DISK最终数据都是存在磁盘中的,teradata都是以磁盘阵列的形式存在的。raid的级别是可配置的

总结:teradata真正的share nothing架构,每个节点拥有自己的资源,如磁盘、内存、cpu等。每个AMP管理着自已的数据,协同工作,通过BYNET告诉网络互联
————————————————
版权声明:本文为CSDN博主「_假象」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wali_wang/article/details/50491831

 

 

teradata Primary Index简称PI
teradata 建表时强烈建议明确指定PI列(尽管不指定PI teradata会根据DBScontrol配置自动选定PI),可以是一列或者多列,最多64列
PI主要有三个作用:

数据分布(Data Distribution)
快速检索数据(Fastest way to retrieve Data)
表关联(Incredibly important for Joins)
PI可以分为两类:(UPI or NUPI)
UPI(Unique Primary Index):不可以包含相同的值,对于装载数据总是将table的数据均匀的分布到AMP上,对于检索数据总是one-AMP operation类型。
语法:

CREATE TABLE sample_1
(col_a INT
,col_b INT
,col_c INT)
UNIQUE PRIMARY INDEX (col_b);
1
2
3
4
5
UPI分布:


NUPI(Non-Unique Primary Index ):可以存在相同的值,对于装载数据相同的值会被分布到同一个AMP上
语法:

CREATE TABLE sample_2
(col_x INT
,col_y INT
,col_z INT)
PRIMARY INDEX (col_x);
1
2
3
4
5
NUPI分布:


PI为多列的语法:

CREATE TABLE sample_2
(col_x INT
,col_y INT
,col_z INT)
PRIMARY INDEX (col_x,col_y, ..);
1
2
3
4
5
PI = (A, B)=
Hash (A) * Hash (B) + Hash (A) + Hash (B) =
Hash (B) * Hash (A) + Hash (B) + Hash (A)


本文简单介绍有关PI在数据分布这一方面的作用,其他两个单独介绍。
teradata 对于数据的切分对用户来说是透明的,我们只需要指定好PI,数据分布的工作由teradata来完成。
那么teradata是如何来分布数据的呢? teradata数据库分布数据依赖于hash算法,针对我们PI列中的值做hash。
如下图可以看出来PE负责对PI做hash,BYNET负责分布数据


Hash算法大致处理流程:
PI列的值经过hash算法返回32 bit的row hash,其中前16位为Destination Selection Word (DSW),该值代表了hash map的入口,也就决定了哪一个AMP接受数据,然后由AMP使用row hash将数据存放到磁盘中。

————————————————
版权声明:本文为CSDN博主「_假象」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wali_wang/article/details/50493077

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Kotlin Class「T」

fun <T> gotoMainPage( context: Activity, postId: String, mainActivity: Class<T> ) { val intent = Intent(context, ADSplash......

osc_qatrfv06
19分钟前
0
0
小赢科技2020年一季报:由盈转亏1.96亿,M3以下贷款逾期率翻倍达6.71%

来源 | 新金融一线 北京时间6月29日,美股上市互金平台小赢科技公布了今年一季报未经审计的财务业绩报告。财报显示,该公司2020财年第一财季净营收同比下降31.9%至5.29亿元(人民币,下同);...

镭射财经
19分钟前
12
0
kotlin实现单例

/** * 功能:单例实现 */class Singleton private constructor() { companion object { val instance by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { Si......

osc_5nscij7v
19分钟前
11
0
七月算法机器学习 11 决策树、随机森林、 adaboost

目录 主要内容 决策树 信息增益 三种决策树学习算法 决策树的例子 决策树的过拟合 Bootstraping Bagging的策略 随机森林 提升的概念 Adaboost 举例 主要内容 决策树  决策树学习采用的是自...

osc_2718ydlo
21分钟前
10
0
支持千万人次毫秒级交易,360金融的系统性能如何做到?

提到“系统性能”问题,便立即联想到刚刚过去的“618”购物狂欢,电商公司在面对高密集度并发交易行为时,依托强大的系统性能以保持用户在网购与支付过程中平台的系统稳定性的极致案例。系统...

osc_jrhexi1r
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部