Table of Contents
Toggle简介
Teradata分布式数据库 (TDSQL)是比较受欢迎的数据库管理系统,定位就是大数据仓库系统,定位比较高,主要应用于数据存储和数据处理,处理速度比Hive要高10倍左右。
架构
Teradata在整体上是按Shared Nothing 架构体系进行组织的,他的定位就是大型数据仓库系统,定位比较高,他的软硬件都是NCR自己的,其他的都不识别;所以一般的企业用不起,价格很贵。由于Teradata通常被用于OLAP应用,因此单机的Teradata系统很少见,即使是单机系统,Teradata也建议使用SMP结构以尽可能地提供更好的数据库性能,在后面的介绍中,都是按多机系统进行说明的。
特点
a.无限并行化—Teradata数据库系统是基于大规模并行处理框架(MPP),MPP在整个系统上进行负载均衡的分配。Teradata系统在其进程之间分割任务,并行运行他们以确保任务的快速完成。
b.没有共享架构—Teradata的架构称为共享无架构。Teradata节点,其访问模块处理器(AMP)和与AMP相关联的磁盘独立工作。他们不会与其他节点共享资源。
c.连接—Teradata可连接到通道连接的系统,如主机或网络连接的系统.
d.成熟优化程序—Teradata优化程序是市场上成熟的优化程序之一。 它自从开始就被设计为平行的。 它已经针对每个版本进行了优化。
e.DSQL—Teradata支持行业标准SQL与存储在表中的数据进行交互。 除此之外,它提供自己的扩展。
f.强大的实用工具—Teradata提供强大的实用程序,用于从/向Teradata系统导入/导出数据。
g.自动分发— Teradata自动将数据均匀分发到磁盘,无需任何手动干预。
语法
语法采用独有的TDSQL 支持标准的ANSI SQL语法 在这个基础上进行了加强及扩充
支持DCL语言(数据控制语言)
对许多关键词都支持缩写(例如:select 缩写成sel)。
支持的数据类型
类型 | 名字 | 字节长度 | 说明 |
数值型 | DATE | 4 | YYMMDD,特殊的INTEGER类型 |
DECIMAL(n,m) | 1,2,4,8 | n: 1~18, m: 0~n,可缩写成DEC。 如256.78可表示为DEC(5,2) | |
NUMERIC(n,m) | 1,2,4,8 | 同上 | |
BYTEINT | 1 | 128~+127 | |
SMALLINT | 2 | 32768~+32767 | |
INTEGER | 4 | 可缩写成INT | |
REAL | 8 | 2 * 10 –307 ~ 2 * 10 +308 | |
FLOAT | 8 | 同上 | |
DOUBLE PRECISION | 8 | 同上 |
字符型 | CHAR(n) | n | n: 1~64000,也可写成CHARACTER |
VARCHAR(n) | n+2 | n: 1~64000,变长,最前面两字节表示字符串 长度。也可写成CHAR VARYING(n) | |
LONG VARCHAR | 32002 | 相当于VARCHAR(64000) | |
二进制 | BYTE(n) | n | n: 1~64000,无符号二进制整数 |
VARBYTE(n) | n+2 | n: 1~64000,变长,最前面两字节表示长度 | |
其它 | GRAPHIC(n) | n | n: 1~32000,这三种数据类型可支持双字节日 本字符和汉字 |
VARGRAPHIC | n+2 | n: 1~32000,变长,最前面两字节表示长度 | |
LONG VARGRAPHIC | 相当于VARGRAPHIC(32000) |
TD扩展了图形数据类型,如:GRAPHIC、VARGRAPHIC、LONG VARGRAPHIC。图形数据类型主要是用来支持双字节字符的,如日文。当把系统 设置成支持双字节字符时,数据库中表、视图等对象的名字、字段等都可以使用双字节字符。如果系统设置成不支持双字节字符,则数据库对象名、字段等只能使用英文字母类的单字节字符,此时,前端工具仍然可以采用汉化界面,而且利用前面提到的CHAR和BYTE类型数据类型同样可以存储图形数据。
算术运算符
比正常计算多出了两个:求幂、MOD取模
算数函数 :
ABS (arg) | 求绝对值 |
EXP (arg) | 增加幂 |
LOG (arg) | 10的对数 |
LN (arg) | 自然对数 |
SQRT (arg) | 平方根 |
日期计算
在Teradata数据库中将DATE型数据作为整数看待,但不容许无效的日期。计算公式如下:
((YEAR – 1900) * 10000) + (MONTH * 100) + DAY
建表
Teradata DDL允许在创建表时指定表的物理属性
例:
- SET不允许记录重复
- MULTISET允许记录重复
- volatile multiset可变临时表
- 可变临时表(Volatile Temporay Table):不使用数据字典
- 导出表(Derived Table)
- 全局临时表(Global emporay Table):在数据字典中保存定义,丢弃实例
- 使用CREATE TABLE AS语法,可以基于已经存在的表创建新表。如果只创建表定义,不复制数据,使用WITH NO DATA选项。
交易完整性
在Teradata中,系统将保证一个交易的完整。怎样才算是一个交易呢,在Teradata中,根据其所处方式的不同在处理时也有所不同。在Teradata缺省模式下, 以分号结束的每个SQL语句都是一个完整的交易,也可以使用BT (Begin Transaction)和ET (End Transaction)来显示地定义一个交易。
特殊函数
WITH BY的主要特点包括:
- 它为明细数据表创建分类小计。
- 跟 GROUPBY 不同的是,WITH BY 没有剔除明细记录,而是在明细记录后面按照分类增加小计行。
- 可以允许多于一个字段进行小计,即小计当中可以嵌套小计。
- 输出结果将根据 BY后面的所有字段自动进行排序。
- 它是 Teradata的一个扩展特性。
- 不带by 则产生总计
|| :
字符串合并的符号是”||”,它把两个字符串串联成一个字符串。
SUBSTRING函数:
与MySQL中一样,但是写法不同
写法:SUBSTRING (<字符串表达式> FROM <开始位置> [ FOR <长度> ])
当SUBSTRING函数作用于整型数据类型时,SUBSTRING函数先将整型函数转化为字符串。对于不同的整型数据类型,它们的长度是不一样的,归纳为:
+ 1 2 7 | ( no. of dependents | ) BYTEINT |
+ 0 0 2 1 3 | ( area code ) | SMALLINT |
+ 0 0 0 5 5 5 4 1 3 4 | ( phone ) | INTEGER |
- BYTEINT 加上符号后 4个字符长
- SMALLINT加上符号后 6 个字符长
- INTEGER 加上符号后 11个字符长
累计函数(CSUM) :计算一列的连续的累计的值
CSUM(colname, sort list)
移动平均函数(MAVG):
基于预定的行数(查询宽度)计算一列的移动平均值。如果行数小于这个宽度,则基于前面已有的行计算平均值。
MAVG(colname, n, sortlist)
移动差分函数(MDIFF) :
基于预定的查询宽度计算一列的移动差分值。宽度决定有多少行参与计算。如果前面的行数小于n,则产生一个空值(null)代表差值。
MDIFF(colname, n, sortlist)
QUALIFY子句:最后执行的语句
运算顺序
括号内的优先计算
逻辑运算符的缺省优先级顺序从高到低为:NOT、AND、OR
语句执行从高到底顺序:where->join->group by->qualify->select