数据外置提速革命:轻量级开源SPL如何用文件存储实现MPP级性能?

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 传统交易型数据库在分析计算中常遇性能瓶颈,将数据迁至OLAP数据仓库虽可缓解,但成本高、架构复杂。SPL通过轻量级列存文件存储历史数据,提供强大计算能力,大幅简化架构并提升性能。它优化了列式存储、数据压缩与多线程并行处理,在常规及复杂计算场景中均表现优异,甚至单机性能超越集群。实际案例中,SPL在250亿行数据的时空碰撞问题上,仅用6分钟完成ClickHouse集群30分钟的任务。

传统数据库,特别是交易(TP)数据库,用于分析型计算经常会出现性能问题。TP数据库的性能优化主要是提高事务处理和写操作(增删改)的效率,这和分析型计算的优化方向并不一致,也就很难让分析计算跑的快。

常见的解决办法是把历史数据从TP数据库搬到专业OLAP数据仓库中计算。不过,OLAP数据仓库太沉重,经常需要集群,硬件成本较高,还可能有昂贵的授权费用,更重要的是,整个技术架构也变得非常复杂。

这些历史数据大多数情况下是不再变化的,如果能存成文件会更简单。但是文件本身没有计算能力,无法直接实施条件过滤、分组汇总等运算,更谈不上复杂的分析任务了。

SPL可以让文件拥有计算能力,用它的轻量级列存文件存储不变的历史数据,较小的投入就能实现高速查询。

SPL引擎非常轻,部署后占用存储空间仅几百M,单机就可以运行,无须集群。SPL还能嵌入前端应用中,只需要几个jar包和配置文件,就可以在应用内提供强计算能力。实现数据外置提速的同时,也不会让系统架构变得很复杂:
6d085d49087068baa97caec6876382fa.png
轻量的SPL,计算能力却非常强大,在列式存储、数据压缩、多线程并行等方面都做了深度优化,能让条件过滤、分组汇总这些常规运算的性能大幅提升,完全不输于专业的MPP数据仓库,更是远远超过TP数据库。
SPL常规计算与MYSQL对比(单位:秒)
a63af8155a67719cc43254f906aa8419.png
注:测试环境和方法参见 《如何用esProc将数据库表转储提速查询》
SPL代码也很简单,比如大订单表的过滤和分组汇总:
image.png
专业OLAP数据仓库利用列存压缩等技术能让常规运算中跑出较高性能,但对于某些更较复杂的计算场景中性能并不理想。这是因为SQL缺少必要的数据类型和相应的基础运算,对高性能算法支持不足,比如有序计算、分组子集等。而用SQL调优、集群分布式、UDF等工程上的优化方法不仅成本高,还常常没有什么效果。
SPL提供了更丰富的数据类型和基础运算,很容易写出低复杂度的代码,对于这些较复杂任务,可以用更小资源跑出超过OLAP数据仓库的性能,经常能做到单机顶集群。

比如以快著称的ClickHouse数据库,在同样环境下跑国际通行的TPC-H测试题,简单的Q1和SPL的性能基本相当,但是稍复杂一些的Q2、Q3、Q7就完全不如SPL了:

          TPC-H(单位:秒)

7363b4771d0b67f9f8b05876ea2c44ad.png
再看实际案例,比如某个时空碰撞问题,总数据量约 250 亿行。SQL 看起来并不算很复杂:

WITH DT AS ( SELECT DISTINCT id, ROUND(tm/900)+1 as tn, loc FROM T WHERE tm<3*86400)
SELECT * FROM (
    SELECT B.id id, COUNT( DISINCT B.tn ) cnt
    FROM DT AS A JOIN DT AS B ON A.loc=B.loc AND A.tn=B.tn
    WHERE A.id=a AND B.id<>a
    GROUP BY id )
ORDER BY cnt DESC
LIMIT 20

传统数据库跑得太慢,用户转而求助于 ClickHouse,结果用了 5 节点的集群,也跑了 30 分钟多,达不到期望。同样数据量,SPL只用一个节点不到 6 分钟即可完成计算,超出了用户期望。考虑到硬件资源的差距,SPL相当于比 ClickHouse 快了 25 倍以上。
同时,SPL代码仍很简单:
image.png

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
1月前
|
存储 SQL 算法
第四篇 - 大主子表关联--SPL轻量级文件存储提速查询实践
本文介绍如何通过有序归并算法加速主键关联计算。将订单表与明细表按主键有序存储,利用esProc SPL实现高效归并,显著提升大表JOIN性能。实测案例显示,原需21-40秒的SQL查询,SPL仅需0.6-1.5秒,提速数十倍。
|
2月前
|
SQL 存储 文件存储
第三篇 - 外键维表的关联:SPL轻量级文件存储提速查询实践
SPL 重构关联计算,区分外键与主键关联,通过序号化、预加载和预关联实现高效运算。相比 SQL 笛卡尔积式 JOIN,SPL 利用关联本质优化存储与计算,显著提升性能,如案例中查询提速数十倍。
SQL 存储 缓存
137 1
|
2月前
|
SQL 并行计算 关系型数据库
第一篇 - 常规过滤及分组汇总:SPL轻量级文件存储提速查询实践
本文以订单表为例,介绍如何使用 esProc SPL 实现数据外置,提升过滤与分组汇总计算效率。通过 SPL 的 ETL 工具导出数据为 BTX 与 CTX 格式,并利用游标、列存、并行计算等技术逐步优化性能,最终执行时间从 MySQL 的 11 秒降至 0.5 秒。适用于处理大数据量、历史数据的高性能分析场景。
|
8月前
|
存储 SQL 监控
【亲测有用】数据中台数据服务管理能力演示
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
8月前
|
存储 消息中间件 NoSQL
【亲测有用】数据中台数据模型管理能力演示
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
9月前
|
SQL 关系型数据库 OLAP
云原生数据仓库AnalyticDB PostgreSQL同一个SQL可以实现向量索引、全文索引GIN、普通索引BTREE混合查询,简化业务实现逻辑、提升查询性能
本文档介绍了如何在AnalyticDB for PostgreSQL中创建表、向量索引及混合检索的实现步骤。主要内容包括:创建`articles`表并设置向量存储格式,创建ANN向量索引,为表增加`username`和`time`列,建立BTREE索引和GIN全文检索索引,并展示了查询结果。参考文档提供了详细的SQL语句和配置说明。
278 2
|
9月前
|
机器学习/深度学习 大数据 数据管理
一图尽览:AllData数据中台商业版与开源版功能对比
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
9月前
|
存储 数据采集 人工智能
AllData数据中台架构全览:数据时代的智慧中枢
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
AllData数据中台架构全览:数据时代的智慧中枢
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库

热门文章

最新文章