通过SQL查询功能,您可以对表格存储中数据进行复杂的查询和高效的分析,为多数据引擎提供统一的访问接口。

背景信息

表格存储(Tablestore)是阿里云自研的多模型结构化数据存储,提供海量结构化数据存储以及快速的查询和分析服务。表格存储的分布式存储和强大的索引引擎能够支持PB级存储、千万TPS以及毫秒级延迟的服务能力。使用表格存储您可以方便的存储和查询海量数据。

为了满足用户业务平滑迁移到表格存储以及使用SQL方式访问表格存储的需求,表格存储在传统的NoSQL结构化存储之上,提供云原生的SQL引擎能力,SQL查询兼容MySQL的查询语法,同时提供基础的SQL DDL建表能力。对于已有数据表,通过执行CREATE TABLE一键自动建立映射关系后,您可以使用SQL方式访问表中数据。

SQL查询功能支持通过多元索引来快速查询满足查询条件的数据。使用SQL查询时,系统会根据SQL语句自动选择合适的方式来加速SQL访问。

SQL查询功能适用于在海量数据中进行在线数据访问类型的场景,SQL访问的延时从毫秒、秒到分钟级别不等,包括基于数据表主键的Point Query (GetRow操作)、多元索引的精确查询(TermQuery )等以及通过多元索引的统计聚合能力进行查询,例如数据表中满足某个条件的个数、某列求和等。

基本概念

SQL的使用会涉及到很多传统数据库中的概念,此处介绍下相关概念以及与现有表格存储概念的映射关系。

名词 描述
数据库 按照数据结构来组织、存储和管理数据的仓库。一个数据库中可以包含一个或者多个表,映射为表格存储的实例。
由行和列组成,映射为表格存储的表。
索引 映射为表格存储的二级索引或者多元索引。

功能特性

  • SQL功能
  • 字符集和排序规则
    • 字符集:UTF-8
    • 排序规则:二进制排序规则
  • 操作符

    支持算术运算符、关系运算符、逻辑运算符等SQL操作符。更多信息,请参见SQL操作符

  • 存量表绑定

    通过CREATE TABLE语句,您可以为存量表创建映射关系。创建映射关系时,请确保主键和存量表的主键一致,属性列和存量表的属性列类型以及预定义列类型一致。关于数据类型映射关系的更多信息,请参见数据类型映射

注意事项

在使用SQL查询时,不支持事务功能。

使用限制

更多信息,请参见SQL使用限制

SQL中大小写

表格存储的SQL引擎遵循通用的SQL规范,对列名大小写不敏感,例如操作SELECT Aa FROM exampletable; 语句与SELECT aa FROM exampletable;语句是等价的。

由于表格存储中原始表的列名大小写敏感,当使用SQL时,原始表的列名会统一转换为小写字母进行匹配,即如果要操作表格存储表中的Aa列,在SQL中使用AA、aa、aA、Aa均可,因此表格存储原始表的列名不能同时为AA、aa、aA和Aa。

保留字与关键字

表格存储将SQL语句中的关键字作为保留字。如果在命名表或者列时需要使用关键字,则请添加``符号对关键字进行转义。关键字不区分大小写。

关于保留字与关键字的更多信息,请参见保留字与关键字

SQL与多元索引功能对比

多元索引功能 SQL函数/语句
精确查询 等于(=)
范围查询 大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、BETWEEN ... AND ...
多条件组合查询 MustQueries AND
MustNotQueries !=
ShouldQueries OR
排序和翻页 FieldSort ORDER BY
SetLimit LIMIT
统计聚合 最小值 MIN()
最大值 MAX()
SUM()
平均值 AVG()
统计行数 COUNT()
统计去重行数 COUNT(DISTINCT)
获取统计聚合分组中的行 ANY_VALUE()
字段值分组 GROUP BY