Skip to content

Commit

Permalink
[fix] Fix deadlink of gettingStart & releasenotes (#1554)
Browse files Browse the repository at this point in the history
## Versions 

- [x] dev
- [x] 3.0
- [x] 2.1
- [x] 2.0

## Languages

- [x] Chinese
- [ ] English

## Docs Checklist

- [ ] Checked by AI
- [ ] Test Cases Built
  • Loading branch information
KassieZ authored Dec 20, 2024
1 parent 8e35862 commit 0099afc
Show file tree
Hide file tree
Showing 226 changed files with 25,236 additions and 673 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -105,15 +105,6 @@ a:active {
padding-right: 2rem
}

.home-page-hero-right {
flex: 1;
flex-direction: row;
justify-content: center;
width: fit-content
}



.home-page-option-button {
display: flex;
margin-bottom: 0.5rem;
Expand Down Expand Up @@ -209,11 +200,6 @@ a:active {
justify-content: center;
}

.home-page-hero-right {
align-items: center;
display: flex;
flex-direction: row;
}

.home-page-hero-button {
/* background-color: #fafafa; */
Expand Down Expand Up @@ -279,8 +265,18 @@ a:active {
margin-top: 15px
}

.home-page-hero-right a {
color: #4c576c
}


.home-page-hero-right a:hover,
a:active {
/* color: #444fd9; */
text-decoration: none;
transition-duration: .3s;
transition-timing-function: cubic-bezier(0, 0, .2, 1);
background-color: #fafafa
}


.section-border {
Expand Down Expand Up @@ -355,6 +351,24 @@ a:active {

}

@media (max-width: 996px) {
.latest-button {
flex: 1 1 100%;
margin-right: 0 !important;
max-width: calc(100vw - 2rem);
min-height: 170px;
height: auto !important;
}

.home-page-hero-right {
flex-wrap: wrap !important
}
.latest-button-CN{
margin-right: 0 !important;
max-width: calc(100vw - 2rem);
}
}

.latest-button-CN {
/* background-color: #fafafa; */
border: 0.3px solid #dcdcdc;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ export default function Latest() {
<path fill="none" d="M0 0h24v24H0Z"></path>
</svg>
</div> */}
<div style={{ marginBottom: 10 }}>Doris Summit Asia 2024|12 月 14 日 深圳</div>
<div style={{ marginBottom: 10 }}>Doris Summit Asia 2024 圆满落幕</div>
</div>
<div style={{ fontSize: 12, marginBottom: 20 }}>一年一度的 Apache Doris 峰会再次启航,Doris Summit Asia 2024 现已开启报名,将于 12 月 14 日在深圳正式举办</div>
<div style={{ fontSize: 14, marginBottom: 10 }}>立即报名</div>
<div style={{ fontSize: 12, marginBottom: 20 }}>2024 年 12 月 14 日,由飞轮科技主办,腾讯云和阿里云联合主办的 Doris Summit Asia 2024 在深圳圆满落幕。演讲回放及资料会在 10 个工作日内逐步释出,可通过 Doris Summit 官网获取</div>
<div style={{ fontSize: 14, marginBottom: 10 }}>回放生成中</div>
</a>
<a className="latest-button" href={`/zh-CN/docs${currentVersion === '' ? '' : `/${currentVersion}`}/releasenotes/v3.0/release-3.0.2`}>
<a className="latest-button" href={`/zh-CN/docs${currentVersion === '' ? '' : `/${currentVersion}`}/releasenotes/v3.0/release-3.0.3`}>
<div className="home-page-hero-button-label"><div>版本发布</div></div>
<div className="latest-button-title">
{/* <div className="home-page-hero-button-icon">
Expand All @@ -47,9 +47,9 @@ export default function Latest() {
<path fill="none" d="M0 0h24v24H0Z"></path>
</svg>
</div> */}
<div style={{ marginBottom: 10 }}>Apache Doris 3.0.2 正式发布</div>
<div style={{ marginBottom: 10 }}>Apache Doris 3.0.3 正式发布</div>
</div>
<div style={{ fontSize: 12, marginBottom: 20 }}>3.0.2 版本在存算分离、存储、湖仓一体、查询优化器以及执行引擎持续升级改进,欢迎大家下载使用。</div>
<div style={{ fontSize: 12, marginBottom: 20 }}>3.0.3 版本在存算分离、存储、湖仓一体、查询优化器以及执行引擎持续升级改进,欢迎大家下载使用。</div>
<div style={{ fontSize: 14, marginBottom: 10 }}>查看详情</div>
</a>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ export default function PageHero() {
</div>
<div style={{ fontSize: 12, marginBottom: 20 }}>如何基于 Apache Doris 构建开放、高性能低成本、统一的日志存储分析平台。</div>
</a>
<a className="latest-button-CN" href={`/zh-CN/docs${currentVersion === '' ? '' : `/${currentVersion}`}/admin-manual/resource-admin/workload-group`}>
<a className="latest-button-CN" href={`/zh-CN/docs${currentVersion === '' ? '' : `/${currentVersion}`}/admin-manual/workload-management/workload-group`}>
<div className="latest-button-title">
<div className="home-page-hero-button-label"><div>资源管理</div></div>
<div className="home-page-hero-button-label"><div>负载管理</div></div>
{/* <div className="home-page-hero-button-icon">
<svg width="24px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path className="icon-svg" d="M18.19 11.13l-6.02 8.68c-.13.17-.4.08-.4-.13v-5.73c0-.43-.35-.77-.77-.77H5.97c-.18 0-.28-.2-.18-.35l6.01-8.69c.12-.18.39-.09.39.12V9.98c0 .42.34.76.76.76h5.02c.17 0 .27.19.17.34Zm1.26.87c.8-1.17-.03-2.76-1.45-2.76h-5.03l.76.76V4.277c0-1.73-2.22-2.42-3.2-1.01l-6.02 8.68c-.81 1.16.02 2.75 1.44 2.75h5.02l-.77-.77v5.72c0 1.72 2.21 2.41 3.19 1l6.01-8.69Z"></path>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -304,167 +304,3 @@ mysql> SELECT * FROM iceberg.nyc.taxis FOR TIME AS OF "2024-07-29 03:40:22";
+-----------+---------+---------------+-------------+--------------------+----------------------------+
4 rows in set (0.05 sec)
```

### 07 与 PyIceberg 交互

加载 Iceberg 表:

```python
from pyiceberg.catalog import load_catalog

catalog = load_catalog(
"iceberg",
**{
"warehouse" = "warehouse",
"uri" = "http://rest:8181",
"s3.access-key-id" = "admin",
"s3.secret-access-key" = "password",
"s3.endpoint" = "http://minio:9000"
},
)
table = catalog.load_table("nyc.taxis")
```

读取为 Arrow Table:

```python
print(table.scan().to_arrow())

pyarrow.Table
vendor_id: int64
trip_id: int64
trip_distance: float
fare_amount: double
store_and_fwd_flag: large_string
ts: timestamp[us]
----
vendor_id: [[1],[1],[2],[2]]
trip_id: [[1000371],[1000374],[1000373],[1000372]]
trip_distance: [[1.8],[8.4],[0.9],[2.5]]
fare_amount: [[15.32],[42.13],[9.01],[22.15]]
store_and_fwd_flag: [["N"],["Y"],["N"],["N"]]
ts: [[2024-01-01 09:15:23.000000],[2024-01-03 07:12:33.000000],[2024-01-01 03:25:15.000000],[2024-01-02 12:10:11.000000]]
```

读取为 Pandas DataFrame:

```python
print(table.scan().to_pandas())

vendor_id trip_id trip_distance fare_amount store_and_fwd_flag ts
0 1 1000371 1.8 15.32 N 2024-01-01 09:15:23
1 1 1000374 8.4 42.13 Y 2024-01-03 07:12:33
2 2 1000373 0.9 9.01 N 2024-01-01 03:25:15
3 2 1000372 2.5 22.15 N 2024-01-02 12:10:11
```

读取为 Polars DataFrame:

```python
import polars as pl

print(pl.scan_iceberg(table).collect())

shape: (4, 6)
┌───────────┬─────────┬───────────────┬─────────────┬────────────────────┬─────────────────────┐
│ vendor_id ┆ trip_id ┆ trip_distance ┆ fare_amount ┆ store_and_fwd_flag ┆ ts │
------------------
│ i64 ┆ i64 ┆ f32 ┆ f64 ┆ str ┆ datetime[μs] │
╞═══════════╪═════════╪═══════════════╪═════════════╪════════════════════╪═════════════════════╡
110003711.815.32 ┆ N ┆ 2024-01-01 09:15:23
110003748.442.13 ┆ Y ┆ 2024-01-03 07:12:33
210003730.99.01 ┆ N ┆ 2024-01-01 03:25:15
210003722.522.15 ┆ N ┆ 2024-01-02 12:10:11
└───────────┴─────────┴───────────────┴─────────────┴────────────────────┴─────────────────────┘
```

> 通过 pyiceberg 写入 iceberg 数据,请参阅[步骤](#通过-pyiceberg-写入数据)
### 08 附录

#### 通过 PyIceberg 写入数据

加载 Iceberg 表:

```python
from pyiceberg.catalog import load_catalog

catalog = load_catalog(
"iceberg",
**{
"warehouse" = "warehouse",
"uri" = "http://rest:8181",
"s3.access-key-id" = "admin",
"s3.secret-access-key" = "password",
"s3.endpoint" = "http://minio:9000"
},
)
table = catalog.load_table("nyc.taxis")
```

Arrow Table 写入 Iceberg:

```python
import pyarrow as pa

df = pa.Table.from_pydict(
{
"vendor_id": pa.array([1, 2, 2, 1], pa.int64()),
"trip_id": pa.array([1000371, 1000372, 1000373, 1000374], pa.int64()),
"trip_distance": pa.array([1.8, 2.5, 0.9, 8.4], pa.float32()),
"fare_amount": pa.array([15.32, 22.15, 9.01, 42.13], pa.float64()),
"store_and_fwd_flag": pa.array(["N", "N", "N", "Y"], pa.string()),
"ts": pa.compute.strptime(
["2024-01-01 9:15:23", "2024-01-02 12:10:11", "2024-01-01 3:25:15", "2024-01-03 7:12:33"],
"%Y-%m-%d %H:%M:%S",
"us",
),
}
)
table.append(df)
```

Pandas DataFrame 写入 Iceberg:

```python
import pyarrow as pa
import pandas as pd

df = pd.DataFrame(
{
"vendor_id": pd.Series([1, 2, 2, 1]).astype("int64[pyarrow]"),
"trip_id": pd.Series([1000371, 1000372, 1000373, 1000374]).astype("int64[pyarrow]"),
"trip_distance": pd.Series([1.8, 2.5, 0.9, 8.4]).astype("float32[pyarrow]"),
"fare_amount": pd.Series([15.32, 22.15, 9.01, 42.13]).astype("float64[pyarrow]"),
"store_and_fwd_flag": pd.Series(["N", "N", "N", "Y"]).astype("string[pyarrow]"),
"ts": pd.Series(["2024-01-01 9:15:23", "2024-01-02 12:10:11", "2024-01-01 3:25:15", "2024-01-03 7:12:33"]).astype("timestamp[us][pyarrow]"),
}
)
table.append(pa.Table.from_pandas(df))
```

Polars DataFrame 写入 Iceberg:

```python
import polars as pl

df = pl.DataFrame(
{
"vendor_id": [1, 2, 2, 1],
"trip_id": [1000371, 1000372, 1000373, 1000374],
"trip_distance": [1.8, 2.5, 0.9, 8.4],
"fare_amount": [15.32, 22.15, 9.01, 42.13],
"store_and_fwd_flag": ["N", "N", "N", "Y"],
"ts": ["2024-01-01 9:15:23", "2024-01-02 12:10:11", "2024-01-01 3:25:15", "2024-01-03 7:12:33"],
},
{
"vendor_id": pl.Int64,
"trip_id": pl.Int64,
"trip_distance": pl.Float32,
"fare_amount": pl.Float64,
"store_and_fwd_flag": pl.String,
"ts": pl.String,
},
).with_columns(pl.col("ts").str.strptime(pl.Datetime, "%Y-%m-%d %H:%M:%S"))
table.append(df.to_arrow())
```
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,6 @@ Apache Doris 也支持**强一致的物化视图**,物化视图的更新和选

![Doris 查询引擎是向量化](/images/apache-doris-query-engine-2.png)

**Apache Doris 采用了自适应查询执行(Adaptive Query Execution)技术,** 可以根据 Runtime Statistics 来动态调整执行计划,比如通过 Runtime Filter 技术能够在运行时生成 Filter 推到 Probe 侧,并且能够将 Filter 自动穿透到 Probe 侧最底层的 Scan 节点,从而大幅减少 Probe 的数据量,加速 Join 性能。Apache Doris 的 Runtime Filter 支持 In/Min/Max/Bloom Filter。
**Apache Doris 采用了自适应查询执行(Adaptive Query Execution)技术,**可以根据 Runtime Statistics 来动态调整执行计划,比如通过 Runtime Filter 技术能够在运行时生成 Filter 推到 Probe 侧,并且能够将 Filter 自动穿透到 Probe 侧最底层的 Scan 节点,从而大幅减少 Probe 的数据量,加速 Join 性能。Apache Doris 的 Runtime Filter 支持 In/Min/Max/Bloom Filter。

**优化器**方面,Apache Doris 使用 CBO 和 RBO 结合的优化策略,RBO 支持常量折叠、子查询改写、谓词下推等,CBO 支持 Join Reorder。目前 CBO 还在持续优化中,主要集中在更加精准的统计信息收集和推导,更加精准的代价模型预估等方面。
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
{
"title": "常见问题",
"title": "异步物化视图常见问题",
"language": "zh-CN"
}
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
{
"title": "功能描述",
"title": "异步物化视图功能描述",
"language": "zh-CN"
}
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
{
"title": "原理介绍",
"title": "异步物化视图原理介绍",
"language": "zh-CN"
}
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
{
"title": "使用与实践",
"title": "异步物化视图使用与实践",
"language": "zh-CN"
}
---
Expand All @@ -26,9 +26,9 @@ under the License.

## 异步物化视图使用原则

1. **时效性考虑:**异步物化视图通常用于对数据时效性要求不高的场景,一般是 T+1 的数据。如果时效性要求高,应考虑使用同步物化视图。
1. **时效性考虑:** 异步物化视图通常用于对数据时效性要求不高的场景,一般是 T+1 的数据。如果时效性要求高,应考虑使用同步物化视图。

2. **加速效果与一致性考虑:**在查询加速场景,创建物化视图时,DBA 应将常见查询 SQL 模式分组,尽量使组之间无重合。SQL 模式组划分越清晰,物化视图构建的质量越高。一个查询可能使用多个物化视图,同时一个物化视图也可能被多个查询使用。构建物化视图需要综合考虑命中物化视图的响应时间(加速效果)、构建成本、数据一致性要求等。
2. **加速效果与一致性考虑:** 在查询加速场景,创建物化视图时,DBA 应将常见查询 SQL 模式分组,尽量使组之间无重合。SQL 模式组划分越清晰,物化视图构建的质量越高。一个查询可能使用多个物化视图,同时一个物化视图也可能被多个查询使用。构建物化视图需要综合考虑命中物化视图的响应时间(加速效果)、构建成本、数据一致性要求等。

3. **物化视图定义与构建成本考虑:**

Expand All @@ -38,11 +38,11 @@ under the License.

需要注意:

1. **物化视图数量控制:**物化视图并非越多越好。物化视图参与透明改写,且 CBO 代价模型选择需要时间。理论上,物化视图越多,透明改写的时间越长,且物化视图构建和刷新占用的资源越大。
1. **物化视图数量控制:** 物化视图并非越多越好。物化视图参与透明改写,且 CBO 代价模型选择需要时间。理论上,物化视图越多,透明改写的时间越长,且物化视图构建和刷新占用的资源越大。

2. **定期检查物化视图使用状态:**如果未使用,应及时删除。
2. **定期检查物化视图使用状态:** 如果未使用,应及时删除。

3. **基表数据更新频率:**如果物化视图的基表数据频繁更新,可能不太适合使用物化视图,因为这会导致物化视图频繁失效,不能用于透明改写(可直查)。如果需要使用此类物化视图进行透明改写,需要允许查询的数据有一定的时效延迟,并可以设定`grace_period`。具体见`grace_period`的适用介绍。
3. **基表数据更新频率:** 如果物化视图的基表数据频繁更新,可能不太适合使用物化视图,因为这会导致物化视图频繁失效,不能用于透明改写(可直查)。如果需要使用此类物化视图进行透明改写,需要允许查询的数据有一定的时效延迟,并可以设定`grace_period`。具体见`grace_period`的适用介绍。

## 物化视图刷新方式选择原则

Expand Down Expand Up @@ -184,9 +184,9 @@ GROUP BY

通常物化视图会出现两种状态:

- **状态正常:**指的是当前物化视图是否可用于透明改写。
- **状态正常:** 指的是当前物化视图是否可用于透明改写。

- **不可用、状态不正常:**指的是物化视图不能用于透明改写的简称。尽管如此,该物化视图还是可以直查的。
- **不可用、状态不正常:** 的是物化视图不能用于透明改写的简称。尽管如此,该物化视图还是可以直查的。

### 查看物化视图元数据

Expand Down Expand Up @@ -222,9 +222,9 @@ SyncWithBaseTables: 1

- 对于分区增量的物化视图,分区物化视图是否可用,是以分区粒度去看的。也就是说,即使物化视图的部分分区不可用,但只要查询的是有效分区,那么此物化视图依旧可用于透明改写。是否能透明改写,主要看查询所用分区的 `SyncWithBaseTables` 字段是否一致。如果 `SyncWithBaseTables` 是 1,此分区可用于透明改写;如果是 0,则不能用于透明改写。

- **JobName:**物化视图构建 Job 的名称,每个物化视图有一个 Job,每次刷新会有一个新的 Task,Job 和 Task 是 1:n 的关系
- **JobName:** 物化视图构建 Job 的名称,每个物化视图有一个 Job,每次刷新会有一个新的 Task,Job 和 Task 是 1:n 的关系

- **State:**如果变为 SCHEMA_CHANGE,代表基表的 Schema 发生了变化,此时物化视图将不能用来透明改写 (但是不影响直接查询物化视图),下次刷新任务如果执行成功,将恢复为 NORMAL。
- **State:** 如果变为 SCHEMA_CHANGE,代表基表的 Schema 发生了变化,此时物化视图将不能用来透明改写 (但是不影响直接查询物化视图),下次刷新任务如果执行成功,将恢复为 NORMAL。

- **SchemaChangeDetail:** 表示 SCHEMA_CHANGE 发生的原因。

Expand Down
Loading

0 comments on commit 0099afc

Please sign in to comment.