表格存储 SQL 操作实战

本文涉及的产品
表格存储 Tablestore,50GB 3个月
简介: 表格存储做为一款结构化存储系统,近期发布了新功能 SQL,大幅简化了查询的门槛,用户无需学习繁琐的 SDK,也不用区分表,索引等不同的接口,可以像访问传统的 MySQL 这类数据库一样,使用 SQL 的方式访问云原生的结构化大数据存储。下面我们就来具体实操下,看看查询用起来顺不顺手。

开篇

表格存储做为一款结构化存储系统,近期发布了新功能 SQL,大幅简化了查询的门槛,用户无需学习繁琐的 SDK,也不用区分表,索引等不同的接口,可以像访问传统的 MySQL 这类数据库一样,使用 SQL 的方式访问云原生的结构化大数据存储。下面我们就来具体实操下,看看查询用起来顺不顺手。

操作举例

话不多说我们就开始进入表格存储的控制台进行一番操作。

实例详情页

这里我们准备了两张订单表。右上角有 SQL 查询 标签,点击这里即可进入我们的 SQL 查询页面。

SQL 查询页面

1. 表绑定


进入页面,你会发现,在数据库“sqltest” 下面并没有表,不用慌,这是因为这些表不是通过 SQL 引擎创建出来的,本身表格存储并不要求您定义完整的表 Schema,即 Schema free 的灵活方式,但是为了实现 SQL 查询,我们需要这里定义一下 Schema,注意这里的定义不会影响你的线上非 SQL 写入,只会给 SQL 查询用,您可以放心的设置。点击➕图标,可以选择一个表,我们会帮您生成一个默认的创建定义SQL Schema的模板,语法和创建物理表是一样的。

你可以根据需求去添加,删除 Create Table 中的列,注意数据类型的映射关系可以参考数据类型映射
很快我们绑定好两张表后,就可以开始体验查询了。

2. 查看绑定信息

这里可以查看到您之前的绑定信息,同时在OTS中的主键也会提示出来。主键会和后续我们的查询性能有很大的关系。

3. 查看索引



索引也会对查询性能有很大影响,后面随着我们的查询会在详细解释。

4. 体验查询

点查

熟悉表格存储的同学应该知道,ots 中有一个查询接口叫 GetRow,那什么样的SQL会类似点查的效果呢。

select * from ordertable where `order` = '0000004bf78d' and orderid = 'o132042352'

当我们的 SQL where 条件中,包含了所有的pk,并且用 = 确定具体 pk 的值,这时候就会触发我们的点查。以上面的 SQL 为例。针对这类点查,我们的 SQL 引擎可以承载高并发低延时的访问,这个和我们的存储引擎有着同样的特性。

范围查询

select * from ordertable where `order` >= '0000004bf78d' limit 100

当你的查询指定的是部分主键,或者主键有返回,那么就会变成表格存储的RangeScan进行查询。

范围查询和过滤

select * from ordertable where `order` >= '0000004bf78d' and salespersonid = 's0065' limit 100

指定了属性列的一些条件,就会添加过滤条件。

注意这里,可能会有多次数据和存储进行交互,因为可能需要持续扫描,以这个为例,我们扫描出100条满足条件得到数据花费了1.1s。

扫描数据超限

SQL 查询相对表格存储之前的固定pk方式的扫描要灵活许多,所以可能会遇到一些问题,例如您的查询因为没有合理指定条件,导致了全表大范围的扫描,这里我们对您的存储和消耗资源做了保护,对于一些大的查询我们进行了限制。例如:

select * from ordertable where `order` >= '0000004bf78d' and salespersonid = 's0065' order by ordertime limit 100

这样的请求可能会扫很多数据过滤然后在进行排序才能返回结果,此时就会触发我们的超限。
控制台会看到如下错误提示:

这里我们只是做了保护,具体的限制项可以参考我们的官网文档,SQL使用限制,如果希望更大规模的数据计算需求,可以联系我们。

5. 索引加速

上面最后一个例子,我们会发现有些场景跑起来会比较慢因为要扫描很多数据,又或者直接超过了我们的扫描数据上限。那是不是就束手无策了呢?那既然您看到这里,我们肯定会给您一个优化的方案就是:创建多元索引。

统计表行数


约10亿行数据,进行一次全表count,1.7秒。

基于属性列的过滤

可以看到查询还是非常快的,这是因为有了多元索引后,我们的 SQL 查询过滤条件会被下推到存储层,减少数据的扫描和传输。
那这时候你可能会问如果我带一些聚合查询会快么,那我们来尝试一发:

统计聚合

一些聚合函数也都可以在秒级别返回。
这是因为我们的聚合函数,groupby 也下推进入存储索引层,加速了整个过程中的数据传输损耗等。

小结

如果你的查询多基于 pk,可以直接通过绑定表进行数据操作了。如果你的条件相对比较灵活,又或者有一些聚合计算需求,推荐你创建我们的多元索引,然后可以体验到毫秒到秒级别的 SQL 查询体验啦!

最后欢迎扫码加群和我们一起讨论你的使用反馈!

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

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
目录
相关文章
|
2月前
|
SQL 数据库 开发者
MSSQL性能调优实战技巧:索引优化、SQL语句微调与并发控制策略
在Microsoft SQL Server(MSSQL)的管理与优化中,性能调优是一项复杂但至关重要的任务
|
7天前
|
SQL 存储 数据处理
"SQL触发器实战大揭秘:一键解锁数据自动化校验与更新魔法,让数据库管理从此告别繁琐,精准高效不再是梦!"
【8月更文挑战第31天】在数据库管理中,确保数据准确性和一致性至关重要。SQL触发器能自动执行数据校验与更新,显著提升工作效率。本文通过一个员工信息表的例子,详细介绍了如何利用触发器自动设定和校验薪资,确保其符合业务规则。提供的示例代码展示了在插入新记录时如何自动检查并调整薪资,以满足最低标准。这不仅减轻了数据库管理员的负担,还提高了数据处理的准确性和效率。触发器虽强大,但也需谨慎使用,以避免复杂性和性能问题。
18 1
|
2月前
|
SQL 安全 数据库
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
【7月更文挑战第26天】在 Python Web 开发中, 安全性至关重要。本文聚焦 SQL 注入、XSS 和 CSRF 这三大安全威胁,提供实战防御策略。SQL 注入可通过参数化查询和 ORM 框架来防范;XSS 则需 HTML 转义用户输入与实施 CSP;CSRF 防御依赖 CSRF 令牌和双重提交 Cookie。掌握这些技巧,能有效加固 Web 应用的安全防线。安全是持续的过程,需贯穿开发始终。
59 1
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
|
4天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
9 0
|
7天前
|
测试技术 Java
全面保障Struts 2应用质量:掌握单元测试与集成测试的关键策略
【8月更文挑战第31天】Struts 2 的测试策略结合了单元测试与集成测试。单元测试聚焦于单个组件(如 Action 类)的功能验证,常用 Mockito 模拟依赖项;集成测试则关注组件间的交互,利用 Cactus 等框架确保框架拦截器和 Action 映射等按预期工作。通过确保高测试覆盖率并定期更新测试用例,可以提升应用的整体稳定性和质量。
16 0
|
7天前
|
数据库 Java 监控
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
19 0
|
7天前
|
前端开发 Java JSON
Struts 2携手AngularJS与React:探索企业级后端与现代前端框架的完美融合之道
【8月更文挑战第31天】随着Web应用复杂性的提升,前端技术日新月异。AngularJS和React作为主流前端框架,凭借强大的数据绑定和组件化能力,显著提升了开发动态及交互式Web应用的效率。同时,Struts 2 以其出色的性能和丰富的功能,成为众多Java开发者构建企业级应用的首选后端框架。本文探讨了如何将 Struts 2 与 AngularJS 和 React 整合,以充分发挥前后端各自优势,构建更强大、灵活的 Web 应用。
16 0
|
7天前
|
SQL 数据采集 算法
【电商数据分析利器】SQL实战项目大揭秘:手把手教你构建用户行为分析系统,从数据建模到精准营销的全方位指南!
【8月更文挑战第31天】随着电商行业的快速发展,用户行为分析的重要性日益凸显。本实战项目将指导你使用 SQL 构建电商平台用户行为分析系统,涵盖数据建模、采集、处理与分析等环节。文章详细介绍了数据库设计、测试数据插入及多种行为分析方法,如购买频次统计、商品销售排名、用户活跃时间段分析和留存率计算,帮助电商企业深入了解用户行为并优化业务策略。通过这些步骤,你将掌握利用 SQL 进行大数据分析的关键技术。
18 0
|
7天前
|
SQL 安全 测试技术
【数据守护者必备】SQL数据备份与恢复策略全解析:从全量到日志备份,手把手教你确保企业信息万无一失的实战技巧!
【8月更文挑战第31天】数据库是企业核心业务数据的基石,为防止硬件故障、软件错误或人为失误导致的数据丢失,制定可靠的备份与恢复策略至关重要。本文通过一个在线购物平台的案例,详细介绍了使用 SQL Server 进行全量备份、差异备份及事务日志备份的方法,并演示了如何利用 SQL Server Agent 实现自动化备份任务。此外,还提供了数据恢复的具体步骤和测试建议,确保数据安全与业务连续性。
12 0
|
2月前
|
SQL 分布式计算 MaxCompute
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
下一篇
DDNS