表格存储 Tablestore SQL 商业版介绍

简介: 表格存储(Tablestore)是阿里云自研的多模型结构化数据存储,提供海量结构化数据存储以及快速的查询和分析服务。表格存储的分布式存储和强大的索引引擎能够支持 PB 级存储、千万 TPS 以及毫秒级延迟的服务能力。使用表格存储你可以方便的存储和查询你的海量数据。表格存储在 21 年 9 月正式公测了 SQL 功能,使得你在享受表格存储全托管,灵活的存储能力之外,可以让你的业务迁移更加平顺。经

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

表格存储在 21 年 9 月正式公测了 SQL 功能,使得你在享受表格存储全托管,灵活的存储能力之外,可以让你的业务迁移更加平顺。经过几个月的公测和反馈,我们今天正式发布表格存储 SQL 商业化版本,基于这个版本,您可以放心的进行生产业务的迁移。目前我们提供控制台,官方 cli,官方 Java SDK Go SDK,以及表格存储的 JDBC DriverGo database driver 等多种方式进行 SQL 的访问。 具体可以参考我们的官方文档。
本文主要介绍下表格存储 SQL 功能的使用场景和功能,基本概念和 SQL 使用最佳实践。
具体计费详细介绍可以参考SQL查询计量计费

使用场景

表格存储 SQL 和之前的产品功能一致,是全托管免运维的,当使用 SQL 访问表格存储和 SDK 直接读取数据在费用上一致,不会额外收费。这样在可以享受访问接口的便利性和计算能力同时,对于一些之前需要拉取较多数据二次计算的场景可以大幅减少客户端的数据传输,提升访问性能。那我们这里我们简单总结下表格存储 SQL 适合的场景。

基础数据查询

GetRow / GetRange 的替换。如果您的场景是大量是用表格存储进行基于主键的点查,范围查询。那么你可以很方便的替换成 SQL 的查询,同时我们可以实现线上几万每秒到几十万每秒的高并发访问能力。

基于多元索引的检索与统计聚合

使用多元索引的各类多字段检索,统计聚合能力等。如果您的场景是使用多元索引,进行多字段组合查询,又或者是全文检索,统计聚合查询等,这些您可以不再需要理解 SDK 的写法,直接使用 SQL 来进行数据链路的访问。相信在查询相对复杂的情况下,SQL 可以更方便您进行查询语义的表达。

主表与索引组合查询

主表,索引的组合查询使用。我们提供自动索引选择能力,可以在您查询时,根据查询条件预估查询开销,进行智能的索引选择。

轻量级统计聚合

轻量级的聚合分析,对于主表和全局二级索引,我们支持基于索引命中后进行扫描 10w 条记录的实时在线聚合计算(如有更大规模计算可以联系我们调整)。对于能命中多元索引查询,我们会利用索引引擎的计算能力不限制单次计算数据量。

时序模型的查询和分析

时序模型的各类查询场景,表格存储推出了针对时序场景的定制化存储引擎和分析能力。您也可以使用同样的访问入口,针对时序模型的数据进行各类查询,这里我们会提供一些针对时序场景的定制算子支持。
对于目前具体支持的 SQL 语法列表可以在我们的官方文档中查看。
如果您的场景没在上述列表中,您也希望通过 SQL 来进行访问,您可以通过工单或者钉钉群找到我们进行反馈,我们的 SQL 功能在快速迭代,会有更多更强大的能力持续发布。

基本概念

表格存储是一个 Schema free 的结构化存储产品,所以在您使用之际,只需要定义主键,不需要定义完整行的结构。但是在 SQL 查询中,通常是需要有 Schema 概念的,便于做数据类的的检查,投影,计算等操作。所以我们定义了 SQL 绑定概念。即在第一次使用SQL的时候,对一张表,需要通过 Create Table 语句进行表 Schema 定义。这个语句和普通的创建表没有区别,但是对于已经在 OTS 的表,他不会重新创建数据表,是进行一个 Schema 定义并在SQL 中关联。关联后即可以对已有的表格存储表开启 SQL 查询。
表格存储之前使用实例,表和索引这些概念表示对应的资源,对应在 SQL 中我们也有标准的映射,具体如下:

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

进行建表(前置条件表格存储中该表已经存在,通过 SQL 语法定义 Schema):

建表语法

CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type [NOT NULL | NULL],...
| PRIMARY KEY(key_part[,key_part]));

建表样例

CREATE TABLE exampletable1 (id BIGINTPRIMARY KEY, colvalue BIGINT, content MEDIUMTEXT);

你可以通过控制台页面,或者 SDK 执行这条 SQL 语句。其中如果您使用了控制台,控制台可以根据表中已有数据做一些探测,自动帮助您生成建表语句。如下图所示点击确认后,探测出的 Schema 我们会自动产出一条 SQL 语句。

在创建了绑定表以后,就可以像查询 MySQL 一样进行数据查询了。

最佳实践

同样的查询需求,不同的 SQL 写法或者存储引擎也会产生很大的性能差别。您可以参考我们的 "索引选择策略" 和 "计算下推"。更优的索引选择会减少单次扫描的数据量,提升性能,计算下推会把可能的算子推到存储层,减少存储层和计算引擎之间的数据交互,这两部分的能力都可以大幅降低整体的访问延时。这里我们举两个例子做为说明:

场景1 基于索引进行多字段组合查询

假设我们有一张订单表,表中会存储订单的明细各类字段。其中在表格存储中的主键定义如下(备注:场景中的案例使用测试数据,非生产样例):

在表格存储中的数据样例如下:

针对这张表,如果我们基于主键查询,可以很快获取结果例如

SELECT * FROM `ordertable` where `order` = "xxx"

这是因为这样的一个查询条件会被利用主键索引,变成一个小范围的 range 查询,如果你指定了全部主键就会自然的变成点查询。
那如果我们希望通过属性列来查询数据性能会怎么样呢?熟悉存储原理的同学不难理解,如果没有其他额外索引,我们需要通过属性列进行过滤,那往往可能会触发整表的数据扫描再返回最终结果。这时候性能可能会大不及预期。如果我们创建了一个多元索引,包含您要查询的所有字段。性能会非常的快:

这是因为,我们 SQL 会根据您的索引情况,进行动态选择,把 SQL 查询转化成对应的 Search 查询,利用倒排索引的特性,快速执行整条 SQL 语句。

场景2 计算下推

我们继续使用这张订单表,假设我们的查询除了过滤还有一些统计聚合。在没有多元索引的情况下,SQL 会先根据 Filter 捞取命中的数据,然后在执行统计聚合。有多元索引的情况下,SQL 会利用 Search 支持轻量级聚合的能力。例如如下 SQL 场景,我们希望按照用户维度查看购买 top 20 的订单金额信息。

SELECT sum(productprice) as total, customerid FROM `ordertable` group by customerid order by total desc LIMIT 20;

在没有多元索引的场景下,如果您的订单总量很大,会触发到我们的扫描上限(有放大需求可以加钉钉群或者工单咨询)。同时也会导致性能较差,如果使用了多元索引,就可以在秒级别进行这样的聚合查询。

最后对于 SQL 的使用性能问题,索引如何优化问题,欢迎加入我们的交流群讨论。

总结

更详细的功能介绍,欢迎参考表格存储官网文档,可以查看具体的 SQL 语法,用例,限制项等。
想了解更多表格存储的用法或者咨询欢迎加群讨论:
我们的开发者技术交流群,可搜索群号『11789671』或『23307953』,亦可直接扫码加入。

相关实践学习
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
目录
相关文章
|
10月前
|
NoSQL 开发工具
TableStore表格存储(阿里云OTS)多行数据操作查询,支持倒序,过滤条件和分页
1. 批量读取操作 批量读取操作可以通过多种方式进行,包括: GetRow:根据主键读取一行数据。 BatchGetRow:批量读取多行数据。 GetRange:根据范围读取多行数据。
578 0
|
存储 SQL NoSQL
表格存储 Tablestore 十年发展总结
这篇文章接下来会先整体介绍下表格存储 Tablestore,之后会分享下在技术层面产品这几年的功能演进、技术架构演进以及稳定性优化相关的工作,以及在业务层面我们定义的核心应用场景和一些典型案例。
66543 7
表格存储 Tablestore 十年发展总结
|
存储 NoSQL
|
SQL 存储 自然语言处理
表格存储最佳实践:使用多元索引加速 SQL 查询
表格存储(Tablestore)在 2022 年 5 月正式发布了 SQL 商业化版本,业务上只需要在数据表上建立映射关系,就可以基于 SQL 引擎方便地对表格存储中的数据进行访问和计算,大大地降低了用户的学习成本。
667 0
|
存储 运维 NoSQL
表格存储 Tablestore 简介
近十年来互联网技术得到了飞速的发展,越来越多的行业逐渐加入到了互联网的阵营中来,同时也产生了更丰富、更复杂的业务场景和需求,这对于数据应用系统的性能无疑是巨大的挑战。传统关系型数据库有什么瓶颈,如何通过分布式数据库表格存储 Tablestore 进行优化?
832 0
|
SQL 存储 Java
表格存储 SQL 查询多元索引
多元索引是表格存储产品中一个重要的功能,多元索引使用倒排索引技术为表格存储提供了非主键列上的快速检索功能,另外也提供了统计聚合功能。表格存储近期开放了SQL查询功能,SQL引擎默认从原始表格中读取数据,非主键列上的查询需要扫描全表。
表格存储 SQL 查询多元索引
|
存储 SQL NoSQL
表格存储 SQL 功能快速上手
# 功能介绍 表格存储(Tablestore)是阿里云自研的多模型结构化数据存储,提供海量结构化数据存储以及快速的查询和分析服务。表格存储的分布式存储和强大的索引引擎能够支持 PB 级存储、千万 TPS 以及毫秒级延迟的服务能力。使用表格存储你可以方便的存储和查询你的海量数据。​ 表格存储正式发布了 SQL 功能,满足用户业务平滑迁移到表格存储并可以继续通过 SQL 方式访问表格存储,表格存储
1426 0
|
SQL 存储 Cloud Native
表格存储 SQL 操作实战
表格存储做为一款结构化存储系统,近期发布了新功能 SQL,大幅简化了查询的门槛,用户无需学习繁琐的 SDK,也不用区分表,索引等不同的接口,可以像访问传统的 MySQL 这类数据库一样,使用 SQL 的方式访问云原生的结构化大数据存储。下面我们就来具体实操下,看看查询用起来顺不顺手。
481 0
|
6月前
|
存储 索引
表格存储根据多元索引查询条件直接更新数据
表格存储是否可以根据多元索引查询条件直接更新数据?
62 3
|
SQL 存储 弹性计算
玩转Tablestore:使用Grafana快速展示时序数据
Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,可以通过将采集的数据查询然后可视化的展示,实现报警通知;Grafana拥有丰富的数据源,官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQ
1644 0