数据仓库性能测试方法论与工具集

打印 上一主题 下一主题

主题 573|帖子 573|积分 1719

目录


目录

数据仓库 v.s. 传统数据库

随着 5G 网络和 IoT 技术的兴起,以及越来越复杂多变的企业经营环境,都在促使着包括工业制造、能源、交通、教育和医疗在内的传统行业纷纷开启了数字化转型之路。由于长尾效应的存在,千行百业的数字化转型过程中必然会释放出比以往任何时候都要庞大的海量数据。那么如何对这些涌现的数据集合进行有效的存储、分析和利用,继而帮忙企业进行运营决策优化甚至创造出新的获客模式和商业模式形成竞争力,就成为了摆在企业主面前亟需解决的问题。
在这样的需求背景下,我们也观察到近年来市场上正在出现越来越多的数据仓库产品。数据仓库(Data Warehouse)是一种用于集成、存储和分析大规模结构化数据与非结构化数据的数据管理系统。相对于传统的仅用于数据存储的数据库(Database)而言,数据仓库更是一种专门设计的 “数据存储 + 数据分析 + 数据管理" 一体化解决方案,强调数据的易用性、可分析性和可管理性,提供了包括:数据清洗、整合、转换、复杂查询、报表生成和数据分析等功能,用于帮助企业实现基于数据的决策制定和数字化运营场景。
更具体而言,下列表格中从技术层面更细致的对比了两者的区别:
对比项传统数据库云原生数据仓库需求面向面向数据存储,主要用于支持事务处理以满足业务操作的需求。面向大规模数据存储与高效能数据分析,主要用于数据分析和决策支持和,以满足企业的报表、分析和数据挖掘需求。数据结构和组织方式通常以表格的形式组织数据,采用关系型数据模型,通过 SQL 语句进行数据操作。采用星型或雪花型的结构,将数据组织成事实表和维度表,通过复杂的查询和分析操作进行数据处理。数据处理复杂性通常处理相对较小规模和实时的数据。处理的数据量通常很大,并且涉及到多个源系统的数据集成和转换,需要处理复杂的查询和分析操作,同时兼容 SQL 语句。可扩展性从分析到方案制定再到落地实施,周期较长。在线水平扩展,分钟级扩展。数据量级一般处理 TB 左右以下性能良好,随着数据量增加维护难度增加。支持 TB 至 PB 量级,通过平台管理功能进行运维实例管理和监控。DBA 维护成本工作量较大,中间件,SQL 优化性能分析要求 DBA 有丰富的技术经验。平台化运维管理,功能模块化处理,DBA 工作更便捷高效。数据分片引用中间件层需要手动维护分片规则,制定不当容易出现数据倾斜。分布式数据库自身具有路由分片算法,分布相对均匀可按需调整。可见,在数据价值爆发的时代背景中,数据仓库在千行百业中都有着相应的应用场景,例如:

  • 金融和银行业:应用数据仓库平台对大量的金融数据进行分析和建模,继而支持风险评估、交易分析和决策制定。
  • 零售和电子商务行业:应用数据仓库平台完成销售分析、供应链分析、客户行为分析等,帮助零售商了解产品销售情况、优化库存策略、提升客户满意度,并进行个性化推荐和营销活动。
  • 市场营销和广告行业:应用数据仓库平台整合不同渠道的市场数据和客户行为数据,帮助企业了解客户需求,支持目标市场分析、广告效果评估、客户细分等工作。

基于以上原因,我们也希望能够与时俱进地去考察市场上的数据仓库产品的特性,并以此支撑公司技术选型工作。技术选型是一项系统且严谨的工作内容,需要从功能、性能、成熟度、可控性、成本等多个方面进行考虑,本文则主要关注在性能方面,尝试探讨一种可复用的性能测试方案,包括:性能指标、方法论和工具集这 3 个方面的内容。
数据仓库性能测试案例

性能指标

数据仓库的性能指标需要根据具体的应用场景来设定,但通常的会包括以下几个方面:

  • 读写性能:衡量数据仓库在读取和写入数据方面的性能表现。包括:吞吐量(每秒处理的请求数量)、延迟(请求的响应时间)、并发性(同时处理的请求数量)等。
  • 水平扩展性:衡量数据仓库在大规模系统中的水平扩展能力,能够随着客户端的并发增长而进行弹性扩展,并获得线性的性能提升。
  • 数据一致性:测试数据仓库在分布式环境中的数据一致性保证程度。根据应用场景的不同,对数据强一致性、弱一致性、最终一致性会有不同的侧重。
  • 故障恢复和高可用性:测试数据仓库在面对故障时的恢复能力和高可用性。可以模拟节点故障或网络分区等场景,评估数据仓库的故障转移和数据恢复性能。
  • 数据安全性:评估数据仓库在数据保护方面的性能。包括:数据的备份和恢复速度、数据加密和访问控制等。
  • 集群管理和资源利用率:评估数据仓库在集群管理和资源利用方面的性能。包括:节点的动态扩缩容、负载均衡、资源利用率等。
  • 数据库管理工具性能:评估数据仓库管理工具在配置、监控、诊断和优化等方面的性能表现。
在本文中主要关注读写性能方面的操作实践。
测试方案

为了进一步完善测试流程,以及对国产数据仓库大趋势的倾向性,所以本文采用了相对方便获取且同样都是采用了 Hadoop 作为底层分布式文件系统支撑的两款国产数据仓库产品进行测试:

  • Cloudwave 4.0(2023 年 5 月发版)是一款由北京翰云时代数据技术有限公司推出的国产商业云原生数据仓库产品。
  • StarRocks 3.0(2023 年 4 月发版)是一款使用 Elastic License 2.0 协议的国产开源数据仓库产品,
另外,这两款产品的安装部署和操作手册的文档都非常详尽,请大家自行查阅,下文中主要记录了测试操作步骤,并不赘述基本安装部署的步骤。
测试场景

在本文中首先关注应用场景更加广泛的结构化数据的 SQL 读写场景。

测试数据集

测试数据集则采用了常见的 SSB1000 国际标准测试数据集,该数据集的主要内容如下表所示:
表名表行数(单位:行)描述lineorder60 亿SSB 商品订单表customer3000 万SSB 客户表part200 万SSB 零部件表supplier200 万SSB 供应商表dates2556日期表测试用例


  • TestCase 1. 执行 13 条标准 SQL 测试语句。
[code]use ssb1000;# 1select sum(lo_revenue) as revenue from lineorder,dates where lo_orderdate = d_datekey and d_year = 1993 and lo_discount between 1 and 3 and lo_quantity < 25;# 2select sum(lo_revenue) as revenue from lineorder,dates where lo_orderdate = d_datekey and d_yearmonthnum = 199401 and lo_discount between 4 and 6 and lo_quantity between 26 and 35;# 3select sum(lo_revenue) as revenue from lineorder,dates where lo_orderdate = d_datekey and d_weeknuminyear = 6 and d_year = 1994 and lo_discount between 5 and 7 and lo_quantity between 26 and 35;# 4select sum(lo_revenue) as lo_revenue, d_year, p_brand from lineorder ,dates,part,supplier where lo_orderdate = d_datekey and lo_partkey = p_partkey and lo_suppkey = s_suppkey and p_category = 'MFGR#12' and s_region = 'AMERICA' group by d_year, p_brand order by d_year, p_brand;# 5select sum(lo_revenue) as lo_revenue, d_year, p_brand from lineorder,dates,part,supplier where lo_orderdate = d_datekey and lo_partkey = p_partkey and lo_suppkey = s_suppkey and p_brand between 'MFGR#2221' and 'MFGR#2228' and s_region = 'ASIA' group by d_year, p_brand order by d_year, p_brand;# 6select sum(lo_revenue) as lo_revenue, d_year, p_brand from lineorder,dates,part,supplier where lo_orderdate = d_datekey and lo_partkey = p_partkey and lo_suppkey = s_suppkey and p_brand = 'MFGR#2239' and s_region = 'EUROPE' group by d_year, p_brand order by d_year, p_brand;# 7select c_nation, s_nation, d_year, sum(lo_revenue) as lo_revenue from lineorder,dates,customer,supplier where lo_orderdate = d_datekey and lo_custkey = c_custkey and lo_suppkey = s_suppkey and c_region = 'ASIA' and s_region = 'ASIA'and d_year >= 1992 and d_year = 1992 and d_year = 1992 and d_year

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表