云原生数据湖分析(DLA) 支持表格存储并发导出功能,性能大幅提升 !

简介: 云原生数据湖分析(DLA) 支持表格存储并发导出功能

1. 背景介绍

表格存储(TableStore)的数据表是一种典型的 NoSQL 数据结构,可以高效地支持大规模数据的存储和读写需求。表格存储的多元索引提供了 Search 接口, 它支持所有的查询功能,以及排序、统计聚合等分析能力。并且,执行结果也会按照指定的顺序返回。但是,在很多情况下我们更关心的是查询性能,希望将命中的全部数据能以更快的速度返回,而不关心整个结果集的顺序。因此,DLA 接入了 TableStore 的 ParallelScan 接口,以提高数据查询速度。

2. 并发导出数据(ParallelScan)简介

多元索引提供了通用的查询接口(Search)和并发导出接口(ParallelScan)。这两个接口的功能基本上是相同的,但是 ParallelScan 接口为了提高某些方面的性能和吞吐能力舍弃了部分功能。相对于 Search 接口,ParallelScan 主要有以下一些特点:

  • 1.结果稳定

ParallelScan 任务是有状态的,在一个 Session 请求中获取到的结果是确定的。其执行结果由第一次发起请求时的数据状态所决定,如果在任务执行过程中插入了新的数据或者修改了原有的数据不会对任务查询结果造成影响。

  • 2.新增会话(Session)概念

引入会话概念,使用 SessionID 来保证查询的结果集是稳定的。每次任务执行前首先需要通过 computeSplits 接口获取 sessionID 和最大并发数。然后发起多个 ParallelScan 请求读取数据,同时在请求中指定当前的 sessionID 和并发 ID。

  • 3.最大并发数

ParallelScan 支持的单请求的最大并发数由 computeSplits 接口返回,数据越多,支持的并发数就越大。

  • 4.性能

ParallelScan 接口单并发扫描数据的性能有很大提升。当增加并发数时,性能可以继续提高(调整并发数需要咨询表格存储的同学)。

  • 5.成本

ParallelScan 接口请求消耗的资源更少,因此其价格也更便宜。所以,对于大数据量的导出需求,建议使用 ParallelScan 功能。

  • 6.查询列限制

ParallelScan 只支持查询多元索引中已建立的索引列,不能查询多元索引中没有的列,即一条 SQL 语句只能 SELECT 多元索引中的列。

3.测试分析

3.1 测试环境

我们使用 DLA CU 版快速搭建一个 Presto 集群,其配置信息如下:

  • Worker 数量 5 个
  • Worker 规格 4 Core 8G

3.2 测试数据集

TPC-H 是美国交易处理效能委员会(TPC,Transaction Processing Performance Council) 组织制定的用来模拟决策支持类应用的一个测试集。因此,我们将表格存储中的 TPC-H 数据集导入到 DLA 数据湖中进行分析处理。其中,表 lineitem 约 200G 数据,有 6 亿行数据。前面提到 ParallelScan API 只能查询多元索引中的数据,所以我们需要先创建一个多元索引,将需要的字段添加到索引中。

3.3 测试分析

我们在测试环境下对表 lineitem 执行以下 SQL 进行查询数据,其中 KEY 随着查询数据量而不断变化

select L_PARTKEY from ots_db.lineitem where L_PARTKEY < KEY

从下图可以清晰地看到,使用 ParallelScan API 的查询性能是非常好的。随着查询数据量的逐渐增加,使用 Search API 查询的耗时剧烈增加,这是由其底层设计所造成,导出的数据越多就会变得越慢。索引查询(Search 接口)的耗时增加非常明显。而 ParallelScan 接口的耗时则一直比较低,并且随着导出数据量的不变增大其性能优势也更加突出。

图片 2.png

相对于普通查询,ParallelScan API 的优势也是比较明显的。从下面这张图可以看出,同等条件下普通查询的耗时要远大于 ParallelScan API 的查询。细心的读者可能会发现普通查询的性能比较“稳定”,这是由于普通查询每次都会扫描全量的表数据,所以无论我们导出多少数据其耗时都是基本上相等的。

ots-1.png

4.DLA ParallelScan 的使用及注意事项

在 DLA 中使用ParallelScan 也是非常简单的,只需要在执行 SQL 时添加 ots-index-parallel-scan-mode=true Hint 即可, 如:

/*+ots-index-parallel-scan-mode=true*/select count(L_PARTKEY) from YOUR_TABLE where L_PARTKEY < 10000

注意:

  • 1.ParallelScan 只能查询多元索引中存在的字段
  • 2.ParallelScan 在导出数据量较大时效果比较明显
  • 3.ParallelScan 默认情况下查询出来的数据是无序的
  • 4.默认情况下不会使用 ParallelScan 模式,需要通过 Hint 来启用

5.小结

通过以上说明和实验,本文介绍了 DLA 查询表格存储的方式,并进行了性能分析和对比。 Search 接口可以快速扫描多元索引的少量数据,而 ParallelScan 比较适用于扫描多元索引的大量数据集。

关于我们

数据湖分析Data Lake Analytics简介

欢迎大家使用云原生数据湖分析(DLA),DLA不仅仅便宜,且快,且方便,专为阿里云数据湖分析方案而生

  • 支持自建、托管RDS、NoSQL、OSS(JSON、CSV、Parquet等格式)多种数据源分析
  • 支持按量 按照扫描量 的计费方式,准入门槛0元,提供的Serverless的弹性服务为按需收费,不需要购买固定的资源,完全契合业务潮汐带来的资源波动,满足弹性的分析需求,同时极大地降低了运维成本和使用成本
  • 平台底层托管大集群且自动弹性,在一定数据量情况下,分析性能比自建小集群高出400%
  • 支持一键 把 MySQL、PG、SqlServer、PolarDb数据库 拖到DLA,再分析,解决原MySQL不敢分析的问题。 DLA 分析性能TPC-H 10G情况 比原MySQL 8c16g 等高出10倍,数据量越大,MySQL性能越差,在1TB数据量下,原MySQL基本跑不出来

产品文档:https://www.aliyun.com/product/datalakeanalytics
帮助文档:https://help.aliyun.com/document_detail/70378.html
MySQL&PG&SqlServer一键同步数据到DLA:https://help.aliyun.com/document_detail/126559.html
新客户1元试用:https://common-buy.aliyun.com/?commodityCode=openanalytics_post

欢迎大家进群咨询了解

image.png

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
相关文章
|
2月前
|
存储 缓存 Cloud Native
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
|
5月前
|
存储 监控 Cloud Native
云原生系列Go语言篇-并发 Part 2
既然已经讲解了Go为并发所提供的基础工具,我们就来学习一些并发的最佳实践和模式吧。
71 0
|
5月前
|
关系型数据库 MySQL Serverless
阿里云云原生数据库 PolarDB MySQL Serverless:卓越的性能与无与伦比的弹性
阿里云原生数据库 PolarDB MySQL Serverless 拥有卓越性能和无与伦比的弹性。通过实验体验,深入了解其基本管理和配置、智能弹性伸缩特性和全局一致性特性。实验包括主节点和只读节点的弹性压测以及全局一致性测试,旨在亲身体验 PolarDB 的强大性能。通过实验,可以更好地在实际业务场景中应用 PolarDB,并根据需求进行性能优化和调整。
761 2
|
2月前
|
Kubernetes Cloud Native Java
云原生之旅:从容器到微服务的演进之路Java 内存管理:垃圾收集器与性能调优
【8月更文挑战第30天】在数字化时代的浪潮中,企业如何乘风破浪?云原生技术提供了一个强有力的桨。本文将带你从容器技术的基石出发,探索微服务架构的奥秘,最终实现在云端自由翱翔的梦想。我们将一起见证代码如何转化为业务的翅膀,让你的应用在云海中高飞。
|
2月前
|
安全 分布式数据库 数据安全/隐私保护
阿里云EMR数据湖文件系统问题之JindoFS支持Snapshot功能的问题如何解决
阿里云EMR数据湖文件系统问题之JindoFS支持Snapshot功能的问题如何解决
|
3月前
|
Cloud Native 关系型数据库 MySQL
云原生数据仓库使用问题之如何将ADB中的数据导出到自建的MySQL数据库
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
5月前
|
存储 Cloud Native 关系型数据库
PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
【5月更文挑战第14天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
298 2
|
10月前
|
资源调度 调度 混合部署
Koordinator 助力云原生应用性能提升,小红书混部技术实践
本文基于 2023 云栖大会上关于 Koordinator 分享的实录,介绍小红书通过规模化落地混部技术来大幅提升集群资源效能,降低业务资源成本。
|
5月前
|
Cloud Native Java 程序员
[云原生] Go并发基础
[云原生] Go并发基础
|
5月前
|
存储 消息中间件 SQL
基于 Apache Hudi 构建分析型数据湖
基于 Apache Hudi 构建分析型数据湖
56 4