Tablestore Adhoc 分析性能测试白皮书

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
性能测试 PTS,5000VUM额度
简介: 本文主要介绍 Tablestore 在 Adhoc 分析场景下的性能测试,主要包括测试环境、测试工具、测试方案、测试结果以及测试结论等。

本文主要介绍 Tablestore 在 Adhoc 分析场景下的性能测试,主要包括测试环境、测试工具、测试方案、测试结果以及测试结论等。

Tablestore 是什么

Tablestore 启发自 Google 的 Bigtable 论文,从2009年开始,在阿里云的飞天团队内,开始孵化。经过 10 年的锤炼,如今在集团、公有云和专有云积累了各式各样的客户和场景。

Tablestore 是一款 Serverless 云原生存储引擎,Serverless 相比实例售卖类型的产品,在业务有波峰波谷时天生就有较大的优势,基于 Bigtable 的主存储采用行的方式进行存储,可以支撑单表亿级别的 QPS。下面列了一些 Tablestore 的核心特性:

1.png

Tablestore 除了有强大的主存储满足海量业务的实时读写外,基于主存储的分布式日志提供了完整的数据派生能力(详情参考),海量实时写入 Tablestore 的数据,可以实时订阅进行消费。这样就满足了我们的实时计算需求。

Lambda 架构中除了实时数据写入,实时计算之前,全量数据需要提供高性能扫描能力,Tablestore 采用行列混合,双引擎的架构,在主存储之外内部通过通道服务实时构建一个列存储,支撑 PB 级别数据的高吞吐扫描。同时在海量的数据场景下,我们相信数据是需要分层存储,所以在构建自身列存的同时,我们会帮助用户构建推送云上数据湖的链路,通过全托管的数据湖投递,降低用户的存储成本。

2.png

基于 Tablestore 的 Lambda 架构

Tablestore 在专注于打造一款极致性能和成本的存储引擎同时,更加关注完整的计算生态,伴随产品核心功能迭代的过程中,我们和阿里云的几大核心计算引擎做了完善的对接具体包括:

  • MaxCompute 的对接,支持 MaxCompute 计算引擎通过外表的方式直读写 Tablestore

  • EMR Spark 对接,支持流批源表读,流批结果表写,集团内第一款全 Connector 支持的 KV 存储引擎

  • Blink 对接,支持流批源表读,流批结果表写,维表读,集团内第一款全 Connector 支持的 KV 存储引擎

  • DLA 对接,支持 SQL 直接读写 Tablestore 的数据

  • FC 对接,支持流式增量触发器

接下来,本文会介绍通过阿里云几个核心计算引擎结合 Tablestore,在在线离线两个场景分别进行 Adhoc 分析的性能测评。

测试环境

本次测试会用到表格存储、EMR、OSS、DLA等多个服务,以下是相关配置:

  • 表格存储

    • 实例类型:高性能实例

    • 实例地域: 华东1-杭州

    • 多元索引配置:ParallelScan MaxParallel = 512

  • EMR集群

    • 集群地域:华东1-杭州

    • 配置:Master (24核96GB) * 1,CORE(24核96GB) * 25

  • OSS

    • 地域:华东1-杭州
  • DLA

    • 地域:华东1-杭州

测试工具

  • 原始数据集

数据源选用 TPC-H 的 lineitem 表(CSV文件),大小为 1TB,总行数为 85 亿行。

测试方案

本次性能测试将通过运行几种典型场景的SQL查询,来进行Adhoc查询的性能测试。

测试范围

  • 在线场景

  • 离线场景

    • DLA + OSS

    • EMR + JindoFS + OSS,开启缓存

测试场景

  • Count table: 全表count

  • Key lookup: 基于主键的查询

  • Non-Key lookup: 非主键查询

  • Scan table with(/without) projection: 全表扫描

测试指标

本次测试主要包含以下几项指标:

  • SQL 执行总耗时:表示的是执行 SQL 的总时间,单位为秒(e.g. 37.122s)。其中,EMR + JindoFS + OSS方案中会开启缓存,SQL执行耗时将会展示先后的3次查询耗时。

  • SQL 执行吞吐量:表示的是 SQL 执行时的平均处理行数,其值为 SQL 扫描行数/执行总耗时,单位为(行/s)。

测试结果

在线场景

针对在线场景,我们主要通过 EMR Spark 测试访问 Tablestore 主表和多元索引的性能表现。

测试项 SQL 命令 访问方式 SQL 总耗时 吞吐量
Count table select
count(*)
from
lineitem_index_512;
Tablestore 多元索引 692s 1800万/s
Tablestore 表引擎 1056s 1200万/s
Key lookup select
count(*)
from
tpch1
where 
l_orderkey = 1;
Tablestore 多元索引 1s -
Tablestore 表引擎 0.9s -
Non-key lookup select
count(*)
from
tpch1
where
l_shipdate >= '1994-05-02'
and l_shipdate < '1994-11-30'
and l_discount < 0.03
and l_quantity < 4;
Tablestore 多元索引 6s 600万行/s
Tablestore 表引擎 1197s 1200万/s
Scan table with projection select
l_orderkey
from
lineitem_index_512
order by l_orderkey
limit 1;
Tablestore 多元索引 703s 1200万/s
Tablestore 表引擎 1069s 1200万/s
Scan table without projection select
*
from
tpch1
order by l_orderkey
limit 1;
Tablestore 多元索引 预计3200s 260万/s
Tablestore 表引擎 预计1860s 457万/s

-:表示该数据无法测量或者测量无意义。

离线场景

Tablestore 提供数据湖投递的能力,将主表数据同步到 OSS,以 parquet 文件的方式存储。详细文档请参考官方文档 - Tablestore 数据湖投递
利用数据湖投递可以实现如下场景需求:

  • 冷热数据分层
    数据湖投递结合表格存储的数据生命周期功能,可以快速实现 OSS 低成本存储全量数据,表格存储提供热数据的低延迟查询和分析的需求。

  • 全量数据备份
    数据湖投递可以自动将表格存储的全表数据投递到 OSS Bucket 中,作为备份归档数据。

  • 大规模实时数据分析
    数据湖投递可以实时(每2分钟)投递增量的表格存储数据到 OSS,投递的数据支持按系统时间分区、Parquet 列存格式存储;再利用 OSS 的高读带宽和列存面向扫描场景优化实现高效实时数据分析。

  • 加速 SQL 分析性能
    当表格存储数据未建立多元索引且查询条件中不包含主键列的过滤条件时,可以通过数据投递自动同步数据到 OSS,再利用 DLA+OSS 数据扫描实现 SQL 分析加速。

3.png

于是,针对离线场景,我们测试 Tablestore 数据湖方案中的查询性能表现。

测试项 SQL 命令 访问方式 SQL 总耗时 吞吐量
Count table select
count(*)
from
lineitem_index_512;
DLA + OSS 3s 28亿/s
EMR + jindoFS + OSS 先后3次查询耗时:
11s 4s 4s
21亿/s
Key lookup select
count(*)
from
tpch1
where
l_orderkey = 1;
DLA + OSS 2s 44亿/s
EMR + jindoFS + OSS 11s 3s 3s  30亿/s
Non-key lookup select
count(*)
from
tpch1
where
l_shipdate >= '1994-05-02'
and l_shipdate < '1994-11-30'
and l_discount < 0.03
and l_quantity < 4;
DLA + OSS 43s 2亿/s
EMR + jindoFS + OSS 10s 8s 9s 10亿/s
Scan table with projection select
l_orderkey
from
lineitem_index_512
order by l_orderkey
limit 1;
DLA + OSS 8s 10亿行/s
EMR + jindoFS + OSS 14s 5s 4s 21亿行/s
Scan table without projection select
*
from
tpch1
order by l_orderkey
limit 1;
DLA + OSS 178s 4775万/s
EMR + jindoFS + OSS 68s  50s  50s 1.7亿/s

测试结论

在线场景

  • 时效性:秒级

  • 主键查询建议使用 Spark 直接查询 Tablestore 表引擎,针对简单查询场景来说性价比较高

  • 非主键查询,复杂查询(如空间查询)建议使用 Spark 查询 Tablestore 多元索引,查询性能比表引擎提升明显,且支持更灵活的查询

离线场景

  • 时效性:分钟级(甚至小时级)

  • 冷热数据分层和大规模离线数据分析场景建议使用 Tablestore 数据湖投递功能,可选用的计算引擎有 DLA 和 EMR

欢迎加入

表格存储 Tablestore 推出了很多贴近用户场景的文章与示例代码,欢迎大家加入我们的钉钉公开交流群一起讨论,群号:23307953。(1 群已满员,欢迎加入 2 群)

tablestore 二维码.png

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
4月前
|
机器学习/深度学习 人工智能 测试技术
深入分析自动化测试中的挑战与机遇
【5月更文挑战第27天】 随着软件开发周期的不断缩短和发布频率的增加,自动化测试成为确保软件产品质量的关键手段。本文将探讨在实施自动化测试过程中面临的主要挑战,包括维护成本、测试用例设计、与持续集成的融合等,并讨论如何通过最新的技术趋势如人工智能(AI)和机器学习(ML)来克服这些挑战,以及它们为自动化测试带来的新机遇。
|
21天前
|
前端开发 测试技术 UED
【测试效率对比】深入分析:为何UI自动化测试的投资回报率通常低于接口自动化测试?
这篇文章深入分析了UI自动化测试与接口自动化测试的投资回报率(ROI)问题,指出UI自动化测试在某些情况下的ROI并不低,反驳了没有实施过UI自动化就轻易下结论的观点,并强调了实践的重要性和自动化测试在项目迭代中的作用。
42 1
|
3月前
|
存储 缓存 NoSQL
Redis性能测试实操记录与分析
Redis性能测试实操记录与分析
41 3
|
3月前
|
SQL 监控 中间件
【应急响应】拒绝服务&钓鱼指南&DDOS压力测试&邮件反制分析&应用日志
【应急响应】拒绝服务&钓鱼指南&DDOS压力测试&邮件反制分析&应用日志
|
3月前
|
安全 测试技术
软件测试项目式学习二(认识软件测试及软件测试分类与案例分析)
软件测试项目式学习二(认识软件测试及软件测试分类与案例分析)
60 1
|
4月前
|
监控 测试技术
深入分析软件测试中的风险评估与管理
【5月更文挑战第30天】 在软件开发生命周期中,风险无处不在,特别是在软件测试阶段。本文旨在探讨软件测试过程中如何有效地进行风险评估和管理,以确保软件质量和项目成功。文中将介绍风险评估的基本概念,提出一个结构化的风险识别和评估框架,并详细讨论如何通过定性和定量方法来管理测试风险。此外,文章还将展示一个案例研究,以说明所提策略在实际中的应用效果。
|
4月前
|
JSON 数据管理 测试技术
自动化测试工具Selenium Grid的深度应用分析深入理解操作系统的内存管理
【5月更文挑战第28天】随着互联网技术的飞速发展,软件测试工作日益复杂化,传统的手工测试已无法满足快速迭代的需求。自动化测试工具Selenium Grid因其分布式执行特性而受到广泛关注。本文旨在深入剖析Selenium Grid的工作原理、配置方法及其在复杂测试场景中的应用优势,为测试工程师提供高效测试解决方案的参考。
|
4月前
|
测试技术
深入理解与应用软件测试中的边界值分析法
【5月更文挑战第14天】 在软件开发的生命周期中,确保代码质量和功能正确性是至关重要的。本文将深入探讨一种高效的软件测试技术——边界值分析法(Boundary Value Analysis, BVA)。不同于通常的摘要形式,此部分将直接引导读者了解BVA的核心原理、应用方法及其在实际工作中的重要性。通过分析边界条件引发的缺陷案例,我们揭示了如何利用BVA提高测试覆盖率,优化测试用例设计,从而提升软件测试的有效性和效率。
|
3月前
|
Java
JavaSE——集合框架二(6/6)-(案例)补充知识:集合的嵌套(需求与分析、问题解决、运行测试)
JavaSE——集合框架二(6/6)-(案例)补充知识:集合的嵌套(需求与分析、问题解决、运行测试)
71 0
|
4月前
|
机器学习/深度学习 人工智能 算法
深入分析自动化测试中AI驱动的测试用例生成
【5月更文挑战第4天】随着人工智能(AI)技术的飞速发展,其在软件测试领域的应用也日益广泛。特别是在自动化测试过程中,AI技术能够显著提高测试用例的生成效率和质量。本文将探讨AI在自动化测试用例生成中的应用原理、优势以及面临的挑战,并展示通过AI技术优化测试流程的实际案例。
197 8