Skip to content

Commit

Permalink
chore: new address
Browse files Browse the repository at this point in the history
Signed-off-by: Chojan Shang <[email protected]>
  • Loading branch information
PsiACE committed Sep 29, 2023
1 parent 16197a6 commit 63eeac4
Show file tree
Hide file tree
Showing 18 changed files with 77 additions and 77 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<h3 align="center">与 Databend 一同探秘数据库系统</h3>

<h4 align="center">
<a href="https://psiace.github.io/databend-internals">在线阅读</a> |
<a href="https://databend-internals.psiace.me">在线阅读</a> |
<a href="https://github.com/psiace/databend-internals">查看源码</a> |
<a href="https://github.com/datafuselabs/databend">前往 Databend</a>
</h4>
Expand Down
2 changes: 1 addition & 1 deletion docs/config.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# The URL the site will be built for
base_url = "https://psiace.github.io/databend-internals"
base_url = "https://databend-internals.psiace.me"
title = "Databend 内幕大揭秘"
description = "与 Databend 一同探秘数据库系统"

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/contribute-to-databend/build-and-more.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ giscus = true

Databend 在 `Makefile` 中封装了大量常见命令。采用 make 构建只会开启默认特性,并且会一次性构建 `databend-meta``databend-query` 以及 `databend-metactl`

[前文](https://psiace.github.io/databend-internals/docs/contribute-to-databend/development-environment/) 设置好开发环境后。
[前文](https://databend-internals.psiace.me/docs/contribute-to-databend/development-environment/) 设置好开发环境后。

- 执行 `make build` 即可轻松构建 debug 版本。
- `make build-release` 则会构建 release 版本,并会采用 objcopy 减少二进制体积。
Expand Down
6 changes: 3 additions & 3 deletions docs/content/docs/contribute-to-databend/how-to-benchmark.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,20 +286,20 @@ pattern ='.*[.]csv' file_format=(type='CSV' field_delimiter='\t' record_delimite

**Graphs**

![graphs](https://psiace.github.io/databend-internals/contribute-to-databend/how-to-benchmark/01-graph.png)
![graphs](https://databend-internals.psiace.me/contribute-to-databend/how-to-benchmark/01-graph.png)

- 以折线图的形式展示性能变化,并支持通过拖动图表下方的选择器调整展示的时间区间。
- 横轴为日期,纵轴为执行用时,鼠标悬浮到上方即可查看当次执行的信息。

**Compare**

![compare](https://psiace.github.io/databend-internals/contribute-to-databend/how-to-benchmark/02-compare.png)
![compare](https://databend-internals.psiace.me/contribute-to-databend/how-to-benchmark/02-compare.png)

- 支持任选两天对比执行用时的变化,以百分比形式展示。

**Status**

![status](https://psiace.github.io/databend-internals/contribute-to-databend/how-to-benchmark/03-status.png)
![status](https://databend-internals.psiace.me/contribute-to-databend/how-to-benchmark/03-status.png)

- 关注当前最新性能测试结果中各指标的情况,以柱型图展示。
- 横轴为不同类型,纵轴为执行用时。
Expand Down
4 changes: 2 additions & 2 deletions docs/content/docs/contribute-to-databend/how-to-contribute.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ Slack:<https://link.databend.rs/join-slack>

**前置环境**

在「[Databend 贡献之路 | 如何设置 Databend 开发环境](https://psiace.github.io/databend-internals/docs/contribute-to-databend/development-environment/)」一文中,已经详细介绍过如何配置 Databend 开发环境。
在「[Databend 贡献之路 | 如何设置 Databend 开发环境](https://databend-internals.psiace.me/docs/contribute-to-databend/development-environment/)」一文中,已经详细介绍过如何配置 Databend 开发环境。

需要注意的是,考虑到不同系统和发行版之间的差异,你可能需要自行安装 `gcc``python``openssl` 等相关基础程序。

Expand Down Expand Up @@ -144,7 +144,7 @@ cargo audit

**测试**

在「[Databend 贡献之路 | 如何为 Databend 添加新的测试](https://psiace.github.io/databend-internals/docs/contribute-to-databend/write-and-run-tests/)」中,已经对测试做了详细的描述。
在「[Databend 贡献之路 | 如何为 Databend 添加新的测试](https://databend-internals.psiace.me/docs/contribute-to-databend/write-and-run-tests/)」中,已经对测试做了详细的描述。

通常情况下,使用 `make test` 一次性执行 `单元测试``功能测试` 就可以。

Expand Down
4 changes: 2 additions & 2 deletions docs/content/docs/contribute-to-databend/how-to-profile.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ go tool pprof -http=0.0.0.0:8088 ~/pprof/pprof.samples.cpu.001.pb.gz
访问 `http://0.0.0.0:8088/ui/flamegraph` 即可得到火焰图。
![pprof flamegraph](https://psiace.github.io/databend-internals/contribute-to-databend/how-to-profile/01-pprof-flamegraph.png)
![pprof flamegraph](https://databend-internals.psiace.me/contribute-to-databend/how-to-profile/01-pprof-flamegraph.png)
### 注意事项
Expand Down Expand Up @@ -154,7 +154,7 @@ jeprof \
同样选用 debug 模式下编译的 databend-query 作为 target,端口为 8080,结果如图所示:
![jeprof call graph](https://psiace.github.io/databend-internals/contribute-to-databend/how-to-profile/02-jeprof-mem.png)
![jeprof call graph](https://databend-internals.psiace.me/contribute-to-databend/how-to-profile/02-jeprof-mem.png)
### 注意事项
Expand Down
22 changes: 11 additions & 11 deletions docs/content/docs/contribute-to-databend/tracing-in-databend.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ giscus = true

### 初识 Tracing

![Tracing Logo](https://psiace.github.io/databend-internals/contribute-to-databend/tracing-in-databend/01-tracing.svg)
![Tracing Logo](https://databend-internals.psiace.me/contribute-to-databend/tracing-in-databend/01-tracing.svg)

Tracing 是由 Tokio 团队维护的 Rust 应用追踪框架,用来收集结构化的、基于事件的诊断信息。

Expand Down Expand Up @@ -137,7 +137,7 @@ Databend 原生提供了多种观测方式,以方便诊断和调试:
- 服务依赖性分析
- 性能/延迟优化

![Opentelemetry & Jaeger](https://psiace.github.io/databend-internals/contribute-to-databend/tracing-in-databend/02-jaeger-and-opentelemetry.png)
![Opentelemetry & Jaeger](https://databend-internals.psiace.me/contribute-to-databend/tracing-in-databend/02-jaeger-and-opentelemetry.png)

### Step by Step

Expand All @@ -152,7 +152,7 @@ Databend 原生提供了多种观测方式,以方便诊断和调试:

### 结果探索

![dot graph](https://psiace.github.io/databend-internals/contribute-to-databend/tracing-in-databend/03-jaeger-dot-graph.png)
![dot graph](https://databend-internals.psiace.me/contribute-to-databend/tracing-in-databend/03-jaeger-dot-graph.png)

_x 轴是执行时刻,y 轴是持续的时间,圆点反映 span 的聚集程度。_

Expand All @@ -168,27 +168,27 @@ INSERT INTO t1 SELECT * FROM t1;

下图是点击最大的圆点得到的追踪情况:

![span tracing](https://psiace.github.io/databend-internals/contribute-to-databend/tracing-in-databend/04-jaeger-span-tracing.png)
![span tracing](https://databend-internals.psiace.me/contribute-to-databend/tracing-in-databend/04-jaeger-span-tracing.png)

使用 timeline 模式来展现 tracing 的各个跨度之间的关系。以时间为主线进行分析,方便使用者观看在某个时间点观看程序信息。

点开第一个跨度,可以看到这是执行 `INSERT INTO t1 SELECT *FROM t1` 查询时的情况。

![span info](https://psiace.github.io/databend-internals/contribute-to-databend/tracing-in-databend/05-jaeger-span-info.png)
![span info](https://databend-internals.psiace.me/contribute-to-databend/tracing-in-databend/05-jaeger-span-info.png)

**Graph**

切换到 graph 模式,可以看到各个 span 之间的调用链,每个 span 具体用时 ,以及百分比。

![span graph](https://psiace.github.io/databend-internals/contribute-to-databend/tracing-in-databend/06-jaeger-span-graph.png)
![span graph](https://databend-internals.psiace.me/contribute-to-databend/tracing-in-databend/06-jaeger-span-graph.png)

通过这个视图使用者很容易知道系统瓶颈,快速定位问题。

**Compare**

连起来的各个部分形成整个 trace 的调用链。因为比较时一般会比较两个相同类型的调用,所以看到的会是重合后的视图。

![span compare](https://psiace.github.io/databend-internals/contribute-to-databend/tracing-in-databend/07-jaeger-span-compare.png)
![span compare](https://databend-internals.psiace.me/contribute-to-databend/tracing-in-databend/07-jaeger-span-compare.png)

对于颜色的一个说明:

Expand All @@ -203,7 +203,7 @@ tokio-rs 团队出品的诊断和调试工具,可以帮助我们诊断与 toki

### console 是什么

![tokio console](https://psiace.github.io/databend-internals/contribute-to-databend/tracing-in-databend/08-tokio-console.png)
![tokio console](https://databend-internals.psiace.me/contribute-to-databend/tracing-in-databend/08-tokio-console.png)

tokio-console 是专为异步程序设计的调试与诊断工具,能够列出 tokio 的任务,提供对程序的任务和资源的实时、易于导航的视图,总结了它们的当前状态和历史行为。主要包含以下组件:

Expand All @@ -229,21 +229,21 @@ tokio-console 是专为异步程序设计的调试与诊断工具,能够列出
1. 任务是一个轻量级的、非阻塞的执行单元。类似操作系统的线程,但是是由 tokio 运行时管理,一般叫做“绿色线程”,与 Go 的 goroutine,Kotlin 的 coroutine 类似。
2. 任务是协同调度的。大多数操作系统实现抢占式多任务。操作系统允许每个线程运行一段时间,然后抢占它,暂停该线程并切换到另一个线程。另一方面,任务实现协同多任务。一个任务被允许运行直到它让出执行权,运行时会切换到执行下一个任务。

![tokio console basic](https://psiace.github.io/databend-internals/contribute-to-databend/tracing-in-databend/09-tokio-console-basic.png)
![tokio console basic](https://databend-internals.psiace.me/contribute-to-databend/tracing-in-databend/09-tokio-console-basic.png)

**基础视图**

通过左右切换,可以得到总忙时间或轮询次数等指标对任务进行排序。控制台通过高亮来提示较大差异,比如从毫秒到秒的切换。

![tokio console sort](https://psiace.github.io/databend-internals/contribute-to-databend/tracing-in-databend/10-tokio-console-sort.png)
![tokio console sort](https://databend-internals.psiace.me/contribute-to-databend/tracing-in-databend/10-tokio-console-sort.png)

控制台还实现了一个“警告”系统。通过监视应用程序中任务的运行时操作,控制台可以检测可能提示 bug 或性能问题的行为模式,并突出显示这些行为模式供用户分析。比如已经运行了很长时间而没有让步的任务,唤醒的次数比被其他任务唤醒的次数还要多的任务。

**任务视图**

上下切换选中任务,enter 查看关于每个任务的翔实数据,比如轮询持续时间的直方图。

![tokio console task](https://psiace.github.io/databend-internals/contribute-to-databend/tracing-in-databend/11-tokio-console-task.png)
![tokio console task](https://databend-internals.psiace.me/contribute-to-databend/tracing-in-databend/11-tokio-console-task.png)

不仅列出任务。console 还会插入异步互斥和信号量等资源。Tokio Console 的资源详细信息视图显示了哪些任务已经进入临界区,哪些任务正在等待获得访问权限。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ top = false
giscus = true
+++

> 在「[产品力:Databend 的质量保障](https://psiace.github.io/databend-internals/docs/productivity-topics/quality-assurance-in-databend/)」一文中,已经介绍到组成 Databend 测试的两个重要部分 —— 单元测试和功能测试。如有遗忘,不妨回顾一下。
> 在「[产品力:Databend 的质量保障](https://databend-internals.psiace.me/docs/productivity-topics/quality-assurance-in-databend/)」一文中,已经介绍到组成 Databend 测试的两个重要部分 —— 单元测试和功能测试。如有遗忘,不妨回顾一下。
## 单元测试

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/getting-started/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@ giscus = true

## 协作

「Databend 内幕大揭秘」的内容完全开源,有意向参与协作和贡献的,请参考「[贡献相关](https://psiace.github.io/databend-internals/docs/contributing/)」一节的内容。
「Databend 内幕大揭秘」的内容完全开源,有意向参与协作和贡献的,请参考「[贡献相关](https://databend-internals.psiace.me/docs/contributing/)」一节的内容。
4 changes: 2 additions & 2 deletions docs/content/docs/minibend/datasource.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ giscus = true
>
> 视频(哔哩哔哩):<https://www.bilibili.com/video/BV1A84y1Y7Ff/>
>
> PPT:<https://psiace.github.io/databend-internals/minibend/ppt/minibend-002-datasource.pdf>
> PPT:<https://databend-internals.psiace.me/minibend/ppt/minibend-002-datasource.pdf>
## 类型系统和 Arrow

Expand All @@ -36,7 +36,7 @@ giscus = true

解决了数据类型的问题,那么就该考虑数据存储时候的模型。行式存储和列式存储都属于流行的方案,当然,这往往取决于要面对什么样的查询任务。另外还有混合行式和列式存储的方案,但这并不在今天讨论的范畴之中。

![Column Based](https://psiace.github.io/databend-internals/the-basics/executor-in-query-process/04-column-based-vectorwise.png)
![Column Based](https://databend-internals.psiace.me/the-basics/executor-in-query-process/04-column-based-vectorwise.png)

<p><center><small><i>左图可以看作列式存储的一个样本,同一列的数据在内存中形成一个连续的结构。<br/>而行式存储则如右图所示,同一行的数据在内存中是连续的。</i></small></center></p>

Expand Down
22 changes: 11 additions & 11 deletions docs/content/docs/minibend/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ giscus = true

minibend ,一个从零开始、使用 Rust 构建的查询引擎。这里是 minibend 系列技术主题分享的第一期,来自 [@PsiACE](https://github.com/psiace)

![minibend](https://psiace.github.io/databend-internals/minibend/001-basic-intro/minibend-001-basic-intro_01.png)
![minibend](https://databend-internals.psiace.me/minibend/001-basic-intro/minibend-001-basic-intro_01.png)

> 前排指路视频和 PPT 地址
>
> 视频(哔哩哔哩):<https://www.bilibili.com/video/BV1Ne4y1x7Cn>
>
> PPT:<https://psiace.github.io/databend-internals/minibend/ppt/minibend-001-basic-intro.pdf>
> PPT:<https://databend-internals.psiace.me/minibend/ppt/minibend-001-basic-intro.pdf>
## minibend: what, why, how

Expand Down Expand Up @@ -66,7 +66,7 @@ minibend 同时也是 *Databend Internals*,或者说 *Databend 内幕大揭秘

首先,minibend 会提供视频、文章和代码三种材料。文章和代码将会同步到 *Databend 内幕大揭秘* 的 Repo 中,而视频则会发布到 Databend 的 B 站官方帐号下。欢迎大家持续关注。

> Databend 内幕大揭秘:<https://psiace.github.io/databend-internals/>
> Databend 内幕大揭秘:<https://databend-internals.psiace.me/>
>
> Databend(哔哩哔哩):<https://space.bilibili.com/275673537>
Expand All @@ -84,7 +84,7 @@ minibend 同时也是 *Databend Internals*,或者说 *Databend 内幕大揭秘

但是“存在哪”呢?

![storage Level](https://psiace.github.io/databend-internals/the-basics/storage/01-storage-level.png)
![storage Level](https://databend-internals.psiace.me/the-basics/storage/01-storage-level.png)

过去的一些存储方案更加关注上图所示的存储体系结构,将需要在线处理的数据存放在闪存和硬盘中,用于备份的数据放入光盘和磁带。

Expand All @@ -98,7 +98,7 @@ Databend 早期的实现是包含一套分布式文件系统的,但到现在

引入索引的好处在于加快数据查询的速度,而缺点则在于构建和维护索引同样需要付出代价。

![b tree disk](https://psiace.github.io/databend-internals/minibend/001-basic-intro/01-b-tree-disk.png)
![b tree disk](https://databend-internals.psiace.me/minibend/001-basic-intro/01-b-tree-disk.png)

不同的索引可以针对不同的场景提供优化,B Tree 能够加速范围查询,而等值查询就可以使用 Hash 索引,BitMap(或者说更常用的 Bloom 索引)可以方便判断数据是否存在。

Expand All @@ -108,7 +108,7 @@ Databend 的索引无需人为创建,由部署的实例自行维护。同时

尽管有各种各样的查询引擎,但具体到查询执行的环节大同小异,这里以 Databend 为例,简单讲一下过程。

![Query Steps](https://psiace.github.io/databend-internals/the-basics/executor-in-query-process/01-query-steps.png)
![Query Steps](https://databend-internals.psiace.me/the-basics/executor-in-query-process/01-query-steps.png)

1. 解析 SQL 语法,形成 AST(抽象语法树)。
2. 通过 Binder 对其进行语义分析,并且生成一个初始的 Logical Plan(逻辑计划)。
Expand All @@ -130,7 +130,7 @@ Databend 的索引无需人为创建,由部署的实例自行维护。同时

下面的图片展现的是一种典型的查询优化,对 JOIN 进行重排。

![JOIN Reorder](https://psiace.github.io/databend-internals/minibend/001-basic-intro/02-join-reorder.png)
![JOIN Reorder](https://databend-internals.psiace.me/minibend/001-basic-intro/02-join-reorder.png)

目前有两种主要的查询优化方案,一种是基于关系代数和算法的等价优化方案,一种是基于评估成本的优化方案。根据命名,不难看出优化的灵感来源和这两种方案在优化上的取舍。

Expand All @@ -147,7 +147,7 @@ Databend 引入了基于规则的 [Cascades 优化器](https://15721.courses.cs.

大规模并行处理是大数据计算引擎的一个重要特性,可以提供高吞吐、低时延的计算能力。那么,当我们在讨论大规模并行处理时,究竟在讨论什么?

![mpp](https://psiace.github.io/databend-internals/minibend/001-basic-intro/minibend-001-basic-intro_12.png)
![mpp](https://databend-internals.psiace.me/minibend/001-basic-intro/minibend-001-basic-intro_12.png)

大规模并行处理(MPP,Massively Parallel Processing)意味着可以由多个计算节点(处理器)协同处理程序的不同部分,而每个计算节点都可能具备独立的系统资源(磁盘、内存、操作系统)。

Expand All @@ -157,7 +157,7 @@ Databend 引入了基于规则的 [Cascades 优化器](https://15721.courses.cs.

### 分布式

![分布式](https://psiace.github.io/databend-internals/minibend/001-basic-intro/minibend-001-basic-intro_13.png)
![分布式](https://databend-internals.psiace.me/minibend/001-basic-intro/minibend-001-basic-intro_13.png)

从某种视角上看,分布式系统与 MPP 系统有着惊人的相似。比如:通过网络连接、对外作为整体提供服务、计算节点拥有资源等。但是这两种架构仍然会有一些不同。

Expand All @@ -171,7 +171,7 @@ Databend 引入了基于规则的 [Cascades 优化器](https://15721.courses.cs.

### The Rust Programming Language

![rust](https://psiace.github.io/databend-internals/minibend/001-basic-intro/minibend-001-basic-intro_15.png)
![rust](https://databend-internals.psiace.me/minibend/001-basic-intro/minibend-001-basic-intro_15.png)

Rust 官方宣传语是:Rust 是一门赋予每个人构建可靠且高效软件能力的语言,现在距离它第一个版本发布也已经过去10年。

Expand Down Expand Up @@ -380,7 +380,7 @@ Rust 不完全指南里,从函数、类型、模式匹配、控制流、内存

### 阅读材料

![books](https://psiace.github.io/databend-internals/minibend/001-basic-intro/minibend-001-basic-intro_22.png)
![books](https://databend-internals.psiace.me/minibend/001-basic-intro/minibend-001-basic-intro_22.png)

本期课程推荐两本书给大家:

Expand Down
Loading

0 comments on commit 63eeac4

Please sign in to comment.