Towards Functional Decomposition of Storage Formats——论文阅读

CIDR 2025 Paper 论文阅读笔记整理

问题

主要包含半结构化和非结构化数据的数据湖的兴起,改变了传统数据平台与独立文件集合的交互方式。水平分区数组是这些柱状文件格式中的一种基本构造,例如划分为列块、行组层次结构(例如Parquet、ORC),并进行压缩以节省存储空间。同时,搜索加速元数据是一种流行的轻量级索引技术,通常存储在数据附近,如区域图(SMA)和布隆过滤器,用于加速列扫描。因此,现有的存储层分区需要同时满足压缩和搜索加速,但没有单一的水平分区大小可以同时优化二者的性能。

现有文件格式将列水平划分为几乎恒定长度的块,每个块都被独立压缩并使用搜索加速元数据[13,27,30,34]。因此,搜索加速和压缩必须在相同的水平分区大小上运行。但根据底层数据集的不同,搜索加速只有在块很小的时候才有用,但小块会降低压缩效率。这种权衡迫使基于块的存储格式要么优化压缩文件大小,要么加速搜索。Parquet和ORC已经通过规范或默认参数决定了自己的分区大小配置。BtrBlocks[16]和Lance[34]等较新的格式提出了一组新的最优配置。

通过分析表明,对于搜索加速和压缩性而言,最优的分区大小是相互矛盾的。即使在加速搜索的元数据结构之间,也没有固定的最优块大小。摘要结构的行为取决于底层数据,但一种数据分布的最佳块大小可能会降低另一种基于扫描的过滤器性能。

本文方法

本文建议:将数据与索引结构分开,分为数据存储层和搜索加速层(SAL)。数据存储层侧重于高效的数据存储,通过压缩降低数据存储和传输的成本。搜索加速层不使用与压缩相同的分区大小,以高效地查询存储层中的数据。

测试块大小和块分布对压缩的影响,数据倾斜分布时需要10k+的块大小,数据倾斜较小时需要1k+的块大小,才能实现较好压缩效果。

测试块大小和块分布对搜索加速的影响,数据倾斜分布时128块大小查询延迟最低,数据倾斜较小时搜索加速的优化有限,提升并不明显。

本文探讨了将数据与索引结构分开影响,当搜索加速元数据在小分区大小(10-100)时通常是最优的,而最佳大小取决于元数据类型、底层数据和应用的查询。通过分离存储层和SAL,每个层都能独立发展,从而随着数据集和应用程序需求的发展而具有更大的灵活性。

总结

针对数据存储层的设计,需要同时满足数据压缩和数据搜索加速(布隆过滤器),但没有单一的分区大小可以同时满足二者。本文提出将数据与索引结构分离,使用不同的分区大小分别优化两个目标。对于压缩,数据倾斜分布时需要10k+的分区大小,数据温和分布时需要1k+的分区大小。对于搜索加速,数据倾斜分布时需要128的分区大小,数据温和分布时优化有限。没有统一的分区大小,需要取决于元数据类型、底层数据和应用查询设计最佳搜索加速的分区大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妙BOOK言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值