Trafodion的第一个版本提供了一个基于Hadoop平台之上的操作型SQL引擎。功能包含:

  • 完整的ANSI SQL语言支持
  • 完整的ACID事务支持。对于读、写查询,Trafodion支持跨行,跨表和跨语句的事务保护
  • 支持异构存储引擎的直接访问,包括本地访问数据存储
  • 为应用程序提供极佳的高可用性保证
  • 采用了查询间(intra-query)并发执行模式。轻松支持大数据应用
  • 同时应用编译时和运行时优化技术,优化了OLTP工作负载的性能

事务管理特性包括:

  • 事务串行化,基于开源项目HBase-Trx中的多版本并发控制(MVCC)的实现原理
  • 增强的故障恢复机制保证了数据库中用户数据的一致性
  • 事务管理器支持多线程的SQL客户端应用
  • 支持非事务型数据访问,即直接访问底层HBase表

接下来的章节阐述了更多细节。

关键功能

SQL数据定义语言(DDL)语句

SQL语句描述
CREATE SCHEMA此语句执行之后但是没有真正创建一个schema,

只有在创建表的时候指定了schema,这时才会创建schema。

CREATE TABLE创建表;支持其他的变换形式,如:CREATE TABLE AS, CREATE TABLE LIKE以及CREATE VOLATILE TABLE。
CREATE INDEX在已存在的表上创建索引。
CREATE VIEW创建视图。
CREATE FUNCTION创建用户用C语言写的自定义功能函数(UDF)。
CREATE PROCEDURE创建Java语言版本的存储过程(SPJ)。
CREATE LIBRARY在数据库schema中为一个SPJ的JAR文件或者一个用户自定义功能函数(UDF)的库文件创建一个库对象。
DROP TABLE删除表,支持RESTRICT和CASCADE两种选项。
DROP INDEX删除索引。
DROP VIEW删除试图。
DROP FUNCTION删除C语言版本的用户自定义功能函数(UDF)。
DROP PROCEDURE删除Java语言版本的存储过程(SPJ)。
DROP LIBRARY删除SPJs或者UDFs在数据库schema中的库对象。
ALTER TABLE改变现有表的结构,譬如新增或者删除一列。

SQL数据操作语言(DML)语句

数据库读(SELECT)以及写(INSERT/UPDATE/DELETE)语句都是支持的。另外也支持CALL语句(调用SPJ)。

SELECT语句

功能描述
SELECT 列对象列表可以指定ANY, FIRST或者ALL子句;也支持DISTINCT子句过滤掉重复行;甚至可以指定多个DISTINCT子句。列名可以引用相关的名字。
FROM 子句可以是表或者视图对象,连接可以自然连接或者交叉连接。支持以下链接方式:
  • INNER
  • LEFT OUTER
  • RIGHT OUTER
  • FULL OUTER
WHERE 子句指定选择结果的删选条件
子查询支持查询条件中支持子查询,可以是嵌套查询或者连接查询。
GROUP BY 子句指定GROUP BY子句会让结果根据指定的分组字段进行分组。子句可以列名或者列序号。
HAVING 子句指定在GROUP BY子句返回结果中的每个组中的查询条件。
ORDER BY 子句指定结果的排列顺序,子句可以是列名或者列序号。
UNION 子句合并两个SELECT语句的查询结果。
SAMPLE 子句Trafodion中的扩展,此子句可以指定从结果集中选取一个子集。
TRANSPOSE 子句Trafodion中的扩展,提供类似于Oracle和SQL Server中 Pivot命令的相似功能。
SEQUENCE BY 子句Trafodion中的扩展,为计算sequencen的函数指定结果集的排列顺序。

INSERT/UPDATE/DELETE 语句

语句描述
INSERT往表或者视图中插入数据。
UPDATE更新表或者视图中相关列的值。
DELETE删除表或者视图中的数据行。
UPSERT如果数据行存在,更新表中的数据行,反之插入一条新的数据。
MERGE从表A往表B做UPSERT以及额外的更新操作。

CALL 语句

语句描述
CALL调用Java语言版本的存储过程(SPJ)。

SQL 事务控制语句

语句描述
BEGIN WORK开始一个事务。
COMMIT WORK提交所有改动以及结束事务。
ROLLBACK WORK撤销事务中的所有数据变动以及结束事务。
SET TRANSACTION设定事务相关属性。

SQL 数据类型

CAST函数可以把值从一种数据类型转换成另外一种数据类型。

数据类型描述
Numeric支持以下几种数值数据类型:
  • NUMERIC
  • BIGNUM (扩展的数值精度)
  • SMALLINT
  • INTEGER
  • LARGEINT
  • FLOAT
Character支持以下几种字符串数据类型:
  • CHAR
  • VARCHAR

字符数据类型支持也包含国际字符集的支持。

Date/time支持以下几种数据类型:
  • DATE
  • TIME
  • TIMESTAMP
IntervalINTERVAL

SQL 语言功能支持

特性描述
字符集用户数据编码可以是ISO88591, UTF8以及UCS2字符集。原数据用UTF8编码存储。TRANSLATE函数可以将字符串在相互兼容的任意两种字符集间进行相互转换。
约束Trafodion支持主键,非空,检查以及唯一性约束,另外也支持外键约束。
别名可以给表、试图或者子查询命名别名。
游标Support for non-holdable cursors only.
表达式支持基于数据类型–的值表达式。
标志符支持常用的或者分割的标志符。
支持主键(但是主键创建之后不能删除)、族键和Hash分区键。另外,系统产生的syskey也可以用作键。
LiteralsSupport for data-type–based literals.
谓词支持以下谓词:

BETWEEN比较运算符EXISTSINLIKEIS [NOT] NULLQuantified comparison operators

子查询支持嵌套子查询或者连接子查询。

SQL 语句

语句类型描述
DEFAULT可以在CREATE TABLE或者ALTER TABLE ADD COLUMN语句中给某列指定默认值。
FORMAT指定某列的输入格式。

SQL 函数

函数类型描述详细信息
聚合聚合函数支持的函数:

AVG, COUNT, MAX, MIN, STDDEV, SUM, VARIANCE

字符针对字符数据类型值的字符串函数支持的函数:

ASCII, CHAR, CHAR_LENGTH, CODE_VALUE, CONCAT, INSERT, LCASE, LEFT, LOCATE, LOWER, LPAD, LTRIM, OCTET_LENGTH, POSITION, REPEAT, REPLACE, RIGHT, RPAD, RTRIM, SPACE, SUBSTRING/SUBSTR, TRANSLATE, TRIM, UCASE, UPPER, UPSHIFT

日期/时间针对日期时间类型数据相关函数支持的函数:

ADD_MONTHS, CONVERTTIMESTAMP, CURRENT, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, DATE_ADD, DATE_PART, DATE_SUB, DATE_TRUNC, DATEADD, DATEDIFF, DATEFORMAT, DAY, DAYNAME, DAYOFMONTH, DAYOFWEEK, DAYOFYEAR, EXTRACT, HOUR, JULIANTIMESTAMP, MINUTE, MONTH, MONTHNAME, QUARTER, SECOND, TIMESTAMPADD, TIMESTAMPDIFF, WEEK, YEAR

算数针对数值类型数据的数学和统计函数支持的函数:

ABS, ACOS, ASIN, ATAN, ATAN2, CEILING, COS, COSH, DEGRESS, EXP, FLOOR, LOG, LOG10, MOD, NULLIFZERO, PI, POWER, RADIANS, SIGN, SIN, SINH, SQRT, TAN, TANH, ZEROIFNULL

SequenceTrafodion扩展函数,提供了针对有序的中间结果的聚合函数子集支持的函数:
  • DIFF1, DIFF2
  • MOVINGAVG, MOVINGCOUNT, MOVINGMAX, MOVINGMIN, MOVINGSTDDEV, MOVINGSUM, MOVINGVARIANCE
  • OFFSET, RANK
  • RUNNINGAVG, RUNNINGCOUNT, RUNNINGMAX, RUNNINGMIN, RUNNINGRANK, RUNNINGSTDDEV, RUNNINGSUM, RUNNINGVARIANCE
  • LASTNOTNULL, ROWS SINCE, ROWS SINCE CHANGED, THIS
其他工具函数,譬如跟NULL值、安全、数据类型转换等相关的函数支持的函数:

BITAND, CASE, CAST, COALESCE, CONVERTTOHEX, CURRENT_USER, DECODE, EXPLAIN, ISNULL, NULLIF, NVL, SESSION_USER, USER

用户自定义函数(UDFs)支持C语言开发的用户自定义函数函数可以返回单个数据列值,数据行或者一个表格

SQL 工具

语句描述
UPDATE STATISTICSTrafodion扩展功能,可以更新一个表中的一组或者多组列集合的柱状统计信息
EXPLAINTrafodion扩展功能,可以产生一个描述DML语句访问表的结果表
CONTROL QUERY DEFAULTTrafodion扩展功能,通过CQD可以改变当前进程的默认设置
CONTROL QUERY SHAPETrafodion扩展功能,可以人为影响优化器选择一段或者一个完整的用户选择的查询计划

Trafodion 限制

条目限制描述
命名Schema、表以及列名最长只能256字节。(However, many UTF8 characters will fit in 256 bytes.)
针对行的最大长度没有限制
索引针对索引键的组合列长度没有限制
约束针对主键的组合列长度没有限制
VARCHAR列长度最多支持100K。
  • No labels