《Teradata架构介绍教程(东南融通内部资料)》由会员分享,可在线阅读,更多相关《Teradata架构介绍教程(东南融通内部资料)(63页珍藏版)》请在金锄头文库上搜索。
1、LONGTOPGROUPLongtop Financial Technology Co.,Ltd.Teradata架构技术交流技术交流范晓亮范晓亮 2009-04-10主题nWhat is Teradata?nTeradata A Brief HistorynTeradata数据库竞争优势nTeradata RDBMS 架构nTeradata 系统架构nTeradata 数据库与数据库用户的比较n数据存储和访问主题nWhat is Teradata?nTeradata A Brief HistorynTeradata数据库竞争优势nTeradata RDBMS 架构nTeradata 系统架构
2、nTeradata 数据库与数据库用户的比较n数据存储和访问What is Teradata?主题nWhat is Teradata?nTeradata A Brief HistorynTeradata数据库竞争优势nTeradata RDBMS 架构nTeradata 系统架构nTeradata 数据库与数据库用户的比较n数据存储和访问Teradata A Brief History主题nWhat is Teradata?nTeradata A Brief HistorynTeradata数据库竞争优势nTeradata RDBMS 架构nTeradata 系统架构nTeradata 数据库
3、与数据库用户的比较n数据存储和访问Teradata数据库竞争优势n数据及用户不限量n经过验证的可升级性:支持小到(10 GB) 大到(100+TB) 的数据库n无限的并行性:设计和建立在并行基础上的数据库n成熟的优化技术:能够处理复杂的查询,支持到最多64个的join子查询n商业模型:NF、强大的视图处理、星型模型能力n提供单个真实商业版本:Teradata提供一个中央的,通过抽取各个源系统数据集成的企业范围的数据库,保证数据的一致性n高可用性n并行装载及卸数处理强大的并行装载,load与unload工具可升级性,这些工具如:Fastload、Multiload、TPump、and FastE
4、xport主题nWhat is Teradata?nTeradata A Brief HistorynTeradata数据库竞争优势nTeradata RDBMS 架构nTeradata 系统架构nTeradata 数据库与数据库用户的比较n数据存储和访问Teradata存储体系架构注意:nParsing Engine解释sql命令并把记录转换成一个AMP消息,分配插入数据的请求nMessage Passing Layer分发行,并确保每行发送到合适的AMPnAMP格式化行并经其写入与此AMP相关的磁盘n一个AMP管理一个由磁盘阵列中多个物理磁盘组成的逻辑或虚拟盘Teradata数据检索体系架
5、构注意nParsing Engine优化请求并创建任务AMP需要执行的任务nMessage Passing Layer分发分发PE创建的任务到相应的创建的任务到相应的AMP,并激活它nAMP从各自对应的物理磁盘取出需要的数据并通过MPL返回PE,PE把数据返回给请求的客户应用程序,如果数据需要格式化,排序,聚合都由AMP完成Teradata架构中几个名词概念nBYNET(Ban Yan NETwork) BYNET是一个为NCR MPP系统提供高性能网络互连能力的软件与硬件集。BYNET允许在各节点之间使用点对点、多点传送、广播通讯。通讯能力的可测量性,每增加一个节点,每个BYNET增加60M
6、(BYNET Version 3 是90M)的带宽,所以增加一个节点时,更多的点对点连接可以同时建立,广播和多点传送的固定带宽是每秒60M(BYNET Version 3 是90M) ,广播通信只有在需要对所有AMP操作时才会调用,一般都是点对点的通信,多点通信在V2R5版本中才引进进来。nMPP(Massively Parallel Processing) system大量并行数据处理系统nCLI(Call Level Interface) CLI是一个最底层的与TeradataRDBMS之间的接口nTDP(Teradata Director Program) 它运行于任何客户端系统上的程序
7、,它管理CLI的Session通行到RDBMS,它的功能包括SESSION开始,终止,登录,身份认证,备份恢复,重起Teradata and MPP SystemsnTeradata 使一个MPP系统以一个整体的系统形态展现给用户和数据库管理者nTeradata RBDMS 的主要组件是Parsing Engine (PE)和Access Module Processor (AMP)两个虚拟的处理器nThe MPL (包括PDE and BYNET) 连接并使各节点之间可以通信Teradata Functional OverviewChannel-Attached client softwar
8、e OverviewnCall Level Interface (CLI) :访问Teradata最底层的接口,控制客户端的请求和响应,创建session,缓冲区的分配和初始化,信息的打包和解包nTeradata Director Program (TDP) :session初始化和终止,登陆,验证,恢复和重起,维护传递到PE的session队列, 错误通知(如应用程序失败,Teradata重起),session在多个PEs之间的分配n企业系统连接信道(ESCON Channel) 和总线和标记信道(Bus and Tag Channel)Network-Attached client sof
9、tware OverviewnCLI提供对Teradata最大限度的连接和访问性,ODBC作为业内标准是更多的应用程序可以连接到TeradatanMicro Teradata Director Program (MTDP) 是Teradata 提供的网络连接环境下的TDP实现,它和渠道连接下的TDP功能基本一致,唯一的区别是它不负责session在多个PEs之间的分配,此功能由运行在Teradata系统上的Connect and Assign Servers 实现nMicro Operating System Interface (MOSI) 实现在客户端访问Teradata时的操作系统独立性
10、,有了它,只需要一个版本的MTDP运行在不同的网络连接数据库平台上Teradata PE(Parsing Engine) Define包括以下功能nSession control:一个有效的session一经建立,就由PE负责在客户端应用程序和RDBMS之间的这次对话的管理,session control 主要控制着logon 和logoffnParser:解析客户端请求的sql,判断其语法和语义上的正确性,并查询数据字典确认所有的请求对象和列是否存在,请求的用户是否有相应的访问权限nOptimizer:评估所有可选的执行计划并选出最快的一种,并将其转化成AMP可执行的步骤,传给Dispatc
11、hernDispatcher:通过执行控制控制Optimizer传来的执行步骤一步步传递给相应的AMP,通过响应控制把结果返回给客户,根据sql请求的不同,执行步骤可能传递给一个AMP,或者几个AMP或者所有AMPThe Parsing Engine(分析引擎)PE的功能n管理session(可以管理多达120个)n解析并优化请求的sql语句n发送优化过的执行计划给AMPn输入转换 例如EBCDIC / ASCII之间转换,如果需要转换时n发送返回的结果集给请求端Message Passing Layer Definen它负责处理Teradata 数据库的内部通讯,即所有PEs和AMPs之间的
12、通讯都要经过MPL,PE分配给AMP的执行步骤通过MPL路由到合适的AMP,处理完成后,响应消息再经过MPL路由由AMP返回给相应的PEnMPL由Parallel Database Extensions (PDE) 软件,Bynet软件和Bynet硬件组成n根据分发的请求不同,会有以下三种通信Broadcast 消息传递给系统中所有的AMPs 和PEs Multi-Cast 消息传递给一组AMPs Point-to-Point 消息传递给系统中一个特定的AMP 或者PEnMPL这种技术是Teradata并行性的基础Message Passing LayerMPL功能n在PE和AMP之间传送信息
13、n点对点,多点,广播通讯n合成返回结果集并传回PEnTeradata并行性的基础MPL组成nParallel Database Extensions (PDE) 软件nBynet软件n用于MPP系统的Bynet硬件The Access Module Process(AMP) Definen每个AMP负责管理数据库的一部分,AMPs完成生成一个结果集时所有的物理处理工作,包括排序,聚合,格式化,转换n当一个AMP收到MPL传递过来的Parser/Optimizer的执行步骤时,它会完成相应的请求如从物理磁盘取出数据或对数据进行排序,对于某些请求,AMPs也可能会将其上的数据拷贝并传递给其他AMP
14、snLock数据库或表,创建、修改、删除表,插入、修改、删除表中的数据n返回结果集给Dispatcher n空间管理,空间的使用控制和空间分配n输出数据的转换,与PE做相反的工作,如PE把EBCDIC 转换成ASCII,AMP则把ASCII转换成EBCDIC返回The Access Module Processor(AMP)AMP功能n找出请求的行nLock管理n行排序n聚合列n输出转换和格式化n为客户请求创建结果集n磁盘空间管理n恢复处理Linear Growth and ExpandabilityTeradata ParallelismDefinenParallelism(并行性):是Te
15、radata数据库的核心n每个PE能够支持120个Session并行处理n每个Session可以处理多个并发请求,虽然每个时点只有一个请求是活动的,但每个Session自已能够管理16个请求和它们相关的结果集n每个AMP能够并行处理80个任务,多线程的同时处理多个请求n每个AMP作为数据库的一部分一起并行的处理请求,如果optimizer 传递来的执行步骤之间没有交叉,AMP会同时并行处理一个请求的多步操作Teradata ParallenlismnTeradata 是建立在并行基础上的系统n每个PE能够支持120个Session并行处理n每个Session可以处理多个并发请求nMPL能并行处
16、理所有活动的消息n每个AMP能够并行处理80个任务n所有的AMP能并悉心能够处理一个请求n一个AMP能并行处理多个请求主题nWhat is Teradata?nTeradata A Brief HistorynTeradata数据库竞争优势nTeradata RDBMS 架构nTeradata 系统架构nTeradata 数据库与数据库用户的比较n数据存储和访问Teradata Database Version 1 PlatformsTeradata Database Version 2 ArchitectureTeradata Database Version 2 Single Node (
17、SMP)SMP 体系架构Multi-Node MPPNCR Rack-Based CabinetsNCR MPP系统的一些特性nTeradata数据库软件:它允许多个SMP运行在Teradata数据库上,并扮演单个实例角色n可升级的BYNET连接:当增加节点时,相应的增加了带宽n并行可升级性:通过安装/升级多个SMPs 实现软件的并行安装和升级nAWS(Administration Workstation) :单点操作控制及升级服务管理nSMP:SMP只需要负责管理各自资源n还有一些冗余的组件:两个BYNET,在一个磁盘组中有两个磁盘控制器,又模拟控制器来增强可用性,个power来支持节点.主
18、题nWhat is Teradata?nTeradata A Brief HistorynTeradata数据库竞争优势nTeradata RDBMS 架构nTeradata 系统架构nTeradata 数据库与数据库用户的比较n数据存储和访问Teradata 数据库与数据库用户的比较n首先在Teradata中,数据库与数据库用户同样的重要,在整个系统中数据库名与用户名必须是唯一的,是sql语句里最高层次的限定条件n一般来说,一个用户具有登录及访问权限的在很多系统中,一般不会给用户分配永久的空间,只能授权用户访问包括数据视图或宏的数据库,通过授权给用户去访问数据库中的表.n数据库和用户一样是可
19、以为空的,既不包括任何表、视图、宏、触发器、存储过程,也可以不分配永久空间他们唯一的不同是用户必须有密码,而数据库没有。n在任何时候,一个有权限的用户可以改变另一个用户的spool空间大小n只有永久空间被分配后,才可以创建表到数据库中,而视图、宏、触发器等可以在任何时间添加,因为他们不需要永久空间。n数据库与用户都是一个数据库对象的存储库,他们主要的不同是用户能够登录并获得数据库SESSION.n在DBC.DBASE表存放着数据库或用户信息Database User ComparisonTeradata Database-user 的层次关系数据库和用户的空间类别nPermanent Spac
20、e :分配给用户或数据库的最大存储容量,存放table rows, Fallback tables, secondary index subtables, stored procedures, and permanent journals. nSpool Space :系统自动获取的临时空间,存放结果集的中间过程和最终的sql语句结果(select语句通常是用Spool space存放已经select的数据) ,可变临时表和导出表的数据,不再需要时自动释放. nTemporary Space :系统自动获取的临时空间,存放Global Temporary tables 被实例化的数据。主题nW
21、hat is Teradata?nTeradata A Brief HistorynTeradata数据库竞争优势nTeradata RDBMS 架构nTeradata 系统架构nTeradata 数据库与数据库用户的比较n数据存储和访问Storing RowsPrimary Index ValuesPrimary Keys and Primary IndexesRow Distribution Using a UPI Case 1Row Distribution Using a NUPI Case 2Row Distribution Using a Highly Non-UniquePrim
22、ary Index (NUPI) CaseSecondary Indexesn跟Oracle的索引差不多n每一个表可以有零或多个次索引可以是唯一或非唯一n在数据仓库并不常用次索引建立次索引需要额外资源和空间Teradata 性能本身很高,用次索引的需要不高不影响表在AMP中的分布可以在需要时动态添加,不用时再drop掉添加改善查询性能Unique Secondary Index (USI) AccessNon-Unique Secondary Index (NUSI) AccessComparison of Primary and Secondary Indexes Full Table Sc
23、ansPartitioned Primary Indexes (PPI)nTeradata 数据库的一种索引机制,数据按分区字段在AMP中分组摆放n每一个表可有零或一个表分区n 访问只看有关系的分区n用表分区字段作过滤条件直接比较= =不用分区字段作运算大大加快速度n例子:select * from prdview.Tbl_a where sum_date = 20030101l从一个分区取数定义PPICREATE MULTISET TABLE prdmiddle.Ft_mid_subtotal_item ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER J
24、OURNAL ( user_id DECIMAL(15,0), gen_amt DECIMAL(12,0), gen_month DECIMAL(6,0), subtotal_bill_item DECIMAL(12,0), deal_id DECIMAL(12,0), sum_date INTEGER)PRIMARY INDEX XIE1Ft_mid_subtotal_item ( user_id )PARTITION BY RANGE_N(sum_date BETWEEN 20030701 AND 20091231 EACH 1 , NO RANGE OR UNKNOWN);Partiti
25、oned Primary Indexes (PPI)和和NPPI对照对照表分区 Explainnselect * from devview.Tb_seu_first_bill_item where load_time is null非表分区 Explainnselect * from devview.Tb_seu_first_bill_item where load_time /100 is nullPI Explainnselect * from devview.Tb_seu_first_bill_item where cdr_id = 123非 PI Explainnselect * fr
26、om devview.Tb_seu_first_bill_item where rate_id = 123数据库锁Locking 关键字nLocking关键字能重写Teradata默认的锁策略,可以升级锁的级别:例如:LOCKING ROW FOR ACCESS SELECT * FROM Table_A;一个ACCESS锁允许用户访问一个有writer 或read锁的对象,在上例中即使定义的是locking row,但是因为是全表扫描,所以还是锁的table。nLOCKING TABLE Table_B FOR EXCLUSIVE UPDATE Table_B SET A = 2007;上例
27、给Table_B一个排它锁,实际上升级了锁级别。nLOCKING TABLE Table_C FOR WRITE NOWAITUPDATE Table_CSET A = 2008;nowait选项在不想让锁排队的情况下使用,如果不能立即对表置锁则报Error code 7423Rules of LockingAccess LocksRank()与row_number()的使用 nPARTITION BY后的列为排队的粒度;ORDER BY后的内容为排序的依据。例如:qualify rank() over ( partition by jiejuh order by jiluzt) = 1 在某
28、个jiejuh内部jiluzt最小(默认升序排第1)的记录才会选出来。n但是rank()函数的结果是有排名并列的情况的,如果某jiejuh的jiluzt最小的是两条记录,那么这两条记录rank()的返回值都是1。n为了避免并列的情况我们可以改用row_number()函数。row_number()函数的用法n与rank()函数完全相同,只是不会出现并列的情况,于是select语句中的qualify子句写成如下的样子:nqualify row_number() over ( partition by jiejuh order by jiluzt) = 1Thank you for your time!