Skip to content

Commit

Permalink
docs: minor fix
Browse files Browse the repository at this point in the history
Signed-off-by: Chojan Shang <[email protected]>
  • Loading branch information
PsiACE committed Nov 15, 2023
1 parent 5ff9579 commit ed8b095
Showing 1 changed file with 5 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ giscus = true

Databend 将存储引擎抽象成一个名为 `Table` 的接口,源码位于 `query/catalog/src/table.rs`

`Table` 接口定义了 `read``append``alter``optimize``truncate` 以及 `recluster` 等方法,负责数据的读写和变更。解释器通过调用 `Table trait` 的方法生成物理执行的 `pipeline`
`Table` 接口定义了 `read``append``alter``optimize``truncate` 以及 `recluster` 等方法,负责数据的读写和变更。解释器(interpreter)通过调用 `Table trait` 的方法生成物理执行的 `pipeline`

通过实现 `Table` 接口的方法,可以定义 Databend 的存储引擎,不同的实现对应不同的引擎。

Expand All @@ -32,7 +32,7 @@ Storage 主要关注 `Table` 接口的具体实现,涉及表的元信息,索
| common/cache | 定义与管理缓存,包括磁盘缓存和内存缓存。类型包含表 meta 缓存、查询结果缓存、表数据缓存等。 |
| common/index | 定义与使用索引,目前支持 bloom filter index、page index、range index。 |
| common/locks | 管理与使用锁,支持表级别的锁。 |
| common/pruner | 分区剪裁算法,包括内部列剪裁、限制器剪裁、页面剪裁、topn 剪裁、范围剪裁|
| common/pruner | 分区剪裁算法,包括 internal column pruner、limiter pruner、page pruner、topn pruner、range pruner|
| common/table_meta | 表 meta 的数据结构定义。 |
| hive | hive 表的交互 |
| iceberg | iceberg 交互 |
Expand All @@ -43,7 +43,7 @@ Storage 主要关注 `Table` 接口的具体实现,涉及表的元信息,索
| parquet | 把 parquet 文件作为数据源 |
| fuse | fuse 引擎模块 |
| fuse/src/io | table meta、index、block 的读写 IO 交互 |
| fuse/src/pruning | fuse 分区剪裁 |
| fuse/src/pruning | fuse 分区裁剪 |
| fuse/src/statistics | column statistics 和 cluster statistics 等统计信息 |
| fuse/src/table_functions | table function 实现 |
| fuse/src/operation | fuse 引擎对 table trait 方法的具体实现。并包含了如 ReadSource、CommitSink 等 processor 算子的定义 |
Expand Down Expand Up @@ -83,7 +83,7 @@ impl Table for FuseTable {
}
```

Fuse 引擎会以 segment 为单位构建 lazy 类型的 `FuseLazyPartInfo`。通过这种方式,`prune_snapshot_blocks` 可以推迟到 pipeline 初始化阶段执行,特别是在分布式集群模式下,可以有效提高剪裁执行效率。
Fuse 引擎会以 segment 为单位构建 lazy 类型的 `FuseLazyPartInfo`。通过这种方式,`prune_snapshot_blocks` 可以下推到 pipeline 初始化阶段执行,特别是在分布式集群模式下,可以有效提高剪裁执行效率。

```Rust
pub struct FuseLazyPartInfo {
Expand All @@ -96,7 +96,7 @@ pub struct FuseLazyPartInfo {
分区剪裁流程的实现位于 `query/storages/fuse/src/pruning/fuse_pruner.rs` 文件中,具体流程如下:

1. 基于 `push_downs` 条件构造各类剪裁器(pruner),并实例化 `FusePruner`
2. `FusePruner` 中执行 `pruning` 方法,创建 `max_concurrency` 个分批剪裁任务。每个批次包括多个 segment 位置,首先根据 `internal_column_pruner` 筛选出无需的 segments,再读取 `SegmentInfo`,并根据 segment 级别的 `MinMax` 索引进行范围剪裁。
2. 调用 `FusePruner` 中的 `pruning` 方法,创建 `max_concurrency` 个分批剪裁任务。每个批次包括多个 segment 位置,首先根据 `internal_column_pruner` 筛选出无需的 segments,再读取 `SegmentInfo`,并根据 segment 级别的 `MinMax` 索引进行范围剪裁。
3. 读取过滤后的 `SegmentInfo` 中的 `BlockMetas`,并按照 `internal_column_pruner``limit_pruner``range_pruner``bloom_pruner``page_pruner` 等算法的顺序,剔除无需的 blocks。
4. 执行 `TopNPrunner` 进行过滤,从而得到最终剪裁后的 `block_metas`

Expand Down

0 comments on commit ed8b095

Please sign in to comment.