三、在分布式中如何优化大数据存储结构

简介: 三、在分布式中如何优化大数据存储结构

大数据的存储结构直接影响到分布式系统中数据的存储效率和处理应能。一般来说常见的存储结构有行式存储结构、列式存储结构和行列结合存储结构。在行式存储结构中数据从本地读取,加载速度快但是压缩效率低并且存在数据冗余。在列式存储结构中数据压缩率高,但是因为数据的跨节点访问所以增加了网络传输的开销。针对行式存储结构和列式存储结构的优缺点,提出了一种行列结合的存储结构。下面我们开始探讨一下这三种存储结构。


一、大数据处理要求

在所有的大数据系统中,对数据的处理要求无非就是三点:高速的数据加载、高速的查询处理和存储空间的高利用率。


1.1 高速的数据加载

数据的高速加载时大数据处理中的一个关键问题。在正常的查询时由于网络带宽、磁盘I/O在数据传输是一个瓶颈,因此缩短数据加载时间变得非常关键。


1.2 高速的查询处理

为满足大量用户同时向系统提交实时请求和高负载查询,因此这就要求底层数据结构在满足数据不断增长的同时,能够高效处理查询请求。


1.3 存储空间的高利用率

因为每时每刻数据量都在不断增长,因此要求系统在存储上就必须有很好的扩展能力。那么如何存放数据才能使得磁盘的利用率达到最高是关键问题。一般来说我们会用到动态高负载模式来处理,让系统在有限的存储空间下使用不可测的数据分析请求。


二、行式存储结构和列式存储结构的优缺点

2.1 行式存储结构

传统关系型数据库使用的存储结构就是行式存储结构,记录以行的形式存储在数据库关系表中。在分布式系统存储下,表按照行水平分割,每行中所有数据存放在同一个数据块中,数据块又有可能分布在不同的节点上,如果读取行中的第一列和第二列则需要先读取本地节点上所有符合条件的行,然后过滤出第一列和第二列。


行式存储结构的优点是数据加载速度快,所有数据优先从本地读取,不需要额外的网络开销。缺点是每行中所有列都放在了相同的数据块中,在读取一行数据时会读取当前行的所有列,这样就增加了额外的磁盘I/O开销。并且每一列存储的数据类型不能一样,在数据压缩时不同数据类型压缩效果会很大,这样会导致磁盘利用率低,同样也会导致磁盘I/O加大。


2.2 列式存储结构

列式存储结构将关系表按列垂直分割成多个子关系表,分割后的每组子关系表中的所有数据存放在同一个数据块中,每一列都是独立存储的。


列式存储结构的优点是只读取有用的列,能够避免额外的磁盘I/O开销,同一列中的数据类型相同,因此数据压缩时有很好的压缩比,提高了磁盘的空间利用率。缺点是由于列式存储按照列来垂直分割数据,因此不同的列可能分布在不同的节点上,读取不同的列会出现跨界点访问的问题,这样就增加了网络传输所消耗的时间。


下面是我列出的行式存储结构和列式存储结构的优缺点表格:

image.png

三、改进

3.1 行列结合存储结构

行列结合存储结构分别融合了行式存储和列式存储的优点,将关系表中的数据先按照水平划分成多个行组,每个行组存放在同一个数据块中,再在每个行组内将表按照列垂直划分成多个子关系表,每一列在进行数据压缩后存储在同一个数据块中。简单说就是:行组内按照列垂直存放在同一个数据块中,每列在数据压缩后独立存储在数据块中,每行中的所有列都存放在同一个数据块中。


3.2 优点

因为关系表被水平分割成多个行组,行组内按列垂直分割并存在同一个数据块中,如果要读取第一列和第二列,那么首先读取本地行组,然后在行组中选择第一列和第二列,这样就避免了不必要的磁盘I/O和网络消耗。并且由于行组内是按照列垂直分割的,每一列都具有相同的数据类型,因此在数据压缩时也能具有很好的数据压缩比,从而提高了磁盘空间的利用率。


3.3 问题

某些大数据框架存在数据块大小的限制,如果行组的存储空间比数据块最大大小要大,那么一个行组将会被存储到多个数据块中,多个数据块又有可能位于不同的节点上,因此在访问数据的时候有可能痴线跨节点访问,从而出现网络传出消耗。并且大部分大数据框架都具有备份功能,如果数据节点出现问题,因为行列结合存储结构的约束需要更长时间回复,维护成本也会增加。因此每个行组分割的大小不能超过数据块限制的最大大小。


相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
传感器 算法 安全
基于分布式模型预测控制DMPC的单向拓扑结构下异构车辆车队研究(Matlab代码实现)
基于分布式模型预测控制DMPC的单向拓扑结构下异构车辆车队研究(Matlab代码实现)
420 4
|
机器学习/深度学习 监控 算法
分布式光伏储能系统的优化配置方法(Matlab代码实现)
分布式光伏储能系统的优化配置方法(Matlab代码实现)
591 1
|
存储 分布式计算 大数据
MaxCompute聚簇优化推荐功能发布,单日节省2PB Shuffle、7000+CU!
MaxCompute全新推出了聚簇优化推荐功能。该功能基于 31 天历史运行数据,每日自动输出全局最优 Hash Cluster Key,对于10 GB以上的大型Shuffle场景,这一功能将直接带来显著的成本优化。
541 3
|
机器学习/深度学习 并行计算 算法
基于目标级联法的微网群多主体分布式优化调度(Matlab代码实现)
基于目标级联法的微网群多主体分布式优化调度(Matlab代码实现)
281 0
|
数据采集 搜索推荐 Java
Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与用户体验优化中的应用(221)
本文探讨 Java 大数据在智能教育虚拟学习环境中的应用,涵盖多源数据采集、个性化推荐、实时互动优化等核心技术,结合实际案例分析其在提升学习体验与教学质量中的成效,并展望未来发展方向与技术挑战。
|
存储 SQL 分布式计算
MaxCompute 聚簇优化推荐原理
基于历史查询智能推荐Clustered表,显著降低计算成本,提升数仓性能。
653 4
MaxCompute 聚簇优化推荐原理
|
存储 监控 算法
117_LLM训练的高效分布式策略:从数据并行到ZeRO优化
在2025年,大型语言模型(LLM)的规模已经达到了数千亿甚至数万亿参数,训练这样的庞然大物需要先进的分布式训练技术支持。本文将深入探讨LLM训练中的高效分布式策略,从基础的数据并行到最先进的ZeRO优化技术,为读者提供全面且实用的技术指南。
1046 2
|
调度 开发者 异构计算
冠军10万美金!AMD 2025 分布式推理算子优化挑战赛来了
冠军10万美金!AMD 2025 分布式推理算子优化挑战赛来了
805 13
|
存储 并行计算 算法
【动态多目标优化算法】基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解CEC2023研究(Matlab代码实现)
【动态多目标优化算法】基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解CEC2023研究(Matlab代码实现)
507 4
|
大数据 数据挖掘 定位技术
买房不是拍脑袋:大数据教你优化房地产投资策略
买房不是拍脑袋:大数据教你优化房地产投资策略
574 2