Skip to content

Commit 33a7c35

Browse files
AI Translate 81-how-databend-works to Simplified-Chinese (#2409)
* [INIT] Start translation to Simplified-Chinese * 🌐 Translate _category_.json to Simplified-Chinese * 🌐 Translate _category_.json to Simplified-Chinese * 🌐 Translate _category_.json to Simplified-Chinese * 🌐 Translate _category_.json to Simplified-Chinese * 🌐 Translate _category_.json to Simplified-Chinese * 🌐 Translate _category_.json to Simplified-Chinese * Update _category_.json --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Bohu <[email protected]>
1 parent b86f829 commit 33a7c35

File tree

7 files changed

+344
-328
lines changed

7 files changed

+344
-328
lines changed

.translation-init

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Translation initialization: 2025-06-07T11:38:44.688685

docs/cn/guides/81-how-databend-works/01-how-databend-fuse-engine-works.md

Lines changed: 57 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,26 @@ title: Fuse 引擎工作原理
44

55
## Fuse 引擎
66

7-
Fuse 引擎是 Databend 的核心存储引擎,专为在**云对象存储**上高效管理 **PB 级**数据而优化。默认情况下,在 Databend 中创建的表会自动使用此引擎`ENGINE=FUSE`)。受 Git 启发,其基于快照的设计支持强大的数据版本控制功能(如时间回溯(Time Travel)),并通过先进的剪枝和索引技术提供**高查询性能**
7+
Fuse 引擎是 Databend 的核心存储引擎,专为在**云对象存储**上高效管理 **PB 级**数据而优化。默认情况下,在 Databend 中创建的表会自动使用此引擎 (`ENGINE=FUSE`)。其设计灵感源于 Git,基于快照 (Snapshot) 的设计支持强大的数据版本控制(如时间旅行 (Time Travel)),并通过先进的剪枝和索引技术提供**卓越的查询性能**
88

9-
本文档阐述其核心概念与工作原理
9+
本文档将解释其核心概念和工作原理
1010

1111
## 核心概念
1212

13-
Fuse 引擎使用三个核心结构组织数据,设计灵感源自 Git:
13+
Fuse 引擎使用三个核心结构来组织数据,其设计与 Git 类似
1414

15-
* **快照Snapshot,类似 Git 提交)** 不可变引用,通过指向特定段(Segment)定义表在时间点的状态,支持时间回溯(Time Travel
16-
* **Segment,类似 Git 树)**Block的集合,包含用于快速数据跳过(剪枝)的汇总统计信息,可在快照间共享
17-
* **Block,类似 Git 对象)** 不可变数据文件(Parquet 格式),存储实际行数据及详细的列级统计信息,用于细粒度剪枝
15+
* **快照 (Snapshot),类似 Git 的提交 (Commit)** 不可变的引用,通过指向特定的段 (Segment) 来定义表在某一时间点的状态,从而实现时间旅行 (Time Travel) 等功能
16+
* ** (Segment),类似 Git 的树 (Tree)** (Block) 的集合,包含用于快速数据跳过(即剪枝 (Pruning))的摘要统计信息,可在不同快照间共享
17+
* ** (Block),类似 Git 的数据对象 (Blob)** 不可变的数据文件(采用 Parquet 格式),其中包含实际的行数据以及用于细粒度剪枝的详细列级统计信息
1818

1919
```
20-
表头Table HEAD
20+
表头 (Table HEAD)
2121
2222
2323
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
24-
│ 段(SEGMENT A)│◄────│ 快照 2 │────►│ 段(SEGMENT B)
25-
│ │ │ 前一个: │ │ │
26-
└───────┬───────┘ │ 快照 1 │ └───────┬───────┘
24+
│ 段 A │◄────│ 快照 2 │────►│ 段 B
25+
│ │ │ Previous: │ │ │
26+
└───────┬───────┘ │ SNAPSHOT 1 │ └───────┬───────┘
2727
│ └───────────────┘ │
2828
│ │ │
2929
│ ▼ │
@@ -41,18 +41,18 @@ Fuse 引擎使用三个核心结构组织数据,设计灵感源自 Git:
4141

4242
## 写入工作原理
4343

44-
向表添加数据时,Fuse 引擎会构建对象链。过程如下
44+
当您向表中添加数据时,Fuse 引擎会创建一系列对象。下面将逐步演示此过程
4545

4646
### 步骤 1:创建表
4747

4848
```sql
4949
CREATE TABLE git(file VARCHAR, content VARCHAR);
5050
```
5151

52-
此时表无数据
52+
此时,表已创建,但其中不包含任何数据
5353

5454
```
55-
空表,无数据
55+
(空表,无数据)
5656
```
5757

5858
### 步骤 2:插入第一条数据
@@ -61,10 +61,10 @@ CREATE TABLE git(file VARCHAR, content VARCHAR);
6161
INSERT INTO git VALUES('cloud.txt', '2022/05/06, Databend, Cloud');
6262
```
6363

64-
首次插入后,Fuse 引擎创建初始快照、段和块:
64+
首次插入数据后,Fuse 引擎会创建初始的快照、段和块:
6565

6666
```
67-
表头Table HEAD
67+
表头 (Table HEAD)
6868
6969
7070
┌───────────────┐
@@ -91,16 +91,16 @@ INSERT INTO git VALUES('cloud.txt', '2022/05/06, Databend, Cloud');
9191
INSERT INTO git VALUES('warehouse.txt', '2022/05/07, Databend, Warehouse');
9292
```
9393

94-
插入新数据时,Fuse 引擎创建引用原始段和新段的新快照
94+
当我们插入更多数据时,Fuse 引擎会创建一个新的快照,该快照同时引用了原有的段和一个新的段
9595

9696
```
97-
表头Table HEAD
97+
表头 (Table HEAD)
9898
9999
100100
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
101101
│ 段 A │◄────│ 快照 2 │────►│ 段 B │
102-
│ │ │ 前一个: │ │ │
103-
└───────┬───────┘ │ 快照 1 │ └───────┬───────┘
102+
│ │ │ Previous: │ │ │
103+
└───────┬───────┘ │ SNAPSHOT 1 │ └───────┬───────┘
104104
│ └───────────────┘ │
105105
│ │ │
106106
│ ▼ │
@@ -118,28 +118,28 @@ INSERT INTO git VALUES('warehouse.txt', '2022/05/07, Databend, Warehouse');
118118

119119
## 读取工作原理
120120

121-
查询数据时,Fuse 引擎通过智能剪枝高效定位目标数据
121+
当您查询数据时,Fuse 引擎会使用智能剪枝来高效地查找数据
122122

123123
```
124-
查询(Query):SELECT * FROM git WHERE file = 'cloud.txt';
124+
查询: SELECT * FROM git WHERE file = 'cloud.txt';
125125
126-
表头Table HEAD
126+
表头 (Table HEAD)
127127
128128
129129
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
130130
│ 段 A │◄────│ 快照 2 │────►│ 段 B │
131131
│ 检查 │ │ │ │ 检查 │
132132
└───────┬───────┘ └───────────────┘ └───────────────┘
133133
│ ✗
134-
跳过 - 不包含
135-
│ 'cloud.txt'
134+
(跳过 - 不包含
135+
│ 'cloud.txt')
136136
137137
┌───────────────┐
138138
│ 块 1 │
139139
│ 检查 │
140140
└───────┬───────┘
141141
142-
│ ✓ 包含 'cloud.txt'
142+
│ ✓ (包含 'cloud.txt')
143143
144144
读取此块
145145
```
@@ -148,32 +148,32 @@ INSERT INTO git VALUES('warehouse.txt', '2022/05/07, Databend, Warehouse');
148148

149149
```
150150
┌─────────────────────────────────────────┐
151-
│ 查询(Query):WHERE file = 'cloud.txt' │
151+
│ 查询:WHERE file = 'cloud.txt'
152152
└─────────────────┬───────────────────────┘
153153
154154
155155
┌─────────────────────────────────────────┐
156156
│ 检查段 A │
157-
最小文件值:'cloud.txt' │
158-
最大文件值:'cloud.txt' │
157+
文件最小值:'cloud.txt' │
158+
文件最大值:'cloud.txt' │
159159
│ │
160160
│ 结果:✓ 可能包含 'cloud.txt' │
161161
└─────────────────┬───────────────────────┘
162162
163163
164164
┌─────────────────────────────────────────┐
165165
│ 检查段 B │
166-
最小文件值:'warehouse.txt' │
167-
最大文件值:'warehouse.txt' │
166+
文件最小值:'warehouse.txt' │
167+
文件最大值:'warehouse.txt' │
168168
│ │
169169
│ 结果:✗ 不可能包含 'cloud.txt' │
170170
└─────────────────┬───────────────────────┘
171171
172172
173173
┌─────────────────────────────────────────┐
174174
│ 检查段 A 中的块 1 │
175-
最小文件值:'cloud.txt' │
176-
最大文件值:'cloud.txt' │
175+
文件最小值:'cloud.txt' │
176+
文件最大值:'cloud.txt' │
177177
│ │
178178
│ 结果:✓ 包含 'cloud.txt' │
179179
└─────────────────┬───────────────────────┘
@@ -184,41 +184,41 @@ INSERT INTO git VALUES('warehouse.txt', '2022/05/07, Databend, Warehouse');
184184
└─────────────────────────────────────────┘
185185
```
186186

187-
## 基于快照的功能
187+
## 基于快照的特性
188188

189-
Fuse 引擎的快照架构支持以下高级数据管理能力
189+
Fuse 引擎的快照架构支持强大的数据管理能力
190190

191-
### 时间回溯(Time Travel
191+
### 时间旅行 (Time Travel)
192192

193-
查询任意历史时间点的数据状态,支持数据分支、标记和治理,并提供完整审计跟踪与错误恢复
193+
您可以查询数据在任意历史时间点的状态。此功能支持数据分支、打标和治理,并提供完整的审计追踪与错误恢复能力
194194

195-
### 零拷贝模式演进
195+
### 零拷贝模式演进 (Zero-Copy Schema Evolution)
196196

197-
**无需重写底层数据文件**即可修改表结构(添加列、删除列、重命名、更改类型)。
197+
修改表结构(例如添加列、删除列、重命名、更改类型)**无需重写任何底层数据文件**
198198

199-
- 变更仅为元数据操作,记录于新快照中
200-
- 操作瞬时完成,无需停机,避免高成本数据迁移,旧数据仍可通过原始模式访问
199+
- 这些变更仅作为元数据操作记录在新的快照中
200+
- 此操作瞬时完成,无需停机,并避免了昂贵的数据迁移任务。旧数据仍可通过其原始模式进行访问
201201

202-
## 查询加速的高级索引(Fuse 引擎
202+
## 用于查询加速的高级索引 (Fuse 引擎)
203203

204-
除基于统计信息的块/段剪枝外,Fuse 引擎提供专用二级索引以加速特定查询模式
204+
除了利用统计信息进行基本的块/段剪枝外,Fuse 引擎还提供专门的二级索引,以进一步加速特定的查询模式
205205

206-
| 索引类型 | 简要描述 | 加速查询类型 | 示例查询片段 |
207-
| :------------------ | :-------------------------------------------------------- | :-------------------------------------------------- | :-------------------------------------- |
208-
| **聚合索引Aggregate Index** | 为指定分组预计算聚合结果 | 加速 `COUNT``SUM``AVG`... + `GROUP BY` | `SELECT COUNT(*)... GROUP BY city` |
209-
| **全文索引Full-Text Index** | 支持文本内关键词快速检索的倒排索引 | 使用 `MATCH` 的文本搜索(如日志分析) | `WHERE MATCH(log_entry, 'error')` |
210-
| **JSON 索引JSON Index** | 索引 JSON 文档内特定路径/键 | 针对 JSON 路径/值的过滤 | `WHERE event_data:user.id = 123` |
211-
| **布隆过滤器索引Bloom Filter Index** | 通过概率检查快速跳过不匹配块 | 点查找(`=`)及 `IN` 列表过滤 | `WHERE user_id = 'xyz'` |
206+
| 索引类型 | 简要描述 | 加速的查询类型 | 查询片段示例 |
207+
| :--- | :--- | :--- | :--- |
208+
| **聚合索引 (Aggregate Index)** | 为指定的分组预计算聚合结果 | 加速 `COUNT``SUM``AVG` 等聚合函数及 `GROUP BY` 查询 | `SELECT COUNT(*)... GROUP BY city` |
209+
| **全文索引 (Full-Text Index)** | 用于在文本中进行快速关键字搜索的倒排索引 | 使用 `MATCH` 的文本搜索(例如日志) | `WHERE MATCH(log_entry, 'error')` |
210+
| **JSON 索引 (JSON Index)** | JSON 文档中的特定路径/键创建索引 | 对特定 JSON 路径/值进行过滤 | `WHERE event_data:user.id = 123` |
211+
| **布隆过滤器索引 (Bloom Filter Index)** | 通过概率性检查快速跳过不匹配的数据块 | 加速点查询 (`=`) 和 `IN` 列表过滤 | `WHERE user_id = 'xyz'` |
212212

213213
## 对比:Databend Fuse 引擎 vs. Apache Iceberg
214214

215-
_**注意:** 本对比聚焦**表格式功能**。作为 Databend 原生表格式,Fuse 持续演进以提升**可用性与性能**功能基于当前版本,未来可能变更_
215+
_**注意:** 此对比专注于**表格式特性**。作为 Databend 的原生表格式,Fuse 引擎在持续演进,旨在提升**易用性与性能**表中展示的功能为当前版本特性,未来可能会发生变化_
216216

217-
| 功能 | Apache Iceberg | Databend Fuse 引擎 |
218-
| :---------------------- | :--------------------------------- | :----------------------------------- |
219-
| **元数据结构** | 清单列表 -> 清单文件 -> 数据文件 | **快照Snapshot** -> 段Segment-> 块Block |
220-
| **统计级别** | 文件级(+分区(Partition)) | **多级**快照、段、块)→ 更精细剪枝 |
221-
| **剪枝能力** | 良好(文件/分区统计) | **优秀**(多级统计 + 二级索引 |
222-
| **模式演进** | 支持(元数据更改) | **零拷贝**仅元数据,瞬时) |
223-
| **数据聚簇** | 排序(写入时) | **自动**优化(后台) |
224-
| **流式支持** | 基本流式摄取 | **高级增量**插入/更新跟踪) |
217+
| 特性 | Apache Iceberg | Databend Fuse 引擎 |
218+
| :--- | :--- | :--- |
219+
| **元数据结构** | 清单列表 (Manifest List) -> 清单文件 (Manifest File) -> 数据文件 (Data File) | **快照 (Snapshot)** -> 段 (Segment) -> 块 (Block) |
220+
| **统计信息级别** | 文件级 (+ 分区) | **多级** (快照、段、块) → 实现更精细的剪枝 |
221+
| **剪枝能力** | 良好 (基于文件/分区统计信息) | **卓越** (基于多级统计信息 + 二级索引) |
222+
| **模式演进** | 支持 (元数据变更) | **零拷贝** (仅元数据,瞬时完成) |
223+
| **数据聚簇** | 写入时排序 | **自动**优化 (后台) |
224+
| **流式处理支持** | 基本的流式数据摄取 | **高级增量处理** (插入/更新追踪) |

0 commit comments

Comments
 (0)