灌水唠嗑区
其他
问答
数据块(DC)的“自动封装和压缩”机制是什么?压缩算法是什么?压缩率大概是多少?
发表于2026-04-01 11:35:144次浏览3个评论
数据块(DC)的“自动封装和压缩”机制是什么?压缩算法是什么?压缩率大概是多少?
评论
登录后才可以发表评论
山佳发表于 4个月前
11
曾浩轩发表于 4个月前
# GBase 8a 数据块(DC)自动封装压缩机制、算法及压缩率全解析
GBase 8a 作为列存储分析型数据库,**DC(数据单元)** 是其最核心的存储和I/O单位,自动封装与压缩是实现极致存储效率和查询性能的关键设计,该机制完全对用户透明,且针对不同数据类型做了精细化的算法适配,以下从**封装压缩机制、核心压缩算法、实际压缩率**三方面做详细说明,均基于GBase 8a MPP Cluster主流版本特性。
## 一、DC数据块的「自动封装+压缩」核心机制
DC的自动封装和压缩是**列存储架构下的联动触发机制**,核心围绕**65536行固定行规**展开,区分**标准DC**和**DC尾块**两种形态,仅标准DC会触发自动封装与压缩,尾块为临时过渡形态不做处理,整体机制对业务无感知,由数据库存储引擎自动完成。
### 1. 封装与压缩的触发条件
GBase 8a中**每一列数据独立按DC组织**,单DC的固定行规为**65536行**,触发自动封装的核心条件为:**某一列的待存储数据行数达到65536行**。
- 数据写入时,新数据会优先追加到对应列的**DC尾块**(行数不足65536行的临时存储区);
- 当尾块的行数因持续写入达到65536行时,存储引擎会**自动将该尾块封装为标准DC**,并立即触发压缩流程;
- 封装后的标准DC会作为独立的持久化存储单元,成为后续查询的最小I/O单位,而列会重新生成新的尾块用于接收后续增量写入。
### 2. 核心特性:分层触发、透明化执行
1. **分层处理**:仅标准DC执行封装+压缩,DC尾块因是动态追加的临时存储区,**不封装、不压缩**,避免高频写入带来的反复解压缩开销(此前已详细解析尾块不压缩的性能设计逻辑);
2. **完全透明**:封装和压缩过程由数据库自动完成,无需人工干预,业务侧的增删改查、数据加载操作无需做任何适配;
3. **与存储绑定**:DC文件会依据操作系统的文件大小限制自动分裂存储,封装后的DC会记录元数据(如数据范围、压缩算法类型、校验和等),方便查询时快速定位和解压;
4. **多粒度配置**:压缩可在**实例级、库级、表级、列级**灵活配置,可根据业务场景(如高性能查询/海量冷数据存储)调整压缩策略,封装机制为数据库原生固定逻辑,不可自定义。
### 3. 封装压缩的执行流程
```
增量数据写入 → 追加至对应列的DC尾块 → 尾块行数达到65536行 → 自动封装为标准DC → 按数据类型选择最优压缩算法 → 压缩为持久化DC存储单元 → 生成新尾块接收后续写入
```
## 二、DC数据块的核心压缩算法:按数据类型自适应,分三级压缩策略
GBase 8a为DC压缩设计了**精细化的算法体系**,核心特点是**按数据类型(数值/字符)做算法区分**,并提供**三级压缩策略**(默认自适应/高压缩/轻量级),内置数十种底层压缩算法(如行程编码、差值编码等),由数据库根据数据分布规律**自动选择最优算法**,压缩和解压缩过程对用户完全透明。
### 1. 三级核心压缩策略(按性能-压缩比平衡划分)
| 压缩策略 | 标识 | 核心特点 | 适用场景 |
|----------|------|----------|----------|
| **默认自适应压缩** | 0 | 数据库自动分析数据类型/分布,选择最优底层算法,平衡压缩比和读写性能 | 绝大多数业务场景,生产环境默认配置 |
| **高压缩** | 数值1/字符3 | 压缩速度快,解压速度稍慢,压缩比最高 | 冷数据/历史数据存储,对查询性能要求一般的场景 |
| **轻量级压缩** | 5 | 压缩和解压速度均极快,压缩比略低 | 热数据/高频查询场景,对读写性能要求高的核心业务 |
### 2. 按数据类型的算法区分
GBase 8a对**数值类型**(int/float/decimal等)和**字符类型**(varchar/char等)设计了不同的压缩算法标识和底层适配逻辑,表级压缩可通过**(数值算法标识,字符算法标识)** 组合配置,生产环境最常用组合为`(0,0)`(全自适应)、`(1,3)`(全高压缩)、`(5,5)`(全轻量级)。
- **数值类型**:适配**差值编码**(适合差值小、分布规律的数据)、**行程编码**(适合大量连续重复的排序数据)等底层算法,支持标识0/1/5;
- **字符类型**:适配**字典编码**、**基于位置的差值编码**(适合重复率高但分布随机的字符数据)等底层算法,支持标识0/3/5。
### 3. 关键设计:压缩与列存储的深度结合
因DC是**列级存储单元**,单DC内的所有数据为**同构数据**(同一列、同一数据类型),数据相关性极高,这让压缩算法的效果能最大化发挥;而查询时仅需加载涉及的DC并解压,无需解压整列/整表数据,大幅降低了解压的CPU开销。
## 三、DC数据块的实际压缩率:常规2~20倍,极致场景达30倍
GBase 8a的DC压缩率**无固定值**,核心受**数据类型、数据分布、压缩策略**影响,**同构数据的重复率/规律性越高,压缩比越高**;列存储的天然特性让其压缩率远高于传统行存储数据库(行存储压缩比通常≤1:2),**常规业务场景压缩比为2~20倍,极致场景(如大量重复的日志/统计数据)可达1:30**。
### 1. 不同场景的压缩率参考
| 数据类型/场景 | 压缩策略 | 典型压缩比 |
|--------------|----------|------------|
| 普通业务数据(混合数值+字符,无大量重复) | 默认自适应(0,0) | 2~10倍 |
| 统计/日志数据(大量连续重复数值/字符) | 默认自适应(0,0) | 10~20倍 |
| 冷数据/历史归档数据 | 高压缩(1,3) | 15~30倍 |
| 热数据/高频查询核心数据 | 轻量级压缩(5,5) | 2~8倍 |
### 2. 影响压缩率的关键因素
1. **数据重复率**:重复率越高,压缩比越高(如全量为同一数值的列,压缩比可达30倍以上);
2. **数据类型**:数值类型压缩比通常高于字符类型,有序数值(如自增ID、时间戳)高于无序数值;
3. **压缩策略**:高压缩(1,3)> 默认自适应(0,0)> 轻量级压缩(5,5);
4. **数据分布**:有序分布的数据(如排序后的用户ID)比随机分布的数据压缩比更高。
### 3. 压缩的实际价值:存储降本+查询性能提升
DC压缩不仅能**节省50%~95%的存储空间**,还能间接提升查询性能:压缩后DC的物理体积更小,查询时的磁盘I/O传输量大幅降低,而GBase 8a的MPP并行执行器支持**并行解压**,解压的CPU开销远小于I/O开销的节省,最终实现“存储降本+查询提速”的双重效果。
## 四、核心总结
1. **自动封装压缩**:以**65536行**为触发阈值,DC尾块行数达标后自动封装为标准DC并触发压缩,尾块不封装不压缩,全程自动透明;
2. **压缩算法**:按**数值/字符**区分算法,提供**默认自适应/高压缩/轻量级**三级策略,内置行程编码、差值编码等数十种底层算法,支持多粒度配置;
3. **压缩率**:常规场景**2~20倍**,极致重复数据场景可达**30倍**,远高于传统行存储,且压缩策略可根据业务场景灵活平衡性能与压缩比;
4. **设计核心**:将封装压缩与列存储、DC尾块的动态写入特性深度结合,既实现了极致的存储效率,又避免了高频写入带来的性能损耗,是GBase 8a适配海量分析型业务的核心设计之一。
GBase 8a 作为列存储分析型数据库,**DC(数据单元)** 是其最核心的存储和I/O单位,自动封装与压缩是实现极致存储效率和查询性能的关键设计,该机制完全对用户透明,且针对不同数据类型做了精细化的算法适配,以下从**封装压缩机制、核心压缩算法、实际压缩率**三方面做详细说明,均基于GBase 8a MPP Cluster主流版本特性。
## 一、DC数据块的「自动封装+压缩」核心机制
DC的自动封装和压缩是**列存储架构下的联动触发机制**,核心围绕**65536行固定行规**展开,区分**标准DC**和**DC尾块**两种形态,仅标准DC会触发自动封装与压缩,尾块为临时过渡形态不做处理,整体机制对业务无感知,由数据库存储引擎自动完成。
### 1. 封装与压缩的触发条件
GBase 8a中**每一列数据独立按DC组织**,单DC的固定行规为**65536行**,触发自动封装的核心条件为:**某一列的待存储数据行数达到65536行**。
- 数据写入时,新数据会优先追加到对应列的**DC尾块**(行数不足65536行的临时存储区);
- 当尾块的行数因持续写入达到65536行时,存储引擎会**自动将该尾块封装为标准DC**,并立即触发压缩流程;
- 封装后的标准DC会作为独立的持久化存储单元,成为后续查询的最小I/O单位,而列会重新生成新的尾块用于接收后续增量写入。
### 2. 核心特性:分层触发、透明化执行
1. **分层处理**:仅标准DC执行封装+压缩,DC尾块因是动态追加的临时存储区,**不封装、不压缩**,避免高频写入带来的反复解压缩开销(此前已详细解析尾块不压缩的性能设计逻辑);
2. **完全透明**:封装和压缩过程由数据库自动完成,无需人工干预,业务侧的增删改查、数据加载操作无需做任何适配;
3. **与存储绑定**:DC文件会依据操作系统的文件大小限制自动分裂存储,封装后的DC会记录元数据(如数据范围、压缩算法类型、校验和等),方便查询时快速定位和解压;
4. **多粒度配置**:压缩可在**实例级、库级、表级、列级**灵活配置,可根据业务场景(如高性能查询/海量冷数据存储)调整压缩策略,封装机制为数据库原生固定逻辑,不可自定义。
### 3. 封装压缩的执行流程
```
增量数据写入 → 追加至对应列的DC尾块 → 尾块行数达到65536行 → 自动封装为标准DC → 按数据类型选择最优压缩算法 → 压缩为持久化DC存储单元 → 生成新尾块接收后续写入
```
## 二、DC数据块的核心压缩算法:按数据类型自适应,分三级压缩策略
GBase 8a为DC压缩设计了**精细化的算法体系**,核心特点是**按数据类型(数值/字符)做算法区分**,并提供**三级压缩策略**(默认自适应/高压缩/轻量级),内置数十种底层压缩算法(如行程编码、差值编码等),由数据库根据数据分布规律**自动选择最优算法**,压缩和解压缩过程对用户完全透明。
### 1. 三级核心压缩策略(按性能-压缩比平衡划分)
| 压缩策略 | 标识 | 核心特点 | 适用场景 |
|----------|------|----------|----------|
| **默认自适应压缩** | 0 | 数据库自动分析数据类型/分布,选择最优底层算法,平衡压缩比和读写性能 | 绝大多数业务场景,生产环境默认配置 |
| **高压缩** | 数值1/字符3 | 压缩速度快,解压速度稍慢,压缩比最高 | 冷数据/历史数据存储,对查询性能要求一般的场景 |
| **轻量级压缩** | 5 | 压缩和解压速度均极快,压缩比略低 | 热数据/高频查询场景,对读写性能要求高的核心业务 |
### 2. 按数据类型的算法区分
GBase 8a对**数值类型**(int/float/decimal等)和**字符类型**(varchar/char等)设计了不同的压缩算法标识和底层适配逻辑,表级压缩可通过**(数值算法标识,字符算法标识)** 组合配置,生产环境最常用组合为`(0,0)`(全自适应)、`(1,3)`(全高压缩)、`(5,5)`(全轻量级)。
- **数值类型**:适配**差值编码**(适合差值小、分布规律的数据)、**行程编码**(适合大量连续重复的排序数据)等底层算法,支持标识0/1/5;
- **字符类型**:适配**字典编码**、**基于位置的差值编码**(适合重复率高但分布随机的字符数据)等底层算法,支持标识0/3/5。
### 3. 关键设计:压缩与列存储的深度结合
因DC是**列级存储单元**,单DC内的所有数据为**同构数据**(同一列、同一数据类型),数据相关性极高,这让压缩算法的效果能最大化发挥;而查询时仅需加载涉及的DC并解压,无需解压整列/整表数据,大幅降低了解压的CPU开销。
## 三、DC数据块的实际压缩率:常规2~20倍,极致场景达30倍
GBase 8a的DC压缩率**无固定值**,核心受**数据类型、数据分布、压缩策略**影响,**同构数据的重复率/规律性越高,压缩比越高**;列存储的天然特性让其压缩率远高于传统行存储数据库(行存储压缩比通常≤1:2),**常规业务场景压缩比为2~20倍,极致场景(如大量重复的日志/统计数据)可达1:30**。
### 1. 不同场景的压缩率参考
| 数据类型/场景 | 压缩策略 | 典型压缩比 |
|--------------|----------|------------|
| 普通业务数据(混合数值+字符,无大量重复) | 默认自适应(0,0) | 2~10倍 |
| 统计/日志数据(大量连续重复数值/字符) | 默认自适应(0,0) | 10~20倍 |
| 冷数据/历史归档数据 | 高压缩(1,3) | 15~30倍 |
| 热数据/高频查询核心数据 | 轻量级压缩(5,5) | 2~8倍 |
### 2. 影响压缩率的关键因素
1. **数据重复率**:重复率越高,压缩比越高(如全量为同一数值的列,压缩比可达30倍以上);
2. **数据类型**:数值类型压缩比通常高于字符类型,有序数值(如自增ID、时间戳)高于无序数值;
3. **压缩策略**:高压缩(1,3)> 默认自适应(0,0)> 轻量级压缩(5,5);
4. **数据分布**:有序分布的数据(如排序后的用户ID)比随机分布的数据压缩比更高。
### 3. 压缩的实际价值:存储降本+查询性能提升
DC压缩不仅能**节省50%~95%的存储空间**,还能间接提升查询性能:压缩后DC的物理体积更小,查询时的磁盘I/O传输量大幅降低,而GBase 8a的MPP并行执行器支持**并行解压**,解压的CPU开销远小于I/O开销的节省,最终实现“存储降本+查询提速”的双重效果。
## 四、核心总结
1. **自动封装压缩**:以**65536行**为触发阈值,DC尾块行数达标后自动封装为标准DC并触发压缩,尾块不封装不压缩,全程自动透明;
2. **压缩算法**:按**数值/字符**区分算法,提供**默认自适应/高压缩/轻量级**三级策略,内置行程编码、差值编码等数十种底层算法,支持多粒度配置;
3. **压缩率**:常规场景**2~20倍**,极致重复数据场景可达**30倍**,远高于传统行存储,且压缩策略可根据业务场景灵活平衡性能与压缩比;
4. **设计核心**:将封装压缩与列存储、DC尾块的动态写入特性深度结合,既实现了极致的存储效率,又避免了高频写入带来的性能损耗,是GBase 8a适配海量分析型业务的核心设计之一。
白芷发表于 2个月前
蹲个答案。
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526