diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0.json b/i18n/zh/docusaurus-plugin-content-docs/version-1.0.json
new file mode 100644
index 0000000000..6c7e8fe775
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0.json
@@ -0,0 +1,230 @@
+{
+ "sidebar.docs.doc.Overview": {
+ "message": "概述",
+ "description": "The ZH label for Overview"
+ },
+ "sidebar.docs.category.Getting Started": {
+ "message": "立即开始",
+ "description": "The label for category Getting Started in sidebar docs"
+ },
+ "sidebar.docs.category.Installation": {
+ "message": "安装",
+ "description": "The label for category Installation in sidebar docs"
+ },
+ "sidebar.docs.category.User Guide": {
+ "message": "用户指南",
+ "description": "The label for category User Guide in sidebar docs"
+ },
+ "sidebar.docs.category.Concepts": {
+ "message": "基础概念",
+ "description": "The label for category Concepts in sidebar docs"
+ },
+ "sidebar.docs.category.Migrate to GreptimeDB": {
+ "message": "迁移到 GreptimeDB",
+ "description": "The label for category Migrate to GreptimeDB in sidebar docs"
+ },
+ "sidebar.docs.category.Write Data": {
+ "message": "写入数据",
+ "description": "The label for category Write Data in sidebar docs"
+ },
+ "sidebar.docs.category.Query Data": {
+ "message": "查询数据",
+ "description": "The label for category Query Data in sidebar docs"
+ },
+ "sidebar.docs.category.Flow Computation": {
+ "message": "流计算",
+ "description": "The label for category Flow Computation in sidebar docs"
+ },
+ "sidebar.docs.category.Logs": {
+ "message": "日志",
+ "description": "The label for category Logs in sidebar docs"
+ },
+ "sidebar.docs.category.Client Libraries": {
+ "message": "客户端库",
+ "description": "The label for category Client Libraries in sidebar docs"
+ },
+ "sidebar.docs.category.Administration": {
+ "message": "运维管理",
+ "description": "The label for category Operations in sidebar docs"
+ },
+ "sidebar.docs.category.Authentication": {
+ "message": "鉴权",
+ "description": "The label for category Authentication in sidebar docs"
+ },
+ "sidebar.docs.category.Deployments & Administration": {
+ "message": "运维部署及管理",
+ "description": "The label for category Deployments & Administration in sidebar docs"
+ },
+ "sidebar.docs.category.Write-Ahead Logging (WAL)": {
+ "message": "预写日志(WAL)",
+ "description": "The label for category Write-Ahead Logging (WAL) in sidebar docs"
+ },
+ "sidebar.docs.category.Performance Tuning": {
+ "message": "性能调优",
+ "description": "The label for category Performance Tuning in sidebar docs"
+ },
+ "sidebar.docs.category.Deployments": {
+ "message": "部署",
+ "description": "The label for category Deployments in sidebar docs"
+ },
+ "sidebar.docs.category.Deploy on Kubernetes": {
+ "message": "部署到 Kubernetes",
+ "description": "The label for category Deploy on Kubernetes in sidebar docs"
+ },
+ "sidebar.docs.category.Manage GreptimeDB Operator": {
+ "message": "管理 GreptimeDB Operator",
+ "description": "The label for category Deploy on Kubernetes in sidebar docs"
+ },
+ "sidebar.docs.category.Disaster Recovery": {
+ "message": "灾难恢复",
+ "description": "The label for category Disaster Recovery in sidebar docs"
+ },
+ "sidebar.docs.category.Elasticsearch Compatibility": {
+ "message": "Elasticsearch 兼容性",
+ "description": "The label for category Elasticsearch Compatibility in sidebar docs"
+ },
+ "sidebar.docs.category.Remote WAL": {
+ "message": "Remote WAL",
+ "description": "The label for category Remote WAL in sidebar docs"
+ },
+ "sidebar.docs.category.GreptimeCloud": {
+ "message": "GreptimeCloud",
+ "description": "The label for category GreptimeCloud in sidebar docs"
+ },
+ "sidebar.docs.category.Integrations": {
+ "message": "集成",
+ "description": "The label for category Integrations in sidebar docs"
+ },
+ "sidebar.docs.category.Prometheus": {
+ "message": "Prometheus",
+ "description": "The label for category Prometheus in sidebar docs"
+ },
+ "sidebar.docs.category.SDK Libraries": {
+ "message": "SDK Libraries",
+ "description": "The label for category SDK Libraries in sidebar docs"
+ },
+ "sidebar.docs.category.Migrate to GreptimeCloud": {
+ "message": "迁移到 GreptimeCloud",
+ "description": "The label for category Migrate to GreptimeCloud in sidebar docs"
+ },
+ "sidebar.docs.category.Usage & Billing": {
+ "message": "用量及费用",
+ "description": "The label for category Usage & Billing in sidebar docs"
+ },
+ "sidebar.docs.category.Tutorials": {
+ "message": "教程",
+ "description": "The label for category Tutorials in sidebar docs"
+ },
+ "sidebar.docs.category.GreptimeDB Enterprise": {
+ "message": "GreptimeDB 企业版",
+ "description": "The label for category GreptimeDB Enterprise in sidebar docs"
+ },
+ "sidebar.docs.category.Reference": {
+ "message": "参考手册",
+ "description": "The label for category Reference in sidebar docs"
+ },
+ "sidebar.docs.category.GreptimeDB Command Line Interface": {
+ "message": "GreptimeDB 命令行工具",
+ "description": "The label for category GreptimeDB Command Line Interface in sidebar docs"
+ },
+ "sidebar.docs.category.Utilities": {
+ "message": "实用工具",
+ "description": "The label for category Utilities in sidebar docs"
+ },
+ "sidebar.docs.category.SQL": {
+ "message": "SQL",
+ "description": "The label for category SQL in sidebar docs"
+ },
+ "sidebar.docs.category.Functions": {
+ "message": "Functions",
+ "description": "The label for category Functions in sidebar docs"
+ },
+ "sidebar.docs.category.Information Schema": {
+ "message": "Information Schema",
+ "description": "The label for category Information Schema in sidebar docs"
+ },
+ "sidebar.docs.category.Contributor Guide": {
+ "message": "贡献者指南",
+ "description": "The label for category Contributor Guide in sidebar docs"
+ },
+ "sidebar.docs.category.Frontend": {
+ "message": "Frontend",
+ "description": "The label for category Frontend in sidebar docs"
+ },
+ "sidebar.docs.category.Datanode": {
+ "message": "Datanode",
+ "description": "The label for category Datanode in sidebar docs"
+ },
+ "sidebar.docs.category.Metasrv": {
+ "message": "Metasrv",
+ "description": "The label for category Metasrv in sidebar docs"
+ },
+ "sidebar.docs.category.Flownode": {
+ "message": "Flownode",
+ "description": "The label for category Flownode in sidebar docs"
+ },
+ "sidebar.docs.category.Tests": {
+ "message": "测试",
+ "description": "The label for category Tests in sidebar docs"
+ },
+ "sidebar.docs.category.How To": {
+ "message": "指南",
+ "description": "The label for category How To in sidebar docs"
+ },
+ "sidebar.docs.category.FAQ and Others": {
+ "message": "常见问题及其他",
+ "description": "The label for category FAQ and Others in sidebar docs"
+ },
+ "sidebar.docs.category.Release Notes": {
+ "message": "发版说明",
+ "description": "The label for link Release Notes in sidebar docs, linking to /release-notes"
+ },
+ "sidebar.docs.link.Releases": {
+ "message": "版本列表",
+ "description": "The label for link Release Notes in sidebar docs, linking to /release-notes"
+ },
+ "sidebar.docs.category.Ingest Data": {
+ "message": "写入数据",
+ "description": "The label for category Ingest Data in sidebar docs"
+ },
+ "sidebar.docs.category.For observability": {
+ "message": "可观测场景",
+ "description": "The label for category For observability in sidebar docs"
+ },
+ "sidebar.docs.category.For IoT": {
+ "message": "物联网(IoT)场景",
+ "description": "The label for category For IoT in sidebar docs"
+ },
+ "sidebar.docs.category.gRPC SDKs": {
+ "message": "gRPC SDKs",
+ "description": "The label for category gRPC SDKs in sidebar docs"
+ },
+ "sidebar.docs.category.Manage Data": {
+ "message": "管理数据",
+ "description": "The label for category Manage Data in sidebar docs"
+ },
+ "sidebar.docs.category.Manage Metadata": {
+ "message": "管理元数据",
+ "description": "The label for category Manage Metadata in sidebar docs"
+ },
+ "sidebar.docs.category.Protocols": {
+ "message": "协议",
+ "description": "The label for category Manage Data in sidebar docs"
+ },
+ "sidebar.docs.category.Monitoring": {
+ "message": "监控",
+ "description": "The label for category Monitoring in sidebar docs"
+ },
+ "sidebar.docs.category.Maintenance": {
+ "message": "维护",
+ "description": "The label for category Maintenance in sidebar docs"
+ },
+ "sidebar.docs.category.Vector Storage": {
+ "message": "向量存储",
+ "description": "The label for category Vector Storage in sidebar docs"
+ },
+ "sidebar.docs.category.Read Replicas": {
+ "message": "读副本",
+ "description": "The label for category Read Replicas in sidebar docs"
+ }
+}
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/data-persistence-indexing.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/data-persistence-indexing.md
new file mode 100644
index 0000000000..65f3b04ec2
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/data-persistence-indexing.md
@@ -0,0 +1,87 @@
+---
+keywords: [数据持久化, 索引机制, SST 文件, 倒排索引]
+description: 介绍了 GreptimeDB 的数据持久化和索引机制,包括 SST 文件格式、数据持久化过程和倒排索引的实现。
+---
+
+# 数据持久化与索引
+
+与所有类似 LSMT 的存储引擎一样,MemTables 中的数据被持久化到耐久性存储,例如本地磁盘文件系统或对象存储服务。GreptimeDB 采用 [Apache Parquet][1] 作为其持久文件格式。
+
+## SST 文件格式
+
+Parquet 是一种提供快速数据查询的开源列式存储格式,已经被许多项目采用,例如 Delta Lake。
+
+Parquet 具有层次结构,类似于“行组 - 列-数据页”。Parquet 文件中的数据被水平分区为行组(row group),在其中相同列的所有值一起存储以形成数据页(data pages)。数据页是最小的存储单元。这种结构极大地提高了性能。
+
+首先,数据按列聚集,这使得文件扫描更加高效,特别是当查询只涉及少数列时,这在分析系统中非常常见。
+
+其次,相同列的数据往往是同质的(比如具备近似的值),这有助于在采用字典和 Run-Length Encoding(RLE)等技术进行压缩。
+
+
+
+## 数据持久化
+
+GreptimeDB 提供了 `storage.flush.global_write_buffer_size` 的配置项来设置全局的 Memtable 大小阈值。当数据库所有 MemTable 中的数据量之和达到阈值时将自动触发持久化操作,将 MemTable 的数据 flush 到 SST 文件中。
+
+
+## SST 文件中的索引数据
+
+Apache Parquet 文件格式在列块和数据页的头部提供了内置的统计信息,用于剪枝和跳过。
+
+
+
+例如,在上述 Parquet 文件中,如果你想要过滤 `name` 等于 `Emily` 的行,你可以轻松跳过行组 0,因为 `name` 字段的最大值是 `Charlie`。这些统计信息减少了 IO 操作。
+
+
+## 索引文件
+
+对于每个 SST 文件,GreptimeDB 不但维护 SST 文件内部索引,还会单独生成一个文件用于存储针对该 SST 文件的索引结构。
+
+索引文件采用 [Puffin][3] 格式,这种格式具有较大的灵活性,能够存储更多的元数据,并支持更多的索引结构。
+
+
+
+目前,倒排索引是 GreptimeDB 第一个支持的单独索引结构,以 Blob 的形式存储在索引文件中。
+
+
+## 倒排索引
+
+在 v0.7 版本中,GreptimeDB 引入了倒排索引(Inverted Index)来加速查询。
+
+倒排索引是一种常见的用于全文搜索的索引结构,它将文档中的每个单词映射到包含该单词的文档列表,GreptimeDB 把这项源自于搜索引擎的技术应用到了时间序列数据库中。
+
+搜索引擎和时间序列数据库虽然运行在不同的领域,但是应用的倒排索引技术背后的原理是相似的。这种相似性需要一些概念上的调整:
+1. 单词:在 GreptimeDB 中,指时间线的列值。
+2. 文档:在 GreptimeDB 中,指包含多个时间线的数据段。
+
+倒排索引的引入,使得 GreptimeDB 可以跳过不符合查询条件的数据段,从而提高扫描效率。
+
+
+
+例如,上述查询使用倒排索引来定位数据段,数据段满足条件:`job` 等于 `apiserver`,`handler` 符合正则匹配 `.*users` 及 `status` 符合正则匹配 `4..`,然后扫描这些数据段以产生满足所有条件的最终结果,从而显着减少 IO 操作的次数。
+
+### 倒排索引格式
+
+
+
+GreptimeDB 按列构建倒排索引,每个倒排索引包含一个 FST 和多个 Bitmap。
+
+FST(Finite State Transducer)允许 GreptimeDB 以紧凑的格式存储列值到 Bitmap 位置的映射,并且提供了优秀的搜索性能和支持复杂搜索(例如正则表达式匹配);Bitmap 则维护了数据段 ID 列表,每个位表示一个数据段。
+
+
+### 索引数据段
+
+GreptimeDB 把一个 SST 文件分割成多个索引数据段,每个数据段包含相同行数的数据。这种分段的目的是通过只扫描符合查询条件的数据段来优化查询性能。
+
+例如,当数据段的行数为 1024,如果查询条件应用倒排索引后,得到的数据段列表为 `[0, 2]`,那么只需扫描 SST 文件中的第 0 和第 2 个数据段(即第 0 行到第 1023 行和第 2048 行到第 3071 行)即可。
+
+数据段的行数由引擎选项 `index.inverted_index.segment_row_count` 控制,默认为 `1024`。较小的值意味着更精确的索引,往往会得到更好的查询性能,但会增加索引存储成本。通过调整该选项,可以在存储成本和查询性能之间进行权衡。
+
+
+## 统一数据访问层:OpenDAL
+
+GreptimeDB 使用 [OpenDAL][2] 提供统一的数据访问层,因此,存储引擎无需与不同的存储 API 交互,数据可以无缝迁移到基于云的存储,如 AWS S3。
+
+[1]: https://parquet.apache.org
+[2]: https://github.com/datafuselabs/opendal
+[3]: https://iceberg.apache.org/puffin-spec
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/metric-engine.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/metric-engine.md
new file mode 100644
index 0000000000..5fa0f6bb77
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/metric-engine.md
@@ -0,0 +1,42 @@
+---
+keywords: [Metric 引擎, 逻辑表, 物理表, DDL 操作]
+description: 介绍了 Metric 引擎的概念、架构及设计,重点描述了逻辑表与物理表的区别和批量 DDL 操作的实现。
+---
+
+# Metric 引擎
+
+## 概述
+
+`Metric` 引擎是 GreptimeDB 的一个组件,属于存储引擎的一种实现,主要针对可观测 metrics 等存在大量小表的场景。
+
+它的主要特点是利用合成的物理宽表来存储大量的小表数据,实现相同列复用和元数据复用等效果,从而达到减少小表的存储开销以及提高列式压缩效率等目标。表这一概念在 `Metric` 引擎下变得更更加轻量。
+
+## 概念
+
+`Metric` 引擎引入了两个新的概念,分别是逻辑表与物理表。从用户视角看,逻辑表与普通表完全一样。从存储视角看,物理 Region 就是一个普通的 Region。
+
+### 逻辑表
+逻辑表,即用户定义的表。与普通的表都完全一样,逻辑表的定义包括表的名称、列的定义、索引的定义等。用户的查询、写入等操作都是基于逻辑表进行的。用户在使用过程中不需要关心逻辑表和普通表的区别。
+
+从实现层面来说,逻辑表是一个虚拟的表,它并不直接读写物理的数据,而是通过将读写请求映射成对应物理表的请求来实现数据的存储与查询。
+
+### 物理表
+物理表是真实存储数据的表,它拥有若干个由分区规则定义的物理 Region。
+
+## 架构及设计
+
+`Metric` 引擎的主要设计架构如下:
+
+
+
+在目前版本的实现中,`Metric` 引擎复用了 `Mito` 引擎来实现物理数据的存储及查询能力,并在此之上同时提供物理表与逻辑表的访问能力。
+
+在分区方面,逻辑表拥有与物理表完全一致的分区规则及 Region 分布。这是非常自然的,因为逻辑表的数据直接存储在物理表中,所以分区规则也是一致的。
+
+在路由元数据方面,逻辑表的路由地址为逻辑地址,即该逻辑表所对应的物理表是什么,而后通过该物理表进行二次路由取得真正的物理地址。这一间接路由方式能够显著减少 `Metric` 引擎的 Region 发生迁移调度时所需要修改的元数据数量。
+
+在操作方面,`Metric` 引擎仅对物理表的操作进行了有限的支持以防止误操作,例如通过禁止写入物理表、删除物理表等操作防止影响用户逻辑表的数据。总体上可以认为物理表是对用户只读的。
+
+为了提升对大量表同时进行 DDL(Data Definition Language,数据操作语言)操作时性能,如 Prometheus Remote Write 冷启动时大量 metrics 带来的自动建表请求,以及前面提到的迁移物理 Region 时大量路由表的修改请求等,`Metric` 引擎引入了一些批量 DDL 操作。这些批量 DDL 操作能够将大量的 DDL 操作合并成一个请求,从而减少了元数据的查询及修改次数,提升了性能。
+
+除了物理表的物理数据 Region 之外,`Metric` 引擎还额外为每一个物理数据 Region 创建了一个物理的元数据 Region,用于存储 `Metric` 引擎自身为了维护映射等状态所需要的一些元数据。这些元数据包括逻辑表与物理表的映射关系,逻辑列与物理列的映射关系等等。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/overview.md
new file mode 100644
index 0000000000..0a1b674d7c
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/overview.md
@@ -0,0 +1,28 @@
+---
+keywords: [Datanode, gRPC 服务, HTTP 服务, Heartbeat Task, Region Manager]
+description: 介绍了 Datanode 的主要职责和组件,包括 gRPC 服务、HTTP 服务、Heartbeat Task 和 Region Manager。
+---
+
+# Datanode
+
+## Introduction
+
+`Datanode` 主要的职责是为 GreptimeDB 存储数据,我们知道在 GreptimeDB 中一个 `table` 可以有一个或者多个 `Region`,
+而 `Datanode` 的职责便是管理这些 `Region` 的读写。`Datanode` 不感知 `table`,可以认为它是一个 `region server`。
+所以 `Frontend` 和 `Metasrv` 按照 `Region` 粒度来操作 `Datanode`。
+
+
+
+## Components
+
+一个 datanode 包含了 region server 所需的全部组件。这里列出了比较重要的部分:
+
+- 一个 gRPC 服务来提供对 `Region` 数据的读写,`Frontend` 便是使用这个服务来从 `Datanode` 读写数据。
+- 一个 HTTP 服务,可以通过它来获得当前节点的 metrics、配置信息等
+- `Heartbeat Task` 用来向 `Metasrv` 发送心跳,心跳在 GreptimeDB 的分布式架构中发挥着至关重要的作用,
+ 是分布式协调和调度的基础通信通道,心跳的上行消息中包含了重要信息比如 `Region` 的负载,如果 `Metasrv` 做出了调度
+ 决定(比如 Region 转移),它会通过心跳的下行消息发送指令到 `Datanode`
+- `Datanode` 不包含物理规划器(Physical planner)、优化器(optimizer)等组件(这些被放置在 `Frontend` 中),用户对
+ 一个或多个 `Table` 的查询请求会在 `Frontend` 中被转换为 `Region` 的查询请求,`Datanode` 负责处理这些 `Region` 查询请求
+- 一个 `Region Manager` 用来管理 `Datanode` 上的所有 `Region`s
+- GreptimeDB 支持可插拔的多引擎架构,目前已有的 engine 包括 `File Engine` 和 `Mito Engine`
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/python-scripts.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/python-scripts.md
new file mode 100644
index 0000000000..831278e80d
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/python-scripts.md
@@ -0,0 +1,30 @@
+---
+keywords: [Python 脚本, 数据分析, CPython, RustPython]
+description: 介绍了在 GreptimeDB 中使用 Python 脚本进行数据分析的两种后端实现:CPython 和嵌入式 RustPython 解释器。
+---
+
+# Python 脚本
+
+## 简介
+
+Python 脚本是分析本地数据库中的数据的便捷方式,
+通过将脚本直接在数据库内运行而不是从数据库拉取数据的方式,可以节省大量的数据传输时间。
+下图描述了 Python 脚本的工作原理。
+`RecordBatch`(基本上是表中的一列,带有类型和元数据)可以来自数据库中的任何地方,
+而返回的 `RecordBatch` 可以用 Python 语法注释以指示其元数据,例如类型或空。
+脚本将尽其所能将返回的对象转换为 `RecordBatch`,无论它是 Python 列表、从参数计算出的 `RecordBatch` 还是常量(它被扩展到与输入参数相同的长度)。
+
+
+
+## 两种可选的后端
+
+### CPython 后端
+
+该后端由 [PyO3](https://pyo3.rs/v0.18.1/) 提供支持,可以使用您最喜欢的 Python 库(如 NumPy、Pandas 等),并允许 Conda 管理您的 Python 环境。
+
+但是使用它也涉及一些复杂性。您必须设置正确的 Python 共享库,这可能有点棘手。一般来说,您只需要安装 `python-dev` 包。但是,如果您使用 Homebrew 在 macOS 上安装 Python,则必须创建一个适当的软链接到 `Library/Frameworks/Python.framework`。有关使用 PyO3 crate 与不同 Python 版本的详细说明,请参见 [这里](https://pyo3.rs/v0.18.1/building_and_distribution#configuring-the-python-version)
+
+### 嵌入式 RustPython 解释器
+
+可以运行脚本的实验性 [python 解释器](https://github.com/RustPython/RustPython),它支持 Python 3.10 语法。您可以使用所有的 Python 语法,更多信息请参见 [Python 脚本的用户指南](/user-guide/python-scripts/overview.md).
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/query-engine.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/query-engine.md
new file mode 100644
index 0000000000..72b7a7f981
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/query-engine.md
@@ -0,0 +1,47 @@
+---
+keywords: [查询引擎, DataFusion, 逻辑计划, 物理计划]
+description: 介绍了 GreptimeDB 的查询引擎架构,基于 Apache DataFusion 构建,涵盖逻辑计划、物理计划、优化和执行过程。
+---
+
+# Query Engine
+
+## 介绍
+
+GreptimeDB 的查询引擎是基于[Apache DataFusion][1](属于[Apache Arrow][2]的子项目)构建的,它是一个用 Rust 编写的出色的查询引擎。它提供了一整套功能齐全的组件,从逻辑计划、物理计划到执行运行时。下面将解释每个组件如何被整合在一起,以及在执行过程中它们的位置。
+
+
+
+入口点是逻辑计划,它被用作查询或执行逻辑等的通用中间表示。逻辑计划的两个主要来源是:1. 用户查询,例如通过 SQL 解析器和规划器的 SQL;2. Frontend 的分布式查询,这将在下一节中详细解释。
+
+接下来是物理计划,或称执行计划。与包含所有逻辑计划变体(除特殊扩展计划节点外)的大型枚举的逻辑计划不同,物理计划实际上是一个定义了在执行过程中调用的一组方法的特性。所有数据处理逻辑都包装在实现该特性的相应结构中。它们是对数据执行的实际操作,如聚合器 `MIN` 或 `AVG` ,以及表扫描 `SELECT ... FROM`。
+
+优化阶段通过转换逻辑计划和物理计划来提高执行性能,现在全部基于规则。它也被称为“基于规则的优化”。一些规则是 DataFusion 原生的,其他一些是在 GreptimeDB 中自定义的。在未来,我们计划添加更多规则,并利用数据统计进行基于成本的优化 (CBO)。
+
+最后一个阶段"执行"是一个动词,代表从存储读取数据、进行计算并生成预期结果的过程。虽然它比之前提到的概念更抽象,但你可以简单地将它想象为执行一个 Rust 异步函数,并且它确实是一个异步流。
+
+当你想知道 SQL 是如何通过逻辑计划或物理计划中表示时,`EXPLAIN [VERBOSE] ` 是非常有用的。
+
+## 数据表示
+
+GreptimeDB 使用 [Apache Arrow][2]作为内存中的数据表示格式。它是面向列的,以跨平台格式,也包含许多高性能的基础操作。这些特性使得在许多不同的环境中共享数据和实现计算逻辑变得容易。
+
+## 索引
+
+在时序数据中,有两个重要的维度:时间戳和标签列(或者类似于关系数据库中的主键)。GreptimeDB 将数据分组到时间桶中,因此能在非常低的成本下定位和提取预期时间范围内的数据。GreptimeDB 中主要使用的持久文件格式 [Apache Parquet][3] 提供了多级索引和过滤器,使得在查询过程中很容易修剪数据。在未来,我们将更多地利用这个特性,并开发我们的分离索引来处理更复杂的用例。
+
+## 拓展性
+
+
+
+在 GreptimeDB 中扩展操作非常简单。你可以像 [这样][5] 实现你的算子。
+
+## 分布式查询
+
+参考 [Distributed Querying][6].
+
+[1]: https://github.com/apache/arrow-datafusion
+[2]: https://arrow.apache.org/
+[3]: https://parquet.apache.org
+[4]: python-scripts.md
+[5]: https://github.com/GreptimeTeam/greptimedb/blob/main/docs/how-to/how-to-write-aggregate-function.md
+[6]: ../frontend/distributed-querying.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/storage-engine.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/storage-engine.md
new file mode 100644
index 0000000000..6a55d2cb2f
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/storage-engine.md
@@ -0,0 +1,62 @@
+---
+keywords: [存储引擎, Mito, LSMT, 数据模型, Region]
+description: 详细介绍了 GreptimeDB 的存储引擎架构、数据模型和 region 的概念,重点描述了 Mito 存储引擎的优化和组件。
+---
+
+# 存储引擎
+
+## 概述
+
+`存储引擎` 负责存储数据库的数据。Mito 是我们默认使用的存储引擎,基于 [LSMT][1](Log-structured Merge-tree)。我们针对处理时间序列数据的场景做了很多优化,因此 mito 这个存储引擎并不适用于通用用途。
+
+## 架构
+下图展示了存储引擎的架构和处理数据的流程。
+
+
+
+该架构与传统的 LSMT 引擎相同:
+
+- [WAL][2]
+ - 为尚未刷盘的数据提供高持久性保证。
+ - 基于 `LogStore` API 实现,不关心底层存储介质。
+ - WAL 的日志记录可以存储在本地磁盘上,也可以存储在实现了 `LogStore` API 的分布式日志服务中。
+- Memtable
+ - 数据首先写入 `active memtable`,又称 `mutable memtable`。
+ - 当 `mutable memtable` 已满时,它将变为只读的 `immutable memtable`。
+- SST
+ - SST 的全名为有序字符串表(`Sorted String Table`)。
+ - `immutable memtable` 刷到持久存储后形成一个 SST 文件。
+- Compactor
+ - `Compactor` 通过 compaction 操作将小的 SST 合并为大的 SST。
+ - 默认使用 [TWCS][3] 策略进行合并
+- Manifest
+ - `Manifest` 存储引擎的元数据,例如 SST 的元数据。
+- Cache
+ - 加速查询操作。
+
+[1]: https://en.wikipedia.org/wiki/Log-structured_merge-tree
+[2]: https://en.wikipedia.org/wiki/Write-ahead_logging
+[3]: https://cassandra.apache.org/doc/latest/cassandra/operating/compaction/twcs.html
+
+## 数据模型
+
+存储引擎提供的数据模型介于 `key-value` 模型和表模型之间
+
+```txt
+tag-1, ..., tag-m, timestamp -> field-1, ..., field-n
+```
+
+每一行数据包含多个 tag 列,一个 timestamp 列和多个 field 列
+- `0 ~ m` 个 tag 列
+ - tag 列是可空的
+ - 在建表时通过 `PRIMARY KEY` 指定
+- 必须包含一个 timestamp 列
+ - timestamp 列非空
+ - 在建表时通过 `TIME INDEX` 指定
+- `0 ~ n` 个 field 列
+ - field 列是可空的
+- 数据按照 tag 列和 timestamp 列有序存储
+
+## Region
+
+数据在存储引擎中以 `region` 的形式存储,`region` 是引擎中的一个逻辑隔离存储单元。`region` 中的行必须具有相同的 `schema`(模式),该 `schema` 定义了 `region` 中的 tag 列,timestamp 列和 field 列。数据库中表的数据存储在一到多个 `region` 中。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/wal.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/wal.md
new file mode 100644
index 0000000000..ed67ce7ef3
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/datanode/wal.md
@@ -0,0 +1,26 @@
+---
+keywords: [预写日志, WAL, 数据持久化, 同步刷盘, 异步刷盘]
+description: 介绍了 GreptimeDB 的预写日志(WAL)机制,包括其命名空间、同步/异步刷盘策略和在数据节点重启时的重放功能。
+---
+
+# 预写日志
+
+## 介绍
+
+我们的存储引擎受到了日志结构合并树(Log-structured Merge Tree,LSMT)的启发。对数据的变更操作直接应用于 MemTable 而不是持久化到磁盘上的数据页,这显著提高了性能,但也带来了持久化相关的问题,特别是在 Datanode 意外崩溃时。与所有类似 LSMT 的存储引擎一样,GreptimeDB 使用预写日志(Write-Ahead Log,WAL)来确保数据被可靠地持久化,并且保证崩溃时的数据完整性。
+
+预写日志是一个仅提供追加写的文件组。所有的 INSERT、UPDATE 和 DELETE 操作都被转换为操作日志,然后追加到 WAL。一旦操作日志被持久化到底层文件,该操作才可以进一步应用到 MemTable。
+
+当数据节点重新启动时,WAL 中的操作条目将被重放,以重建正确的 MemTable 状态。
+
+
+
+## 命名空间
+
+WAL 的命名空间用于区分来自不同 region 的条目。追加和读取操作必须提供一个命名空间。目前,region ID 被用作命名空间,因为每个 region 都有一个在数据节点重新启动时需要重构的 MemTable。
+
+## 同步/异步刷盘
+
+默认情况下,WAL 的追加写是异步的,这意味着写入方不会等待操作日志被刷入到磁盘并持久化。这个默认设置提供了更高的性能,但在服务器意外关闭时可能会丢失数据。另一方面,同步刷新提供了更高的可靠性,但其代价是性能更低。
+
+在 v0.4 版本中,新的 region worker 架构可以使用批处理来减轻同步刷盘的开销。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/flownode/arrangement.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/flownode/arrangement.md
new file mode 100644
index 0000000000..dd3b6de090
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/flownode/arrangement.md
@@ -0,0 +1,18 @@
+---
+keywords: [Arrangement, 状态存储, 键值对]
+description: 描述了 Arrangement 在数据流进程中的状态存储功能,包括键值对存储、查询和删除操作的实现。
+---
+
+# Arrangement
+
+Arrangement 存储数据流进程中的状态,存储 flow 的更新流(stream)以供进一步查询和更新。
+
+Arrangement 本质上存储的是带有时间戳的键值对。
+在内部,Arrangement 接收类似 `((Key Row, Value Row), timestamp, diff)` 的 tuple,并将其存储在内存中。
+你可以使用 `get(now: Timestamp, key: Row)` 查询某个时间的键值对。
+Arrangement 假定早于某个时间(也称为 Low Watermark)的所有内容都已被写入到 sink 表中,不会为其保留历史记录。
+
+:::tip 注意
+Arrangement 允许通过将传入 tuple 的 `diff` 设置为 -1 来删除键。
+此外,如果已将行数据添加到 Arrangement 并且使用不同的值插入相同的键,则原始值将被新值覆盖。
+:::
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/flownode/batching_mode.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/flownode/batching_mode.md
new file mode 100644
index 0000000000..64edc38548
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/flownode/batching_mode.md
@@ -0,0 +1,74 @@
+---
+keywords: [流处理, flow 管理, Flownode 组件, Flownode 限制, 批处理模式]
+description: Flownode 批处理模式概述,一个为数据库提供持续数据聚合能力的组件,包括其架构和查询执行流程。
+---
+
+# Flownode 批处理模式开发者指南
+
+本指南简要概述了 `flownode` 中的批处理模式。它旨在帮助希望了解此模式内部工作原理的开发人员。
+
+## 概述
+
+`flownode` 中的批处理模式专为持续数据聚合而设计。它在离散的、微小的时间窗口上周期性地执行用户定义的 SQL 查询。这与数据在到达时即被处理的流处理模式形成对比。
+
+其核心思想是:
+1. 定义一个带有 SQL 查询的 `flow`,该查询将数据从源表聚合到目标表。
+2. 查询通常在时间戳列上包含一个时间窗口函数(例如 `date_bin`)。
+3. 当新数据插入源表时,系统会将相应的时间窗口标记为“脏”(dirty)。
+4. 一个后台任务会周期性地唤醒,识别这些脏窗口,并为那些特定的时间范围重新运行聚合查询。
+5. 然后将结果插入到目标表中,从而有效地更新聚合视图。
+
+## 架构
+
+批处理模式由几个协同工作的关键组件组成,以实现这种持续聚合。如下图所示:
+
+
+
+### `BatchingEngine`
+
+`BatchingEngine` 是批处理模式的核心。它是一个管理所有活动 flow 的中心组件。其主要职责是:
+
+- **任务管理**: 维护一个从 `FlowId` 到 `BatchingTask` 的映射。它处理这些任务的创建、删除和检索。
+- **事件分发**: 当新数据到达(通过 `handle_inserts_inner`)或当时间窗口被显式标记为脏(`handle_mark_dirty_time_window`)时,`BatchingEngine` 会识别受影响的 flow,并将信息转发给相应的 `BatchingTask`。
+
+### `BatchingTask`
+
+`BatchingTask` 代表一个独立的、单个的数据流。每个任务都与一个 `flow` 定义相关联,并在其自己的异步循环中运行。
+
+- **配置 (`TaskConfig`)**: 此结构体持有 flow 的不可变配置,例如 SQL 查询、源表和目标表名以及时间窗口表达式。
+- **状态 (`TaskState`)**: 包含任务的动态、可变状态,最重要的是 `DirtyTimeWindows`。
+- **执行循环**: 任务运行一个无限循环 (`start_executing_loop`),该循环:
+ 1. 检查关闭信号。
+ 2. 等待一个预定的时间间隔或直到被唤醒。
+ 3. 基于当前的脏时间窗口集合生成一个新的查询计划 (`gen_insert_plan`)。
+ 4. 对数据库执行查询 (`execute_logical_plan`)。
+ 5. 清理已处理的脏窗口。
+
+### `TaskState` 和 `DirtyTimeWindows`
+
+- **`TaskState`**: 此结构体跟踪 `BatchingTask` 的运行时状态。它包括 `dirty_time_windows`,这对于确定需要完成哪些操作至关重要。
+- **`DirtyTimeWindows`**: 这是一个关键的数据结构,用于跟踪自上次查询执行以来哪些时间窗口接收到了新数据。它存储一组不重叠的时间范围。当任务的执行循环运行时,它会参考此结构来构建一个 `WHERE` 子句,该子句仅过滤源表中的脏时间窗口。
+
+### `TimeWindowExpr`
+
+`TimeWindowExpr` 是一个用于处理像 `TUMBLE` 这样的时间窗口函数的辅助工具。
+
+- **求值**: 它可以接受一个时间戳并对时间窗口表达式求值,以确定该时间戳所属窗口的开始和结束。
+- **窗口大小**: 它还可以从表达式中确定时间窗口的大小(持续时间)。
+
+这对于标记窗口为脏以及在查询源表时生成正确的过滤条件都至关重要。
+
+## 查询执行流程
+
+以下是批处理模式下查询执行的简化分步演练:
+
+1. **数据摄取**: 新数据被写入源表。
+2. **标记为脏**: `BatchingEngine` 收到有关新数据的通知。它使用与每个相关 flow 关联的 `TimeWindowExpr` 来确定哪些时间窗口受到新数据点的影响。然后将这些窗口添加到相应 `TaskState` 中的 `DirtyTimeWindows` 集合中。
+3. **任务唤醒**: `BatchingTask` 的执行循环被唤醒,原因可能是其周期性调度,也可能是因为它被通知有大量积压的脏窗口。
+4. **计划生成**: 任务调用 `gen_insert_plan`。此方法:
+ - 检查 `DirtyTimeWindows`。
+ - 生成一系列 `OR` 连接的 `WHERE` 子句(例如 `(ts >= 't1' AND ts < 't2') OR (ts >= 't3' AND ts < 't4') ...`),覆盖所有脏窗口。
+ - 重写原始 SQL 查询以包含此新过滤器,确保只处理必要的数据。
+5. **执行**: 修改后的查询计划被发送到 `Frontend` 执行。数据库处理已过滤数据的聚合。
+6. **Upsert**: 结果被插入到目标表中。目标表通常定义了一个包含时间窗口列的主键,因此现有窗口的新结果将覆盖(upsert)旧结果。
+7. **状态更新**: `DirtyTimeWindows` 集合中刚刚处理过的窗口被清除。然后任务返回睡眠状态,直到下一个时间间隔。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/flownode/dataflow.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/flownode/dataflow.md
new file mode 100644
index 0000000000..9d07922542
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/flownode/dataflow.md
@@ -0,0 +1,18 @@
+---
+keywords: [Dataflow, SQL 查询, 执行计划, 数据流, map, reduce]
+description: 解释了 Dataflow 模块的核心计算功能,包括 SQL 查询转换、内部执行计划、数据流的触发运行和支持的操作。
+---
+
+# 数据流
+
+Dataflow 模块(参见 `flow::compute` 模块)是 `flow` 的核心计算模块。
+它接收 SQL 查询并将其转换为 `flow` 的内部执行计划。
+然后,该执行计划被转化为实际的数据流,而数据流本质上是一个由带有输入和输出端口的函数组成的有向无环图(DAG)。
+数据流会在需要时被触发运行。
+
+目前该数据流只支持 `map`和 `reduce` 操作,未来将添加对 `join` 等操作的支持。
+
+在内部,数据流使用 `tuple(row, time, diff)` 以行格式处理数据。
+这里 `row` 表示实际传递的数据,可能包含多个 `value` 对象。
+`time` 是系统时间,用于跟踪数据流的进度,`diff` 通常表示行的插入或删除(+1 或 -1)。
+因此,`tuple` 表示给定系统时间的 `row` 的插入/删除操作。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/flownode/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/flownode/overview.md
new file mode 100644
index 0000000000..b9759e9f42
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/flownode/overview.md
@@ -0,0 +1,25 @@
+---
+keywords: [流处理, flow 管理, 单机模式, Flownode 组件, Flownode 限制]
+description: Flownode 概览,一个为数据库提供流处理能力的组件,包括其组件和当前的限制。
+---
+
+# Flownode
+
+## 简介
+
+`Flownode` 为数据库提供了一种简单的流处理(称为 `flow`)能力。
+`Flownode` 管理 `flow`,这些 `flow` 是从 `source` 接收数据并将数据发送到 `sink` 的任务。
+
+`Flownode` 支持 `standalone`(单机)和 `distributed`(分布式)两种模式。在 `standalone` 模式下,`Flownode` 与数据库运行在同一进程中。在 `distributed` 模式下,`Flownode` 运行在单独的进程中,并通过网络与数据库通信。
+
+一个 flow 有两种执行模式:
+- **流处理模式 (Streaming Mode)**: 原始的模式,数据在到达时即被处理。
+- **批处理模式 (Batching Mode)**: 一种为持续数据聚合设计的较新模式。它在离散的、微小的时间窗口上周期性地执行用户定义的 SQL 查询。目前所有的聚合查询都使用此模式。更多详情,请参阅[批处理模式开发者指南](./batching_mode.md)。
+
+## 组件
+
+`Flownode` 包含了执行一个 flow 所需的所有组件。所涉及的具体组件取决于执行模式(流处理 vs. 批处理)。在较高的层面上,关键部分包括:
+
+- **Flow Manager**: 一个负责管理所有 flow生命周期的中心组件。
+- **Task Executor**: flow 逻辑执行的运行时环境。在流处理模式下,这通常是一个 `FlowWorker`;在批处理模式下,它是一个 `BatchingTask`。
+- **Flow Task**: 代表一个独立的、单个的数据流,包含将数据从 source 转换为 sink 的逻辑。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/frontend/distributed-querying.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/frontend/distributed-querying.md
new file mode 100644
index 0000000000..b73f58029d
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/frontend/distributed-querying.md
@@ -0,0 +1,40 @@
+---
+keywords: [分布式查询, 查询拆分, 查询合并, TableScan, 物理计划]
+description: 介绍 GreptimeDB 中的分布式查询方法,包括查询的拆分和合并过程,以及 TableScan 节点的作用。
+---
+
+# 分布式查询
+
+我们知道在 GreptimeDB 中数据是如何分布的(参见“[表分片][1]”),那么如何查询呢?在 GreptimeDB 中,分布式查询非常简单。简单来说,我们只需将查询拆分为子查询,每个子查询负责查询表数据的一个部分,然后将所有结果合并为最终结果。这是一种典型的“拆分 - 合并”方法。具体来说,让我们从查询到达 `frontend` 开始。
+
+当查询到达 `frontend` 时,它首先被解析为 SQL 抽象语法树(AST)。我们遍历 AST,并从中生成逻辑计划。顾名思义,逻辑计划只是如何“逻辑地”执行查询的“提示”,它不能被直接运行,因此我们进一步从中生成可执行的物理计划。物理计划是一种类似树形的数据结构,每个节点实际上表示查询的执行方法。一旦我们从上到下运行物理计划树,结果数据将从叶子到根流动,被合并或计算。最终,我们在根节点的输出处得到了查询的结果。
+
+到目前为止,这只是一个典型的“volcano”查询执行模型,你可以在几乎每个 SQL 数据库中看到这种模型。那么“分布式”是在哪里发生的呢?这全部发生在一个名为“TableScan”的物理计划节点中。TableScan 是物理计划树中的一个叶子节点,它负责扫描表的数据(就像它的名称所暗示的)。当 `frontend` 即将扫描表时,它首先需要根据每个 `region` 的数据范围将表扫描拆分为较小的扫描。
+
+[1]: ./table-sharding.md
+
+表的所有 `region` 都有它们存储数据的范围。以下表为例:
+
+```sql
+CREATE TABLE my_table (
+ a INT,
+ others STRING,
+)
+PARTITION ON COLUMNS (a) (
+ n < 10,
+ n >= 10 AND n < 20,
+ n >= 20
+)
+```
+
+`my_table` 表创建时被设定了 3 个分区。在 GreptimeDB 的当前实现中,将为该表创建 3 个 `region`(分区与 `region` 的比例为 1:1)。这 3 个区域将分别包含以下范围:"[-∞, 10)", "[10, 20)" 和 "[20, +∞)"。例如,如果提供了值 "42",我们将搜索这些范围,并找到包含该值的相应的 `region`(在此示例中为第 3 个 `region`)。
+
+对于查询,我们使用“过滤器”来查找 `region`。 "过滤器"是 "WHERE" 子句中的条件。例如,查询 `SELECT * FROM my_table WHERE a < 10 AND b > 10`,其“过滤器”为“a < 10 AND b > 10”。然后我们检查这些范围,找出包含满足过滤器条件的值的所有 `region`。
+
+> 如果某个查询没有任何过滤器,则将其视为全表扫描。
+
+找到所需的区域后,我们只需在其中组装子扫描。通过这种方式,我们将查询拆分为子查询,每个子查询都获取表数据的一部分。子查询在 `datanode` 中执行,并在 `frontend` 中等待完成。它们的结果将合并为表扫描请求的最终返回。
+
+下面这张图片总结了分布式查询执行的过程:
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/frontend/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/frontend/overview.md
new file mode 100644
index 0000000000..ee48da3ce3
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/frontend/overview.md
@@ -0,0 +1,43 @@
+---
+keywords: [frontend, proxy, protocol, routing, distributed query, tenant management, authorization, flow control, cloud deployment, endpoints]
+description: GreptimeDB Frontend 组件概述 - 为客户端请求提供服务的无状态代理服务。
+---
+
+# Frontend
+
+**Frontend** 是一个无状态服务,作为 GreptimeDB 中客户端请求的入口点。它为多种数据库协议提供统一接口,并充当代理,将读写请求转发到分布式系统中的相应 Datanode。
+
+## 核心功能
+
+- **协议支持**:支持多种数据库协议,包括 SQL、PromQL、MySQL 和 PostgreSQL。详见[协议][1]
+- **请求路由**:基于元数据将请求路由到相应的 Datanode
+- **查询分发**:将分布式查询拆分到多个节点
+- **响应聚合**:合并来自多个 Datanode 的结果
+- **认证授权**:安全和访问控制验证
+
+## 架构
+
+### 关键组件
+- **协议处理器**:处理不同的数据库协议
+- **目录管理器**:缓存来自 Metasrv 的元数据以实现高效的请求路由和 Schema 校验
+- **分布式规划器**:将逻辑计划转换为分布式执行计划
+- **请求路由器**:为每个请求确定目标 Datanodes
+
+### 请求流程
+
+
+
+### 部署
+
+下图是 GreptimeDB 在云上的一个典型的部署。`Frontend` 实例组成了一个集群处理来自客户端的请求:
+
+
+
+## 详细信息
+
+- [表分片][2]
+- [分布式查询][3]
+
+[1]: /user-guide/protocols/overview.md
+[2]: ./table-sharding.md
+[3]: ./distributed-querying.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/frontend/table-sharding.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/frontend/table-sharding.md
new file mode 100644
index 0000000000..02e8e43bbb
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/frontend/table-sharding.md
@@ -0,0 +1,53 @@
+---
+keywords: [表分片, 分区, Region, 数据存储, Region 自动移动]
+description: 介绍 GreptimeDB 中表数据的分片方法,包括分区和 Region 的定义及其关系。
+---
+
+# 表分片
+
+对于任何分布式数据库来说,数据的分片都是必不可少的。本文将描述 GreptimeDB 中的表数据如何进行分片。
+
+## 分区
+
+有关创建分区表的语法,请参阅用户指南中的[表分片](/user-guide/deployments-administration/manage-data/table-sharding.md)部分。
+
+## Region
+
+在创建分区后,表中的数据被逻辑上分割。你可能会问:"在 GreptimeDB 中,被逻辑上分区的数据是如何存储的?" 答案是保存在 `Region` 当中。
+
+每个 `Region` 对应一个分区,并保存分区的数据。所有的 `Region` 分布在各个 `Datanode` 之中。我们的 `Metasrv` 会根据 `Datanode`
+的状态在它们之间自动移动 `Region`。此外,`Metasrv` 还可以根据数据量或访问模式拆分或合并 `Region`。
+
+分区和 Region 的关系参见下图:
+
+```text
+ ┌───────┐
+ │ │
+ │ Table │
+ │ │
+ └───┬───┘
+ │
+ Range [Start, end) │ Horizontally Split Data
+ ┌──────────────────┼──────────────────┐
+ │ │ │
+ │ │ │
+ ┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐
+ │ │ │ │ │ │
+ │ Partition │ │ Partition │ │ Partition │
+ │ │ │ │ │ │
+ │ P0 │ │ P1 │ │ Px │
+ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘
+ │ │ │
+ │ │ │
+┌───────┼──────────────────┼───────┐ │ Partition 和 Region 是一一对应的
+│ │ │ │ │
+│ ┌─────▼─────┐ ┌─────▼─────┐ │ ┌─────▼─────┐
+│ │ │ │ │ │ │ │
+│ │ Region │ │ Region │ │ │ Region │
+│ │ │ │ │ │ │ │
+│ │ R0 │ │ R1 │ │ │ Ry │
+│ └───────────┘ └───────────┘ │ └───────────┘
+│ │
+└──────────────────────────────────┘
+ 可以放在同一个 Datanode 之中
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/getting-started.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/getting-started.md
new file mode 100644
index 0000000000..ba5ee05fbe
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/getting-started.md
@@ -0,0 +1,70 @@
+---
+keywords: [编译, 运行, 源代码, 系统要求, 依赖项, Docker]
+description: 介绍如何在本地环境中从源代码编译和运行 GreptimeDB,包括系统要求和依赖项。
+---
+
+# 立即开始
+
+本页面介绍如何在本地环境中从源代码运行 GreptimeDB。
+
+## 先决条件
+
+### 系统和架构
+
+目前,GreptimeDB 支持 Linux(amd64 和 arm64)、macOS(amd64 和 Apple Silicone)和 Windows。
+
+### 构建依赖项
+
+- [Git](https://git-scm.com/book/en/v2/Getting-Started-The-Command-Line)(可选)
+- C/C++ 工具链:提供编译和链接的基本工具。在 Ubuntu 上,这可用作 `build-essential`。在其他平台上,也有类似的命令。
+- Rust([指南][1])
+ - 编译源代码
+- Protobuf([指南][2])
+ - 编译 proto 文件
+ - 请注意,版本需要 >= 3.15。你可以使用 `protoc --version` 检查它。
+- 机器:建议内存在 16GB 以上 或者 使用[mold](https://github.com/rui314/mold)工具以降低链接时的内存使用。
+
+[1]:
+[2]:
+
+## 编译和运行
+
+只需几个命令即可使用以 Standalone 模式启动 GreptimeDB 实例:
+
+```shell
+git clone https://github.com/GreptimeTeam/greptimedb.git
+cd greptimedb
+cargo run -- standalone start
+```
+
+接下来,你可以选择与 GreptimeDB 交互的协议。
+
+如果你只想构建服务器而不运行它:
+
+```shell
+cargo build # --release
+```
+
+根据构建的模式(是否传递了 `--release` 选项),构建后的文件可以在 `$REPO/target/debug` 或 `$REPO/target/release` 目录下找到。
+
+## 单元测试
+
+GreptimeDB 经过了充分的测试,整个单元测试套件都随源代码一起提供。要测试它们,请使用 [nextest](https://nexte.st/index.html)。
+
+要使用 cargo 安装 nextest,请运行:
+
+```shell
+cargo install cargo-nextest --locked
+```
+
+或者,你可以查看他们的[文档](https://nexte.st/docs/installation/pre-built-binaries/)以了解其他安装方式。
+
+安装好 nextest 后,你可以使用以下命令运行测试套件:
+
+```shell
+cargo nextest run
+```
+
+## Docker
+
+我们还通过 Docker 提供预构建二进制文件,可以在 [Docker Hub 上获取](https://hub.docker.com/r/greptime/greptimedb)。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/how-to/how-to-trace-greptimedb.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/how-to/how-to-trace-greptimedb.md
new file mode 100644
index 0000000000..6c1d922ac6
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/how-to/how-to-trace-greptimedb.md
@@ -0,0 +1,80 @@
+---
+keywords: [tracing, 分布式追踪, tracing 上下文, RPC 调用, 代码埋点]
+description: 介绍如何在 GreptimeDB 中使用 Rust 的 tracing 框架进行代码埋点,包括在 RPC 中定义和传递 tracing 上下文的方法。
+---
+
+# How to trace GreptimeDB
+
+GreptimeDB 使用 Rust 的 [tracing](https://docs.rs/tracing/latest/tracing/) 框架进行代码埋点,tracing 的具体原理和使用方法参见 tracing 的官方文档。
+
+通过将 `trace_id` 等信息在整个分布式数据链路上透传,使得我们能够记录整个分布式链路的函数调用链,知道每个被追踪函数的调用时间等相关信息,从而对整个系统进行诊断。
+
+## 在 RPC 中定义 tracing 上下文
+
+因为 tracing 框架并没有原生支持分布式追踪,我们需要手动将 `trace_id` 等信息在 RPC 消息中传递,从而正确的识别函数的调用关系。我们使用基于 [w3c 的标准](https://www.w3.org/TR/trace-context/#traceparent-header-field-values) 将相关信息编码为 `tracing_context` ,将消息附在 RPC 的 header 中。主要定义在:
+
+- `frontend` 与 `datanode` 交互:`tracing_context` 定义在 [`RegionRequestHeader`](https://github.com/GreptimeTeam/greptime-proto/blob/main/proto/greptime/v1/region/server.proto) 中
+- `frontend` 与 `metasrv` 交互:`tracing_context` 定义在 [`RequestHeader`](https://github.com/GreptimeTeam/greptime-proto/blob/main/proto/greptime/v1/meta/common.proto) 中
+- Client 与 `frontend` 交互:`tracing_context` 定义在 [`RequestHeader`](https://github.com/GreptimeTeam/greptime-proto/blob/main/proto/greptime/v1/common.proto) 中
+
+## 在 RPC 调用中传递 tracing 上下文
+
+我们构建了一个 `TracingContext` 结构体,封装了与 tracing 上下文有关的操作。[相关代码](https://github.com/GreptimeTeam/greptimedb/blob/main/src/common/telemetry/src/tracing_context.rs)
+
+GreptimeDB 在使用 `TracingContext::from_current_span()` 获取当前 tracing 上下文,使用 `to_w3c()` 方法将 tracing 上下文编码为符合 w3c 的格式,并将其附在 RPC 消息中,从而使 tracing 上下文正确的在分布式组件之中传递。
+
+下面的例子说明了如何获取当前 tracing 上下文,并在构造 RPC 消息时正确传递参数,从而使 tracing 上下文正确的在分布式组件之中传递。
+
+
+```rust
+let request = RegionRequest {
+ header: Some(RegionRequestHeader {
+ tracing_context: TracingContext::from_current_span().to_w3c(),
+ ..Default::default()
+ }),
+ body: Some(region_request::Body::Alter(request)),
+};
+```
+
+在 RPC 消息的接收方,需要将 tracing 上下文正确解码,并且使用该上下文构建第一个 `span` 对函数调用进行追踪。比如下面的代码就将接收到的 RPC 消息中的 `tracing_context` 使用 `TracingContext::from_w3c` 方法正确解码。并使用 `attach` 方法将新建的 `info_span!("RegionServer::handle_read")` 附上了上下文消息,从而能够跨分布式组件对调用进行追踪。
+
+```rust
+...
+let tracing_context = request
+ .header
+ .as_ref()
+ .map(|h| TracingContext::from_w3c(&h.tracing_context))
+ .unwrap_or_default();
+let result = self
+ .handle_read(request)
+ .trace(tracing_context.attach(info_span!("RegionServer::handle_read")))
+ .await?;
+...
+```
+
+## 使用 `tracing::instrument` 对监测代码进行埋点
+
+我们使用 tracing 提供的 `instrument` 宏对代码进行埋点,只要将 `instrument` 宏标记在需要进行埋点的函数即可。 `instrument` 宏会每次将函数调用的参数以 `Debug` 的形式打印到 span 中。对于没有实现 `Debug` trait 的参数,或者结构体过大、参数过多,最后导致 span 过大,希望避免这些情况就需要使用 `skip_all`,跳过所有的参数打印。
+
+```rust
+#[tracing::instrument(skip_all)]
+async fn instrument_function(....) {
+ ...
+}
+```
+
+## 跨越 runtime 的代码埋点
+
+Rust 的 tracing 库会自动处理埋点函数间的嵌套关系,但如果某个函数的调用跨越 runtime 的话,tracing 不能自动对这类调用进行追踪,我们需要手动跨越 runtime 去传递上下文。
+
+```rust
+let tracing_context = TracingContext::from_current_span();
+let handle = runtime.spawn(async move {
+ handler
+ .handle(query)
+ .trace(tracing_context.attach(info_span!("xxxxx")))
+ ...
+});
+```
+
+比如上面这段代码需要跨越 runtime 去进行 tracing,我们先通过 `TracingContext::from_current_span()` 获取当前 tracing 上下文,通过在另外一个 runtime 里新建一个 span,并将 span 附着在当前上下文中,我们就完成了跨越 runtime 的代码埋点,正确追踪到了调用链。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/how-to/how-to-use-tokio-console.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/how-to/how-to-use-tokio-console.md
new file mode 100644
index 0000000000..605035d57e
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/how-to/how-to-use-tokio-console.md
@@ -0,0 +1,34 @@
+---
+keywords: [tokio-console, GreptimeDB, 构建配置, 启动配置, 调试工具]
+description: 介绍如何在 GreptimeDB 中启用 tokio-console,包括构建和启动时的配置方法。
+---
+
+# 如何在 GreptimeDB 中启用 tokio-console
+
+本文介绍了如何在 GreptimeDB 中启用 [tokio-console](https://github.com/tokio-rs/console)。
+
+首先,在构建 GreptimeDB 时带上 feature `cmd/tokio-console`。同时 `tokio_unstable` cfg 也必须开启:
+
+```bash
+RUSTFLAGS="--cfg tokio_unstable" cargo build -F cmd/tokio-console
+```
+
+启动 GreptimeDB,可设置 tokio console 绑定的地址,配置是 `--tokio-console-addr`。`tokio_unstable` 的 cfg 也需要同时开启。例如:
+
+```bash
+RUSTFLAGS="--cfg tokio_unstable" greptime --tokio-console-addr="127.0.0.1:6669" standalone start
+```
+
+这样就可以使用 `tokio-console` 命令去连接 GreptimeDB 的 tokio console 服务了:
+
+```bash
+tokio-console [TARGET_ADDR]
+```
+
+"`TARGET_ADDR`" 默认是 "\"。
+
+:::tip Note
+
+`tokio-console` 命令的安装方法参见 [tokio-console](https://github.com/tokio-rs/console)。
+
+:::
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/how-to/how-to-write-sdk.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/how-to/how-to-write-sdk.md
new file mode 100644
index 0000000000..28ff757763
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/how-to/how-to-write-sdk.md
@@ -0,0 +1,73 @@
+---
+keywords: [gRPC SDK, GreptimeDatabase, GreptimeRequest, GreptimeResponse, 插入请求]
+description: 介绍如何为 GreptimeDB 开发一个 gRPC SDK,包括 GreptimeDatabase 服务的定义、GreptimeRequest 和 GreptimeResponse 的结构。
+---
+
+# 如何为 GreptimeDB 开发一个 gRPC SDK
+
+GreptimeDB 的 gRPC SDK 只需要处理写请求即可。读请求是标准 SQL 或 PromQL,可以由任何 JDBC 客户端或 Prometheus
+客户端处理。这也是为什么所有的 GreptimeDB SDK 都命名为 "`greptimedb-ingester-`"。请确保你的 GreptimeDB SDK
+遵循相同的命名约定。
+
+## `GreptimeDatabase` 服务
+
+GreptimeDB 自定义了一个 gRPC 服务:`GreptimeDatabase`
+。你只需要实现这个服务即可。你可以在[这里](https://github.com/GreptimeTeam/greptime-proto/blob/main/proto/greptime/v1/database.proto)
+找到它的 Protobuf 定义。
+
+`GreptimeDatabase` 有 2 个 RPC 方法:
+
+```protobuf
+service GreptimeDatabase {
+ rpc Handle(GreptimeRequest) returns (GreptimeResponse);
+
+ rpc HandleRequests(stream GreptimeRequest) returns (GreptimeResponse);
+}
+```
+
+`Handle` 方法是一个 unary 调用:当 GreptimeDB 服务接收到一个 `GreptimeRequest` 请求后,它立刻处理该请求并返回一个相应的
+`GreptimeResponse`。
+
+`HandleRequests` 方法则是一个 "[Client Streaming RPC][3]" 方式的调用。
+它可以接受一个连续的 `GreptimeRequest` 请求流,持续地发给 GreptimeDB 服务。
+GreptimeDB 服务会在收到流中的每个请求时立刻进行处理,并最终(流结束时)返回一个总结性的 `GreptimeResponse`。
+通过 `HandleRequests`,我们可以获得一个非常高的请求吞吐量。
+
+### `GreptimeRequest`
+
+`GreptimeRequest` 是一个 Protobuf 消息,定义如下:
+
+```protobuf
+message GreptimeRequest {
+ RequestHeader header = 1;
+ oneof request {
+ InsertRequests inserts = 2;
+ QueryRequest query = 3;
+ DdlRequest ddl = 4;
+ DeleteRequests deletes = 5;
+ RowInsertRequests row_inserts = 6;
+ RowDeleteRequests row_deletes = 7;
+ }
+}
+```
+
+`RequestHeader` 是必需,它包含了一些上下文,鉴权和其他信息。"oneof" 的字段包含了发往 GreptimeDB 服务的请求。
+
+注意我们有两种类型的插入请求,一种是以 "列" 的形式(`InsertRequests`),另一种是以 "行" 的形式(`RowInsertRequests`
+)。通常我们建议使用 "行" 的形式,因为它对于表的插入更自然,更容易使用。但是,如果需要一次插入大量列,或者有大量的 "null"
+值需要插入,那么最好使用 "列" 的形式。
+
+### `GreptimeResponse`
+
+`GreptimeResponse` 是一个 Protobuf 消息,定义如下:
+
+```protobuf
+message GreptimeResponse {
+ ResponseHeader header = 1;
+ oneof response {AffectedRows affected_rows = 2;}
+}
+```
+
+`ResponseHeader` 包含了返回值的状态码,以及错误信息(如果有的话)。"oneof" 的字段目前只有 "affected rows"。
+
+GreptimeDB 现在有很多 SDK,你可以参考[这里](https://github.com/GreptimeTeam?q=ingester&type=all&language=&sort=)获取一些示例。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/metasrv/admin-api.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/metasrv/admin-api.md
new file mode 100644
index 0000000000..6e3251dbd8
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/metasrv/admin-api.md
@@ -0,0 +1,258 @@
+---
+keywords: [Admin API, 健康检查, leader 查询, 心跳检测, 维护模式]
+description: 介绍 Metasrv 的 Admin API,包括健康检查、leader 查询和心跳检测等功能。
+---
+
+# Admin API
+
+Admin 提供了一种简单的方法来查看集群信息,包括 metasrv 健康检测、metasrv leader 查询、数据库元数据查询和数据节点心跳检测。
+
+Admin API 是一个 HTTP 服务,提供一组可以通过 HTTP 请求调用的 RESTful API。Admin API 简单、用户友好且安全。
+可用的 API:
+
+- /health
+- /leader
+- /heartbeat
+- /maintenance
+
+所有这些 API 都在父资源 `/admin` 下。
+
+在以下部分中,我们假设你的 metasrv 实例运行在本地主机的 4000 端口。
+
+## /health HTTP 端点
+
+`/health` 端点接受 GET HTTP 请求,你可以使用此端点检查你的 metasrv 实例的健康状况。
+
+### 定义
+
+```bash
+curl -X GET http://localhost:4000/admin/health
+```
+
+### 示例
+
+#### 请求
+
+```bash
+curl -X GET http://localhost:4000/admin/health
+```
+
+#### 响应
+
+```json
+OK
+```
+
+## /leader HTTP 端点
+
+`/leader` 端点接受 GET HTTP 请求,你可以使用此端点查询你的 metasrv 实例的 leader 地址。
+
+### 定义
+
+```bash
+curl -X GET http://localhost:4000/admin/leader
+```
+
+### 示例
+
+#### 请求
+
+```bash
+curl -X GET http://localhost:4000/admin/leader
+```
+
+#### 响应
+
+```json
+127.0.0.1:4000
+```
+
+## /heartbeat HTTP 端点
+
+`/heartbeat` 端点接受 GET HTTP 请求,你可以使用此端点查询所有数据节点的心跳。
+
+你还可以查询指定 `addr` 的数据节点的心跳数据,但在路径中指定 `addr` 是可选的。
+
+### 定义
+
+```bash
+curl -X GET http://localhost:4000/admin/heartbeat
+```
+
+| 查询字符串参数 | 类型 | 可选/必选 | 定义 |
+|:---------------|:-------|:----------|:--------------------|
+| addr | String | 可选 | 数据节点的地址。 |
+
+### 示例
+
+#### 请求
+
+```bash
+curl -X GET 'http://localhost:4000/admin/heartbeat?addr=127.0.0.1:4100'
+```
+
+#### 响应
+
+```json
+[
+ [{
+ "timestamp_millis": 1677049348651,
+ "cluster_id": 0,
+ "id": 1,
+ "addr": "127.0.0.1:4100",
+ "is_leader": false,
+ "rcus": 0,
+ "wcus": 0,
+ "table_num": 0,
+ "region_num": 2,
+ "cpu_usage": 0.0,
+ "load": 0.0,
+ "read_io_rate": 0.0,
+ "write_io_rate": 0.0,
+ "region_stats": []
+ }, {
+ "timestamp_millis": 1677049344048,
+ "cluster_id": 0,
+ "id": 1,
+ "addr": "0.0.0.0:4100",
+ "is_leader": false,
+ "rcus": 0,
+ "wcus": 0,
+ "table_num": 0,
+ "region_num": 2,
+ "cpu_usage": 0.0,
+ "load": 0.0,
+ "read_io_rate": 0.0,
+ "write_io_rate": 0.0,
+ "region_stats": []
+ }, {
+ "timestamp_millis": 1677049343624,
+ "cluster_id": 0,
+ "id": 1,
+ "addr": "127.0.0.1:4100",
+ "is_leader": false,
+ "rcus": 0,
+ "wcus": 0,
+ "table_num": 0,
+ "region_num": 2,
+ "cpu_usage": 0.0,
+ "load": 0.0,
+ "read_io_rate": 0.0,
+ "write_io_rate": 0.0,
+ "region_stats": []
+ }, {
+ "timestamp_millis": 1677049339036,
+ "cluster_id": 0,
+ "id": 1,
+ "addr": "0.0.0.0:4100",
+ "is_leader": false,
+ "rcus": 0,
+ "wcus": 0,
+ "table_num": 0,
+ "region_num": 2,
+ "cpu_usage": 0.0,
+ "load": 0.0,
+ "read_io_rate": 0.0,
+ "write_io_rate": 0.0,
+ "region_stats": []
+ }, {
+ "timestamp_millis": 1677049338609,
+ "cluster_id": 0,
+ "id": 1,
+ "addr": "127.0.0.1:4100",
+ "is_leader": false,
+ "rcus": 0,
+ "wcus": 0,
+ "table_num": 0,
+ "region_num": 2,
+ "cpu_usage": 0.0,
+ "load": 0.0,
+ "read_io_rate": 0.0,
+ "write_io_rate": 0.0,
+ "region_stats": []
+ }, {
+ "timestamp_millis": 1677049334019,
+ "cluster_id": 0,
+ "id": 1,
+ "addr": "0.0.0.0:4100",
+ "is_leader": false,
+ "rcus": 0,
+ "wcus": 0,
+ "table_num": 0,
+ "region_num": 2,
+ "cpu_usage": 0.0,
+ "load": 0.0,
+ "read_io_rate": 0.0,
+ "write_io_rate": 0.0,
+ "region_stats": []
+ }, {
+ "timestamp_millis": 1677049333592,
+ "cluster_id": 0,
+ "id": 1,
+ "addr": "127.0.0.1:4100",
+ "is_leader": false,
+ "rcus": 0,
+ "wcus": 0,
+ "table_num": 0,
+ "region_num": 2,
+ "cpu_usage": 0.0,
+ "load": 0.0,
+ "read_io_rate": 0.0,
+ "write_io_rate": 0.0,
+ "region_stats": []
+ }, {
+ "timestamp_millis": 1677049329002,
+ "cluster_id": 0,
+ "id": 1,
+ "addr": "0.0.0.0:4100",
+ "is_leader": false,
+ "rcus": 0,
+ "wcus": 0,
+ "table_num": 0,
+ "region_num": 2,
+ "cpu_usage": 0.0,
+ "load": 0.0,
+ "read_io_rate": 0.0,
+ "write_io_rate": 0.0,
+ "region_stats": []
+ }, {
+ "timestamp_millis": 1677049328573,
+ "cluster_id": 0,
+ "id": 1,
+ "addr": "127.0.0.1:4100",
+ "is_leader": false,
+ "rcus": 0,
+ "wcus": 0,
+ "table_num": 0,
+ "region_num": 2,
+ "cpu_usage": 0.0,
+ "load": 0.0,
+ "read_io_rate": 0.0,
+ "write_io_rate": 0.0,
+ "region_stats": []
+ }, {
+ "timestamp_millis": 1677049323986,
+ "cluster_id": 0,
+ "id": 1,
+ "addr": "0.0.0.0:4100",
+ "is_leader": false,
+ "rcus": 0,
+ "wcus": 0,
+ "table_num": 0,
+ "region_num": 2,
+ "cpu_usage": 0.0,
+ "load": 0.0,
+ "read_io_rate": 0.0,
+ "write_io_rate": 0.0,
+ "region_stats": []
+ }]
+]
+```
+
+## /maintenance HTTP 端点
+
+集群维护模式是 GreptimeDB 中的一项安全功能,它可以临时禁用自动集群管理操作。此模式在集群升级、计划停机以及任何可能暂时影响集群稳定性的操作期间特别有用。有关更多详细信息,请参阅[集群维护模式](/user-guide/deployments-administration/maintenance/maintenance-mode.md)。
+
+## /procedure-manager HTTP 端点
+
+该端点用于管理 Procedure Manager 状态。有关更多详细信息,请参阅[防止元数据变更](/user-guide/deployments-administration/maintenance/prevent-metadata-changes.md)。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/metasrv/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/metasrv/overview.md
new file mode 100644
index 0000000000..2e3c525baa
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/metasrv/overview.md
@@ -0,0 +1,162 @@
+---
+keywords: [Metasrv, 元数据存储, 请求路由, 负载均衡, 高可用性]
+description: 介绍 Metasrv 的功能、架构和与前端的交互方式。
+---
+
+# Metasrv
+
+
+
+## Metasrv 包含什么
+
+- 存储元数据(Catalog, Schema, Table, Region 等)
+- 请求路由器。它告诉前端在哪里写入和读取数据。
+- 数据节点的负载均衡,决定谁应该处理新的表创建请求,更准确地说,它做出资源分配决策。
+- 选举与高可用性,GreptimeDB 设计为 Leader-Follower 架构,只有 leader 节点可以写入,而 follower 节点可以读取,follower 节点的数量通常 >= 1,当 leader 不可用时,follower 节点需要能够快速切换为 leader。
+- 统计数据收集(通过每个节点上的心跳报告),如 CPU、负载、节点上的表数量、平均/峰值数据读写大小等,可用作分布式调度的基础。
+
+## 前端如何与 Metasrv 交互
+
+首先,请求路由器中的路由表结构如下(注意这只是逻辑结构,实际存储结构可能不同,例如端点可能有字典压缩)。
+
+```txt
+ table_A
+ table_name
+ table_schema // 用于物理计划
+ regions
+ region_1
+ mutate_endpoint
+ select_endpoint_1, select_endpoint_2
+ region_2
+ mutate_endpoint
+ select_endpoint_1, select_endpoint_2, select_endpoint_3
+ region_xxx
+ table_B
+ ...
+```
+
+### 创建表
+
+1. 前端发送 `CREATE TABLE` 请求到 Metasrv。
+2. 根据请求中包含的分区规则规划 Region 数量。
+3. 检查数据节点可用资源的全局视图(通过心跳收集)并为每个 Region 分配一个节点。
+4. 前端创建表并在成功创建后将 `Schema` 存储到 Metasrv。
+
+### `Insert`
+
+1. 前端从 Metasrv 获取指定表的路由。注意,最小的路由单元是表的路由(多个 Region),即包含该表所有 Region 的地址。
+2. 最佳实践是前端首先从本地缓存中获取路由并将请求转发到数据节点。如果路由不再有效,则数据节点有义务返回 `Invalid Route` 错误,前端重新从 Metasrv 获取最新数据并更新其缓存。路由信息不经常变化,因此,前端使用惰性策略维护缓存是足够的。
+3. 前端处理可能包含多个表和多个 Region 的一批写入,因此前端需要根据“路由表”拆分用户请求。
+
+### `Select`
+
+1. 与 `Insert` 类似,前端首先从本地缓存中获取路由表。
+2. 与 `Insert` 不同,对于 `Select`,前端需要从路由表中提取只读节点(follower),然后根据优先级将请求分发到 leader 或 follower 节点。
+3. 前端的分布式查询引擎根据路由信息分发多个子查询任务并聚合查询结果。
+
+## Metasrv 架构
+
+
+
+## 分布式共识
+
+如你所见,Metasrv 依赖于分布式共识,因为:
+
+1. 首先,Metasrv 必须选举一个 leader,数据节点只向 leader 发送心跳,我们只使用单个 Metasrv 节点接收心跳,这使得基于全局信息进行一些计算或调度变得容易且快速。至于数据节点如何连接到 leader,这由 MetaClient 决定(使用重定向,心跳请求变为 gRPC 流,使用重定向比转发更不容易出错),这对数据节点是透明的。
+2. 其次,Metasrv 必须为数据节点提供选举 API,以选举“写入”和“只读”节点,并帮助数据节点实现高可用性。
+3. 最后,`Metadata`、`Schema` 和其他数据必须在 Metasrv 上可靠且一致地存储。因此,基于共识的算法是存储它们的理想方法。
+
+对于 Metasrv 的第一个版本,我们选择 Etcd 作为共识算法组件(Metasrv 设计时考虑适应不同的实现,甚至创建一个新的轮子),原因如下:
+
+1. Etcd 提供了我们需要的 API,例如 `Watch`、`Election`、`KV` 等。
+2. 我们只执行两个分布式共识任务:选举(使用 `Watch` 机制)和存储(少量元数据),这两者都不需要我们定制自己的状态机,也不需要基于 raft 定制自己的状态机;少量数据也不需要多 raft 组支持。
+3. Metasrv 的初始版本使用 Etcd,使我们能够专注于 Metasrv 的功能,而不需要在分布式共识算法上花费太多精力,这提高了系统设计(避免与共识算法耦合)并有助于初期的快速开发,同时通过良好的架构设计,未来可以轻松接入优秀的共识算法实现。
+
+## 心跳管理
+
+数据节点与 Metasrv 之间的主要通信方式是心跳请求/响应流,我们希望这是唯一的通信方式。这个想法受到 [TiKV PD](https://github.com/tikv/pd) 设计的启发,我们在 [RheaKV](https://github.com/sofastack/sofa-jraft/tree/master/jraft-rheakv/rheakv-pd) 中有实际经验。请求发送其状态,而 Metasrv 通过心跳响应发送不同的调度指令。
+
+心跳可能携带以下数据,但这不是最终设计,我们仍在讨论和探索究竟应该收集哪些数据。
+
+```
+service Heartbeat {
+ // 心跳,心跳可能有很多内容,例如:
+ // 1. 要注册到 Metasrv 并可被其他节点发现的元数据。
+ // 2. 一些性能指标,例如负载、CPU 使用率等。
+ // 3. 正在执行的计算任务数量。
+ rpc Heartbeat(stream HeartbeatRequest) returns (stream HeartbeatResponse) {}
+}
+
+message HeartbeatRequest {
+ RequestHeader header = 1;
+
+ // 自身节点
+ Peer peer = 2;
+ // leader 节点
+ bool is_leader = 3;
+ // 实际报告时间间隔
+ TimeInterval report_interval = 4;
+ // 节点状态
+ NodeStat node_stat = 5;
+ // 此节点中的 Region 状态
+ repeated RegionStat region_stats = 6;
+ // follower 节点和状态,在 follower 节点上为空
+ repeated ReplicaStat replica_stats = 7;
+}
+
+message NodeStat {
+ // 此期间的读取容量单位
+ uint64 rcus = 1;
+ // 此期间的写入容量单位
+ uint64 wcus = 2;
+ // 此节点中的表数量
+ uint64 table_num = 3;
+ // 此节点中的 Region 数量
+ uint64 region_num = 4;
+
+ double cpu_usage = 5;
+ double load = 6;
+ // 节点中的读取磁盘 I/O
+ double read_io_rate = 7;
+ // 节点中的写入磁盘 I/O
+ double write_io_rate = 8;
+
+ // 其他
+ map attrs = 100;
+}
+
+message RegionStat {
+ uint64 region_id = 1;
+ TableName table_name = 2;
+ // 此期间的读取容量单位
+ uint64 rcus = 3;
+ // 此期间的写入容量单位
+ uint64 wcus = 4;
+ // 近似 Region 大小
+ uint64 approximate_size = 5;
+ // 近似行数
+ uint64 approximate_rows = 6;
+
+ // 其他
+ map attrs = 100;
+}
+
+message ReplicaStat {
+ Peer peer = 1;
+ bool in_sync = 2;
+ bool is_learner = 3;
+}
+```
+
+## Central Nervous System (CNS)
+
+我们要构建一个算法系统,该系统依赖于每个节点的实时和历史心跳数据,应该做出一些更智能的调度决策并将其发送到 Metasrv 的 Autoadmin 单元,该单元分发调度决策,由数据节点本身或更可能由 PaaS 平台执行。
+
+## 工作负载抽象
+
+工作负载抽象的级别决定了 Metasrv 生成的调度策略(如资源分配)的效率和质量。
+
+DynamoDB 定义了 RCUs 和 WCUs(读取容量单位/写入容量单位),解释说 RCU 是一个 4KB 数据的读取请求,WCU 是一个 1KB 数据的写入请求。当使用 RCU 和 WCU 描述工作负载时,更容易实现性能可测量性并获得更有信息量的资源预分配,因为我们可以将不同的硬件能力抽象为 RCU 和 WCU 的组合。
+
+然而,GreptimeDB 面临比 DynamoDB 更复杂的情况,特别是 RCU 不适合描述需要大量计算的 GreptimeDB 读取工作负载。我们正在努力解决这个问题。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/metasrv/selector.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/metasrv/selector.md
new file mode 100644
index 0000000000..13aac3ad9f
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/metasrv/selector.md
@@ -0,0 +1,47 @@
+---
+keywords: [Selector, Metasrv, Datanode, 路由表, 负载均衡]
+description: 介绍 Metasrv 中的 Selector,包括其类型和配置方法。
+---
+
+# Selector
+
+## 介绍
+
+什么是 `Selector`?顾名思义,它允许用户从给定的 `namespace` 和 `context` 中选择 `Item`s。有一个相关的 `trait`,也叫做 `Selector`,其定义可以在[这里][0]找到。
+
+[0]: https://github.com/GreptimeTeam/greptimedb/blob/main/src/meta-srv/src/selector.rs
+
+在 `Metasrv` 中存在一个特定的场景。当 `Frontend` 向 `Metasrv` 发送建表请求时,`Metasrv` 会创建一个路由表(表的创建细节不在这里赘述)。在创建路由表时,`Metasrv` 需要选择适当的 `Datanode`s,这时候就需要用到 `Selector`。
+
+## Selector 类型
+
+`Metasrv` 目前提供以下几种类型的 `Selectors`:
+
+### LeasebasedSelector
+
+`LeasebasedSelector` 从所有可用的(也就是在租约期间内)`Datanode` 中随机选择,其特点是简单和快速。
+
+### LoadBasedSelector
+
+`LoadBasedSelector` 按照负载来选择,负载值则由每个 `Datanode` 上的 region 数量决定,较少的 region 表示较低的负载,`LoadBasedSelector` 优先选择低负载的 `Datanode`。
+
+### RoundRobinSelector [默认选项]
+`RoundRobinSelector` 以轮询的方式选择 `Datanode`。在大多数情况下,这是默认的且推荐的选项。如果你不确定选择哪个,通常它就是正确的选择。
+
+## 配置
+
+您可以在启动 `Metasrv` 服务时通过名称配置 `Selector`。
+
+- LeasebasedSelector: `lease_based` 或 `LeaseBased`
+- LoadBasedSelector: `load_based` 或 `LoadBased`
+- RoundRobinSelector: `round_robin` 或 `RoundRobin`
+
+例如:
+
+```shell
+cargo run -- metasrv start --selector round_robin
+```
+
+```shell
+cargo run -- metasrv start --selector RoundRobin
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/overview.md
new file mode 100644
index 0000000000..9f82a72171
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/overview.md
@@ -0,0 +1,24 @@
+---
+keywords: [架构, 关键概念, 数据处理, 组件交互, 数据库]
+description: 介绍 GreptimeDB 的架构、关键概念和工作原理,包括各组件的交互方式和数据处理流程。
+---
+
+# 贡献者指南
+
+DeepWiki 对 GreptimeDB 的架构和实现进行了详细且清晰的描述,强烈推荐阅读:
+
+[https://deepwiki.com/GreptimeTeam/greptimedb](https://deepwiki.com/GreptimeTeam/greptimedb)
+
+## 架构
+
+有关 GreptimeDB 的架构和组件,请参阅用户指南中的 [架构](/user-guide/concepts/architecture.md) 文档。
+
+有关每个组件的更多详细信息,请参阅以下指南:
+
+- [frontend][1]
+- [datanode][2]
+- [metasrv][3]
+
+[1]: /contributor-guide/frontend/overview.md
+[2]: /contributor-guide/datanode/overview.md
+[3]: /contributor-guide/metasrv/overview.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/tests/integration-test.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/tests/integration-test.md
new file mode 100644
index 0000000000..63ffa56bc0
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/tests/integration-test.md
@@ -0,0 +1,14 @@
+---
+keywords: [集成测试, Rust, HTTP, gRPC, 测试工具]
+description: 介绍 GreptimeDB 的集成测试,包括测试范围和如何运行这些测试。
+---
+
+# 集成测试
+
+## 介绍
+
+集成测试使用 Rust 测试工具(`#[test]`)编写,与单元测试不同,它们被单独放置在
+[这里](https://github.com/GreptimeTeam/greptimedb/tree/main/tests-integration)。
+它涵盖了涉及多个组件的场景,其中一个典型案例是与 HTTP/gRPC 相关的功能。你可以查看
+其[文档](https://github.com/GreptimeTeam/greptimedb/blob/main/tests-integration/README.md)以获取更多信息。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/tests/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/tests/overview.md
new file mode 100644
index 0000000000..81b6defa45
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/tests/overview.md
@@ -0,0 +1,9 @@
+---
+keywords: [测试]
+description: GreptimeDB 的测试
+---
+
+# 测试
+
+我们的团队进行了大量测试,以确保 GreptimeDB 的行为。本章将介绍几种用于测试 GreptimeDB 的重要方法,以及如何使用它们。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/tests/sqlness-test.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/tests/sqlness-test.md
new file mode 100644
index 0000000000..1258a45c9c
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/tests/sqlness-test.md
@@ -0,0 +1,50 @@
+---
+keywords: [Sqlness 测试, SQL, 测试套件, 测试文件, 测试案例]
+description: 介绍 GreptimeDB 的 Sqlness 测试,包括测试文件类型、组织测试案例和运行测试的方法。
+---
+
+# Sqlness 测试
+
+## 介绍
+
+SQL 是 `GreptimeDB` 的一个重要用户接口。我们为它提供了一个单独的测试套件(名为 `sqlness`)。
+
+## Sqlness 手册
+
+### 测试文件
+
+Sqlness 有三种类型的文件
+
+- `.sql`:测试输入,仅包含 SQL
+- `.result`:预期的测试输出,包含 SQL 和其结果
+- `.output`:不同的输出,包含 SQL 和其结果
+
+`.result` 和 `.output` 都是输出(执行结果)文件。区别在于 `.result` 是标准(预期)输出,而 `.output` 是错误输出。因此,如果生成了 `.output` 文件,意味着测试结果不同,测试失败。你应该检查变更日志来解决问题。
+
+你只需要在 `.sql` 文件中编写测试 SQL,然后运行测试。第一次运行时会生成 `.output` 文件,因为没有 `.result` 文件进行比较。如果你确认 `.output` 文件中的内容是正确的,可以将其重命名为 `.result`,这意味着它是预期输出。
+
+任何时候都应该只有两种文件类型,`.sql` 和 `.result` —— 否则,存在 `.output` 文件意味着测试失败。这就是为什么我们不应该在 `.gitignore` 中忽略 `.output` 文件类型,而是跟踪它并确保它不存在。
+
+### 组织测试案例
+
+输入案例的根目录是 `tests/cases`。它包含几个子目录,代表不同的测试模式。例如,`standalone/` 包含所有在 `greptimedb standalone start` 模式下运行的测试。
+
+在第一级子目录下(例如 `cases/standalone`),你可以随意组织你的测试案例。Sqlness 会递归地遍历每个文件并运行它们。
+
+## 运行测试
+
+与其他测试不同,这个测试工具是以二进制目标形式存在的。你可以用以下命令运行它
+
+```shell
+cargo run --bin sqlness-runner bare
+```
+
+它会自动完成以下步骤:编译 `GreptimeDB`,启动它,抓取测试并将其发送到服务器,然后收集和比较结果。你只需要检查是否有新的 `.output` 文件。如果没有,恭喜你,测试通过了 🥳!
+
+### 运行特定测试
+
+```shell
+cargo sqlness bare -t your_test
+```
+
+如果你指定了第二个参数,则只会执行名称中包含指定字符串的测试案例。Sqlness 还支持基于环境的过滤。过滤器接受正则表达式字符串,并会检查格式为 `env:case` 的案例名称。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/tests/unit-test.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/tests/unit-test.md
new file mode 100644
index 0000000000..79c73775b4
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/contributor-guide/tests/unit-test.md
@@ -0,0 +1,28 @@
+---
+keywords: [单元测试, Rust, nextest, 测试覆盖率, CI]
+description: 介绍 GreptimeDB 的单元测试,包括如何编写、运行和检查测试覆盖率。
+---
+
+# 单元测试
+
+## 介绍
+
+单元测试嵌入在代码库中,通常放置在被测试逻辑的旁边。它们使用 Rust 的 `#[test]` 属性编写,并可以使用 `cargo nextest run` 运行。
+
+GreptimeDB 代码库不支持默认的 `cargo` 测试运行器。推荐使用 [`nextest`](https://nexte.st/)。你可以通过以下命令安装它:
+
+```shell
+cargo install cargo-nextest --locked
+```
+
+然后运行测试(这里 `--workspace` 不是必须的)
+
+```shell
+cargo nextest run
+```
+
+注意,如果你的 Rust 是通过 `rustup` 安装的,请确保使用 `cargo` 安装 `nextest`,而不是像 `homebrew` 这样的包管理器,否则会弄乱你的本地环境。
+
+## 覆盖率
+
+我们的持续集成(CI)作业有一个“覆盖率检查”步骤。它会报告有多少代码被单元测试覆盖。请在你的补丁中添加必要的单元测试。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/db-cloud-shared/migrate/_migrate-from-prometheus.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/db-cloud-shared/migrate/_migrate-from-prometheus.md
new file mode 100644
index 0000000000..bfb0fcd02a
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/db-cloud-shared/migrate/_migrate-from-prometheus.md
@@ -0,0 +1,31 @@
+GreptimeDB 可以用来存储 [Prometheus](https://prometheus.io/) 的时间序列数据。
+此外,GreptimeDB 通过其 HTTP API 支持 Prometheus 查询语言。
+这可以使你轻松将 Prometheus 的 long-term storage 切换到 GreptimeDB。
+
+## 数据模型的区别
+
+要了解 Prometheus 和 GreptimeDB 数据模型之间的差异,请参阅 Ingest Data 文档中的[数据模型](/user-guide/ingest-data/for-observability/prometheus.md#data-model)部分。
+
+## Prometheus Remote Write
+
+
+
+## Prometheus HTTP API 与 PromQL
+
+GreptimeDB 通过其 HTTP API 支持 Prometheus 查询语言 (PromQL)。
+
+
+## 使用 Grafana 可视化数据
+
+对于习惯使用 Grafana 可视化 Prometheus 数据的开发人员,你可以继续使用相同的 Grafana 仪表板来可视化存储在 GreptimeDB 中的数据。
+
+
+## 参考阅读
+
+请参考以下博客文章查看 GreptimeDB 与 Prometheus 的集成教程及用户故事:
+
+- [如何配置 GreptimeDB 作为 Prometheus 的长期存储](https://greptime.com/blogs/2024-08-09-prometheus-backend-tutorial)
+- [Scale Prometheus:K8s 部署 GreptimeDB 集群作为 Prometheus 长期存储](https://greptime.com/blogs/2024-10-07-scale-prometheus)
+- [「用户故事」从 Thanos 到 GreptimeDB,我们实现了 Prometheus 高效长期存储](https://greptime.com/blogs/2024-10-16-thanos-migration-to-greptimedb)
+
+如果您需要更详细的迁移方案或示例脚本,请提供具体的表结构和数据量信息。[GreptimeDB 官方社区](https://github.com/orgs/GreptimeTeam/discussions)将为您提供进一步的支持。欢迎加入 [Greptime Slack](http://greptime.com/slack) 社区交流。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/db-cloud-shared/migrate/migrate-from-influxdb.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/db-cloud-shared/migrate/migrate-from-influxdb.md
new file mode 100644
index 0000000000..8cd94650fc
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/db-cloud-shared/migrate/migrate-from-influxdb.md
@@ -0,0 +1,259 @@
+本文档将帮助你了解 GreptimeDB 和 InfluxDB 的数据模型之间的区别,并指导你完成迁移过程。
+
+## 数据模型的区别
+
+要了解 InfluxDB 和 GreptimeDB 的数据模型之间的差异,请参考写入数据文档中的[数据模型](/user-guide/ingest-data/for-iot/influxdb-line-protocol.md#数据模型)。
+
+## 数据库连接信息
+
+在写入或查询数据之前,需要了解 InfluxDB 和 GreptimeDB 之间的数据库连接信息的差异。
+
+- **Token**:InfluxDB API 中的 token 用于身份验证,与 GreptimeDB 身份验证相同。
+ 当使用 InfluxDB 的客户端库或 HTTP API 与 GreptimeDB 交互时,你可以使用 `` 作为 token。
+- **Organization**:GreptimeDB 中没有组织。
+- **Bucket**:在 InfluxDB 中,bucket 是时间序列数据的容器,与 GreptimeDB 中的数据库名称相同。
+
+
+
+## 写入数据
+
+GreptimeDB 兼容 InfluxDB 的行协议格式,包括 v1 和 v2。
+这意味着你可以轻松地从 InfluxDB 迁移到 GreptimeDB。
+
+### HTTP API
+
+你可以使用以下 HTTP API 请求将 measurement 写入 GreptimeDB:
+
+
+
+### Telegraf
+
+GreptimeDB 支持 InfluxDB 行协议也意味着 GreptimeDB 与 Telegraf 兼容。
+要配置 Telegraf,只需将 GreptimeDB 的 URL 添加到 Telegraf 配置中:
+
+
+
+### 客户端库
+
+使用 InfluxDB 客户端库写入数据到 GreptimeDB 非常直接且简单。
+你只需在客户端配置中包含 URL 和身份验证信息。
+
+例如:
+
+
+
+除了上述语言之外,GreptimeDB 还支持其他 InfluxDB 支持的客户端库。
+你可以通过参考上面提供的连接信息代码片段,使用你喜欢的语言编写代码。
+
+## 查询数据
+
+GreptimeDB 不支持 Flux 和 InfluxQL,而是使用 SQL 和 PromQL。
+
+SQL 是一种通用的用于管理和操作关系数据库的语言。
+具有灵活的数据检索、操作和分析功能,
+减少了已经熟悉 SQL 的用户的学习曲线。
+
+PromQL(Prometheus 查询语言)允许用户实时选择和聚合时间序列数据,
+表达式的结果可以显示为图形,也可以在 Prometheus 的表达式浏览器中以表格数据的形式查看,
+或通过 [HTTP API](/user-guide/query-data/promql.md#prometheus-http-api) 传递给外部系统。
+
+假设你要查询过去 24 小时内记录的 `monitor` 表中的最大 CPU。
+在 InfluxQL 中,查询如下:
+
+```sql [InfluxQL]
+SELECT
+ MAX("cpu")
+FROM
+ "monitor"
+WHERE
+ time > now() - 24h
+GROUP BY
+ time(1h)
+```
+
+此 InfluxQL 查询计算 `monitor` 表中 `cpu`字段的最大值,
+其中时间大于当前时间减去 24 小时,结果以一小时为间隔进行分组。
+
+该查询在 Flux 中的表达如下:
+
+```flux [Flux]
+from(bucket: "public")
+ |> range(start: -24h)
+ |> filter(fn: (r) => r._measurement == "monitor")
+ |> aggregateWindow(every: 1h, fn: max)
+```
+
+在 GreptimeDB SQL 中,类似的查询为:
+
+```sql [SQL]
+SELECT
+ greptime_timestamp,
+ host,
+ AVG(cpu) RANGE '1h' as mean_cpu
+FROM
+ monitor
+WHERE
+ greptime_timestamp > NOW() - '24 hours'::INTERVAL
+ALIGN '1h' TO NOW
+ORDER BY greptime_timestamp DESC;
+```
+
+在该 SQL 查询中,
+`RANGE` 子句确定了 AVG(cpu) 聚合函数的时间窗口,
+而 `ALIGN` 子句设置了时间序列数据的对齐时间。
+有关按时间窗口分组的更多详细信息,请参考[按时间窗口聚合数据](/user-guide/query-data/sql.md#按时间窗口聚合数据)文档。
+
+在 PromQL 中,类似的查询为:
+
+```promql
+avg_over_time(monitor[1h])
+```
+
+要查询最后 24 小时的时间序列数据,
+你需要执行此 PromQL 并使用 HTTP API 的 `start` 和 `end` 参数定义时间范围。
+有关 PromQL 的更多信息,请参考 [PromQL](https://prometheus.io/docs/prometheus/latest/querying/basics/) 文档。
+
+## 可视化数据
+
+
+
+## 迁移数据
+
+你可以通过以下步骤实现从 InfluxDB 到 GreptimeDB 的数据无缝迁移:
+
+
+
+1. 同时将数据写入 GreptimeDB 和 InfluxDB,以避免迁移过程中的数据丢失。
+2. 从 InfluxDB 导出所有历史数据,并将数据导入 GreptimeDB。
+3. 停止向 InfluxDB 写入数据,并移除 InfluxDB 服务器。
+
+### 双写 GreptimeDB 和 InfluxDB
+
+将数据双写 GreptimeDB 和 InfluxDB 是迁移过程中防止数据丢失的有效策略。
+当使用 InfluxDB 的[客户端库](#client-libraries)时,你可以建立两个客户端实例,一个用于 GreptimeDB,另一个用于 InfluxDB。
+有关如何使用 InfluxDB 行协议将数据写入 GreptimeDB 的操作,请参考[写入数据](#write-data)部分。
+
+如果无需保留所有历史数据,
+你可以双写一段时间以积累所需的最新数据,
+然后停止向 InfluxDB 写入数据并仅使用 GreptimeDB。
+如果需要完整迁移所有历史数据,请按照接下来的步骤操作。
+
+### 从 InfluxDB v1 服务器导出数据
+
+创建一个临时目录来存储 InfluxDB 的导出数据。
+
+```shell
+mkdir -p /path/to/export
+```
+
+使用 InfluxDB 的 [`influx_inspect export` 命令](https://docs.influxdata.com/influxdb/v1/tools/influx_inspect/#export) 导出数据。
+
+```shell
+influx_inspect export \
+ -database \
+ -end \
+ -lponly \
+ -datadir /var/lib/influxdb/data \
+ -waldir /var/lib/influxdb/wal \
+ -out /path/to/export/data
+```
+
+- `-database` 指定要导出的数据库。
+- `-end` 指定要导出的数据的结束时间。
+必须是[RFC3339 格式](https://datatracker.ietf.org/doc/html/rfc3339),例如 `2024-01-01T00:00:00Z`。
+你可以使用同时写入 GreptimeDB 和 InfluxDB 时的时间戳作为结束时间。
+- `-lponly` 指定只导出行协议数据。
+- `-datadir` 指定数据目录的路径,请见[InfluxDB 数据设置](https://docs.influxdata.com/influxdb/v1/administration/config/#data-settings)中的配置。
+- `-waldir` 指定 WAL 目录的路径,请见[InfluxDB 数据设置](https://docs.influxdata.com/influxdb/v1/administration/config/#data-settings)中的配置。
+- `-out` 指定输出目录。
+
+导出的 InfluxDB 行协议数据类似如下:
+
+```txt
+disk,device=disk1s5s1,fstype=apfs,host=bogon,mode=ro,path=/ inodes_used=356810i 1714363350000000000
+diskio,host=bogon,name=disk0 iops_in_progress=0i 1714363350000000000
+disk,device=disk1s6,fstype=apfs,host=bogon,mode=rw,path=/System/Volumes/Update inodes_used_percent=0.0002391237988702021 1714363350000000000
+...
+```
+
+### 从 InfluxDB v2 服务器导出数据
+
+创建一个临时目录来存储 InfluxDB 的导出数据。
+
+```shell
+mkdir -p /path/to/export
+```
+
+使用 InfluxDB 的 [`influx inspect export-lp` 命令](https://docs.influxdata.com/influxdb/v2/reference/cli/influxd/inspect/export-lp/) 导出数据。
+
+```shell
+influxd inspect export-lp \
+ --bucket-id \
+ --engine-path /var/lib/influxdb2/engine/ \
+ --end \
+ --output-path /path/to/export/data
+```
+
+- `--bucket-id` 指定要导出的 bucket ID。
+- `--engine-path` 指定引擎目录的路径,请见[InfluxDB 数据设置](https://docs.influxdata.com/influxdb/v2.0/reference/config-options/#engine-path)中的配置。
+- `--end` 指定要导出的数据的结束时间。
+必须是[RFC3339 格式](https://datatracker.ietf.org/doc/html/rfc3339),例如 `2024-01-01T00:00:00Z`。
+你可以使用同时写入 GreptimeDB 和 InfluxDB 时的时间戳作为结束时间。
+- `--output-path` 指定输出目录。
+
+命令行的执行结果类似如下:
+
+```json
+{"level":"info","ts":1714377321.4795408,"caller":"export_lp/export_lp.go:219","msg":"exporting TSM files","tsm_dir":"/var/lib/influxdb2/engine/data/307013e61d514f3c","file_count":1}
+{"level":"info","ts":1714377321.4940555,"caller":"export_lp/export_lp.go:315","msg":"exporting WAL files","wal_dir":"/var/lib/influxdb2/engine/wal/307013e61d514f3c","file_count":1}
+{"level":"info","ts":1714377321.4941633,"caller":"export_lp/export_lp.go:204","msg":"export complete"}
+```
+
+导出的 InfluxDB 行协议数据类似如下:
+
+```txt
+cpu,cpu=cpu-total,host=bogon usage_idle=80.4448912910468 1714376180000000000
+cpu,cpu=cpu-total,host=bogon usage_idle=78.50167052182304 1714376190000000000
+cpu,cpu=cpu-total,host=bogon usage_iowait=0 1714375700000000000
+cpu,cpu=cpu-total,host=bogon usage_iowait=0 1714375710000000000
+...
+```
+
+### 导入数据到 GreptimeDB
+
+在将数据导入 GreptimeDB 之前,如果数据文件过大,建议将数据文件拆分为多个片段:
+
+```shell
+split -l 100000 -d -a 10 data data.
+# -l [line_count] 创建长度为 line_count 行的拆分文件。
+# -d 使用数字后缀而不是字母后缀。
+# -a [suffix_length] 使用 suffix_length 个字母来形成文件名的后缀。
+```
+
+你可以使用 HTTP API 导入数据,如[写入数据](#写入数据)部分所述。
+下方提供的脚本将帮助你从文件中读取数据并将其导入 GreptimeDB。
+
+假设你的当前位置是存储数据文件的目录:
+
+```shell
+.
+├── data.0000000000
+├── data.0000000001
+├── data.0000000002
+...
+```
+
+将 GreptimeDB 的连接信息设置到环境变量中:
+
+```shell
+export GREPTIME_USERNAME=
+export GREPTIME_PASSWORD=
+export GREPTIME_HOST=
+export GREPTIME_DB=
+```
+
+将数据导入到 GreptimeDB:
+
+
+
+如果您需要更详细的迁移方案或示例脚本,请提供具体的表结构和数据量信息。[GreptimeDB 官方社区](https://github.com/orgs/GreptimeTeam/discussions)将为您提供进一步的支持。欢迎加入 [Greptime Slack](http://greptime.com/slack) 社区交流。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/autopilot/region-balancer.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/autopilot/region-balancer.md
new file mode 100644
index 0000000000..195073e684
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/autopilot/region-balancer.md
@@ -0,0 +1,39 @@
+---
+keywords: [Region Balancer, Datanode, 负载均衡, 窗口大小, 负载阈值, 迁移]
+description: 介绍 Region Balancer 插件,通过配置窗口大小和负载阈值来均衡 Datanode 上的 Region 写入负载,避免频繁迁移。
+---
+
+# Region Balancer
+
+该插件用于均衡 Datanode 上的 Region 写入负载,通过指定的窗口大小和负载阈值来避免频繁的 Region 迁移。可通过添加以下配置至 Metasrv 开启 Region Rebalancer 功能。
+
+```toml
+[[plugins]]
+[plugins.region_balancer]
+
+window_size = "45s"
+
+window_stability_threshold = 2
+
+min_load_threshold = "10MB"
+
+tick_interval = "45s"
+```
+
+## 配置项说明
+
+- `window_size`: string
+ - **说明**: 滑动窗口的时间跨度,用于计算区域负载的短期平均值。窗口期内的负载变化会被平滑,减轻短期突增对负载均衡的影响。
+ - **单位**: 时间(支持格式:`"45s"` 表示 45 秒)。
+ - **建议**: 根据集群负载波动情况配置,较大的窗口会使负载均衡响应更平稳。
+- `window_stability_threshold`: integer
+ - **说明**: 连续多少个窗口必须满足触发条件后,才会进行迁移操作。该阈值用于防止频繁的平衡操作,只在持续不均衡的情况下进行 Region 迁移。
+ - **建议**: 较大的值会延迟再平衡的触发,适用于负载波动较大的系统;值为 2 表示需要至少两个连续窗口符合条件。
+- `min_load_threshold`: string
+ - **说明**: 触发 Region 迁移的最小写负载阈值(每秒字节数)。当节点的负载低于该值时,将不会触发迁移。
+ - **单位**: 字节(例如,`"10MB"` 表示 10 MiB)。
+ - **建议**: 设置为合理的最小值,防止小负载情况触发迁移。值可以根据系统实际流量进行调整。
+- `tick_interval`: string
+ - **说明**: 平衡器的运行间隔时间,控制负载均衡任务的触发频率。
+ - **单位**: 时间(例如,"45s" 表示 45 秒)。
+ - **建议**: 根据系统的响应速度和负载变化频率设置。较短的间隔可以更快响应负载变化,但可能增加系统开销。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/console-ui.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/console-ui.md
new file mode 100644
index 0000000000..4e010d7d4c
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/console-ui.md
@@ -0,0 +1,58 @@
+---
+keywords: [企业版, 管理控制台, 仪表板, 集群管理, 数据管理, 监控, UI]
+description: GreptimeDB 企业版管理控制台提供集群状态、区域管理、数据管理和监控等功能的可视化界面。
+---
+
+# 管理控制台
+
+GreptimeDB 企业版管理控制台是标准 GreptimeDB 仪表板的增强版本,为企业用户提供更全面的集群可观测性与运维能力。
+
+
+## 集群概览
+
+**Overview** 页面展示集群整体运行状态和资源使用情况。
+
+- **Service Overview**:CPU、内存、存储使用率;数据写入速率;各协议请求速率。
+- **Storage Overview**:数据库数、表数、区域数;Manifest、WAL、Index 文件大小。
+- **Cluster**:节点类型;节点运行状态与资源使用率。
+
+
+
+## 运维操作
+
+**Region Management** 提供 Region 级别的运维能力。
+
+- **Datanodes 视角**:查看各数据节点及 Region 详情,包括 Region ID、所属表、存储大小、WAL/Manifest/Index 占用、行数。
+- **Tables 视角**:按表查看 Region 分布,支持展开查看 Region 信息。
+- **Region 维护**:支持 Flush 与 Compact。
+- **Region 迁移**:将 Region 从一个节点迁移到另一个节点,支持超时配置和实时迁移状态展示。
+
+
+
+
+
+## 数据管理
+
+**Data Management** 页面提供 SQL/PromQL 查询、数据写入、日志查询、日志管道、链路追踪和 Flow 管理等功能。这些功能与开源版 Dashboard 和 Cloud Dashboard 保持一致,此处不再展开说明。
+
+## 监控功能
+
+**Monitoring** 页面提供全方位的指标与日志监控。
+
+### 指标监控(Metrics)
+
+提供多个分组的监控指标,包括 Overview、Ingestion、Queries、Resources、Frontend Requests、Frontend to Datanode、Mito Engine、OpenDAL、Metasrv 和 Flownode,覆盖集群运行状态、请求速率、延迟、资源使用等关键数据。
+
+
+
+### 实例日志搜索(Instance Logs)
+
+支持按角色、实例、日志级别、时间范围和关键词筛选集群日志,结果可导出为 JSON。
+
+
+
+### 慢查询分析(Slow Query)
+
+展示执行时间较长的 SQL/PromQL 查询,支持查看耗时、语句详情,并可使用 **Explain Query** 分析执行计划。
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/authentication.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/authentication.md
new file mode 100644
index 0000000000..f567cc516b
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/authentication.md
@@ -0,0 +1,83 @@
+---
+keywords: [LDAP 鉴权, simple bind, search bind, 配置示例, 身份验证]
+description: 介绍 GreptimeDB Enterprise 中的 LDAP 鉴权功能,包括 simple bind 和 search bind 两种模式的配置示例及使用方法。
+---
+
+# LDAP 鉴权
+
+除了 GreptimeDB OSS 中内置的 [Static User Provider](/user-guide/deployments-administration/authentication/static.md),
+GreptimeDB Enterprise 还提供了连接到外部 LDAP 服务器进行身份验证的功能。
+
+## 配置
+
+与 [PostgreSQL 中的 LDAP 机制相似](https://www.postgresql.org/docs/current/auth-ldap.html),在 GreptimeDB 中,LDAP 鉴权也分为两种模式:"simple bind" 和 "search bind"。
+
+在 "simple bind" 模式下,GreptimeDB 会构造一个格式为 `{prefix}{username}{suffix}` 的 "DN"(distinguished name)
+,并使用客户端传来的密码向 LDAP 服务发起”绑定 (bind)“。绑定的结果就是鉴权的结果。一个典型配置是,`prefix` 参数指定 `cn=`,
+`suffix` 用于指定 DN 的其余部分。`username` 将会被替换为客户端发来的用户名。
+
+以下一个 LDAP user provider "simple bind" 模式的配置文件示例:
+
+```toml
+# LDAP 服务地址。
+server = "127.0.0.1"
+# LDAP 服务端口。
+port = 636
+# 设置为 "ldap" 以使用 LDAP scheme,"ldaps" 以使用 LDAPS。
+# GreptimeDB 和 LDAP 服务之间的连接一开始时是未加密的。连接建立后升级到 TLS。这是 LDAPv3 的 "StartTLS" 标准。
+scheme = "ldaps"
+
+# LDAP 鉴权模式。`bind = "simple"` 和 `bind = "search"` 只能选择其一。
+[auth_mode]
+# 以下配置仅在 simple bind 模式下使用:
+bind = "simple"
+# 当进行 simple bind 鉴权时,用于构造绑定 DN 的前缀。
+prefix = "cn="
+# 当进行 simple bind 鉴权时,用于构造绑定 DN 的后缀。
+suffix = ",dc=example,dc=com"
+```
+
+在 "search bind" 模式中,GreptimeDB 首先会使用配置文件中设置的固定用户名和密码(`bind_dn` 和 `bind_passwd`)尝试绑定到 LDAP
+目录。然后 GreptimeDB 会在 LDAP 目录中搜索尝试登录到数据库的用户。搜索将在 `base_dn` 下的子树中进行,由 `search_filter`
+过滤,并尝试对 `search_attribute` 中指定的属性进行精确匹配。一旦在搜索中找到用户,GreptimeDB
+会以此用户重新绑定到目录,使用客户端指定的密码,以验证登录是否正确。这种方法允许用户对象在 LDAP 目录中的位置更加灵活,但会导致向
+LDAP 服务器发出两个额外的请求。
+
+以下 toml 片段展示了 GreptimeDB LDAP user provider "search bind" 模式的配置文件示例。在上面的 "simple bind" 模式配置文件中显示的
+`server`、`port` 和 `scheme` 的公共部分被省略了:
+
+```toml
+[auth_mode]
+# 以下配置仅在 search bind 模式下使用:
+bind = "search"
+# 进行 search bind 鉴权时,开始搜索用户的根 DN。
+base_dn = "ou=people,dc=example,dc=com"
+# 进行 search bind 鉴权时,首先进行绑定的用户 DN。
+bind_dn = "cn=admin,dc=example,dc=com"
+# 进行 search bind 鉴权时,首先进行绑定的用户密码。
+bind_passwd = "secret"
+# 进行 search bind 鉴权时,用于匹配的用户属性。
+# 如果未指定属性,则将使用 uid 属性。
+search_attribute = "cn"
+# 进行 search bind 鉴权时,使用的搜索过滤器。
+# "$username" 将被替换为客户端传来的用户名。
+# 这允许比 search_attribute 更灵活的用户搜索。
+search_filter = "(cn=$username)"
+```
+
+## 在 GreptimeDB 中使用 LDAP User Provider
+
+要使用 LDAP User Provider,首先参照上文配置你的 LDAP 鉴权模式,然后在启动 GreptimeDB 时使用 `--user-provider` 参数,将其设置为
+`ldap_user_provider:`。例如,如果你有一个配置文件是 `/home/greptimedb/ldap.toml`,你可以使用以下命令启动一个
+standalone GreptimeDB:
+
+```shell
+greptime standalone start --user-provider=ldap_user_provider:/home/greptimedb/ldap.toml
+```
+
+现在你就可以使用你的 LDAP 用户账户创建一个连接到 GreptimeDB 了。
+
+:::tip 注意
+如果你使用 MySQL CLI 连接到配置了 LDAP User Provider 的 GreptimeDB,你需要在 MySQL CLI 中指定
+`--enable-cleartext-plugin`。
+:::
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/backup.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/backup.md
new file mode 100644
index 0000000000..23ab7c9151
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/backup.md
@@ -0,0 +1,20 @@
+---
+keywords: [备份元数据, 备份数据库, GreptimeDB 备份]
+description: GreptimeDB 备份指南,包括备份元数据和数据库的步骤。
+---
+
+# 备份
+
+## 备份元数据
+
+GreptimeDB 集群的元数据存储可以存储在 etcd 或者关系数据库中。对于重要的集群,建议使用云厂商提供的关系数据库服务(rds)并开启定期备份功能。
+
+请参考[元数据导出与导入工具](/user-guide/deployments-administration/disaster-recovery/back-up-&-restore-meta-data.md) 了解更多细节。
+
+## 备份数据库
+
+由于对象存储一般会存储多个副本,如果 GreptimeDB 的数据存储在对象存储上,则通常无需再额外备份数据库。你也可以考虑开启对象存储的多版本特性,以避免出现误操作导致的数据丢失。
+
+你还可以使用 GreptimeDB 的 `COPY DATABASE` 功能来创建备份。
+请参考[数据导出和导入工具](/user-guide/deployments-administration/disaster-recovery/back-up-&-restore-data.md)文档了解更多信息。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/deploy-on-kubernetes/configure-datanode-groups.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/deploy-on-kubernetes/configure-datanode-groups.md
new file mode 100644
index 0000000000..ee3bfbfe37
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/deploy-on-kubernetes/configure-datanode-groups.md
@@ -0,0 +1,99 @@
+---
+keywords: [Kubernetes, deployment, GreptimeDB, datanode groups, CRD, installation, verification]
+description: 在 Kubernetes 上部署带有 datanode 组的 GreptimeDB 集群的分步指南,包括先决条件、配置、安装和验证。
+---
+
+# 部署具有 Datanode 组的 GreptimeDB 集群
+
+在本指南中,你将学习如何在 Kubernetes 上部署具有 datanode 组的 GreptimeDB 集群,该组由多个 datanode 实例组成。
+
+## 先决条件
+
+- [Docker](https://docs.docker.com/get-started/get-docker/) >= v23.0.0
+- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) >= v1.18.0
+- [Helm](https://helm.sh/docs/intro/install/) >= v3.0.0
+- [GreptimeDB Operator](https://github.com/GrepTimeTeam/greptimedb-operator) >= v0.3.0
+
+## 升级 operator
+
+安装 GreptimeDB Operator,将镜像版本设置为大于或等于 `v0.3.0`。
+有关升级 operator 的详细说明,请参阅 [GreptimeDB Operator 管理](/user-guide/deployments-administration/deploy-on-kubernetes/greptimedb-operator-management.md#升级)指南。
+
+## Datanode 组配置
+
+在企业版中,你可以配置 **datanode 组**来将读写工作负载分离到不同的组中。
+datanode 接受 `workload_types` 字段来区分其工作负载类型。支持的类型有 **`hybrid`**、**`query`** 和 **`ingest`**:
+
+* **`hybrid`** 是默认值,作为 `query` 和 `ingest` 的超集,允许 datanode 处理两种工作负载。
+* **`query`** 为读负载优化,datanode 只处理读负载。
+* **`ingest`** 为写负载优化,datanode 只处理写负载。
+
+虽然 `hybrid` 很方便,但在同一个 datanode 上同时进行读写操作可能会相互干扰,例如,一个大查询可能占用过多资源,从而影响在线写入。为了获得最佳性能,建议将读写工作负载分离到不同的 datanode 组中。
+在配置 datanode 组时,确保每个组都包含 `name` 字段。以下 `values.yaml` 示例展示了如何定义单独的 datanode 组:
+
+```yaml
+danodata:
+ enabled: false
+
+datanodeGroups:
+ - name: write
+ replicas: 1
+ config: |
+ workload_types = ["ingest"]
+ template:
+ main:
+ resources:
+ requests:
+ cpu: 4
+ memory: 8Gi
+ storage:
+ fs:
+ storageClassName: ${storageClassName}
+ storageSize: 100Gi
+ - name: read
+ replicas: 1
+ config: |
+ workload_types = ["query"]
+ template:
+ main:
+ resources:
+ limits:
+ cpu: 8
+ memory: 16Gi
+
+meta:
+ replicas: 1
+ backendStorage:
+ etcd:
+ endpoints:
+ - "etcd.etcd-cluster.svc.cluster.local:2379"
+
+frontend:
+ replicas: 1
+```
+
+有关为 Metasrv 配置替代元数据存储后端的指导,请参阅[元数据存储配置](/user-guide/deployments-administration/manage-metadata/configuration.md)文档。
+
+你可以使用以下命令应用上述配置:
+```
+helm upgrade --install ${release-name} greptime/greptimedb-cluster --namespace ${namespace} -f values.yaml
+```
+
+## 校验安装
+
+检查 Pod 的状态:
+
+```bash
+kubectl get pods -n default
+NAME READY STATUS RESTARTS AGE
+weny-cluster-datanode-read-0 1/1 Running 0 30s
+weny-cluster-datanode-write-0 1/1 Running 0 30s
+weny-cluster-frontend-774c76cffc-znvrw 1/1 Running 0 30s
+weny-cluster-meta-58977b7897-8k2sf 1/1 Running 0 90s
+```
+
+## 后续步骤
+
+- 为了获得最佳性能,建议[配置 frontend 组](/user-guide/deployments-administration/deploy-on-kubernetes/configure-frontend-groups.md),这确保读写流量的完全分离,实现最大隔离。
+
+- 为你的表添加读副本,请参阅[读副本](/enterprise/read-replicas/overview.md)。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/deploy-on-kubernetes/installation.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/deploy-on-kubernetes/installation.md
new file mode 100644
index 0000000000..4cd87405fe
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/deploy-on-kubernetes/installation.md
@@ -0,0 +1,42 @@
+---
+keywords: [Kubernetes 部署, GreptimeDB 企业版, 安装 GreptimeDB, 启动 GreptimeDB, 私有 docker 仓库, helm chart]
+description: 在 Kubernetes 上安装 GreptimeDB 企业版的步骤,包括获取镜像、安装 GreptimeDB Operator 和 etcd 集群、配置 values.yaml 和启动 GreptimeDB。
+---
+
+# 部署 GreptimeDB 集群
+
+GreptimeDB 企业版以 docker 镜像发布。我们为每位国内的客户提供了一个单独的、托管在阿里云上的私有 docker 仓库,你可以使用 docker pull 命令直接拉取,或在 helm chart 中配置。
+
+## 获取 GreptimeDB 企业版镜像
+
+你需要在 helm chart 的 `values.yaml` 文件中配置镜像信息以获得专属的 GreptimeDB 企业版,例如:
+
+```yaml
+customImageRegistry:
+ enabled: true
+ # -- pull secret 名称,可自定义,需要和 `image.pullSecrets` 保持一致
+ secretName: greptimedb-custom-image-pull-secret
+ registry:
+ username:
+ password:
+
+image:
+ registry:
+ repository:
+ tag:
+ pullSecrets:
+ - greptimedb-custom-image-pull-secret
+```
+
+上述配置中,
+`customImageRegistry` 中的 `registry`、`username` 和 `password` 用于创建 k8s 的 pull secret,
+`image` 中的 `registry`、`repository` 和 `tag` 用于指定 GreptimeDB 企业版镜像,
+因此 `customImageRegistry.secretName` 和 `image.pullSecrets` 需要保持一致以保证拉取镜像时能够找到正确的认证信息。
+
+请联系 Greptime 工作人员获取上述配置项的具体值。
+Greptime 工作人员在首次交付给你 GreptimeDB 企业版时,会通过邮件或其他方式告知你 docker 仓库地址和用户名密码。请妥善保存,并切勿分享给外部人员!
+
+## 安装及启动
+
+请参考[部署 GreptimeDB 集群](/user-guide/deployments-administration/deploy-on-kubernetes/deploy-greptimedb-cluster.md)文档。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/deploy-on-kubernetes/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/deploy-on-kubernetes/overview.md
new file mode 100644
index 0000000000..75c8e8bdff
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/deploy-on-kubernetes/overview.md
@@ -0,0 +1,18 @@
+---
+keywords: [Kubernetes 部署, Operator 模式, 自动化管理, 集群部署, 单机实例, 私有云, 公有云]
+description: 在 Kubernetes 上部署 GreptimeDB 的概述,包括集群的安装、升级和监控等内容。
+---
+
+# 在 Kubernetes 上部署 GreptimeDB
+
+GreptimeDB 企业版在 Kubernetes 上的部署流程与开源版基本一致,本章节将重点介绍企业版特有的部署配置和功能。
+
+## 安装
+
+要了解如何通过 Helm Chart 启动 GreptimeDB,请前往[安装 GreptimeDB](./installation.md) 页面。
+
+## 升级
+
+请前往[升级 GreptimeDB](./upgrade.md) 页面了解如何升级 GreptimeDB。
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/deploy-on-kubernetes/upgrade.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/deploy-on-kubernetes/upgrade.md
new file mode 100644
index 0000000000..1bfc3e0bc7
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/deploy-on-kubernetes/upgrade.md
@@ -0,0 +1,17 @@
+---
+keywords: [升级 GreptimeDB, Metasrv 运维模式]
+description: 在 Kubernetes 上升级 GreptimeDB 的步骤,包括直接升级和不使用 GreptimeDB Operator 升级集群的方式。
+---
+
+# 升级
+
+## 直接升级
+
+单独升级 GreptimeDB 企业版的镜像非常简单,只需要在 helm chart 中修改 `tag` 后重启即可。
+
+## 不使用 GreptimeDB Operator 升级集群
+
+在不使用 GreptimeDB Operator 升级集群时,在操作各组件之前(例如,滚动升级 Datanode 节点),必须手动开启 Metasrv 的运维模式。升级完成后,需等待所有组件状态恢复健康,再关闭 Metasrv 的运维模式。在开启 Metasrv 运维模式后,集群中的 Auto Balancing(如启用)以及 Region Failover(如启用)机制将暂停触发,直至运维模式关闭。
+
+请参考[管理运维模式](/user-guide/deployments-administration/maintenance/maintenance-mode.md#管理维护模式)了解如何开启和关闭运维模式。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/disaster-recovery/dr-solution-based-on-active-active-failover.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/disaster-recovery/dr-solution-based-on-active-active-failover.md
new file mode 100644
index 0000000000..490c998c41
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/disaster-recovery/dr-solution-based-on-active-active-failover.md
@@ -0,0 +1,69 @@
+---
+keywords: [双活互备, 灾难恢复, RPO, RTO, 故障转移, 读写模式]
+description: 介绍 GreptimeDB 中基于双活互备的灾难恢复解决方案,包括不同读写模式的 RPO 和 RTO 目标,以及故障转移的处理方法。
+---
+
+# 基于双活互备的 DR 解决方案
+
+## RPO
+
+在 GreptimeDB 的“双活互备”架构中,有两个节点,分别独立部署了 GreptimeDB 服务。这两个节点都可以提供客户端执行读写的能力。然而,为了达到
+RTO 和 RPO 的目标,我们需要对两节点进行一些配置。首先我们介绍一下在“双活互备”架构中读写的模式。
+
+对于读操作:
+
+- `SingleRead`:读操作只在一个节点上执行,结果直接返回给客户端。
+- `DualRead`:读操作在两个节点上都执行,结果将会合并去重后返回给客户端。
+
+下图展示了这两种读操作模式的区别:
+
+
+
+对于写操作:
+
+- `SyncWrite`:写操作在两个节点上都执行,只有在两个节点都写成功后才会返回给客户端(成功)。
+- `AsyncWrite`:写操作仍然在两个节点上执行,但是在发起节点写成功后就会返回给客户端。另一个节点会异步地从发起节点接收写操作的复制。
+
+下图展示了这两种写操作模式的区别:
+
+
+
+所以读写操作有四种组合,它们的 RPO 如下:
+
+| RPO | `SingleRead` | `DualRead` |
+|--------------|--------------|------------|
+| `SyncWrite` | 0 | 0 |
+| `AsyncWrite` | 两节点之间的网络延迟 | 0 |
+
+在 `SyncWrite` 模式下,由于两个节点之间的写操作是同步的,所以 RPO 总是 0,无论读操作是什么模式。然而,`SyncWrite`
+要求两个节点同时正常运行以处理写操作。如果你的工作负载是读多写少,并且可以容忍一段系统不可用的时间来恢复两个节点的健康状态,我们建议使用 `SyncWrite + SingleRead`
+组合。
+
+另一个可以达到 0 RPO 的组合是 `AsyncWrite + DualRead`。这是上面所说的相反情况,适用于写多读少的工作负载,两节点可用性的限制要求可以降低。
+
+最后一个组合是 `AsyncWrite + SingleRead`。这是对两节点可用性最宽松的要求。如果两个节点之间的网络状况良好,并且节点可以被可靠地托管,例如,两个节点托管在一个
+AZ(可用区,或“数据中心”)内的虚拟机系统中,你可能更倾向这种组合。当然,只要记住 RPO 不是 0。
+
+## RTO
+
+为了保持我们的双活互备架构的最低需求,我们没有要求第三个节点或第三个服务来处理 GreptimeDB 的故障转移。一般来说,有几种方法可以处理故障转移:
+
+- 通过一个 LoadBalancer。如果你可以额外腾出另一个节点来部署一个 LoadBalancer
+ 如 [Nginx](https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/),或者你有其他 LoadBalance
+ 服务,我们推荐这种方式。
+
+- 通过客户端 SDK 的故障转移机制。例如,如果你使用 MySQL Connector/j,你可以通过在连接 URL
+ 中设置多个主机和端口来配置故障转移(参见其[文档](https://dev.mysql.com/doc/connector-j/en/connector-j-config-failover.html)
+ )。PostgreSQL 的驱动程序[也有相同的机制](https://jdbc.postgresql.org/documentation/use/#connection-fail-over)
+ 。这是处理故障转移最简单的方法,但并不是每个客户端 SDK 都支持这种故障转移机制。
+
+- 内部的 endpoint 更新机制。如果你可以检测到节点的故障,那么就可以在你的代码中更新 GreptimeDB 的 endpoint。
+
+:::tip NOTE
+请参考 "[解决方案比较](/user-guide/deployments-administration/disaster-recovery/overview.md#解决方案比较)" 来比较不同灾难恢复解决方案的 RPO 和 RTO。
+:::
+
+## 总结
+
+在 GreptimeDB 的“双活互备”架构中,你可以选择不同的读写模式组合来实现你的 RPO 目标。至于 RTO,我们依赖外部机制来处理故障转移。一个
+LoadBalancer 是最适合的。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/disaster-recovery/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/disaster-recovery/overview.md
new file mode 100644
index 0000000000..a8ba5a20b1
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/disaster-recovery/overview.md
@@ -0,0 +1,12 @@
+---
+keywords: [灾难恢复, DR 解决方案, 双活互备, 数据库, 恢复方案]
+description: 概述 GreptimeDB Enterprise 中的灾难恢复解决方案,特别是基于双活互备的 DR 解决方案,并提供相关链接以获取更多信息。
+---
+
+# 灾难恢复
+
+作为分布式数据库,GreptimeDB 提供了不同的灾难恢复(DR)解决方案。
+
+请参考 GreptimeDB OSS 文档中的[灾难恢复概述](/user-guide/deployments-administration/disaster-recovery/overview.md)了解 Greptime 提供的所有灾难恢复解决方案。本章节仅介绍在 GreptimeDB Enterprise 中提供的解决方案。
+
+- [基于双活互备的 DR 解决方案](./dr-solution-based-on-active-active-failover.md)
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/audit-logging.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/audit-logging.md
new file mode 100644
index 0000000000..cadd26f082
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/audit-logging.md
@@ -0,0 +1,81 @@
+---
+keywords: [审计日志, 配置方法, 监控数据库操作, 合规性, JSON 格式]
+description: 介绍 GreptimeDB 中的审计日志功能,包括审计日志的格式、配置方法及注意事项,帮助用户监控数据库操作并确保合规性。
+---
+
+# 审计日志
+
+数据库的审计日志记录了对数据库执行的操作。审计日志有助于监控用户活动,检测可疑操作,并确保组织内外的合规性。本文档提供了
+GreptimeDB 中审计日志的概述以及如何配置它。
+
+## 概述
+
+一条在 GreptimeDB 上执行的语句(SQL 或 PromQL)会被记录在审计日志中(当然,前提是已经将其配置为需要被审计)。以下是审计日志中的一条示例记录:
+
+```json
+{
+ "time": "2024-11-05T06:13:19.903713Z",
+ "user": "greptime_user",
+ "source": "Mysql",
+ "class": "Ddl",
+ "command": "Create",
+ "object_type": "Database",
+ "object_names": [
+ "audit_test"
+ ],
+ "statement": "CREATE DATABASE audit_test"
+}
+```
+
+正如您所见,一条审计日志的记录被格式化为 JSON 字符串。它包含以下字段:
+
+- `time`: 语句执行的时间。格式为带有 UTC 时区的 ISO 8601 日期和时间的字符串。
+- `user`: 发送该请求的用户。
+- `source`: 请求的来源,也即用于连接到 GreptimeDB 的协议。
+- `class`: 语句的类别,如 "Read"、"Write" 或 "DDL" 等。
+- `command`: 语句的命令,如 "Select"、"Insert" 或 "Create" 等。
+- `object_type`: 语句操作的对象的类型,如 "Database"、"Table" 或 "Flow" 等。
+- `object_names`: 语句操作的对象的名称。
+- `statement`: 语句本身。
+
+## 配置
+
+审计日志作为 GreptimeDB 的插件提供。要启用并配置它,请将以下 TOML 添加到 GreptimeDB 配置文件中:
+
+```toml
+[[plugins]]
+# 将审计日志插件添加到 GreptimeDB 中。
+[plugins.audit_log]
+# 是否启用审计日志,默认为 true。
+enable = true
+# 存储审计日志文件的目录。默认为 "./greptimedb_data/logs/"。
+dir = "./greptimedb_data/logs/"
+# 允许审计的语句的来源。此选项作为过滤器:如果语句不来自这些配置的来源之一,则不会记录在审计日志中。
+# 多个来源用逗号(",")分隔。
+# 所有可配置的来源是 "Http"、"Mysql" 和 "Postgres"。
+# 一个特殊的 "all"(默认值)表示所有来源。
+sources = "all"
+# 允许审计的语句的类别。此选项作为过滤器:如果语句的类别不匹配这些配置的值之一,则不会记录在审计日志中。
+# 多个类别用逗号(",")分隔。
+# 所有可配置的类别是 "Read"、"Write"、"Admin"、"DDL" 和 "Misc"。
+# 一个特殊的 "all" 表示所有类别。默认值为 "DDL" 和 "Admin"。
+classes = "ddl,admin"
+# 允许审计的语句的命令。此选项作为过滤器:如果语句的命令不匹配这些配置的值之一,则不会记录在审计日志中。
+# 多个命令用逗号(",")分隔。
+# 所有可配置的命令是 "Promql"、"Select"、"Copy"、"Insert"、"Delete"、"Create"、"Alter"、"Truncate"、"Drop"、"Admin" 和 "Misc"。
+# 一个特殊的 "all"(默认值)表示所有命令。
+commands = "all"
+# 允许审计的对象类型。此选项作为过滤器:如果语句的目标对象不匹配这些配置的值之一,则不会记录在审计日志中。
+# 多个对象类型用逗号(",")分隔。
+# 所有可配置的对象类型是 "Database"、"Table"、"View"、"Flow"、"Index" 和 "Misc"。
+# 一个特殊的 "all"(默认值)表示所有对象类型。
+object_types = "all"
+# 保留的审计日志文件的最大数量。默认为 30。
+# 审计日志每天生成一个新的。
+max_log_files = 30
+```
+
+## 注意
+
+如果没有正确配置的话,审计日志可能会非常庞大。例如,在业务繁忙的 GreptimeDB 中,将 "`all`" 设置给所有的 `sources`,`classes`,
+`commands` 和 `object_types` 会记录在 GreptimeDB 上执行的所有语句,导致一个非常大的审计日志文件。这可能会轻易地耗尽磁盘空间。因此,强烈建议合理地配置审计日志插件以避免这种情况。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/check-db-status.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/check-db-status.md
new file mode 100644
index 0000000000..5e29296b4a
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/check-db-status.md
@@ -0,0 +1,8 @@
+---
+keywords: [GreptimeDB 健康检查, GreptimeDB 运行状态, GreptimeDB 部署状态, GreptimeDB 运行指标]
+description: 通过 HTTP 接口检查 GreptimeDB 的健康状态、部署状态和运行指标。
+---
+
+# 检查 GreptimeDB 状态
+
+请参考[开源 GreptimeDB 文档](/user-guide/deployments-administration/monitoring/check-db-status.md)了解如何检查 GreptimeDB 的健康状态。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/key-logs.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/key-logs.md
new file mode 100644
index 0000000000..f093e71395
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/key-logs.md
@@ -0,0 +1,24 @@
+---
+keywords: [关键日志, 错误日志, 运维日志, GreptimeDB 日志]
+description: 通过关键日志了解 GreptimeDB 的运行情况,以及排查错误出现的原因。
+---
+
+# 运维关键日志
+
+GreptimeDB 在运行过程中,会将一些关键的操作以及预期外的错误信息输出到日志中。
+你可以通过这些日志了解 GreptimeDB 的运行情况,以及排查错误出现的原因。
+
+## GreptimeDB 运维日志
+
+请参考 GreptimeDB OSS 文档中的[重要日志](/user-guide/deployments-administration/monitoring/key-logs.md)部分。
+
+## License 过期
+
+对于 GreptimeDB 的企业版,建议监控 license 的到期日志以确保不间断使用企业版功能。
+企业版的 license 过期时,metasrv 会打印如下 warning 日志,
+这时需要及时联系 Greptime 获取新的 license
+
+```bash
+License is expired at xxx, please contact your GreptimeDB vendor to renew it
+```
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/key-metrics.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/key-metrics.md
new file mode 100644
index 0000000000..fef15070a2
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/key-metrics.md
@@ -0,0 +1,29 @@
+---
+keywords: [监控关键指标, GreptimeDB 监控, GreptimeDB 关键指标, GreptimeDB 集群监控]
+description: 监控 GreptimeDB 集群的关键指标,包括 CPU、内存、磁盘 I/O 和网络带宽的使用情况。
+---
+
+# 关键指标监控
+
+监控的关键指标包括 CPU、内存、磁盘 I/O 和网络带宽的使用情况。
+
+## 告警指标
+
+告警系统各公司一般都有自己使用的,配置方法可能各不相同,因此本文档不列举具体的告警配置方式,只列出部分需要关注的指标,可以基于这些指标配置一个是否长时间(超过数分钟)处于不正常数值的告警。你可以根据实际情况设置告警的水位。
+
+| 指标 | 含义 | 参考规则 |
+| --- | --- | --- |
+| `sum(process_resident_memory_bytes{}) by (instance, pod)` | 进程的内存占用 | 占用率持续大于阈值 |
+| `sum(rate(process_cpu_seconds_total{}[$__rate_interval]) * 1000) by (instance, pod)` | 进程的 CPU 暂用,CPU 显示的是 millicore | 利用率持续大于阈值 |
+| `sum by(instance, pod) (greptime_mito_write_stall_total{instance=~"$datanode"})` | datanode 积压的写入请求数量 | 持续 n 分钟大于 0 |
+| `sum(rate(greptime_table_operator_ingest_rows{instance=~"$frontend"}[$__rate_interval]))` | 当前每秒写入的行数 | 持续 n 分钟跌 0(或低于阈值) |
+| `greptime_mito_compaction_failure_total` | compaction 失败 | 最近新增大于 0 |
+| `greptime_mito_flush_failure_total` | flush 失败 | 最近新增大于 0 |
+| `sum by(instance, pod, path, method, code) (rate(greptime_servers_http_requests_elapsed_count{path!~"/health\|/metrics"}[$__rate_interval]))` | HTTP 请求数和返回的响应码 | 响应码 200 的请求数量持续 n 分钟低于阈值或者响应码非 200 的请求数量持续 n 分钟大于正常阈值 |
+| `sum by (instance, pod) (rate(greptime_mito_write_rows_total{instance=~"$datanode"}[$__rate_interval]))` | 存储引擎写入行数 | 持续 n 分钟低于正常阈值 |
+
+Pod 维度还建议配置磁盘告警,当磁盘水位超过某个阈值后进行告警。
+此外,也可以根据运维[关键日志](key-logs.md)中所列举的错误日志中的关键字监控以下事件:
+
+- Region 续租失败
+- Region failover
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/overview.md
new file mode 100644
index 0000000000..289afbb482
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/overview.md
@@ -0,0 +1,14 @@
+---
+keywords: [监控, GreptimeDB 监控, 监控指标, 监控配置, 监控日志]
+description: GreptimeDB 监控概述,介绍 GreptimeDB 的监控指标、配置和日志等内容。
+---
+
+import DocCardList from '@theme/DocCardList';
+
+# 监控
+
+有效的数据库管理很大程度上依赖于监控。
+你可以使用以下方法监控 GreptimeDB:
+
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/self-monitor-cluster.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/self-monitor-cluster.md
new file mode 100644
index 0000000000..dd5861426c
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/monitoring/self-monitor-cluster.md
@@ -0,0 +1,116 @@
+---
+keywords: [Kubernetes 部署, 企业集群, 监控]
+description: 在 Kubernetes 上为 GreptimeDB 企业集群部署自监控的完整指南,包括 Grafana 仪表板设置和配置选项
+---
+
+# 自监控 GreptimeDB 集群
+
+在阅读本文档之前,请确保你了解如何[在 Kubernetes 上部署 GreptimeDB 企业集群](/enterprise/deployments-administration/deploy-on-kubernetes/installation.md)。
+本文将介绍在部署 GreptimeDB 集群时如何配置监控。
+
+## 快速开始
+
+你可以通过在使用 Helm Chart 部署 GreptimeDB 集群时向 `values.yaml` 文件添加配置来启用监控和 [GreptimeDB 控制台](/enterprise/console-ui.md)。
+以下是部署带有监控和 GreptimeDB 控制台的最小 GreptimeDB 集群的完整 `values.yaml` 文件示例:
+
+```yaml
+customImageRegistry:
+ enabled: true
+ # -- pull secret 名称,可自定义,需要和 `image.pullSecrets` 保持一致
+ secretName: greptimedb-custom-image-pull-secret
+ # 请咨询工作人员获得 registry、username 和 password
+ registry:
+ username:
+ password:
+
+image:
+ registry:
+ repository:
+ tag:
+ pullSecrets:
+ - greptimedb-custom-image-pull-secret
+
+initializer:
+ # 请咨询工作人员获得 registry、repository 和 tag
+ registry:
+ repository: greptime/greptimedb-initializer
+ tag:
+
+monitoring:
+ # 启用监控
+ enabled: true
+
+greptimedb-enterprise-dashboard:
+ # 启用 greptimedb-enterprise-dashboard 部署。
+ # 需要首先启用监控(monitoring.enabled: true)
+ enabled: true
+ image:
+ # 请咨询工作人员获得 repository 和 tag
+ repository:
+ tag:
+
+frontend:
+ replicas: 1
+
+meta:
+ replicas: 1
+ backendStorage:
+ etcd:
+ endpoints: "etcd.etcd-cluster.svc.cluster.local:2379"
+
+datanode:
+ replicas: 1
+```
+
+启用 `monitoring` 后,GreptimeDB Operator 会额外启动一个 GreptimeDB Standalone 实例来收集 GreptimeDB 集群的指标和日志。
+为了收集日志数据,GreptimeDB Operator 会在每个 Pod 中启动一个 [Vector](https://vector.dev/) Sidecar 容器。
+
+当启用 `greptimedb-enterprise-dashboard` 时,GreptimeDB Operator 会部署企业版控制台,它使用为集群监控配置的 GreptimeDB Standalone 实例作为数据源,并为 GreptimeDB 集群提供管理功能。
+
+使用上述 `values.yaml` 文件安装 GreptimeDB 集群:
+
+```bash
+helm upgrade --install mycluster \
+ greptime/greptimedb-cluster \
+ --values /path/to/values.yaml \
+ -n default
+```
+
+接下来参考下方的[访问 GreptimeDB 企业控制台](#访问-greptimedb-控制台)部分了解如何访问控制台。
+
+## 监控配置
+
+请参考开源 GreptimeDB 的[监控配置](/user-guide/deployments-administration/monitoring/cluster-monitoring-deployment.md#配置监控数据的收集)文档获取详细的监控配置说明。
+
+## GreptimeDB 控制台配置
+
+### 启用 GreptimeDB 控制台
+
+请在 `values.yaml` 中添加以下配置启用 GreptimeDB 控制台。
+注意该功能需要首先启用监控(`monitoring.enabled: true`):
+
+```yaml
+monitoring:
+ enabled: true
+
+greptimedb-enterprise-dashboard:
+ enabled: true
+```
+
+### 访问 GreptimeDB 控制台
+
+你可以通过将服务端口转发到本地来访问 GreptimeDB 控制台:
+
+```bash
+kubectl -n ${namespace} port-forward svc/${cluster-name}-greptimedb-enterprise-console 18080:19095
+```
+
+然后打开 `http://localhost:18080` 访问 GreptimeDB 控制台。
+
+有关控制台功能和界面的详细信息,请参考[控制台](/enterprise/console-ui.md)文档。
+
+## 清理 PVC
+
+请参考开源 GreptimeDB 文档的[清理 PVC](/user-guide/deployments-administration/monitoring/cluster-monitoring-deployment.md#清理-pvc)部分。
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/overview.md
new file mode 100644
index 0000000000..e8d1136431
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/deployments-administration/overview.md
@@ -0,0 +1,26 @@
+---
+keywords: [鉴权认证, 部署, 监控, Kubernetes 部署, GreptimeDB 部署, GreptimeDB 监控]
+description: GreptimeDB 企业版的部署指南,包括鉴权认证、Kubernetes 部署和监控等内容。
+---
+
+# 部署与管理
+
+在阅读本文档之前,
+推荐先阅读 GreptimeDB 开源数据库版本的[部署与管理文档](/user-guide/deployments-administration/overview.md),
+其文档中涵盖了所有功能企业版同样支持。
+
+下面章节描述的是企业版专属功能:
+
+## 配置与部署
+
+- [在 Kubernetes 上部署 GreptimeDB 企业版](./deploy-on-kubernetes/overview.md): 了解如何获取专用的 GreptimeDB 企业版镜像。
+- [LDAP 鉴权](authentication.md): 为 GreptimeDB 企业版提供增强的认证能力。
+
+## 监控
+
+[监控](./monitoring/overview.md) 章节描述了企业版中所支持的特定指标和日志。
+
+## 灾难恢复
+
+[灾难恢复](./disaster-recovery/overview.md)提供了确保 GreptimeDB 企业版数据持久性和可用性的策略和最佳实践。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/elasticsearch-compatible/aggregate.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/elasticsearch-compatible/aggregate.md
new file mode 100644
index 0000000000..75cf33ec7a
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/elasticsearch-compatible/aggregate.md
@@ -0,0 +1,27 @@
+---
+keywords: [ES, Elasticsearch, GreptimeDB, QueryDSL]
+description: GreptimeDB 企业版所支持的 QueryDSL 语法
+---
+
+# 聚合查询
+
+## 指标聚合
+
+在 GreptimeDB 中,指标聚合用于对数值字段进行统计计算,例如求和、平均值、最大值、最小值等。
+
+| Aggregation | 实现情况 | Description |
+| ----------- | -------- | ------------------------------ |
+| sum | | 聚合用于计算数值字段的总和。 |
+| avg | | 聚合用于计算数值字段的平均值。 |
+| max | | 聚合用于计算数值字段的最大值。 |
+| min | | 聚合用于计算数值字段的最小值。 |
+| count | ✅ | 聚合用于计算文档的数量。 |
+
+## 桶聚合
+
+在 GreptimeDB 中,桶聚合用于对文档进行分组,例如按时间、种类等字段进行分桶。
+
+| Aggregation | 实现情况 | Description |
+| -------------- | -------- | -------------------------------- |
+| date_histogram | | 聚合用于对时间字段进行分桶。 |
+| terms | | 聚合用于对指定字段的值进行分组。 |
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/elasticsearch-compatible/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/elasticsearch-compatible/overview.md
new file mode 100644
index 0000000000..f422e00ee5
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/elasticsearch-compatible/overview.md
@@ -0,0 +1,54 @@
+---
+keywords: [ES, Elasticsearch, GreptimeDB]
+description: GreptimeDB 企业版与 Elasticsearch 的兼容性概述,包括数据模型、查询语法和 API 接口等方面的对比。
+---
+
+# 概述
+
+GreptimeDB 的 Elasticsearch 兼容层旨在提供与 Elasticsearch 的在一定程度上的兼容性,以便用户能够相对轻松地将现有的 Elasticsearch 应用程序迁移到 GreptimeDB。
+
+但是,GreptimeDB 并不完全兼容 Elasticsearch 的所有功能和特性。在某些情况下,用户可能需要对其应用程序进行调整和修改,以便在 GreptimeDB 中实现相同的功能。
+
+## 原理
+
+本质上 GreptimeDB 是接收 Elasticsearch 的 QueryDSL 语法,并将其转换为 GreptimeDB 的查询语法,并且按照 Elasticsearch API 格式来返回数据。从而实现与 Elasticsearch 的兼容性。
+
+## API 支持列表
+
+| API | Method | Description |
+| ------------------------------ | ------ | ------------ |
+| /\{table_name\}/\_search | POST | 执行搜索查询 |
+| /\{table_name\}/\_async_search | POST | 执行搜索查询 |
+| /\_resolve/index/\{schema_name\} | POST | 索引文档 |
+| /\{table_name\}/\_field_caps | GET | 获取字段信息 |
+
+## 查询支持列表
+
+| Query | Description |
+| ------------ | ------------ |
+| match | 匹配查询 |
+| match_phrase | 短语匹配 |
+| match_all | 匹配所有 |
+| term | 精确匹配 |
+| prefix | 前缀匹配 |
+| range | 范围查询 |
+| exists | 字段存在查询 |
+| bool | 复合查询 |
+| aggregation | 聚合查询 |
+
+## 聚合支持列表
+
+| Aggregation | 实现情况 | Description |
+| -------------- | -------- | ----------- |
+| avg | | 平均值 |
+| sum | | 求和 |
+| min | | 最小值 |
+| max | | 最大值 |
+| count | ✅ | 计数 |
+| date_histogram | ✅ | 日期直方图 |
+| histogram | | 直方图 |
+| terms | | 词条聚合 |
+
+## 使用 Kibana 查询 GreptimeDB
+
+如需了解更多信息,请联系我们。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/elasticsearch-compatible/query.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/elasticsearch-compatible/query.md
new file mode 100644
index 0000000000..628b616540
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/elasticsearch-compatible/query.md
@@ -0,0 +1,66 @@
+---
+keywords: [ES, Elasticsearch, GreptimeDB, QueryDSL]
+description: GreptimeDB 企业版所支持的 QueryDSL 语法
+---
+
+# 查询
+
+由于 GreptimeDB 和 Elasticsearch 的设计的目的有多不同,有众多的功能无法兼容,我们尽可能地提供了相应的替代方案。在各个具体的接口中,我们会说明 GreptimeDB 的实现方式和 Elasticsearch 的区别。
+
+:::tip
+所有与 boost 分数相关的功能都不支持。
+
+不会自动增加并维护 `_id` 字段。如需使用,需在原始数据中包含该字段。
+
+不支持使用 @timestamp 作为时间字段。
+
+不允许在同一个请求中同时包含 query 和 aggregation
+:::
+
+## 查询语法
+
+### match
+
+在 GreptimeDB 中,`match` 查询用于匹配文本字段中的一个或多个词。
+
+不支持 analyzer,auto_generate_synonyms_phrase_query,fuzziness,max_expansions,prefix_length,
+fuzzy_transpositions,fuzzy_rewrite,lenient,operator,minimum_should_match,zero_terms_query。
+
+### match_phrase
+
+在 GreptimeDB 中,`match_phrase` 查询用于匹配文本字段中的一个短语。会根据查询的数据类型来生成不同的查询,当数据类型为文本时,他会转化为 like 查询。
+当数据类型为其他类型时,他会转化为相应的等值查询。
+
+不支持 analyzer,auto_generate_synonyms_phrase_query,fuzziness,max_expansions,prefix_length,
+fuzzy_transpositions,fuzzy_rewrite,lenient,operator,minimum_should_match,zero_terms_query。
+
+### match_all
+
+在 GreptimeDB 中,`match_all` 查询用于匹配所有文档。
+
+### term
+
+在 GreptimeDB 中,`term` 查询用于匹配文本字段中的一个精确值。主要将查询转化为等值查询。
+
+目前不支持 case_insensitive
+
+### prefix
+
+在 GreptimeDB 中,`prefix` 查询用于匹配文本字段中的一个前缀。主要将查询转为为一个 like 查询。
+比如你查询以 `yi` 开头的文本,实际会转化为 `LIKE 'yi%'` 的形式。
+
+不支持 rewrite,case_insensitive
+
+### range
+
+在 GreptimeDB 中,`range` 查询用于匹配文本字段中的一个范围。主要将查询转化为大于等于和小于等于的条件。
+
+目前不支持 format,relation,time_zone,boost
+
+### exists
+
+在 GreptimeDB 中,`exists` 查询用于匹配文本字段中存在的值。主要将查询转化为是否存在的条件。
+
+### bool
+
+在 GreptimeDB 中,`bool` 查询用于匹配多个查询条件。主要将查询转化为 AND 和 OR 的组合条件。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/overview.md
new file mode 100644
index 0000000000..a88cc0c779
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/overview.md
@@ -0,0 +1,41 @@
+---
+keywords: [企业版, 时序数据库, BYOC, 全托管云, 边云一体]
+description: GreptimeDB Enterprise 是为企业设计的时序数据库解决方案,提供了 BYOC、全托管云、边云一体等部署方式,并包含高级功能如双活互备的 DR 解决方案、LDAP 身份验证和审计日志。
+---
+
+# 企业版
+
+GreptimeDB Enterprise 是专为满足企业特定需求而设计的强大时序数据库解决方案。
+除了开源版 GreptimeDB 中提供的所有功能外,
+Enterprise 版还提供更多增强功能,帮助企业优化数据效率并显著降低成本,使企业能够使用时序数据做出更智能、更快速的决策。
+
+解决方案包括:
+
+- **将数据库部署在你的云中 - Bring Your Own Cloud(BYOC**: 利用你自己的云基础设施来托管 GreptimeDB,提供广泛的定制和灵活性以满足你的业务需求。此服务包括对你的云资源的全面管理和强大的安全措施,以保护你的基础设施。
+- **全托管的独立云**: Greptime 团队提供完全托管的专用云环境,确保最佳性能、增强的安全性和卓越的可靠性,以满足你的企业需求。
+- **[边云一体解决方案](https://greptime.com/product/carcloud)**: 用于管理从边缘设备到云的时序数据,实现整个基础设施的实时分析和洞察的全面解决方案。
+- 针对物联网 (IoT)、可观测等行业的特定解决方案。
+
+## 功能介绍
+
+GreptimeDB Enterprise 支持开源版中的所有功能,
+你可以阅读[用户指南](/user-guide/overview.md)文档以获取开源版的所有功能详情。
+有关开源版和企业版之间的功能对比,请参考官网的[价格页面](https://greptime.cn/pricing)或[联系我们](https://greptime.cn/contactus)。
+
+GreptimeDB Enterprise 包括以下高级功能,
+详情描述在本章节的文档中:
+
+- [基于双活互备的 DR 解决方案](./deployments-administration/disaster-recovery/overview.md):通过高级灾难恢复解决方案确保服务不中断和数据保护。
+- [部署 GreptimeDB](./deployments-administration/overview.md):设置认证信息及其他关键配置后,将 GreptimeDB 部署在 Kubernetes 上并监控关键指标。
+- [审计日志](./deployments-administration/monitoring/audit-logging.md):记录数据库用户行为的日志。
+- [自动分区平衡](./autopilot/region-balancer.md):通过分区监控和迁移在 datanode 之间自动平衡负载。
+- [Elasticsearch 查询兼容性](./elasticsearch-compatible/overview.md):在 Kibana 中以 GreptimeDB 作为后端。
+- [Greptime 企业版管理控制台](./console-ui.md):加强版本的管理界面,提供更多的集群管理和监控功能。
+- [读副本](./read-replicas/overview.md):专门运行复杂的查询操作的 datanode,避免影响实时写入。
+- [Trigger](./trigger.md):定时查询和检测预配置的规则,可触发外部 webhook,兼容 Prometheus AlertManager。
+- Flow 的可靠性功能。
+
+## 发布说明
+
+- [25.05](./release-notes/release-25_05.md)
+- [24.11](./release-notes/release-24_11.md)
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/read-replica.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/read-replica.md
new file mode 100644
index 0000000000..43eddc80de
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/read-replica.md
@@ -0,0 +1,178 @@
+---
+keywords: [企业版, 集群, 读副本, leader region, follower region]
+description: GreptimeDB 企业版的读副本功能的概述, 原理, 和"如何".
+---
+
+# 读副本
+
+读副本(Read Replica)是 GreptimeDB 企业集群版中的一项重要功能,旨在提高数据库系统的整体读写性能和可扩展性。在读副本功能中,客户端将数据写入 “Leader” Region。Leader Region 再将数据同步到 “Follower” Region。Follower Region 只提供读功能,是为 Leader Region 的读副本。Leader Region 和 Follower Region 分别部署在不同的 Datanode 节点上,可有效分隔读写请求对于系统资源的互相抢占,带来更平滑的整体读写体验:
+
+
+
+
+
+:::tip NOTE
+读副本功能仅在企业集群版中存在。
+:::
+
+## 原理
+
+GreptimeDB 企业集群版基于自身架构的特点,可以使数据在副本之间以近乎零成本地同步。另外,读副本也可以无延迟地读取到最新写入的数据。下面简单介绍读副本的数据同步和数据读取的原理。
+
+### 数据同步
+
+在存算分离的 GreptimeDB 企业集群版中,所有的数据都以一个个 SST 文件存放在对象存储里。那么 Leader Region 和 Follower Region 之间的数据同步,就不需要在两个 Region 之间复制 SST 文件了,而只需要同步 SST 文件的元信息即可。元信息相比 SST 文件小多了,Leader Region 可以很容易地将其同步到 Follower Region 上。一旦元信息同步完成,读副本就“拥有”了一样的 SST 文件,从而读到数据。如下图:
+
+
+
+在实际的实现中,SST 文件元信息持久化在一个特殊的 manifest 文件中。manifest 文件和 SST 文件一样,也保存在对象存储中。每个 manifest 文件有一个唯一的版本号。在 Leader Region 和 Follower Region 之间同步 SST 文件元信息实际就是同步这个 manifest 文件的版本号。这个版本号只是一个整形数字,所以同步的成本非常低。Follower Region 在得到 manifest 文件版本号后,就可以去对象存储获取 manifest 文件了,从而就获取了 Leader Region 生成的 SST 文件元信息。
+
+manifest 文件版本号是通过 Region 与 Metasrv 之间的心跳进行同步的。Leader Region 在向 Metasrv 的心跳中带上这个版本号。Metasrv 再在回复 Follower Region 的心跳时,将这个版本号返回。如下图:
+
+
+
+容易看出,如果只有 SST 文件的同步,读副本读到写入数据的延迟是 Leader Region 和 Follower Region 与 Metasrv 之间的心跳间隔之和。假如两个 Region 的心跳间隔都是默认的 3 秒,那么读副本只能读到 3 到 6 秒前写入 SST 文件并 flush 到对象存储的数据。如果客户端对读副本能读到的写入数据的新鲜度要求不高,那么这种数据同步方法就足够了。但如果要求读副本能及时读到最新写入的数据,读副本还需要下面的功能:
+
+### 数据读取
+
+最新写入 GreptimeDB 的数据会保存在 Leader Region 的 memtable 里。所以读副本要想读到最新写入的数据,Follower Region 只要能向 Leader Region 发起请求,获取 memtable 中的数据即可。
+
+Follower Region 将 Leader Region 的 memtable 中的数据,和自己通过上面数据同步的方式获得的 SST 文件中的数据相结合,就得到了客户端想要的完整的包含了最新写入的数据:
+
+
+
+
+
+Follower Region 通过我们内部的 GRPC 接口请求 Leader Region。读副本功能会对 Leader Region 造成一定的读负载。但在通常情况下,Leader Region 只需要读取自己 memtable 中的数据,都在内存当中;而且 memtable 大小有限,读的压力不大。
+
+## 增加读副本
+
+增加读副本很简单,一条 SQL 即可:
+
+```sql
+ADMIN ADD_TABLE_FOLLOWER(, )
+```
+
+调用 GreptimeDB 的增加读副本的函数,需要两个参数:
+
+- table_name:表名;
+- follower_datanodes:要放置 Follower Region 的 Datanode Id 列表,用逗号分隔。
+
+下面用一个例子说明如何配置读副本。
+
+首先启动一个有 3 个 Datanode 节点的 GreptimeDB 企业集群版,然后建表:
+
+```sql
+CREATE TABLE foo (
+ ts TIMESTAMP TIME INDEX,
+ i INT PRIMARY KEY,
+ s STRING,
+) PARTITION ON COLUMNS ('i') (
+ i <= 0,
+ i > 0,
+);
+```
+
+通过 `information_schema`,我们可以看到这张表的 Region 相关信息:
+
+```sql
+SELECT table_name, region_id, peer_id, is_leader FROM information_schema.region_peers WHERE table_name = 'foo';
+
++------------+---------------+---------+-----------+
+| table_name | region_id | peer_id | is_leader |
++------------+---------------+---------+-----------+
+| foo | 4402341478400 | 1 | Yes |
+| foo | 4402341478401 | 2 | Yes |
++------------+---------------+---------+-----------+
+```
+
+可以看到,这张表有 2 个 Region,分别在 Datanode 1 和 2 上。
+
+接下来就可以给这张表创建读副本了:
+
+```sql
+ADMIN ADD_TABLE_FOLLOWER('foo', '0,1,2');
+```
+
+读副本创建完,通过 `information_schema`,我们看到这张表已有 Follower Region 了:
+
+```sql
+SELECT table_name, region_id, peer_id, is_leader FROM information_schema.region_peers WHERE table_name = 'foo';
+
++------------+---------------+---------+-----------+
+| table_name | region_id | peer_id | is_leader |
++------------+---------------+---------+-----------+
+| foo | 4402341478400 | 1 | Yes |
+| foo | 4402341478400 | 0 | No |
+| foo | 4402341478401 | 2 | Yes |
+| foo | 4402341478401 | 1 | No |
++------------+---------------+---------+-----------+
+```
+
+两个 Follower Region 分别在 Datanode 1 和 2 上。
+
+## 使用读副本
+
+客户端如何选择是否读 Follower Region 呢?对于 JDBC 连接(MySQL 和 PostgreSQL 协议),可以执行以下 SQL:
+
+```sql
+-- 当前连接的读请求指向 Follower Region
+-- 如果没有 Follower Region,会报错给客户端:
+SET READ_PREFERENCE='follower'
+
+-- 当前连接的读请求优先使用 Follower Region
+-- 如果没有 Follower Region,则读请求 fallback 到 Leader Region(客户端不报错):
+SET READ_PREFERENCE='follower_preferred'
+
+-- 当前连接的读请求指向 Leader Region:
+SET READ_PREFERENCE='leader'
+```
+
+还是以上面创建的表为例。首先插入一些数据:
+
+```sql
+INSERT INTO foo (ts, i, s) VALUES (1, -1, 's1'), (2, 0, 's2'), (3, 1, 's3');
+```
+
+设置从 Follower Region 读取数据:
+
+```sql
+SET READ_PREFERENCE='follower';
+```
+
+查数据:
+
+```sql
+SELECT * FROM foo ORDER BY ts;
+
++----------------------------+------+------+
+| ts | i | s |
++----------------------------+------+------+
+| 1970-01-01 00:00:00.001000 | -1 | s1 |
+| 1970-01-01 00:00:00.002000 | 0 | s2 |
+| 1970-01-01 00:00:00.003000 | 1 | s3 |
++----------------------------+------+------+
+```
+
+如何确定确实读到了 Follower Region 呢?可以使用 `EXPLAIN ANALYZE`:
+
+```sql
+EXPLAIN ANALYZE SELECT * FROM foo ORDER BY ts;
+```
+
+可以看到输出的结果中 "`other_ranges`" 大于 0。
+
+若使用 `VERBOSE`:
+
+```sql
+EXPLAIN ANALYZE VERBOSE SELECT * FROM foo ORDER BY ts;
+```
+
+还有类似如下的输出:
+
+```plaintext
+extension_ranges: [LeaderMemtableRange{leader: Peer { id: 1, addr: "192.168.50.189:14101" }, num_rows: 2, time_range: (1::Millisecond, 2::Millisecond)
+```
+
+这在从 Leader Region 读时是没有的。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/read-replicas/manage-read-replicas.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/read-replicas/manage-read-replicas.md
new file mode 100644
index 0000000000..69cdf5b59d
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/read-replicas/manage-read-replicas.md
@@ -0,0 +1,183 @@
+---
+keywords: [企业版, 集群, 读副本, 管理, region, follower]
+description: 在 GreptimeDB 企业版中管理读副本的概览、关键概念与操作指南。
+---
+
+# 管理读副本
+
+本文介绍如何在 GreptimeDB 企业版中管理读副本,包括在表与 Region 级别添加/移除读副本、使用 `SHOW REGION` 查看副本分布,以及放置约束与性能最佳实践建议。
+
+## 为表添加读副本
+
+添加读副本只需一条 SQL:
+
+```sql
+ADMIN ADD_TABLE_FOLLOWER()
+```
+
+每个 Region 的 Follower 节点会基于 Datanode 的工作负载类型进行分配。**为获得最佳性能,强烈建议先[配置 Datanode 分组](/enterprise/deployments-administration/deploy-on-kubernetes/configure-datanode-groups.md),将读与写工作负载分别放置在不同的 Datanode 组中。**
+
+该函数的参数:
+
+- `table_name`:需要添加读副本的表名。
+
+示例步骤:
+
+先启动一个包含 3 个 Datanode 的企业集群,然后建表:
+
+```sql
+CREATE TABLE foo (
+ ts TIMESTAMP TIME INDEX,
+ i INT PRIMARY KEY,
+ s STRING,
+) PARTITION ON COLUMNS ('i') (
+ i <= 0,
+ i > 0,
+);
+```
+
+使用 `SHOW REGION` 查看当前 Region 分布:
+
+```sql
+SHOW REGION FROM foo;
+
++-------+---------------+------+--------+
+| Table | Region | Peer | Leader |
++-------+---------------+------+--------+
+| foo | 4398046511104 | 0 | Yes |
+| foo | 4398046511105 | 1 | Yes |
++-------+---------------+------+--------+
+```
+
+上述结果表明在 Datanode `0` 与 `1` 上各有一个写副本 Region。
+
+接着添加读副本:
+
+```sql
+ADMIN ADD_TABLE_FOLLOWER('foo');
+```
+
+再次查看 Region 分布:
+
+```sql
+SHOW REGION FROM foo;
+
++-------+---------------+------------+--------+
+| Table | Region | Peer | Leader |
++-------+---------------+------------+--------+
+| foo | 4398046511104 | 0 | Yes |
+| foo | 4398046511104 | 4294967296 | No |
+| foo | 4398046511105 | 1 | Yes |
+| foo | 4398046511105 | 4294967297 | No |
++-------+---------------+------------+--------+
+```
+
+现在可以看到读副本已经分配到 Peer `4294967296` 与 `4294967297` 上。
+
+## 从表移除读副本
+
+移除读副本同样只需一条 SQL:
+
+```sql
+ADMIN REMOVE_TABLE_FOLLOWER()
+```
+
+该函数参数:
+
+- `table_name`:要移除读副本的表名。
+
+该命令会从每个 Region 中移除**最近添加的**一个读副本。
+
+示例,执行前:
+
+```sql
+SHOW REGION FROM foo;
++-------+---------------+------------+--------+
+| Table | Region | Peer | Leader |
++-------+---------------+------------+--------+
+| foo | 4398046511104 | 0 | Yes |
+| foo | 4398046511104 | 4294967296 | No |
+| foo | 4398046511104 | 4294967297 | No |
+| foo | 4398046511105 | 1 | Yes |
+| foo | 4398046511105 | 4294967296 | No |
+| foo | 4398046511105 | 4294967297 | No |
++-------+---------------+------------+--------+
+```
+
+此时 Region `4398046511104` 与 `4398046511105` 各有两个读副本在 `4294967296`、`4294967297` 节点上。
+
+执行:
+
+```sql
+ADMIN REMOVE_TABLE_FOLLOWER('foo');
++------------------------------------+
+| ADMIN REMOVE_TABLE_FOLLOWER('foo') |
++------------------------------------+
+| 0 |
++------------------------------------+
+```
+
+每个 Region 最近添加的读副本被移除:
+
+- Region `4398046511104`:移除了 `4294967297` 节点上的读副本
+- Region `4398046511105`:移除了 `4294967296` 节点上的读副本
+
+结果:
+
+```sql
+SHOW REGION FROM foo;
++-------+---------------+------------+--------+
+| Table | Region | Peer | Leader |
++-------+---------------+------------+--------+
+| foo | 4398046511104 | 0 | Yes |
+| foo | 4398046511104 | 4294967296 | No |
+| foo | 4398046511105 | 1 | Yes |
+| foo | 4398046511105 | 4294967297 | No |
++-------+---------------+------------+--------+
+```
+
+## 为 Region 添加读副本
+
+```sql
+ADMIN ADD_REGION_FOLLOWER(, )
+```
+
+参数说明:
+
+- `region_id`:需要添加读副本的 Region ID。
+- `datanode_id`:要承载该读副本的 Datanode ID。
+
+同一 Datanode 上不能同时承载同一 Region 的写副本与读副本;且每个 Datanode 对同一 Region 仅能承载一个读副本。
+
+示例:
+
+```sql
+-- 在 Datanode 2 上为 Region 4398046511104 添加一个读副本
+ADMIN ADD_REGION_FOLLOWER(4398046511104, 2);
+```
+
+若目标 Datanode 已存在该 Region 的读副本,或该 Datanode 已存在该 Region 的写副本,则命令会被拒绝。
+
+## 从 Region 移除读副本
+
+```sql
+ADMIN REMOVE_REGION_FOLLOWER(, )
+```
+
+参数说明:
+
+- `region_id`:需要移除读副本的 Region ID。
+- `datanode_id`:要移除的读副本所在的 Datanode ID。
+
+示例:
+
+```sql
+-- 从 Datanode 2 上移除 Region 4398046511104 的读副本
+ADMIN REMOVE_REGION_FOLLOWER(4398046511104, 2);
+```
+
+## 下一步
+
+* [从读副本查询](/enterprise/read-replicas/query-read-replicas.md)
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/read-replicas/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/read-replicas/overview.md
new file mode 100644
index 0000000000..d59e5a3426
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/read-replicas/overview.md
@@ -0,0 +1,50 @@
+---
+keywords: [企业版, 集群, 读副本, leader region, follower region]
+description: GreptimeDB 企业版读副本功能的概述与原理。
+---
+
+# 概述
+
+*读副本 (Read Replica)* 是 GreptimeDB 企业集群版中的一项重要功能,旨在提升系统的整体读写性能与可扩展性。
+
+在读副本机制中,客户端将数据写入写副本 (Leader Region),随后由 Leader Region 将数据同步到 Follower Region。Follower Region 作为 Leader Region 的只读副本。通过[配置 Datanode 组](/enterprise/deployments-administration/deploy-on-kubernetes/configure-datanode-groups.md),可以将 Leader Region 与 Follower Region 分别部署在不同的 Datanode 节点上,读写请求能够有效隔离,避免资源争用,从而获得更平滑的读写体验:
+
+
+
+
+
+
+## 原理
+
+GreptimeDB 企业集群版基于存算分离架构,使副本间的数据同步几乎零成本;同时,读副本也能以极低延迟读取到最新写入的数据。下面分别介绍数据同步与数据读取机制。
+
+### 数据同步
+
+在 GreptimeDB 中,计算与存储解耦,所有数据以 SST 文件的形式存放在对象存储中。因此,Leader Region 与 Follower Region 之间无需复制 SST 文件本体,只需同步其元信息即可。元信息相比 SST 文件体量小得多,因而同步开销极低。一旦元信息同步完成,读副本便“拥有”相同的 SST 文件,从而可以读取数据:
+
+
+
+在实现上,SST 文件的元信息持久化在一个特殊的 manifest 文件中(同样位于对象存储)。每个 manifest 文件都有唯一的版本号。Leader Region 与 Follower Region 之间的同步,本质上就是同步这个版本号——一个简单的整数,开销极小。Follower Region 获得版本号后即可从对象存储拉取对应的 manifest 文件,从而获得 Leader Region 生成的 SST 元信息。
+
+manifest 版本号通过 Region 与 Metasrv 之间的心跳进行同步:Leader Region 在发往 Metasrv 的心跳中携带版本号,Metasrv 在回复 Follower Region 的心跳中将其下发:
+
+
+
+可以看出,若仅依赖 SST 文件层面的同步,读副本读到新写入数据的延迟约为 Leader Region 与 Follower Region 分别到 Metasrv 的心跳间隔之和。以默认 3 秒心跳为例,读副本通常只能读到 3–6 秒前已写入并 flush 至对象存储的数据。对于对数据“新鲜度”要求不高的场景已足够,但若需要近实时读取,还需配合下述机制。
+
+### 数据读取
+
+最新写入的数据首先保存在 Leader Region 的 memtable 中。为了读到这些最新数据,Follower Region 需要向 Leader Region 请求 memtable 数据,并与自身通过前述同步机制获得的 SST 数据合并,从而向客户端提供包含最新写入的完整结果集:
+
+
+
+
+
+Follower Region 通过内部 gRPC 接口从 Leader Region 获取 memtable 数据。该过程会给 Leader Region 带来一定读负载,但由于 memtable 位于内存且大小受限,通常影响可控。
+
+## 下一步
+
+* [管理读副本](/enterprise/read-replicas/manage-read-replicas.md)
+* [从读副本查询](/enterprise/read-replicas/query-read-replicas.md)
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/read-replicas/query-read-replicas.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/read-replicas/query-read-replicas.md
new file mode 100644
index 0000000000..f7391eb52d
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/read-replicas/query-read-replicas.md
@@ -0,0 +1,95 @@
+---
+keywords: [企业版, 集群, 读副本, 查询, 读优先级]
+description: 在 GreptimeDB 企业版中从读副本查询的用法、读优先策略与示例。
+---
+
+# 从读副本查询
+
+GreptimeDB 允许从**读副本 (Follower Region)** 读取数据,从而降低写副本 (Leader Region) 的负载并提升查询伸缩性。你可以通过 **SQL** 与 **HTTP** 两种方式设置读优先策略。
+
+## 读优先策略
+
+`READ_PREFERENCE` 支持如下取值:
+
+- `leader`:始终从写副本读取。
+- `follower`:仅从读副本读取;若不存在读副本,则查询失败。
+- `follower_preferred`:优先从读副本读取;若不可用则回退到写副本。
+
+## SQL 协议
+
+在 SQL 会话中设置读优先:
+
+```sql
+SET READ_PREFERENCE = 'follower';
+```
+
+---
+
+## HTTP 协议
+
+在 HTTP 请求中通过请求头指定 `X-Greptime-Read-Preference`:
+
+```bash
+curl -X POST \
+ -H "Content-Type: application/x-www-form-urlencoded" \
+ -H "X-Greptime-Read-Preference: follower" \
+ -d "sql=select * from monitoring" \
+ http://localhost:4000/v1/sql
+```
+
+---
+
+## 示例:从读副本读取
+
+在从读副本读取之前,需要先为表添加读副本。参见[副本管理](/enterprise/read-replicas/manage-read-replicas.md)。
+
+向示例表插入数据:
+
+```sql
+INSERT INTO foo (ts, i, s)
+VALUES
+ (1, -1, 's1'),
+ (2, 0, 's2'),
+ (3, 1, 's3');
+```
+
+设置从读副本读取:
+
+```sql
+SET READ_PREFERENCE = 'follower';
+```
+
+查询数据:
+
+```sql
+SELECT * FROM foo ORDER BY ts;
+
++----------------------------+------+------+
+| ts | i | s |
++----------------------------+------+------+
+| 1970-01-01 00:00:00.001000 | -1 | s1 |
+| 1970-01-01 00:00:00.002000 | 0 | s2 |
+| 1970-01-01 00:00:00.003000 | 1 | s3 |
++----------------------------+------+------+
+```
+
+---
+
+## 验证是否从读副本读取
+
+可以使用 `EXPLAIN ANALYZE` 进行验证:
+
+```sql
+EXPLAIN ANALYZE SELECT * FROM foo ORDER BY ts;
+```
+
+- 当输出中的 `other_ranges` 大于 0 时,表示查询涉及了读副本。
+- 若使用 `VERBOSE` 选项,将看到类似如下的详细信息:
+
+```plaintext
+extension_ranges: [LeaderMemtableRange{leader: Peer { id: 1, addr: "192.168.50.189:14101" }, num_rows: 2, time_range: (1::Millisecond, 2::Millisecond) ...
+```
+
+如果仅从写副本读取,上述 `extension_ranges` 段不会出现。
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/release-notes/release-24_11.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/release-notes/release-24_11.md
new file mode 100644
index 0000000000..d00ea86d01
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/release-notes/release-24_11.md
@@ -0,0 +1,55 @@
+---
+keywords: [Region Rebalance, 管理控制台, LDAP User Provider, 审计日志, 开源版改进]
+description: GreptimeDB 企业版 24.11 版本介绍了 Region Rebalance、管理控制台、LDAP User Provider、审计日志等新特性,并基于开源版 v0.10 引入了多项改进。
+---
+
+# Release 24.11
+
+我们很高兴向大家介绍 GreptimeDB 企业版的 24.11 版本。
+
+## 特性亮点
+
+### Region Rebalance
+
+为了增强 GreptimeDB 的弹性,Region Rebalance 功能允许在数据节点之间灵活地重新分配
+Region,无论是否由手动或动态触发。
+
+这一前瞻性的措施带来了多个关键优势,包括均衡工作负载、优化资源利用,并确保在计划
+维护期间无缝运行。
+
+### GreptimeDB 企业版管理控制台
+
+我们带来了首个版本的 GreptimeDB 企业版管理控制台的用户界面。
+
+此版本提供了一系列功能,包括:
+
+- 慢查询分析与调试
+- 详细的集群拓扑信息
+- 实时查看集群指标和日志
+
+### LDAP User Provider
+
+将您自己的 LDAP 用户数据库与 GreptimeDB 企业版进行连接。我们实现了灵活的配置选项
+支持,无论是简单的还是复杂的认证机制。
+
+### 审计日志
+
+提供日志以跟踪数据库中的查询操作,并记录以下信息:
+
+- 查询类型:读取、写入、DDL 或其他
+- 命令:SELECT、INSERT 等
+- 对象类型:操作的目标对象,例如表、数据库等
+
+### GreptimeDB 开源版特性
+
+本版本基于 GreptimeDB 开源版 v0.10。开源基础引入了一些新功能:
+
+- 向量数据类型支持用于相似性搜索
+- 二级索引更新:用户现在可以在任何列上创建二级索引
+- 添加了表选项以更新 TTL、压缩参数和全文索引设置
+- JSON 数据类型和函数的支持
+- Loki Remote Write 的早期支持
+- 更多地理空间的通用函数(UDF)包括空间关系与测量、S2 索引等。
+
+请参阅[这里](https://docs.greptime.com/release-notes/release-0-10-0)以获取完整的
+变更日志。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/release-notes/release-25_05.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/release-notes/release-25_05.md
new file mode 100644
index 0000000000..68c74f119c
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/release-notes/release-25_05.md
@@ -0,0 +1,67 @@
+---
+keywords: [elasticsearch, 读副本, 触发器]
+description: GreptimeDB 企业版 25.05 发布说明,新功能 Elasticsearch 兼容层,读副本,触发器等
+---
+
+# Release 25.05
+
+我们很高兴向大家介绍 GreptimeDB 企业版的 25.05 版本。
+
+## 特性亮点
+
+### Elasticsearch 兼容层
+
+此为 GreptimeDB Enterprise 中的 Elasticsearch 兼容层,这层允许用户将 GreptimeDB
+配置为 Kibana 界面的后端,进行日志的搜索、聚合和大盘构建。
+
+本次发布支持的查询:
+
+- match
+- match_all
+- multi_match
+- term
+- terms
+- prefix
+- wildcard
+- regexp
+- range
+- exists
+- bool
+
+### 读副本
+
+为了更好地支持分析型查询和其他高代价的查询,本版本中我们设计了专门的查询节点。这
+类节点将专门执行查询,因此在使用时可以将资源尽可能使用而不用担心影响数据的在线写
+入。
+
+得益于我们的存算分离架构,增加专门的读节点并不是非常大的架构重构。一种新的
+datanode 角色将承担这种任务。由于数据存储在对象存储上,在创建读节点时不会产生由
+datanode 向新节点的数据拷贝,创建的过程成本很低。用户在发送查询时可以指定查询是
+否要运行在读副本上。
+
+### 触发器
+
+GreptimeDB 的触发器定期检查用户配置的规则,如果满足条件就将触发下游的 webhook。
+当前发布的是触发器的首个版本,我们设计的目标也是让它可以和 Prometheus
+AlertManager 一起工作。注意这不是关系型数据库中的触发器。
+
+```sql
+CREATE TRIGGER IF NOT EXISTS cpu_monitor
+ ON (SELECT host AS host_label, cpu, memory FROM machine_monitor WHERE cpu > 1)
+ EVERY '5 minute'::INTERVAL
+ LABELS (severity = 'warning')
+ ANNOTATIONS (summary = 'CPU utilization is too high', link = 'http://...')
+ NOTIFY(
+ WEBHOOK alert_manager URL 'http://127.0.0.1:9093' WITH (timeout="1m")
+ );
+```
+
+### Flow Reliability
+
+Flow 增加了可靠性功能:
+
+- 任务迁移:在多个 flow 节点之间调度任务,可以保持负载均衡或高可用。
+
+## GreptimeDB 开源版特性
+
+本版本基于 GreptimeDB 开源版 v0.14。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/trigger.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/trigger.md
new file mode 100644
index 0000000000..a4dea01271
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/enterprise/trigger.md
@@ -0,0 +1,146 @@
+---
+keywords: [触发器, 告警, GreptimeDB 企业版, SQL, Webhook]
+description: GreptimeDB 触发器概述。
+---
+
+# Trigger
+
+Trigger 允许用户基于 SQL 语句定义触发规则,GreptimeDB 根据这些触发规则进行周期性
+计算,当满足条件后对外发出通知。
+
+本篇文档的下述内容通过一个示例来展示如何使用 Trigger 监控系统负载并触发告警。
+如果想了解如何撰写 Trigger 的具体语法,请参考[语法](/reference/sql/trigger-syntax.md)文档。
+
+# 快速入门示例
+
+本节将通过一个端到端示例展示如何使用触发器监控系统负载并触发告警。
+
+下图展示了该示例的完整端到端工作流程。
+
+
+
+1. Vector 持续采集主机指标并写入 GreptimeDB。
+2. GreptimeDB 中的 Trigger 每分钟评估规则;当条件满足时,会向 Alertmanager 发送
+ 通知。
+3. Alertmanager 依据自身配置完成告警分组、抑制及路由,最终通过 Slack 集成将消息
+ 发送至指定频道。
+
+## 使用 Vector 采集主机指标
+
+首先,使用 Vector 采集本机的负载数据,并将数据写入 GreptimeDB 中。Vector 的配置
+示例如下所示:
+
+```toml
+[sources.in]
+type = "host_metrics"
+scrape_interval_secs = 15
+
+[sinks.out]
+inputs = ["in"]
+type = "greptimedb"
+endpoint = "localhost:4001"
+```
+
+GreptimeDB 会在数据写入的时候自动创建表,其中,`host_load1`表记录了 load1 数据,
+load1 是衡量系统活动的关键性能指标。我们可以创建监控规则来跟踪此表中的值。表结构
+如下所示:
+
+```sql
++-----------+----------------------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++-----------+----------------------+------+------+---------+---------------+
+| ts | TimestampMillisecond | PRI | NO | | TIMESTAMP |
+| collector | String | PRI | YES | | TAG |
+| host | String | PRI | YES | | TAG |
+| val | Float64 | | YES | | FIELD |
++-----------+----------------------+------+------+---------+---------------+
+```
+
+## 配置 Alertmanager 与 Slack 集成
+
+GreptimeDB Trigger 的 Webhook payload 与 [Prometheus Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/)
+兼容,因此我们可以复用 Alertmanager 的分组、抑制、静默和路由功能,而无需任何额外
+的胶水代码。
+
+你可以参考 [官方文档](https://prometheus.io/docs/alerting/latest/configuration/)
+对 Prometheus Alertmanager 进行配置。为在 Slack 消息中呈现一致、易读的内容,可以
+配置以下消息模板。
+
+```text
+{{ define "slack.text" }}
+{{ range .Alerts }}
+
+Labels:
+{{- range .Labels.SortedPairs }}
+- {{ .Name }}: {{ .Value }}
+{{ end }}
+
+Annotations:
+{{- range .Annotations.SortedPairs }}
+- {{ .Name }}: {{ .Value }}
+{{ end }}
+
+{{ end }}
+{{ end }}
+```
+
+使用上述模板生成 slack 消息会遍历所有的告警,并把每个告警的标签和注解展示出来。
+
+当配置完成之后,启动 Alertmanager。
+
+## 创建 Trigger
+
+在 GreptimeDB 中创建 Trigger。使用 MySql 客户端连接 GreptimeDB 并执行以下 SQL:
+
+```sql
+CREATE TRIGGER IF NOT EXISTS load1_monitor
+ ON (
+ SELECT collector AS label_collector,
+ host as label_host,
+ val
+ FROM host_load1 WHERE val > 10 and ts >= now() - '1 minutes'::INTERVAL
+ ) EVERY '1 minute'::INTERVAL
+ LABELS (severity=warning)
+ ANNOTATIONS (comment='Your computer is smoking, should take a break.')
+ NOTIFY(
+ WEBHOOK alert_manager URL 'http://localhost:9093' WITH (timeout="1m")
+ );
+```
+
+上述 SQL 将创建一个名为 `load1_monitor` 的触发器,每分钟运行一次。它会评估 `host_load1`
+表中最近 60 秒的数据;如果任何 load1 值超过 10,则 `NOTIFY` 子句中的 `WEBHOOK`
+选项会指定 Trigger 向在本地主机上运行且端口为 9093 的 Alertmanager 发送通知。
+
+执行 `SHOW TRIGGERS` 查看已创建的触发器列表。
+
+```sql
+SHOW TRIGGERS;
+```
+
+输出结果应如下所示:
+
+```text
++---------------+
+| Triggers |
++---------------+
+| load1_monitor |
++---------------+
+```
+
+## 测试 Trigger
+
+使用 [stress-ng](https://github.com/ColinIanKing/stress-ng) 模拟 60 秒的高 CPU 负载:
+
+```bash
+stress-ng --cpu 100 --cpu-load 10 --timeout 60
+```
+
+load1 值将快速上升,Trigger 通知将被触发,在一分钟之内,指定的 Slack 频道将收到如下
+告警:
+
+
+
+## 参考资料
+
+- [Trigger 语法](/reference/sql/trigger-syntax.md): 与 `TRIGGER` 相关的 SQL 语句的语法细节。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/faq-and-others/faq.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/faq-and-others/faq.md
new file mode 100644
index 0000000000..a2afd91120
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/faq-and-others/faq.md
@@ -0,0 +1,418 @@
+---
+keywords: [统一可观测性, metrics, logs, traces, 性能, OpenTelemetry, Prometheus, Grafana, 云原生, SQL, PromQL]
+description: 关于 GreptimeDB 的常见问题解答 - 统一可观测性数据库,支持 metrics、logs 和 traces。
+---
+
+# 常见问题
+
+## 核心能力
+
+### 什么是 GreptimeDB?
+
+GreptimeDB 是一个开源、云原生的统一可观测性数据库,旨在在单一系统中存储和分析 metrics、logs 和 traces。基于 Rust 构建以实现高性能,它提供:
+- 高达 50 倍的运营和存储成本降低
+- 在 PB 级数据集上实现亚秒级查询响应
+- 原生 OpenTelemetry 支持
+- SQL、PromQL 和流处理能力
+- 计算存储分离,实现灵活扩展
+
+### GreptimeDB 的性能与其他解决方案相比如何?
+
+GreptimeDB 在可观测性工作负载中提供卓越性能:
+
+**写入性能**:
+- 比 Elasticsearch **快 2-4.7倍**(高达 470% 吞吐量)
+- 比 Loki **快 1.5倍**(121k vs 78k rows/s)
+- 比 InfluxDB **快 2倍**(250k-360k rows/s)
+- **媲美 ClickHouse**(达到 111% 吞吐量)
+
+**查询性能**:
+- 日志查询比 Loki **快 40-80倍**
+- 重复查询**快 500倍**(缓存优化)
+- 复杂时序查询比 InfluxDB **快 2-11倍**
+- 与 ClickHouse 在不同查询模式下性能相当
+
+**存储与成本效率**:
+- 存储占用比 Elasticsearch **少 87%**(仅需 12.7%)
+- 比 ClickHouse **节省 50%** 存储
+- 比 Loki **节省 50%** 存储(3.03GB vs 6.59GB 压缩后)
+- 运营成本比传统架构**降低 50倍**
+
+**资源优化**:
+- CPU 使用率**减少 40%**
+- 在测试数据库中**内存消耗最低**
+- 对象存储(S3/GCS)上性能一致
+- 卓越的高基数数据处理
+
+**独特优势**:
+- 单一数据库处理 metrics、logs 和 traces
+- 原生云原生架构
+- 水平扩展能力(处理 11.5亿+ 行数据)
+- 原生全文搜索和索引
+
+基准测试报告:[vs InfluxDB](https://greptime.cn/blogs/2024-08-08-report) | [vs Loki](https://greptime.cn/blogs/2025-08-07-beyond-loki-greptimedb-log-scenario-performance-report.html) | [日志基准测试](https://greptime.cn/blogs/2025-03-07-greptimedb-log-benchmark)
+
+### GreptimeDB 如何处理 metrics、logs 和 traces?
+
+GreptimeDB 设计为统一可观测性数据库,原生支持三种遥测数据类型:
+- **Metrics**:完全兼容 Prometheus,支持 PromQL
+- **Logs**:全文索引、Loki 协议支持和高效压缩
+- **Traces**:实验性 OpenTelemetry trace 存储,支持可扩展查询
+
+这种统一方法消除了数据孤岛,无需复杂的数据管道即可实现跨信号关联。
+
+详细文档:
+- [日志概述](/user-guide/logs/overview.md)
+- [链路追踪概述](/user-guide/traces/overview.md)
+- [OpenTelemetry 兼容性](/user-guide/ingest-data/for-observability/opentelemetry.md)
+- [Prometheus 兼容性](/user-guide/ingest-data/for-observability/prometheus.md)
+- [Loki 协议兼容性](/user-guide/ingest-data/for-observability/loki.md)
+- [Elasticsearch 兼容性](/user-guide/ingest-data/for-observability/elasticsearch.md)
+- [Vector 兼容性](/user-guide/ingest-data/for-observability/vector.md)
+
+### GreptimeDB 的主要应用场景是什么?
+
+GreptimeDB 擅长于:
+- **统一可观测性**:用单一数据库替代复杂的监控堆栈
+- **边缘和云数据管理**:跨环境无缝数据同步
+- **IoT 和汽车**:高效处理大量传感器数据
+- **AI/LLM 监控**:跟踪模型性能和行为
+- **实时分析**:在 PB 级数据集上实现亚秒级查询
+
+## 架构与性能
+
+### GreptimeDB 能否替代我的 Prometheus 设置?
+
+是的,GreptimeDB 提供:
+- 原生 PromQL 支持,兼容性接近 100%
+- Prometheus remote write 协议支持
+- 高效处理高基数 metrics
+- 无需降采样的长期存储
+- 比传统 Prometheus+Thanos 堆栈更高的资源效率
+
+### GreptimeDB 提供哪些索引能力?
+
+GreptimeDB 提供丰富的索引选项:
+- **倒排索引**:标签列的快速查找
+- **全文索引**:高效日志搜索
+- **跳跃索引**:加速范围查询
+- **向量索引**:支持 AI/ML 工作负载
+
+这些索引即使在 PB 级数据集上也能实现亚秒级查询。
+
+配置详情请参见[索引管理](/user-guide/manage-data/data-index.md)。
+
+### GreptimeDB 如何实现成本效益?
+
+GreptimeDB 通过以下方式降低成本:
+- **列式存储**:卓越的压缩比
+- **计算存储分离**:独立扩展资源
+- **高效基数管理**:处理高基数数据而不发生爆炸
+- **统一平台**:消除对多个专用数据库的需求
+
+结果:比传统堆栈降低高达 50 倍的运营和存储成本。
+
+### 什么使 GreptimeDB 成为云原生?
+
+GreptimeDB 专为 Kubernetes 构建:
+- **分解架构**:分离计算和存储层
+- **弹性扩展**:根据工作负载添加/删除节点
+- **多云支持**:无缝运行在 AWS、GCP、Azure
+- **Kubernetes operators**:简化部署和管理
+- **对象存储后端**:使用 S3、GCS 或 Azure Blob 进行数据持久化
+
+Kubernetes 部署详情请参见 [Kubernetes 部署指南](/user-guide/deployments-administration/deploy-on-kubernetes/overview.md)。
+
+### GreptimeDB 支持无 schema 数据摄入吗?
+
+是的,GreptimeDB 在使用以下协议时支持自动 schema 创建:
+- gRPC 协议
+- InfluxDB Line Protocol
+- OpenTSDB 协议
+- Prometheus Remote Write
+- OpenTelemetry 协议
+- Loki 协议(日志数据)
+- Elasticsearch 兼容 API(日志数据)
+
+表和列在首次写入时自动创建,无需手动 schema 管理。
+
+## 集成与兼容性
+
+### GreptimeDB 如何与现有工具和系统集成?
+
+**协议支持**:
+- **数据写入**:OpenTelemetry、Prometheus Remote Write、InfluxDB Line、Loki、Elasticsearch、gRPC(参见[协议概述](/user-guide/protocols/overview.md))
+- **数据查询**:MySQL、PostgreSQL 协议兼容
+- **查询语言**:SQL、PromQL
+
+**可视化与监控**:
+- **Grafana**:[Grafana 集成](/user-guide/integrations/grafana.md)(含官方插件)+ [MySQL/PostgreSQL 数据源支持](/user-guide/integrations/grafana.md#mysql-数据源)
+- **原生 PromQL**:[直接支持](/user-guide/query-data/promql.md) Prometheus 风格查询和仪表板
+- **任何 SQL 工具**:通过 MySQL/PostgreSQL 协议兼容
+
+**数据管道集成**:
+- **OpenTelemetry**:原生 OTLP 摄入,无转换层,保留所有语义约定
+- **数据收集**:Vector、Fluent Bit、Telegraf、Kafka
+- **实时流处理**:直接从 Kafka、Vector 等系统接收数据
+
+**SDK 和客户端库**:
+- **Go**:[greptimedb-ingester-go](https://github.com/GreptimeTeam/greptimedb-ingester-go)
+- **Java**:[greptimedb-ingester-java](https://github.com/GreptimeTeam/greptimedb-ingester-java)
+- **Rust**:[greptimedb-ingester-rust](https://github.com/GreptimeTeam/greptimedb-ingester-rust)
+- **Erlang**:[greptimedb-ingester-erl](https://github.com/GreptimeTeam/greptimedb-ingester-erl)
+- **Python**:通过标准 SQL 驱动程序(MySQL/PostgreSQL 兼容)
+
+### 如何从其他数据库迁移到 GreptimeDB?
+
+GreptimeDB 为流行数据库提供迁移指南:
+- **从 ClickHouse**:表结构和数据迁移
+- **从 InfluxDB**:Line protocol 和数据迁移
+- **从 Prometheus**:Remote write 和历史数据迁移
+- **从 MySQL/PostgreSQL**:基于 SQL 的迁移
+
+详细迁移说明请参见[迁移概述](/user-guide/migrate-to-greptimedb/overview.md)。
+
+### GreptimeDB 提供哪些灾备选项?
+
+GreptimeDB 提供多种灾备策略以满足不同的可用性需求:
+
+- **单机灾备方案**:使用远程 WAL 和对象存储,可实现 RPO=0 和分钟级 RTO,适合小规模场景
+- **Region 故障转移**:个别区域的自动故障转移,停机时间最短
+- **双机热备**(企业版):节点间同步请求复制,提供高可用性
+- **跨区域单集群**:跨越三个区域,实现零 RPO 和区域级容错
+- **备份与恢复**:定期数据备份,可根据备份频率配置 RPO
+
+根据您的可用性需求、部署规模和成本考虑选择合适的解决方案。详细指导请参见[灾难恢复概述](/user-guide/deployments-administration/disaster-recovery/overview.md)。
+
+## 数据管理与处理
+
+### GreptimeDB 如何处理数据生命周期?
+
+**保留策略**:
+- 数据库级和表级 TTL 设置
+- 无需手动清理的自动数据过期
+- 通过 [TTL 文档](/reference/sql/create.md#表选项)配置
+
+**数据导出**:
+- 用于 S3、本地文件的 [`COPY TO` 命令](/reference/sql/copy.md#连接-s3)
+- 通过任何兼容客户端的标准 SQL 查询
+- 备份和灾难恢复的导出功能:[备份与恢复数据](/user-guide/deployments-administration/disaster-recovery/back-up-&-restore-data.md)
+
+### GreptimeDB 如何处理高基数和实时处理?
+
+**高基数管理**:
+- 高级索引策略防止基数爆炸
+- 具有智能压缩的列式存储
+- 带数据修剪的分布式查询执行
+- 高效处理数百万唯一时间序列
+
+了解更多索引信息:[索引管理](/user-guide/manage-data/data-index.md)
+
+**实时处理**:
+- **[Flow Engine](/user-guide/flow-computation/overview.md)**:实时流数据处理系统,对流式数据进行连续增量计算,自动更新结果表
+- **[Pipeline](/user-guide/logs/use-custom-pipelines.md)**:实时数据解析转换机制,通过可配置处理器对各种入库数据进行字段提取和数据类型转换
+- **输出表**:持久化处理结果用于分析
+
+### GreptimeDB 的可扩展性特征是什么?
+
+**扩展限制**:
+- 表或列数量无严格限制
+- 数百个表的性能影响最小
+- 性能随主键设计而非表数量扩展
+- 列式存储确保高效的部分读取
+
+**分区与分布**:
+- region 内基于时间的自动组织
+- 通过 PARTITION 子句进行手动分布式分片(参见[表分片指南](/user-guide/deployments-administration/manage-data/table-sharding.md))
+- 计划未来版本的自动 region 拆分
+- **无需配置的动态分区**(企业版功能)
+
+**核心扩展性功能**:
+- **多层缓存**:写入缓存(磁盘支持)和读取缓存(LRU 策略)优化性能
+- **对象存储后端**:通过 S3/GCS/Azure Blob 实现几乎无限存储
+- **异步 WAL**:高效的预写日志,支持可选的按表控制
+- **分布式查询执行**:多节点协调处理大型数据集
+- **手动压缩**:通过[管理命令](/reference/sql/admin.md)提供
+
+**企业级扩展功能**:
+- 高级分区和自动重新平衡
+- 增强的多租户和隔离功能
+- 企业级监控和管理工具
+
+架构详情请参见[存储架构博客](https://greptime.cn/blogs/2024-12-24-observability)。
+
+### GreptimeDB 的设计权衡是什么?
+
+GreptimeDB 针对可观测性工作负载进行了优化,具有以下设计限制:
+- **无 ACID 事务**:优先考虑高吞吐量写入而非事务一致性
+- **有限删除操作**:为追加重的可观测性数据设计
+- **时序数据专注**:针对 IoT、metrics、logs 和 traces 而非通用 OLTP 进行优化
+- **简化连接**:针对时序查询而非复杂关系操作进行优化
+
+## 部署与运维
+
+### GreptimeDB 部署和运维指南
+
+**部署选项**:
+
+*集群部署(生产环境)*:
+- 最少 3 个节点实现高可用性
+- 服务架构:metasrv、frontend、datanode(可同节点或分离部署)
+- 存储后端:S3、GCS、Azure Blob(生产)或本地存储(测试)
+- 元数据存储:MySQL/PostgreSQL 后端支持 metasrv
+- 参见[容量规划指南](/user-guide/deployments-administration/capacity-plan.md)
+
+*边缘与单机部署*:
+- Android ARM64、Raspberry Pi 等受限环境
+- 单节点模式适用于开发测试和 IoT 场景
+- 高效资源使用,支持边缘计算
+
+**数据分布策略**:
+- **当前**:通过 PARTITION 子句手动分区(参见[表分片指南](/user-guide/deployments-administration/manage-data/table-sharding.md)),region 内自动时间组织,支持手动 region 迁移进行负载均衡(参见[Region 迁移指南](/user-guide/deployments-administration/manage-data/region-migration.md))
+- 自动 region 故障转移容灾(参见[Region 故障转移](/user-guide/deployments-administration/manage-data/region-failover.md))
+- **路线图**:自动 region 拆分、动态负载均衡
+
+**监控与运维**:
+
+GreptimeDB 提供全面的监控能力,包括指标收集、健康检查和可观测性集成。详细的监控设置和故障排除指南请参见[监控概述](/user-guide/deployments-administration/monitoring/overview.md)。
+
+部署和管理详情:[部署与管理概述](/user-guide/deployments-administration/overview.md)
+
+## 开源版 vs 企业版 vs 云版本
+
+### GreptimeDB 各版本的区别是什么?
+
+**开源版本**:
+- 高性能写入和查询能力
+- 集群部署和基础读写分离
+- 多协议支持(OpenTelemetry、Prometheus、InfluxDB 等)
+- 基础访问控制和加密
+- 基础性能诊断
+- 社区支持
+
+**企业版本**(包含所有开源版功能,另增加):
+- 基于成本的查询优化器,提升性能
+- 高级读写分离和双活灾备(参见[双机热备灾备方案](/enterprise/deployments-administration/disaster-recovery/dr-solution-based-on-active-active-failover.md))
+- 自动扩展、索引和负载均衡
+- 分层缓存和企业级管理控制台
+- 企业授权(RBAC/LDAP 集成)
+- 增强的安全和审计功能
+- 一对一技术支持和 7x24 服务响应
+- 专业定制服务
+
+**GreptimeCloud**(全托管,包含所有企业版功能,另增加):
+- Serverless 自动扩展,按用量付费
+- 全托管部署,无缝升级
+- 独立资源池和网络隔离
+- 可配置读写容量和无限存储
+- 具有 Prometheus 工作台的高级仪表板
+- SLA 保证和自动灾难恢复
+
+详细对比请参见[价格与功能](https://greptime.cn/pricing#differences)。
+
+### 有哪些安全功能可用?
+
+**开源版本**:
+- 基本用户名/密码身份验证
+- 连接的 TLS/SSL 支持
+
+**企业版/云版本**:
+- 基于角色的访问控制(RBAC)
+- 团队管理和 API 密钥
+- 静态数据加密
+- 合规审计日志
+
+## 技术细节
+
+### GreptimeDB 如何扩展 Apache DataFusion?
+
+GreptimeDB 基于 DataFusion 构建:
+- **查询语言**:原生 PromQL 与 SQL 并存
+- **分布式执行**:多节点查询协调
+- **自定义函数**:时序特定的 UDF/UDAF
+- **优化**:针对可观测性工作负载的规则
+- **计数器处理**:在 `rate()` 和 `delta()` 函数中自动重置检测
+
+自定义函数开发:[函数文档](https://github.com/GreptimeTeam/greptimedb/blob/main/docs/how-to/how-to-write-aggregate-function.md)
+
+### GreptimeDB 和 InfluxDB 的区别是什么?
+
+主要区别:
+- **开源策略**:GreptimeDB 的整个分布式系统完全开源
+- **架构**:针对可观测性工作负载优化的基于 region 的设计
+- **查询语言**:SQL + PromQL vs InfluxQL + SQL
+- **统一模型**:在一个系统中原生支持 metrics、logs 和 traces
+- **存储**:具有专用优化的可插拔引擎
+- **云原生**:为 Kubernetes 构建,具有分解的计算/存储(参见 [Kubernetes 部署指南](/user-guide/deployments-administration/deploy-on-kubernetes/overview.md))
+
+详细比较请参见 [GreptimeDB vs InfluxDB](https://greptime.cn/compare/influxdb)。更多产品比较(如 vs. ClickHouse、Loki 等)可在官网的资源菜单中找到。
+
+### GreptimeDB 的存储引擎如何工作?
+
+**LSM-Tree 架构**:
+- 基于日志结构合并树(LSMT)设计
+- WAL 可以使用本地磁盘或分布式服务(如 Kafka)通过 Log Store API
+- SST 文件刷写到对象存储(S3/GCS)或本地磁盘
+- 面向云原生环境设计,以对象存储为主要后端
+- 使用 TWCS(时间窗口压缩策略)优化时序工作负载
+
+**性能考量**:
+- **时间戳**:日期时间格式(yyyy-MM-dd HH:mm:ss)无性能影响
+- **压缩**:仅测量数据目录;WAL 循环重用
+- **Append Only 表**:建议使用,对写入和查询性能更友好,尤其适合日志场景
+- **Flow Engine**:目前基于 SQL;PromQL 支持正在评估中
+
+### 特定用例的最佳实践是什么?
+
+**网络监控**(如数千个网卡):
+- 使用 Flow 表进行连续聚合
+- 通过 Flow Engine 手动降采样进行数据缩减
+- 输出到常规表进行长期存储
+
+**日志分析**:
+- 使用 Append Only 表获得更好的写入和查询性能
+- 在频繁查询的字段上创建索引([索引管理](/user-guide/manage-data/data-index.md))
+- 存储效率:ClickHouse 的 50%,Elasticsearch 的 12.7%
+
+**表设计与性能**:
+- 表建模指导:[设计表](/user-guide/deployments-administration/performance-tuning/design-table.md)
+- 性能优化:[性能调优提示](/user-guide/deployments-administration/performance-tuning/performance-tuning-tips.md)
+
+
+## 入门指南
+
+### 如何开始使用 GreptimeDB?
+
+**📚 学习资源**:
+
+*文档与指南*:
+- [安装指南](/getting-started/installation/overview.md) - 快速开始部署
+- [容量规划](/user-guide/deployments-administration/capacity-plan.md) - 生产环境规划
+- [配置指南](/user-guide/deployments-administration/configuration.md) - 详细配置说明
+
+*性能基准*:
+- [TSBS 基准测试](https://github.com/GreptimeTeam/greptimedb/tree/main/docs/benchmarks/tsbs)
+- [性能对比分析](/user-guide/concepts/features-that-you-concern.md#greptimedb-对比其他存储或时序数据库的性能如何)
+- [vs InfluxDB](https://greptime.cn/blogs/2024-08-08-report)
+- [vs Loki](https://greptime.cn/blogs/2025-08-07-beyond-loki-greptimedb-log-scenario-performance-report.html)
+- [日志基准测试](https://greptime.cn/blogs/2025-03-07-greptimedb-log-benchmark)
+
+**🚀 快速上手路径**:
+
+1. **云端体验**:[GreptimeCloud 免费版](https://greptime.cn/product/cloud) - 无需安装即可试用
+2. **本地部署**:按照[安装指南](/getting-started/installation/overview.md)自托管部署
+3. **集成现有系统**:GreptimeDB 支持与 Prometheus、Vector、Kafka、Telegraf、EMQX、Metabase 等众多系统的广泛集成。完整列表请参见[集成概述](/user-guide/integrations/overview.md),或从以下开始:
+ - [OpenTelemetry 集成](/user-guide/ingest-data/for-observability/opentelemetry.md)
+ - [Prometheus 迁移](/user-guide/ingest-data/for-observability/prometheus.md)
+ - Grafana 仪表板配置
+
+**🤝 社区与贡献**:
+
+*参与社区*:
+- [Slack 频道](https://greptime.com/slack) - 与用户和开发者交流
+- [GitHub Discussions](https://github.com/GreptimeTeam/greptimedb/discussions) - 技术讨论
+
+*贡献代码*:
+- [贡献指南](https://github.com/GreptimeTeam/greptimedb/blob/main/CONTRIBUTING.md) - 开发环境搭建
+- [适合新手的 Issue](https://github.com/GreptimeTeam/greptimedb/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+first+issue%22) - 第一次贡献
+- [文档改进](https://github.com/GreptimeTeam/docs) - 帮助完善中英文文档
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/faq-and-others/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/faq-and-others/overview.md
new file mode 100644
index 0000000000..de87c1cb13
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/faq-and-others/overview.md
@@ -0,0 +1,9 @@
+---
+keywords: [常见问题]
+description: 关于 GreptimeDB 的常见问题解答。
+---
+
+# 常见问题及其他
+
+在本节中,我们将介绍[常见问题](./faq.md)和其他一些信息。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/installation/greptimedb-cluster.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/installation/greptimedb-cluster.md
new file mode 100644
index 0000000000..e86d9cc805
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/installation/greptimedb-cluster.md
@@ -0,0 +1,55 @@
+---
+keywords: [分布式集群, Kubernetes, Docker Compose, 水平扩展, 快速开始]
+description: 介绍如何在 Kubernetes 和 Docker Compose 中部署 GreptimeDB 集群,以支持水平扩展。
+---
+
+# GreptimeDB 分布式集群
+
+GreptimeDB 可以运行于 [cluster](/contributor-guide/overview.md) 模式以支持水平扩展。
+
+## 在 Kubernetes 中部署 GreptimeDB 集群
+
+对于生产环境,我们建议在 Kubernetes 中部署 GreptimeDB 集群。请参考 [在 Kubernetes 上部署](/user-guide/deployments-administration/deploy-on-kubernetes/overview.md)。
+
+## 使用 Docker Compose
+
+:::tip 注意
+虽然 Docker Compose 是运行 GreptimeDB 集群的便捷方法,但仅适用于开发和测试目的。
+
+对于生产环境或基准测试,我们建议使用 Kubernetes。
+:::
+
+### 前置条件
+
+使用 Docker Compose 是运行 GreptimeDB 集群的最简单方法。开始之前,请确保已经安装了 Docker。
+
+### 步骤 1: 下载 Docker Compose 的 YAML 文件
+
+```
+wget https://raw.githubusercontent.com/GreptimeTeam/greptimedb/VAR::greptimedbVersion/docker/docker-compose/cluster-with-etcd.yaml
+```
+
+### 步骤 2: 启动集群
+
+```
+GREPTIMEDB_VERSION=VAR::greptimedbVersion \
+GREPTIMEDB_REGISTRY=greptime-registry.cn-hangzhou.cr.aliyuncs.com \
+ETCD_REGISTRY=greptime-registry.cn-hangzhou.cr.aliyuncs.com \
+ docker compose -f ./cluster-with-etcd.yaml up
+```
+
+如果集群成功启动,它将监听 4000-4003 端口。你可以通过参考 [快速开始](../quick-start.md#连接到-greptimedb) 访问集群。
+
+### 清理
+
+你可以使用以下命令停止集群:
+
+```
+docker compose -f ./cluster-with-etcd.yaml down
+```
+
+默认情况下,数据将被存储在 `./greptimedb-cluster-docker-compose`。如果你想清理数据,也可删除该目录。
+
+## 下一步
+
+学习如何使用 GreptimeDB:[快速开始](../quick-start.md#连接到-greptimedb)。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/installation/greptimedb-dashboard.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/installation/greptimedb-dashboard.md
new file mode 100644
index 0000000000..d9674647b8
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/installation/greptimedb-dashboard.md
@@ -0,0 +1,17 @@
+---
+keywords: [控制台, 数据可视化, 查询语言, SQL 查询, PromQL 查询]
+description: 介绍 GreptimeDB 控制台的功能和使用方法,包括数据可视化和多种查询语言的支持。
+---
+
+# GreptimeDB 控制台
+
+数据可视化在时间序列数据分析时发挥着关键作用。为了帮助用户充分利用 GreptimeDB 的各种功能,GreptimeDB 提供了一个简单的[控制台](https://github.com/GreptimeTeam/dashboard)。
+
+自 GreptimeDB v0.2.0 版本以来,控制台已经默认嵌入到 GreptimeDB 的 binary 文件中。在启动 [GreptimeDB 单机版](greptimedb-standalone.md)或[分布式集群](greptimedb-cluster.md)后,可以通过 URL `http://localhost:4000/dashboard` 访问控制台。控制台支持多种查询语言,包括 [SQL 查询](/user-guide/query-data/sql.md)和 [PromQL 查询](/user-guide/query-data/promql.md)。
+
+我们提供不同种类的图表,可以根据不同的场景进行选择。当用户有足够的数据时,图表的内容将更加丰富。
+
+
+
+
+我们将持续开发和迭代这个开源项目,并计划将时间序列数据应用于监测、分析和其他相关领域的扩展。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/installation/greptimedb-standalone.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/installation/greptimedb-standalone.md
new file mode 100644
index 0000000000..5ffc12cc28
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/installation/greptimedb-standalone.md
@@ -0,0 +1,136 @@
+---
+keywords: [单机模式, 二进制安装, Docker, Windows, 配置文档]
+description: 介绍如何在单机模式下安装和运行 GreptimeDB,包括使用二进制文件、Docker 和 Windows 的安装方法。
+---
+
+# GreptimeDB 单机模式
+
+## 安装
+
+我们先通过最简单的配置来开始。有关 GreptimeDB 中可用的所有配置选项的详细列表,请参考[配置文档](/user-guide/deployments-administration/configuration.md)。
+
+## 在 Kubernetes 中部署 GreptimeDB 单机版
+
+对于生产环境,我们建议在 Kubernetes 中部署 GreptimeDB 单机版。请参考 [在 Kubernetes 上部署](/user-guide/deployments-administration/deploy-on-kubernetes/overview.md)。
+
+### 二进制
+
+你可以在[下载页面](https://greptime.cn/download)通过发布的最新稳定版本尝试使用 GreptimeDB。
+
+### Linux 或 macOS
+
+如果你使用的是 Linux 或 macOS,可以通过以下命令下载 `greptime` binary 的最新版本:
+
+```shell
+curl -fsSL \
+ https://raw.githubusercontent.com/greptimeteam/greptimedb/main/scripts/install.sh | sh -s VAR::greptimedbVersion
+```
+
+下载完成后,binary 文件 `greptime` 将存储在当前的目录中。
+
+你可以在单机模式下运行 GreptimeDB:
+
+```shell
+./greptime standalone start
+```
+
+### Windows
+
+若您的 Windows 系统已开启 WSL([Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/about)),您可以直接打开一个最新的 Ubuntu 接着如上所示运行 GreptimeDB!
+
+否则请到我们的[官网](https://greptime.com/resources)下载并解压最新的 GreptimeDB for Windows 安装包。
+
+在单机模式下运行 GreptimeDB,您可以在 GreptimeDB 二进制所在的文件夹下打开一个终端(比如 Powershell),执行:
+
+```shell
+.\greptime standalone start
+```
+
+### Docker
+
+请确保已经安装了 [Docker](https://www.docker.com/)。如果还没有安装,可以参考 Docker 官方的[文档](https://www.docker.com/get-started/)进行安装。
+
+```shell
+docker run -p 127.0.0.1:4000-4003:4000-4003 \
+ -v "$(pwd)/greptimedb_data:/greptimedb_data" \
+ --name greptime --rm \
+ greptime-registry.cn-hangzhou.cr.aliyuncs.com/greptime/greptimedb:VAR::greptimedbVersion standalone start \
+ --http-addr 0.0.0.0:4000 \
+ --rpc-bind-addr 0.0.0.0:4001 \
+ --mysql-addr 0.0.0.0:4002 \
+ --postgres-addr 0.0.0.0:4003
+```
+
+:::tip 注意事项
+为了防止不小心退出 Docker 容器,你可能想以“detached”模式运行它:在 `docker run` 命令中添加 `-d` 参数即可。
+:::
+
+数据将会存储在当前目录下的 `greptimedb_data/` 目录中。
+
+如果你想要使用另一个版本的 GreptimeDB 镜像,可以从我们的 [GreptimeDB Dockerhub](https://hub.docker.com/r/greptime/greptimedb) 下载。
+
+:::tip 注意事项
+
+如果正在使用小于 [v23.0](https://docs.docker.com/engine/release-notes/23.0/) 的 Docker 版本,由于旧版本的 Docker Engine 中存在 [bug](https://github.com/moby/moby/pull/42681),所以当你尝试运行上面的命令时,可能会遇到权限不足的问题。
+
+你可以:
+
+1. 设置 `--security-opt seccomp=unconfined`:
+
+ ```shell
+ docker run --security-opt seccomp=unconfined -p 4000-4003:4000-4003 \
+ -v "$(pwd)/greptimedb_data:/greptimedb_data" \
+ --name greptime --rm \
+ greptime-registry.cn-hangzhou.cr.aliyuncs.com/greptime/greptimedb:VAR::greptimedbVersion standalone start \
+ --http-addr 0.0.0.0:4000 \
+ --rpc-bind-addr 0.0.0.0:4001 \
+ --mysql-addr 0.0.0.0:4002 \
+ --postgres-addr 0.0.0.0:4003
+ ```
+
+2. 将 Docker 版本升级到 v23.0.0 或更高;
+:::
+
+## 绑定地址
+
+GreptimeDB 默认绑定地址为 `127.0.0.1`。如果你需要能够接收来自所有地址的连接,可以通过以下参数启动。
+
+> :::danger 危险操作
+> 如果运行 GreptimeDB 的计算机直接向互联网暴露服务,那么绑定 `0.0.0.0` 会十分危险,因为这将数据库实例暴露给互联网上的所有人。
+
+
+
+
+
+```shell
+./greptime standalone start \
+ --http-addr 0.0.0.0:4000 \
+ --rpc-bind-addr 0.0.0.0:4001 \
+ --mysql-addr 0.0.0.0:4002 \
+ --postgres-addr 0.0.0.0:4003
+```
+
+
+
+
+
+```shell
+docker run -p 0.0.0.0:4000-4003:4000-4003 \
+ -v "$(pwd)/greptimedb_data:/greptimedb_data" \
+ --name greptime --rm \
+ greptime-registry.cn-hangzhou.cr.aliyuncs.com/greptime/greptimedb:VAR::greptimedbVersion standalone start \
+ --http-addr 0.0.0.0:4000 \
+ --rpc-bind-addr 0.0.0.0:4001 \
+ --mysql-addr 0.0.0.0:4002 \
+ --postgres-addr 0.0.0.0:4003
+```
+
+
+
+
+
+你也可以参考[配置 GreptimeDB](/user-guide/deployments-administration/configuration.md)文档在配置文件中修改绑定的地址。
+
+## 下一步
+
+学习如何使用 GreptimeDB:[快速开始](../quick-start.md)。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/installation/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/installation/overview.md
new file mode 100644
index 0000000000..75362b5ce7
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/installation/overview.md
@@ -0,0 +1,31 @@
+---
+keywords: [安装, 数据库健康检查, 单机模式, 分布式集群, 快速入门]
+description: 介绍如何安装 GreptimeDB 以及启动后检查数据库健康状态的方法。
+---
+
+# 安装
+
+根据以下说明安装 GreptimeDB:
+
+- [GreptimeDB 单机模式](greptimedb-standalone.md)
+- [GreptimeDB 分布式集群](greptimedb-cluster.md)
+
+## 检查数据库健康状态
+
+启动 GreptimeDB 后,你可以检查其状态以确保其正常运行。
+
+```shell
+
+curl http://localhost:4000/health
+
+```
+
+如果 GreptimeDB 实例正常运行,你将看到下面的响应:
+
+```json
+{}
+```
+
+## 下一步
+
+- [快速入门](/getting-started/quick-start.md):使用 MySQL 或 PostgreSQL 客户端在 GreptimeDB 中写入和查询数据。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/overview.md
new file mode 100644
index 0000000000..2100f4b86c
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/overview.md
@@ -0,0 +1,11 @@
+---
+keywords: [快速开始, 安装]
+description: 快速开始使用 GreptimeDB
+---
+
+# 立即开始
+
+立即开始使用 GreptimeDB!
+
+- [安装](./installation/overview.md):安装 GreptimeDB 单机模式或分布式集群。
+- [快速开始](./quick-start.md):使用你熟悉的协议或语言快速上手 GreptimeDB。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/quick-start.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/quick-start.md
new file mode 100644
index 0000000000..7087af6d81
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/getting-started/quick-start.md
@@ -0,0 +1,526 @@
+---
+keywords: [快速开始, 数据库连接, 创建表, 写入数据, 查询数据, 数据可视化]
+description: 介绍如何快速开始使用 GreptimeDB,包括连接数据库、创建表、写入数据、查询数据等核心功能。
+---
+
+# 快速开始
+
+在继续阅读之前,请确保你已经[安装了 GreptimeDB](./installation/overview.md)。
+
+本指南通过引导你创建一个 metric 表和一个 log 表来介绍 GreptimeDB 的核心功能。
+
+你将学习(10-15 分钟)
+* 在本地启动并连接到 GreptimeDB
+* 创建 metrics 和 logs 表并插入示例数据
+* 查询和聚合数据
+* 计算 5 秒窗口内的 p95 和 ERROR 计数并对齐它们
+* 关联 metrics 和 logs 来发现异常主机和时间点
+* 结合 SQL 和 PromQL 查询数据
+
+## 连接到 GreptimeDB
+
+GreptimeDB 支持[多种协议](/user-guide/protocols/overview.md)与数据库进行交互。
+在本快速入门文档中,我们使用 SQL 作为实例。
+
+如果你的 GreptimeDB 实例运行在 `127.0.0.1` 中,
+并且使用 MySQL 客户端默认端口 `4002` 或 PostgreSQL 客户端默认端口 `4003`,
+你可以使用以下命令连接到数据库。
+
+GreptimeDB 默认不开启[鉴权认证](/user-guide/deployments-administration/authentication/overview.md)。
+在本章节中你可以在连接数据库时不提供用户名密码。
+
+```shell
+mysql -h 127.0.0.1 -P 4002
+```
+
+或者
+
+```shell
+psql -h 127.0.0.1 -p 4003 -d public
+```
+
+你也可以通过浏览器访问 DB 内置的 Dashboard 地址 `http://127.0.0.1:4000/dashbaord` 运行本文档中的 SQL。
+
+## 创建表
+
+假设你有一个名为 `grpc_latencies` 的事件(Events)表,用于存储的 gRPC 调用接口以及它的处理时间。表 schema 如下:
+
+```sql
+-- Metrics: gRPC 调用延迟(毫秒)
+CREATE TABLE grpc_latencies (
+ ts TIMESTAMP TIME INDEX,
+ host STRING INVERTED INDEX,
+ method_name STRING,
+ latency DOUBLE,
+ PRIMARY KEY (host, method_name)
+);
+```
+
+- `ts`:收集指标时的时间戳,时间索引列。
+- `host`:主机名,设置了[倒排索引](/user-guide/manage-data/data-index.md#倒排索引)。
+- `method_name`:RPC 请求方法的名称,tag 列。
+- `latency`:RPC 请求的响应时间。
+
+此外,还有一个名为 `app_logs` 的表用于存储日志:
+
+```sql
+-- Logs: 应用程序日志
+CREATE TABLE app_logs (
+ ts TIMESTAMP TIME INDEX,
+ host STRING INVERTED INDEX,
+ api_path STRING,
+ log_level STRING,
+ log_msg STRING FULLTEXT INDEX WITH('case_sensitive' = 'false'),
+ PRIMARY KEY (host, log_level)
+) with('append_mode'='true');
+```
+
+- `ts`:日志条目的时间戳,时间索引列。
+- `host`:主机名,设置了倒排索引。
+- `api_path`:API 路径。
+- `log_level`:日志级别,tag 列。
+- `log_msg`:日志消息内容,设置了[全文索引](/user-guide/manage-data/data-index.md#全文索引)。
+
+通过将 `append_mode` 设置为 true 来启用 [Append Only](/user-guide/deployments-administration/performance-tuning/design-table.md#何时使用-append-only-表)模式,这通常对性能有帮助。同时也支持其他表选项,如数据保留期等。
+
+::::tip
+我们在下面使用 SQL 来导入数据,因此需要手动创建表。但 GreptimeDB 本身是 [schemaless](/user-guide/ingest-data/overview.md#自动生成表结构) 的,在使用其他写入方法时可以自动生成 schema。
+::::
+
+## 写入数据
+
+让我们插入一些模拟数据来模拟收集的指标和错误日志。
+
+假设有两个服务器 `host1` 和 `host2` 记录着 gRPC 延迟。
+从 `2024-07-11 20:00:10` 开始,`host1` 的延迟显著增加。
+
+下图显示了 `host1` 的不稳定延迟。
+
+
+
+使用以下 SQL 语句插入模拟数据。
+
+在 `2024-07-11 20:00:10` 之前,主机正常运行:
+
+```sql
+INSERT INTO grpc_latencies (ts, host, method_name, latency) VALUES
+ ('2024-07-11 20:00:06', 'host1', 'GetUser', 103.0),
+ ('2024-07-11 20:00:06', 'host2', 'GetUser', 113.0),
+ ('2024-07-11 20:00:07', 'host1', 'GetUser', 103.5),
+ ('2024-07-11 20:00:07', 'host2', 'GetUser', 107.0),
+ ('2024-07-11 20:00:08', 'host1', 'GetUser', 104.0),
+ ('2024-07-11 20:00:08', 'host2', 'GetUser', 96.0),
+ ('2024-07-11 20:00:09', 'host1', 'GetUser', 104.5),
+ ('2024-07-11 20:00:09', 'host2', 'GetUser', 114.0);
+```
+
+在 `2024-07-11 20:00:10` 之后,`host1` 的响应时间变得不稳定,处理时间大幅波动,偶尔会出现数千毫秒的峰值:
+
+```sql
+
+INSERT INTO grpc_latencies (ts, host, method_name, latency) VALUES
+ ('2024-07-11 20:00:10', 'host1', 'GetUser', 150.0),
+ ('2024-07-11 20:00:10', 'host2', 'GetUser', 110.0),
+ ('2024-07-11 20:00:11', 'host1', 'GetUser', 200.0),
+ ('2024-07-11 20:00:11', 'host2', 'GetUser', 102.0),
+ ('2024-07-11 20:00:12', 'host1', 'GetUser', 1000.0),
+ ('2024-07-11 20:00:12', 'host2', 'GetUser', 108.0),
+ ('2024-07-11 20:00:13', 'host1', 'GetUser', 80.0),
+ ('2024-07-11 20:00:13', 'host2', 'GetUser', 111.0),
+ ('2024-07-11 20:00:14', 'host1', 'GetUser', 4200.0),
+ ('2024-07-11 20:00:14', 'host2', 'GetUser', 95.0),
+ ('2024-07-11 20:00:15', 'host1', 'GetUser', 90.0),
+ ('2024-07-11 20:00:15', 'host2', 'GetUser', 115.0),
+ ('2024-07-11 20:00:16', 'host1', 'GetUser', 3000.0),
+ ('2024-07-11 20:00:16', 'host2', 'GetUser', 95.0),
+ ('2024-07-11 20:00:17', 'host1', 'GetUser', 320.0),
+ ('2024-07-11 20:00:17', 'host2', 'GetUser', 115.0),
+ ('2024-07-11 20:00:18', 'host1', 'GetUser', 3500.0),
+ ('2024-07-11 20:00:18', 'host2', 'GetUser', 95.0),
+ ('2024-07-11 20:00:19', 'host1', 'GetUser', 100.0),
+ ('2024-07-11 20:00:19', 'host2', 'GetUser', 115.0),
+ ('2024-07-11 20:00:20', 'host1', 'GetUser', 2500.0),
+ ('2024-07-11 20:00:20', 'host2', 'GetUser', 95.0);
+```
+
+当 `host1` 的 gRPC 请求的响应时间遇到问题时,收集了一些错误日志:
+
+```sql
+INSERT INTO app_logs (ts, host, api_path, log_level, log_msg) VALUES
+ ('2024-07-11 20:00:10', 'host1', '/api/v1/resource', 'ERROR', 'Connection timeout'),
+ ('2024-07-11 20:00:10', 'host1', '/api/v1/billings', 'ERROR', 'Connection timeout'),
+ ('2024-07-11 20:00:11', 'host1', '/api/v1/resource', 'ERROR', 'Database unavailable'),
+ ('2024-07-11 20:00:11', 'host1', '/api/v1/billings', 'ERROR', 'Database unavailable'),
+ ('2024-07-11 20:00:12', 'host1', '/api/v1/resource', 'ERROR', 'Service overload'),
+ ('2024-07-11 20:00:12', 'host1', '/api/v1/billings', 'ERROR', 'Service overload'),
+ ('2024-07-11 20:00:13', 'host1', '/api/v1/resource', 'ERROR', 'Connection reset'),
+ ('2024-07-11 20:00:13', 'host1', '/api/v1/billings', 'ERROR', 'Connection reset'),
+ ('2024-07-11 20:00:14', 'host1', '/api/v1/resource', 'ERROR', 'Timeout'),
+ ('2024-07-11 20:00:14', 'host1', '/api/v1/billings', 'ERROR', 'Timeout'),
+ ('2024-07-11 20:00:15', 'host1', '/api/v1/resource', 'ERROR', 'Disk full'),
+ ('2024-07-11 20:00:15', 'host1', '/api/v1/billings', 'ERROR', 'Disk full'),
+ ('2024-07-11 20:00:16', 'host1', '/api/v1/resource', 'ERROR', 'Network issue'),
+ ('2024-07-11 20:00:16', 'host1', '/api/v1/billings', 'ERROR', 'Network issue');
+```
+
+## 查询数据
+
+### 根据 tag 和时间索引进行过滤
+
+你可以使用 `WHERE` 子句来过滤数据。例如,要查询 `2024-07-11 20:00:15` 之后 `host1` 的延迟:
+
+```sql
+SELECT *
+ FROM grpc_latencies
+ WHERE host = 'host1' AND ts > '2024-07-11 20:00:15';
+```
+
+```sql
++---------------------+-------+-------------+---------+
+| ts | host | method_name | latency |
++---------------------+-------+-------------+---------+
+| 2024-07-11 20:00:16 | host1 | GetUser | 3000 |
+| 2024-07-11 20:00:17 | host1 | GetUser | 320 |
+| 2024-07-11 20:00:18 | host1 | GetUser | 3500 |
+| 2024-07-11 20:00:19 | host1 | GetUser | 100 |
+| 2024-07-11 20:00:20 | host1 | GetUser | 2500 |
++---------------------+-------+-------------+---------+
+5 rows in set (0.14 sec)
+```
+
+你还可以在过滤数据时使用函数。例如,你可以使用 `approx_percentile_cont` 函数按主机分组计算响应时间的 95 百分位数:
+
+```sql
+SELECT
+ approx_percentile_cont(0.95) WITHIN GROUP (ORDER BY latency) AS p95_latency,
+ host
+FROM grpc_latencies
+WHERE ts >= '2024-07-11 20:00:10'
+GROUP BY host;
+```
+
+```sql
++-------------------+-------+
+| p95_latency | host |
++-------------------+-------+
+| 4164.999999999999 | host1 |
+| 115 | host2 |
++-------------------+-------+
+2 rows in set (0.11 sec)
+```
+
+
+### 通过关键词搜索日志
+
+通过关键词 `timeout` 过滤日志消息:
+```sql
+SELECT
+ *
+FROM
+ app_logs
+WHERE
+ lower(log_msg) @@ 'timeout'
+ AND ts > '2024-07-11 20:00:00'
+ORDER BY
+ ts;
+```
+
+```sql
++---------------------+-------+------------------+-----------+--------------------+
+| ts | host | api_path | log_level | log_msg |
++---------------------+-------+------------------+-----------+--------------------+
+| 2024-07-11 20:00:10 | host1 | /api/v1/billings | ERROR | Connection timeout |
+| 2024-07-11 20:00:10 | host1 | /api/v1/resource | ERROR | Connection timeout |
+| 2024-07-11 20:00:14 | host1 | /api/v1/billings | ERROR | Timeout |
+| 2024-07-11 20:00:14 | host1 | /api/v1/resource | ERROR | Timeout |
++---------------------+-------+------------------+-----------+--------------------+
+```
+
+`@@` 操作符用于[短语搜索](/user-guide/logs/fulltext-search.md)。
+
+### Range query
+
+你可以使用 [range query](/reference/sql/range.md#range-query)来实时监控延迟。例如,按 5 秒窗口计算请求的 p95 延迟:
+
+```sql
+SELECT
+ ts,
+ host,
+ approx_percentile_cont(0.95) WITHIN GROUP (ORDER BY latency)
+ RANGE '5s' AS p95_latency
+FROM
+ grpc_latencies
+ALIGN '5s' FILL PREV
+ORDER BY
+ host,ts;
+```
+
+```sql
++---------------------+-------+-------------+
+| ts | host | p95_latency |
++---------------------+-------+-------------+
+| 2024-07-11 20:00:05 | host1 | 104.5 |
+| 2024-07-11 20:00:10 | host1 | 4200 |
+| 2024-07-11 20:00:15 | host1 | 3500 |
+| 2024-07-11 20:00:20 | host1 | 2500 |
+| 2024-07-11 20:00:05 | host2 | 114 |
+| 2024-07-11 20:00:10 | host2 | 111 |
+| 2024-07-11 20:00:15 | host2 | 115 |
+| 2024-07-11 20:00:20 | host2 | 95 |
++---------------------+-------+-------------+
+8 rows in set (0.06 sec)
+```
+
+Range query 是一个非常强大的功能,用于基于时间窗口查询和聚合数据,请阅读[手册](/reference/sql/range.md#range-query)以了解更多。
+
+### 指标和日志的关联查询
+
+通过组合两个表的数据,你可以快速地确定故障时间和相应的日志。以下 SQL 查询使用 `JOIN` 操作关联指标和日志:
+
+```sql
+-- 将指标和日志对齐到 5 秒时间桶,然后关联
+WITH
+ -- 指标: 每个主机在 5 秒时间桶内的 p95 延迟
+ metrics AS (
+ SELECT
+ ts,
+ host,
+ approx_percentile_cont(0.95) WITHIN GROUP (ORDER BY latency) RANGE '5s' AS p95_latency
+ FROM grpc_latencies
+ ALIGN '5s' FILL PREV
+ ),
+ -- 日志: 相同 5 秒时间桶内每个主机的 ERROR 计数
+ logs AS (
+ SELECT
+ ts,
+ host,
+ count(log_msg) RANGE '5s' AS num_errors
+ FROM app_logs
+ WHERE log_level = 'ERROR'
+ ALIGN '5s'
+ )
+SELECT
+ m.ts,
+ m.p95_latency,
+ COALESCE(l.num_errors, 0) AS num_errors,
+ m.host
+FROM metrics m
+LEFT JOIN logs l
+ ON m.host = l.host AND m.ts = l.ts
+ORDER BY m.ts, m.host;
+```
+
+
+```sql
++---------------------+-------------+------------+-------+
+| ts | p95_latency | num_errors | host |
++---------------------+-------------+------------+-------+
+| 2024-07-11 20:00:05 | 104.5 | 0 | host1 |
+| 2024-07-11 20:00:05 | 114 | 0 | host2 |
+| 2024-07-11 20:00:10 | 4200 | 10 | host1 |
+| 2024-07-11 20:00:10 | 111 | 0 | host2 |
+| 2024-07-11 20:00:15 | 3500 | 4 | host1 |
+| 2024-07-11 20:00:15 | 115 | 0 | host2 |
+| 2024-07-11 20:00:20 | 2500 | 0 | host1 |
+| 2024-07-11 20:00:20 | 95 | 0 | host2 |
++---------------------+-------------+------------+-------+
+8 rows in set (0.02 sec)
+```
+
+我们可以看到当 gRPC 响应时间增大的时间窗口内,错误日志也显著增多,并且确定问题在 `host1`。
+
+### 通过 PromQL 查询数据
+
+GreptimeDB 支持 [Prometheus 查询语言及其 API](/user-guide/query-data/promql.md),允许你使用 PromQL 查询指标。例如,你可以使用以下查询获取每个主机在过去 1 分钟内的 p95 响应时间:
+
+```promql
+quantile_over_time(0.95, grpc_latencies{host!=""}[1m])
+```
+
+要测试这个查询,使用以下 curl 命令:
+```bash
+curl -X POST \
+ -H 'Authorization: Basic {{authorization if exists}}' \
+ --data-urlencode 'query=quantile_over_time(0.95, grpc_latencies{host!=""}[1m])' \
+ --data-urlencode 'start=2024-07-11 20:00:00Z' \
+ --data-urlencode 'end=2024-07-11 20:00:20Z' \
+ --data-urlencode 'step=1m' \
+ 'http://localhost:4000/v1/prometheus/api/v1/query_range'
+```
+
+这里我们设置 `step` 为 1 分钟。
+
+输出:
+```json
+{
+ "status": "success",
+ "data": {
+ "resultType": "matrix",
+ "result": [
+ {
+ "metric": {
+ "__name__": "grpc_latencies",
+ "host": "host1",
+ "method_name": "GetUser"
+ },
+ "values": [
+ [
+ 1720728000.0,
+ "103"
+ ]
+ ]
+ },
+ {
+ "metric": {
+ "__name__": "grpc_latencies",
+ "host": "host2",
+ "method_name": "GetUser"
+ },
+ "values": [
+ [
+ 1720728000.0,
+ "113"
+ ]
+ ]
+ }
+ ]
+ }
+}
+```
+
+更强大的是,你可以使用 SQL 来执行 PromQL 并混合使用两者,例如:
+```sql
+TQL EVAL ('2024-07-11 20:00:00Z', '2024-07-11 20:00:20Z','1m')
+ quantile_over_time(0.95, grpc_latencies{host!=""}[1m]);
+```
+
+这个 SQL 查询将输出:
+```sql
++---------------------+---------------------------------------------------------+-------+-------------+
+| ts | prom_quantile_over_time(ts_range,latency,Float64(0.95)) | host | method_name |
++---------------------+---------------------------------------------------------+-------+-------------+
+| 2024-07-11 20:00:00 | 113 | host2 | GetUser |
+| 2024-07-11 20:00:00 | 103 | host1 | GetUser |
++---------------------+---------------------------------------------------------+-------+-------------+
+```
+
+重写上面的关联示例:
+```sql
+WITH
+ metrics AS (
+ TQL EVAL ('2024-07-11 20:00:00Z', '2024-07-11 20:00:20Z', '5s')
+ quantile_over_time(0.95, grpc_latencies{host!=""}[5s])
+ ),
+ logs AS (
+ SELECT
+ ts,
+ host,
+ COUNT(log_msg) RANGE '5s' AS num_errors
+ FROM app_logs
+ WHERE log_level = 'ERROR'
+ ALIGN '5s'
+ )
+SELECT
+ m.*,
+ COALESCE(l.num_errors, 0) AS num_errors
+FROM metrics AS m
+LEFT JOIN logs AS l
+ ON m.host = l.host
+ AND m.ts = l.ts
+ORDER BY
+ m.ts,
+ m.host;
+```
+
+```sql
++---------------------+---------------------------------------------------------+-------+-------------+------------+
+| ts | prom_quantile_over_time(ts_range,latency,Float64(0.95)) | host | method_name | num_errors |
++---------------------+---------------------------------------------------------+-------+-------------+------------+
+| 2024-07-11 20:00:05 | 103 | host1 | GetUser | 0 |
+| 2024-07-11 20:00:05 | 113 | host2 | GetUser | 0 |
+| 2024-07-11 20:00:10 | 140.89999999999998 | host1 | GetUser | 10 |
+| 2024-07-11 20:00:10 | 113.8 | host2 | GetUser | 0 |
+| 2024-07-11 20:00:15 | 3400 | host1 | GetUser | 4 |
+| 2024-07-11 20:00:15 | 114 | host2 | GetUser | 0 |
+| 2024-07-11 20:00:20 | 3375 | host1 | GetUser | 0 |
+| 2024-07-11 20:00:20 | 115 | host2 | GetUser | 0 |
++---------------------+---------------------------------------------------------+-------+-------------+------------+
+```
+
+通过使用 [TQL](/reference/sql/tql.md) 命令,你可以结合 SQL 和 PromQL 的强大功能,使关联分析和复杂查询不再困难。
+
+
+
+## GreptimeDB 控制台
+
+GreptimeDB 提供了一个[仪表板](./installation/greptimedb-dashboard.md)用于数据探索和管理。
+
+### 数据探索
+
+按照[安装部分](./installation/overview.md)中的说明启动 GreptimeDB 后,你可以通过 HTTP 地址 `http://localhost:4000/dashboard` 访问控制台。
+
+点击 `+` 按钮添加一个新的查询,在命令文本中编写你的 SQL 命令,然后点击 `Run All`。
+下方的 SQL 会查询 `grpc_latencies` 表中的所有数据。
+
+```sql
+SELECT * FROM grpc_latencies;
+```
+
+然后点击结果面板中的 `Chart` 按钮来可视化数据。
+
+
+
+### 使用 InfluxDB Line Protocol 导入数据
+
+除了 SQL,GreptimeDB 还支持多种协议,其中最常用之一是 InfluxDB Line Protocol。
+在仪表板中点击 `Ingest` 图标,你可以以 InfluxDB Line Protocol 格式上传数据。
+
+例如,将以下数据粘贴到输入框中:
+
+```txt
+grpc_metrics,host=host1,method_name=GetUser latency=100,code=0 1720728021000000000
+grpc_metrics,host=host2,method_name=GetUser latency=110,code=1 1720728021000000000
+```
+
+然后点击 `Write` 按钮来导入数据到 `grpc_metrics` 表。如果该表不存在,将会自动创建该表。
+## 下一步
+
+你现在已经体验了 GreptimeDB 的核心功能。
+要进一步探索和利用 GreptimeDB:
+
+- [使用 Grafana 可视化数据](/user-guide/integrations/grafana.md)
+- [探索更多 GreptimeDB 的 Demo](https://github.com/GreptimeTeam/demo-scene/)
+- [阅读用户指南学习 GreptimeDB](/user-guide/overview.md)
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/create-service.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/create-service.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/create-service.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/create-service.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/go.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/go.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/go.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/go.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/influxdb.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/influxdb.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/influxdb.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/influxdb.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/java.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/java.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/java.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/java.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/mysql.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/mysql.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/mysql.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/mysql.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/node.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/node.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/node.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/node.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/overview.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/overview.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/overview.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/prometheus.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/prometheus.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/prometheus.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/prometheus.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/python.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/python.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/python.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/python.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/vector.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/vector.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/vector.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/vector.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/visualize-data.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/visualize-data.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/getting-started/visualize-data.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/getting-started/visualize-data.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/alloy.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/alloy.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/alloy.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/alloy.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/dbeaver.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/dbeaver.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/dbeaver.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/dbeaver.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/fluent-bit.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/fluent-bit.md
similarity index 99%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/fluent-bit.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/fluent-bit.md
index 700bdcae25..696f4fa77a 100644
--- a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/fluent-bit.md
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/fluent-bit.md
@@ -27,7 +27,7 @@ Fluent Bit 可以配置为使用 HTTP 协议将日志发送到 GreptimeCloud。
http_Passwd
```
-在此示例中,使用 `http` 输出插件将日志发送到 GreptimeCloud。有关更多信息和额外选项,请参阅 [Logs HTTP API](https://docs.greptime.cn/reference/pipeline/write-log-api/#http-api) 指南。
+在此示例中,使用 `http` 输出插件将日志发送到 GreptimeCloud。有关更多信息和额外选项,请参阅 [Logs HTTP API](https://docs.greptime.cn/reference/pipeline/write-log-api.md#http-api) 指南。
## Prometheus Remote Write
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/grafana.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/grafana.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/grafana.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/grafana.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/influxdb.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/influxdb.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/influxdb.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/influxdb.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/kafka.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/kafka.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/kafka.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/kafka.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/metabase.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/metabase.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/metabase.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/metabase.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/mindsdb.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/mindsdb.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/mindsdb.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/mindsdb.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/mysql.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/mysql.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/mysql.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/mysql.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/otlp.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/otlp.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/otlp.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/otlp.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/postgresql.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/postgresql.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/postgresql.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/postgresql.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/prometheus.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/prometheus.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/prometheus.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/prometheus.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/sdk-libraries/go.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/sdk-libraries/go.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/sdk-libraries/go.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/sdk-libraries/go.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/sdk-libraries/java.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/sdk-libraries/java.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/sdk-libraries/java.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/sdk-libraries/java.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/streamlit.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/streamlit.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/streamlit.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/streamlit.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/superset.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/superset.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/superset.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/superset.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/vector.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/vector.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/integrations/vector.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/integrations/vector.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/migrate-to-greptimecloud/migrate-from-influxdb.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/migrate-to-greptimecloud/migrate-from-influxdb.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/migrate-to-greptimecloud/migrate-from-influxdb.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/migrate-to-greptimecloud/migrate-from-influxdb.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/migrate-to-greptimecloud/migrate-from-prometheus.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/migrate-to-greptimecloud/migrate-from-prometheus.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/migrate-to-greptimecloud/migrate-from-prometheus.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/migrate-to-greptimecloud/migrate-from-prometheus.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/overview.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/overview.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/overview.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/billing.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/billing.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/billing.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/billing.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/dedicated.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/dedicated.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/dedicated.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/dedicated.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/hobby.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/hobby.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/hobby.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/hobby.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/overview.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/overview.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/overview.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/request-capacity-unit.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/request-capacity-unit.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/request-capacity-unit.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/request-capacity-unit.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/serverless.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/serverless.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/serverless.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/serverless.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/shared-storage-capacity.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/shared-storage-capacity.md
similarity index 100%
rename from i18n/zh/docusaurus-plugin-content-docs/version-0.17/greptimecloud/usage-&-billing/shared-storage-capacity.md
rename to i18n/zh/docusaurus-plugin-content-docs/version-1.0/greptimecloud/usage-&-billing/shared-storage-capacity.md
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/index.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/index.md
new file mode 100644
index 0000000000..ba1c8cf3b2
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/index.md
@@ -0,0 +1,42 @@
+---
+keywords: [可观测性数据库,开源可观测性数据库,时序数据库, 开源时序数据库, 可观测数据,时序数据, 可观测性工具, 云原生数据库, 数据可观测性, 可观测性平台, 边缘数据库, 物联网边缘计算, 边缘云计算, 日志管理, 日志聚合, 高基数, SQL查询示例, OpenTelemetry 收集器, GreptimeDB]
+description: 介绍了 GreptimeDB,一个开源的统一可观测性数据库,用于存储指标、日志和事件,包含入门指南、用户指南、贡献者指南等链接,帮助用户快速上手和深入了解。
+---
+
+# 简介
+
+
+
+
+
+**GreptimeDB** 是一个开源、云原生、统一的可观测性数据库,用于存储指标、日志和链路追踪数据。您可以从边缘到云端获得实时洞察——无论规模大小。
+
+GreptimeDB 经由 [GreptimeCloud](https://greptime.cn/product/cloud) 提供云服务。
+GreptimeCloud 是一个完全托管的可观测性数据库服务,具有无服务器(Serverless)的可扩展性、与丰富的 IoT 和可观测软件生态系统的无缝集成。
+
+我们的核心开发人员多年深耕于建立可观测(监控)数据平台。基于他们的丰富经验,GreptimeDB 应运而生,并为用户提供:
+
+
+- **All-in-One 的可观测性数据库**:通过统一数据库实时处理指标、日志和链路追踪,原生支持 [SQL](/user-guide/query-data/sql.md)、[PromQL](/user-guide/query-data/promql.md) 和 [流式处理](/user-guide/flow-computation/overview.md)。用高性能单一解决方案取代复杂的传统数据堆栈。
+- **高性能引擎**:采用 Rust 语言打造,具备卓越的性能和可靠性。丰富的[索引选择](/user-guide/manage-data/data-index.md)(倒排、全文、调数和向量索引)加速查询,实现 PB 级数据的亚秒级响应,并能处理数十万并发请求。
+- **显著的成本降低**:凭借计算与存储分离的[架构](/user-guide/concepts/architecture.md),运营和存储成本降低 50 倍。可灵活扩展至各类云存储系统(如 S3、Azure Blob Storage),配合全托管云服务 [GreptimeCloud](https://greptime.cn/product/cloud) ,极大简化运维管理。
+- **无限扩展性**:专为 [Kubernetes](/user-guide/deployments-administration/deploy-on-kubernetes/greptimedb-operator-management.md) 和云环境而设计,采用业界领先的计算与存储分离架构,实现无限制的跨云扩展。高效应对高基数爆炸问题。
+- **开发者友好**:支持标准 SQL、PromQL 接口、内置 Web 仪表盘、REST API,并兼容 MySQL/PostgreSQL 协议。广泛适配主流数据 [接入协议](/user-guide/protocols/overview.md),轻松迁移与集成。
+- **灵活的部署选项**:可部署于任意环境,从 ARM 边缘设备到云端,提供统一 API 和高效带宽的数据同步。通过相同的 API 无缝查询边缘和云端数据。
+
+在开始上手之前,请阅读以下文档,其包含了设置说明、基本概念、架构设计和教程:
+
+- [立即开始][1]: 为刚接触 GreptimeDB 的用户提供指引,包括如何安装与数据库操作。
+- [用户指南][2]: 应用程序开发人员可以使用 GreptimeDB 或建立自定义集成。
+- [贡献者指南][3]: 有兴趣了解更多技术细节并想成为 GreptimeDB 的贡献者的开发者请阅读此文档。
+- [最新 RoadMap][4]: 了解 GreptimeDB 当前研发进展和路线图
+
+
+[1]: ./getting-started/overview.md
+[2]: ./user-guide/overview.md
+[3]: ./contributor-guide/overview.md
+[4]: https://greptime.cn/blogs/2025-01-24-greptimedb-roadmap2025
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/about-greptimedb-engines.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/about-greptimedb-engines.md
new file mode 100644
index 0000000000..b8b98d7505
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/about-greptimedb-engines.md
@@ -0,0 +1,50 @@
+---
+keywords: [greptimedb 引擎, Mito 引擎, Metric 引擎, File 引擎, 表引擎]
+description: GreptimeDB 中所有表引擎的概述。
+---
+
+# GreptimeDB 表引擎
+
+## 概述
+
+GreptimeDB 提供多种专业的表引擎(Table Engine),每种引擎都针对特定工作负载和使用场景进行了优化设计。本文档全面介绍了这些引擎,并提供了何时使用每种引擎的指导。
+
+### Mito 引擎
+
+Mito 是 GreptimeDB 的默认`存储引擎`,负责高效存储和管理数据库数据。基于 [LSMT][1](日志结构合并树)架构构建,Mito 已针对时间序列数据工作负载进行了广泛优化。
+
+该引擎的架构包括预写日志(WAL)以确保持久性、Memtable 在内存中高效组织数据以及基于时间窗口压缩策略(TWCS)的高效压缩策略。这种设计使 Mito 能够处理高吞吐量的写入操作,同时保持出色的查询性能。
+
+Mito 无缝集成了各种对象存储解决方案,包括 S3、GCS 和 Azure Blob Storage,无需额外插件即可提供原生支持。它在对象存储之上实现了分层缓存系统,优化了任何规模时间序列数据的存储成本和访问速度。
+
+[1]: https://en.wikipedia.org/wiki/Log-structured_merge-tree
+
+### Metric 引擎
+
+顾名思义,Metric 引擎旨在高效处理指标数据。它专门处理可观测性负载中典型的海量小表的场景。
+
+Metric 引擎的关键创新在于使用合成宽物理表来存储来自众多小表的数据。这种方法能够跨表高效重用列和元数据,显著减少存储开销,同时提高列式压缩效率。在 Metric 引擎下,表成为轻量级逻辑结构,非常适合云原生可观测场景,这些场景中通常存在数千个小型指标表。
+
+Metric 引擎构建在 Mito 引擎之上,这意味着其数据实际上存储在 Mito 引擎中。这种架构利用了 Mito 强大的存储能力,同时为指标数据管理添加了专门的优化。
+
+### File 引擎
+
+File 引擎是 GreptimeDB 中专为处理基于文件的数据源而设计的专用存储引擎。它允许 GreptimeDB 直接查询和处理存储在外部文件中的数据,无需数据导入或转换。
+
+该引擎支持数据分析工作流中常用的各种文件格式,实现与现有数据管道的无缝集成。通过将外部文件视为虚拟表,File 引擎提供了对基于文件的数据的 SQL 查询能力,同时保持了 GreptimeDB 查询引擎的性能优化。
+
+当数据已经以文件格式存在时,File 引擎特别有用,允许用户分析这些数据,同时分析存储在其他 GreptimeDB 引擎中的时间序列数据。这一功能使 GreptimeDB 成为更加多功能的统一分析平台,能够处理多样化的数据源。
+
+## 引擎选择指南
+
+### 何时使用各种引擎
+
+- **Mito 引擎**:作为默认存储引擎,Mito 适用于大多数通用时间序列工作负载。当你需要平衡写入吞吐量、查询性能和存储效率时,它是一个极佳的选择。对于需要持久存储并具有良好全面性能特性的应用程序,请使用 Mito。
+
+- **Metric 引擎**:当处理涉及数千个具有相似列结构的小表的可观测性和指标监控场景时,选择 Metric 引擎。该引擎在云原生监控环境中表现出色,可以减少存储开销并提高查询性能,特别适合指标数据为主的场景。
+
+- **File 引擎**:当你需要查询已存在于外部文件中的数据而无需将其导入数据库时,选择 File 引擎。这对于数据探索、一次性分析任务或与现有基于文件的数据管道集成时非常理想。
+
+### 在 SQL 中指定引擎类型
+
+在 GreptimeDB 中创建表时,您可以通过 CREATE TABLE 语句中的 `ENGINE` 子句指定要使用的引擎。有关语法和选项的更详细信息,请参阅 [CREATE TABLE](/reference/sql/create.md#create-table) 文档。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/about-greptimedb-version.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/about-greptimedb-version.md
new file mode 100644
index 0000000000..182fcc688d
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/about-greptimedb-version.md
@@ -0,0 +1,34 @@
+---
+keywords: [版本号, 语义化版本控制, 主版本号, 次版本号, 修订号]
+description: 介绍 GreptimeDB 版本号的语义化版本控制方案,包括主版本号、次版本号和修订号的定义和影响。
+---
+
+# 关于 GreptimeDB 版本号
+
+GreptimeDB 遵循 [语义化版本控制](https://semver.org/) 方案:
+
+1.2.3 其中:
+- 1 是主版本号
+- 2 是次版本号
+- 3 是修订号
+
+## 主版本号 (1)
+
+主版本号表示软件生命周期中的一个重要里程碑,通常引入广泛的变化。
+- 特点:包括主要的架构更新、重大新功能或系统大修。
+- 影响:通常不向后兼容,用户或开发人员需要进行调整。
+- 示例:主要的 API 重新设计、基础架构的重大变化或引入新的核心模块。
+
+## 次版本号 (2)
+
+次版本号侧重于功能增强和小改进,旨在完善现有系统。
+- 特点:添加新功能、小更新或界面改进。
+- 影响:虽然它在同一主版本内努力保持向后兼容,但偶尔也可能会出现小的破坏性更改。
+- 示例:引入可选功能、更新用户界面或扩展配置选项并对现有行为进行轻微调整。
+
+## 修订号 (3)
+
+修订号用于修补或小幅改进,解决特定问题。
+- 特点:专注于错误修复、安全更新或性能优化。
+- 影响:不引入新功能或改变系统的整体行为。
+- 示例:修复已知错误、解决安全漏洞或提高系统稳定性。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/datanode.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/datanode.md
new file mode 100644
index 0000000000..d212142404
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/datanode.md
@@ -0,0 +1,86 @@
+---
+keywords: [GreptimeDB datanode, 命令行界面, datanode 配置, datanode 启动, datanode 选项, datanode 示例]
+description: GreptimeDB datanode 命令行界面完整指南,包括配置选项、启动命令以及部署 datanode 实例的实用示例。
+---
+
+# Datanode
+
+`greptime datanode` 命令提供了用于管理和基准测试 datanode 实例的子命令。
+
+## start
+
+启动 datanode 服务。
+
+### 选项
+
+你可以通过以下命令列出所有选项:
+
+```
+greptime datanode start --help
+```
+
+| 选项 | 描述 |
+| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
+| `-c`/`--config-file` | Datanode 的配置文件 |
+| `--data-home` | 数据库存储 home 目录 |
+| `--env-prefix ` | 配置的环境变量前缀,默认为`GREPTIMEDB_DATANODE` |
+| `--http-addr ` | HTTP 服务器地址 |
+| `--http-timeout ` | HTTP 超时设置,单位秒 |
+| `--metasrv-addrs ` | Metasrv 服务器列表,用逗号或者空格隔开 |
+| `--node-id ` | 节点 ID |
+| `--rpc-bind-addr ` | gRPC 服务绑定地址址 |
+| `--rpc-server-addr ` | 该地址用于来自主机外部的连接和通信。如果留空或未设置,服务器将自动使用主机上第一个网络接口的 IP 地址,其端口号与 `rpc_bind_addr` 中指定的相同; |
+| `--wal-dir ` | WAL 目录 |
+
+所有的 `addr` 类选项都是 `ip:port` 形式的字符串。
+
+### 示例
+
+#### 使用配置启动服务
+
+使用自定义配置启动 Datanode 实例:
+
+```sh
+greptime datanode start -c config/datanode.example.toml
+```
+
+使用命令行参数启动 Datanode,指定 gRPC 服务地址、MySQL 服务地址、Metasrv 地址和该 Datanode 的 ID:
+
+```sh
+greptime datanode start --rpc-bind-addr=0.0.0.0:4001 --mysql-addr=0.0.0.0:4002 --metasrv-addrs=0.0.0.0:3002 --node-id=1
+```
+
+`datanode.example.toml` 配置文件来自 `[GreptimeDB](https://github.com/GreptimeTeam/greptimedb/)` 仓库的 `config` 目录。你可以在那里找到更多示例配置文件。`-c` 选项指定配置文件,更多信息请参考 [Configuration](/user-guide/deployments-administration/configuration.md)。
+
+## objbench
+
+`objbench` 子命令是一个用于测量对象存储上特定文件读写性能的基准测试工具。这对于诊断性能问题和测试存储层性能非常有用。
+
+### 选项
+
+| 选项 | 描述 |
+| ------------------------------ | ---------------------------------------------------------------------------------------------------- |
+| `--config ` | datanode 配置文件路径(TOML 格式) |
+| `--source ` | 对象存储中的源 SST 文件路径(例如 `data/greptime/public/1024/1024_0000000000/metadata/.parquet`)|
+| `-v`/`--verbose` | 启用详细输出 |
+| `--pprof-file ` | pprof 火焰图的输出文件路径(启用性能分析)。生成 SVG 格式的火焰图文件 |
+
+### 示例
+
+#### 基础基准测试
+
+测量特定文件的读写性能:
+
+```sh
+greptime datanode objbench --config ./datanode.toml --source data/greptime/public/1024/1024_0000000000/metadata/8fb41bc7-a106-4b9e-879b-392da799f958.parquet
+```
+
+#### 带性能分析的基准测试
+
+测量性能并生成用于性能分析的火焰图:
+
+```sh
+greptime datanode objbench --config ./datanode.toml --source data/greptime/public/1024/1024_0000000000/metadata/8fb41bc7-a106-4b9e-879b-392da799f958.parquet --pprof-file=./flamegraph.svg
+```
+
+这将生成一个 SVG 格式的火焰图,可以在 Web 浏览器中打开进行性能分析。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/flownode.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/flownode.md
new file mode 100644
index 0000000000..6755d18044
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/flownode.md
@@ -0,0 +1,43 @@
+---
+keywords: [GreptimeDB flownode, 命令行界面, flownode 配置, flownode 启动, flownode 选项, flownode 示例]
+description: GreptimeDB flownode 命令行界面完整指南,包括配置选项、启动命令以及部署 flownode 实例的实用示例。
+---
+
+# Flownode
+
+## 子命令选项
+
+你可以通过以下命令列出所有选项:
+
+```
+greptime flownode start --help
+```
+| Option | Description |
+| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
+| `-c`/`--config-file` | Flownode 的配置文件 |
+| `--env-prefix ` | 配置的环境变量前缀,默认为`GREPTIMEDB_FLOWNODE` |
+| `--metasrv-addrs ...` | etasrv 服务器列表,用逗号或者空格隔开 |
+| `--node-id ` | 节点 ID |
+| `--rpc-bind-addr ` | gRPC 服务绑定地址 |
+| `--rpc-server-addr ` | 该地址用于来自主机外部的连接和通信。如果留空或未设置,服务器将自动使用主机上第一个网络接口的 IP 地址,其端口号与 `rpc_bind_addr` 中指定的相同; |
+
+所有的 `addr` 类选项都是 `ip:port` 形式的字符串。
+
+## Examples
+
+### 使用配置启动服务
+
+使用自定义配置启动 Flownode 实例:
+
+```sh
+greptime flownode start -c config/flownode.example.toml
+```
+
+
+使用命令行参数启动 Flownode,指定 gRPC 服务地址、Metasrv 地址:
+
+```sh
+greptime flownode start --node-id=0 --rpc-bind-addr=127.0.0.1:6800 --metasrv-addrs=127.0.0.1:3002
+```
+
+`flownode.example.toml` 配置文件来自 `[GreptimeDB](https://github.com/GreptimeTeam/greptimedb/)` 仓库的 `config` 目录。你可以在那里找到更多示例配置文件。`-c` 选项指定配置文件,更多信息请参考 [Configuration](/user-guide/deployments-administration/configuration.md)。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/frontend.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/frontend.md
new file mode 100644
index 0000000000..8717ec87b7
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/frontend.md
@@ -0,0 +1,51 @@
+---
+keywords: [GreptimeDB frontend, 命令行界面, frontend 配置, frontend 启动, frontend 选项, frontend 示例]
+description: GreptimeDB frontend 命令行界面完整指南,包括配置选项、启动命令以及部署 frontend 实例的实用示例。
+---
+
+# Frontend
+
+## 子命令选项
+
+你可以通过以下命令列出所有选项:
+
+```
+greptime frontend start --help
+```
+
+| Option | Description |
+| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `-c`/`--config-file` | Frontend 的配置文件 |
+| `--disable-dashboard` | 禁用 dashboard http 服务,默认是 `false` |
+| `--env-prefix ` | 配置的环境变量前缀,默认为`GREPTIMEDB_FRONTEND` |
+| `--rpc-bind-addr ` | gRPC 服务绑定地址 |
+| `--rpc-server-addr ` | 该地址用于来自主机外部的连接和通信。如果留空或未设置,服务器将自动使用主机上第一个网络接口的 IP 地址,其端口号与 `rpc_bind_addr` 中指定的相同; |
+| `--http-timeout ` | HTTP 请求超时时间(秒) |
+| `--influxdb-enable` | 是否启用 InfluxDB 协议 |
+| `--metasrv-addrs ` | Metasrv 服务器列表,用逗号或者空格隔开 |
+| `--mysql-addr ` | MySQL 服务器地址 |
+| `--postgres-addr ` | Postgres 服务器地址 |
+| `--tls-cert-path ` | TLS 公钥文件路径 |
+| `--tls-key-path ` | TLS 私钥文件路径 |
+| `--tls-mode ` | TLS 模式 |
+| `--user-provider ` | 您可以参考 [authentication](/user-guide/deployments-administration/authentication/overview.md) |
+
+所有的 `addr` 类选项都是 `ip:port` 形式的字符串。
+
+## Examples
+
+### 使用配置启动服务
+
+使用自定义配置启动 Frontend 实例:
+
+```sh
+greptime frontend start -c config/frontend.example.toml
+```
+
+使用命令行参数启动 Frontend,指定 Metasrv 地址:
+
+```sh
+greptime frontend start --metasrv-addrs=0.0.0.0:3002
+```
+
+`frontend.example.toml` 配置文件来自 `[GreptimeDB](https://github.com/GreptimeTeam/greptimedb/)` 仓库的 `config` 目录。你可以在那里找到更多示例配置文件。`-c` 选项指定配置文件,更多信息请参考 [Configuration](/user-guide/deployments-administration/configuration.md)。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/metasrv.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/metasrv.md
new file mode 100644
index 0000000000..f7e7aa5623
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/metasrv.md
@@ -0,0 +1,41 @@
+---
+keywords: [GreptimeDB metasrv, 命令行界面, metasrv 配置, metasrv 启动, metasrv 选项, metasrv 示例]
+description: GreptimeDB metasrv 命令行界面完整指南,包括配置选项、启动命令以及部署和管理 metasrv 实例的实用示例。
+---
+
+# Metasrv
+
+## 子命令选项
+
+你可以通过以下命令列出所有选项:
+
+```
+greptime metasrv start --help
+```
+
+| Option | Description |
+| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `-c`/`--config-file` | Metasrv 的配置文件 |
+| `--enable-region-failover` | 是否启用 Region 自动容灾,默认是 `false`。开启条件请参考:[Region 自动容灾](/user-guide/deployments-administration/manage-data/region-failover.md) |
+| `--env-prefix ` | 配置的环境变量前缀,默认为`GREPTIMEDB_METASRV` |
+| `--rpc-bind-addr ` | gRPC 服务绑定地址 |
+| `--rpc-server-addr ` | 该地址用于来自主机外部的连接和通信。如果留空或未设置,服务器将自动使用主机上第一个网络接口的 IP 地址,其端口号与 `rpc_bind_addr` 中指定的相同; |
+| `--http-addr ` | HTTP 服务器地址 |
+| `--http-timeout ` | HTTP 请求超时时间(秒) |
+| `--selector ` | 您可以参考 [selector-type](/contributor-guide/metasrv/selector.md#selector-type) |
+| `--store-addrs ` | 逗号或空格分隔的键值存储服务器(默认是 etcd)地址,用于存储元数据 |
+| `--use-memory-store` | 用内存存储而不是其他持久化的存储后端,仅用于测试目的的 |
+
+所有的 `addr` 类选项都是 `ip:port` 形式的字符串。
+
+## 示例
+
+### 使用配置启动服务
+
+使用自定义配置启动 Metasrv 实例:
+
+```sh
+greptime metasrv start -c config/metasrv.example.toml
+```
+
+`metasrv.example.toml` 配置文件来自 `[GreptimeDB](https://github.com/GreptimeTeam/greptimedb/)` 仓库的 `config` 目录。你可以在那里找到更多示例配置文件。`-c` 选项指定配置文件,更多信息请参考 [Configuration](/user-guide/deployments-administration/configuration.md)。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/overview.md
new file mode 100644
index 0000000000..c1952b4d45
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/overview.md
@@ -0,0 +1,67 @@
+---
+keywords: [命令行工具, 安装 Greptime, 启动服务, 配置示例, 升级版本]
+description: 介绍 Greptime 命令行工具的安装、使用方法,包括全局选项、各子命令选项、配置示例、升级 GreptimeDB 版本等内容。
+---
+
+# 概述
+
+`greptime` 命令行工具可以启动、停止、或传递配置项给 GreptimeDB。
+
+## 安装命令行工具
+
+Greptime 命令行工具与 GreptimeDB 二进制文件捆绑在一起。
+
+如果你按照[快速安装 GreptimeDB](/getting-started/installation/overview.md)文档中所述使用二进制文件启动的 GreptimeDB,可以在 GreptimeDB 的当前目录中执行 `./greptime` 命令。
+为了方便起见,如果你希望使用 `greptime` 而不是 `./greptime` 来运行命令,
+可以将命令行工具的二进制文件移动到系统的 `bin` 目录,或者将二进制文件的路径添加到 `PATH` 环境变量中。
+
+如果你是在 Kubernetes 中部署的 GreptimeDB,可以通过 frontend pod 访问 greptime 命令行工具。使用以下命令进入 pod:
+
+```sh
+kubectl exec -it -n -- /bin/bash
+```
+
+进入 pod 后,可以运行 `greptime help` 查看所有可用命令。
+
+## 选项
+
+`help` 命令列出了 `greptime` 所有可用的命令和选项。
+
+```sh
+$ greptime help
+Usage: greptime [OPTIONS]
+
+Commands:
+ datanode Start datanode service
+ frontend Start frontend service
+ metasrv Start metasrv service
+ standalone Run greptimedb as a standalone service
+ cli Execute the cli tools for greptimedb
+ help Print this message or the help of the given subcommand(s)
+
+Options:
+ --log-dir
+ --log-level
+ -h, --help Print help
+ -V, --version Print version
+```
+
+### 全局选项
+
+| Option | Description |
+| ------------------------- | ----------------------------------------- |
+| `-h`/`--help` | 打印帮助信息 |
+| `-V`/`--version` | 打印版本信息 |
+| `--log-dir ` | 日志目录,默认是 `./greptimedb_data/logs` |
+| `--log-level ` | 日志级别,默认是 `info` |
+
+### 子命令
+- [Metasrv](/reference/command-lines/metasrv.md)
+- [Datanode](/reference/command-lines/datanode.md)
+- [Flownode](/reference/command-lines/flownode.md)
+- [Frontend](/reference/command-lines/frontend.md)
+- [Standalone](/reference/command-lines/standalone.md)
+
+### 升级 GreptimeDB 版本
+
+请参考具体的[升级步骤](/user-guide/deployments-administration/upgrade.md)
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/standalone.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/standalone.md
new file mode 100644
index 0000000000..47168c5f5d
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/standalone.md
@@ -0,0 +1,38 @@
+---
+keywords: [GreptimeDB standalone, 命令行界面, standalone 配置, standalone 启动, standalone 选项, standalone 示例]
+description: GreptimeDB standalone 命令行界面完整指南,包括配置选项、启动命令以及部署 standalone 实例的实用示例。
+---
+
+# Standalone
+
+## 子命令选项
+
+你可以通过以下命令列出所有选项:
+
+
+```
+greptime standalone start --help
+```
+| Option | Description |
+| --------------------------------- | ------------------------------------------------- |
+| `-c`/`--config-file` | Standalone 的配置文件 |
+| `--env-prefix ` | 配置的环境变量前缀,默认为`GREPTIMEDB_STANDALONE` |
+| `--http-addr ` | HTTP 服务器地址 |
+| `--influxdb-enable` | 是否启用 InfluxDB 协议 |
+| `--mysql-addr ` | MySQL 服务器地址 |
+| `--postgres-addr ` | Postgres 服务器地址 |
+| `--rpc-bind-addr ` | gRPC 服务绑定地址 |
+
+所有的 `addr` 类选项都是 `ip:port` 形式的字符串。
+
+## 示例
+
+### 使用配置启动服务
+
+使用自定义配置启动 Standalone 实例:
+
+```sh
+greptime --log-dir=greptimedb_data/logs --log-level=info standalone start -c config/standalone.example.toml
+```
+
+`standalone.example.toml` 配置文件来自 `[GreptimeDB](https://github.com/GreptimeTeam/greptimedb/)` 仓库的 `config` 目录。你可以在那里找到更多示例配置文件。`-c` 选项指定配置文件,更多信息请参考 [Configuration](/user-guide/deployments-administration/configuration.md)。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/utilities/data.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/utilities/data.md
new file mode 100644
index 0000000000..e02bda114f
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/utilities/data.md
@@ -0,0 +1,72 @@
+---
+keywords: [备份, 恢复, 导出工具, 导入工具, 数据库备份, 数据恢复, 命令行工具, 数据导出, 数据导入]
+description: 介绍 GreptimeDB 的数据导出和导入工具,用于数据库备份和恢复,包括命令语法、选项。
+---
+
+# 数据导出和导入
+
+数据导出和导入工具提供了备份和恢复 GreptimeDB 数据库的功能。这些工具可以处理表结构和数据,允许进行完整的备份或选择性的备份和恢复操作。
+
+## 导出工具
+
+### 命令语法
+```bash
+greptime cli data export [OPTIONS]
+```
+
+### 选项
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ------------------------- | -------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `--addr` | 是 | - | 要连接的 GreptimeDB 数据库地址 |
+| `--output-dir` | 是 | - | 存储导出数据的目录 |
+| `--database` | 否 | 所有数据库 | 要导出的数据库名称 |
+| `--export-jobs, -j` | 否 | 1 | 并行导出任务数量(多个数据库可以并行导出) |
+| `--max-retry` | 否 | 3 | 每个任务的最大重试次数 |
+| `--target, -t` | 否 | all | 导出目标(schema/data/all) |
+| `--start-time` | 否 | - | 数据导出的开始时间范围 |
+| `--end-time` | 否 | - | 数据导出的结束时间范围 |
+| `--auth-basic` | 否 | - | 使用 `:` 格式 |
+| `--timeout` | 否 | 0 | 对 DB 进行一次调用的超时时间,默认为 0 代表永不超时(例如 `30s`, `10min 20s`) |
+| `--proxy` | 否 | - | 代理服务器地址,如设置该参数,将覆盖系统代理。如果未设置 `--proxy` 和 `--no-proxy`,则默认使用系统代理 |
+| `--no-proxy` | 否 | - | 禁用代理服务器,如设置该参数,将完全不使用代理 |
+| `--s3` | 否 | - | 是否导出数据到 Amazon S3 |
+| `--ddl-local-dir` | 否 | - | 当同时设置了 `ddl_local_dir` 和远程存储(如 S3/OSS)时,SQL 文件将导出至本地目录,而数据将导出到远程存储。注意:`ddl_local_dir` 只导出 SQL 文件至**本地文件系统**,适用于导出客户端无法直接访问远程存储的情况。如果未设置 `ddl_local_dir`,则 SQL 和数据都将导出至远程存储 |
+| `--s3-bucket` | 是\* | - | 当设置了 `--s3` 时,必须指定 S3 的 bucket 名称 |
+| `--s3-root` | 是\* | - | 当设置了 `--s3` 时,必须指定导出在 bucket 中的根路径 |
+| `--s3-endpoint` | 否\* | - | 当设置了 `--s3` 时,需指定 S3 的 endpoint |
+| `--s3-access-key` | 是\* | - | 当设置了 `--s3` 时,需指定 S3 的 Access Key |
+| `--s3-secret-key` | 是\* | - | 当设置了 `--s3` 时,需指定 S3 的 Secret Key |
+| `--s3-region` | 是\* | - | 当设置了 `--s3` 时,需指定 S3 的区域(Region) |
+| `--oss` | 否 | - | 是否导出数据到阿里云 OSS |
+| `--oss-bucket` | 是\* | - | 当设置了 `--oss` 时,需指定 OSS 的 bucket 名称 |
+| `--oss-endpoint` | 否\* | - | 当设置了 `--oss` 时,需指定 OSS 的 endpoint |
+| `--oss-access-key-id` | 是\* | - | 当设置了 `--oss` 时,需指定 OSS 的 Access Key ID |
+| `--oss-access-key-secret` | 是\* | - | 当设置了 `--oss` 时,需指定 OSS 的 Access Key Secret |
+
+### 导出目标
+- `schema`: 仅导出表结构(`SHOW CREATE TABLE`)
+- `data`: 仅导出表数据(`COPY DATABASE TO`)
+- `all`: 导出表结构和数据(默认)
+
+## 导入工具
+
+### 命令语法
+```bash
+greptime cli data import [OPTIONS]
+```
+
+### 选项
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ------------------- | -------- | ---------- | ------------------------------------------ |
+| `--addr` | 是 | - | 要连接的 GreptimeDB 数据库地址 |
+| `--input-dir` | 是 | - | 包含备份数据的目录 |
+| `--database` | 否 | 所有数据库 | 要导入的数据库名称 |
+| `--import-jobs, -j` | 否 | 1 | 并行导入任务数量(多个数据库可以并行导入) |
+| `--max-retry` | 否 | 3 | 每个任务的最大重试次数 |
+| `--target, -t` | 否 | all | 导入目标(schema/data/all) |
+| `--auth-basic` | 否 | - | 使用 `:` 格式 |
+
+### 导入目标
+- `schema`: 仅导入表结构
+- `data`: 仅导入表数据
+- `all`: 导入表结构和数据(默认)
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/utilities/metadata-interaction.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/utilities/metadata-interaction.md
new file mode 100644
index 0000000000..9e2a14ccfb
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/utilities/metadata-interaction.md
@@ -0,0 +1,255 @@
+---
+keywords: [GreptimeDB CLI, 元数据交互, 键值操作, 表元数据, 存储后端]
+description: 使用 CLI 与 GreptimeDB 元数据交互的指南,包括键值操作、表元数据检索和删除。
+---
+
+# 元数据交互
+
+`greptime cli meta` 命令可以用于与 GreptimeDB 集群的元数据进行交互。
+
+
+## 公共选项
+
+| 选项 | 描述 | 默认值 | 值 |
+| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ----------------------------------------------------- |
+| `--store-addrs ...` | 元数据存储服务地址。可以是 etcd、postgres 或 mysql。
对于 postgres 存储,格式为:`"password=password dbname=postgres user=postgres host=localhost port=5432"`。
对于 etcd 存储,格式为:`"127.0.0.1:2379"`。
对于 mysql 存储,格式为:`"mysql://user:password@ip:port/dbname"` | - | - |
+| `--max-txn-ops ` | 单个事务中操作的最大数量。仅在使用 [etcd-store] 时使用 | 128 | - |
+| `--backend ` | 元数据存储后端类型 | etcd-store | etcd-store, memory-store, postgres-store, mysql-store |
+| `--store-key-prefix ` | 元数据存储前缀缀 | - | - |
+| `--meta-table-name ` | 元数据存储的表名。元数据存储后端为 [postgres-store] 或 [mysql-store] 时使用 | greptime_metakv | - |
+
+
+
+## 获取键值对
+
+### 命令语法
+
+```bash
+greptime cli meta get key [OPTIONS] [KEY]
+```
+
+### 选项
+
+| 选项 | 描述 | 默认值 |
+| ----------------- | ----------------------------------------------------------------------- | ------ |
+| `--prefix` | 是否执行前缀查询。如果为 true,则返回所有键值对,其中键以给定的前缀开头 | false |
+| `--limit ` | 返回的最大键值对数量。如果为 0,则返回所有键值对 | 0 |
+
+## 获取表元数据
+
+### 命令语法
+
+```bash
+greptime cli meta get table [OPTIONS]
+```
+
+### 选项
+
+| 选项 | 描述 | 默认值 |
+| ------------------------------- | ---------------------- | -------- |
+| `--table-id ` | 通过表 ID 获取表元数据 | - |
+| `--table-name ` | 通过表名获取表元数据 | - |
+| `--schema-name ` | 所属数据库的名称 | public |
+| `--catalog-name ` | 所属 catalog 的名称 | greptime |
+| `--pretty` | 美化输出 | - |
+
+
+## 删除键值对
+
+### 命令语法
+
+```bash
+greptime cli meta del key [OPTIONS] [KEY]
+```
+
+### 选项
+
+
+| Option | 描述 | 默认值 |
+| ---------- | -------------------------- | ------ |
+| `--prefix` | 删除具有给定前缀的键值对。 | false |
+
+
+## 删除表元数据
+
+### 命令语法
+
+```bash
+greptime cli meta del table [OPTIONS]
+```
+
+#### 选项
+
+| Option | 描述 | 默认值 |
+| ------------------------------- | ---------------------- | -------- |
+| `--table-id ` | 通过表 ID 获取表元数据 | - |
+| `--table-name ` | 通过表名获取表元数据 | - |
+| `--schema-name ` | 表所属数据库的名称 | public |
+| `--catalog-name ` | 表所属 catalog 的名称 | greptime |
+
+
+## 示例
+
+### 获取单个键值对
+
+```bash
+greptime cli meta get key --store-addrs=$ENDPOINT \
+ --backend=postgres-store \
+ __table_name/greptime/public/metric_table_2
+```
+
+输出:
+
+```json
+__table_name/greptime/public/metric_table_2
+{"table_id":1059}
+```
+
+### 获取所有具有给定前缀的键值对
+
+输出:
+```bash
+greptime cli meta get key --prefix \
+ --store-addrs=$ENDPOINT \
+ --backend=postgres-store \
+ __table_name/greptime/public
+```
+
+```json
+__table_name/greptime/public/greptime_physical_table
+{"table_id":1057}
+__table_name/greptime/public/metric_table_1
+{"table_id":1058}
+__table_name/greptime/public/metric_table_2
+{"table_id":1059}
+```
+
+### 通过表 ID 获取表元数据
+
+```bash
+greptime cli meta get table --table-id=1059 \
+ --store-addrs=$ENDPOINT \
+ --backend=postgres-store
+```
+
+输出:
+
+```json
+__table_info/1059
+{
+ "table_info": {
+ "ident": {
+ "table_id": 1059,
+ "version": 0
+ },
+ "name": "metric_table_2",
+ "desc": null,
+ "catalog_name": "greptime",
+ "schema_name": "public",
+ "meta": {
+ "schema": {
+ "column_schemas": [
+ {
+ "name": "app",
+ "data_type": {
+ "String": null
+ },
+ "is_nullable": true,
+ "is_time_index": false,
+ "default_constraint": null,
+ "metadata": {}
+ },
+ ...
+ ],
+ "timestamp_index": 2,
+ "version": 0
+ },
+ "primary_key_indices": [
+ 0,
+ ...
+ ],
+ "value_indices": [
+ 3
+ ],
+ "engine": "metric",
+ "next_column_id": 8,
+ "region_numbers": [
+ 0,
+ ...
+ ],
+ "options": {
+ "write_buffer_size": null,
+ "ttl": null,
+ "skip_wal": false,
+ "extra_options": {
+ "on_physical_table": "greptime_physical_table"
+ }
+ },
+ "created_on": "2025-06-17T14:53:14.639207075Z",
+ "partition_key_indices": []
+ },
+ "table_type": "Base"
+ },
+ "version": 0
+}
+__table_route/1059
+{
+ "type": "logical",
+ "physical_table_id": 1057,
+ "region_ids": [
+ 4548370366464,
+ 4548370366465,
+ ...
+ ]
+}
+```
+
+### 通过表名获取表元数据
+
+```bash
+greptime cli meta get table --table-name=metric_table_2 \
+ --schema-name=public \
+ --store-addrs=$ENDPOINT \
+ --backend=postgres-store
+```
+
+输出: 与上述命令的输出相同。
+
+## 删除不存在的键值对
+
+```bash
+greptime cli meta del key --store-addrs=$ENDPOINT \
+ --backend=postgres-store \
+ non_existent_key
+```
+
+输出(返回删除的键值对数量):
+```bash
+0
+```
+
+## 删除键值对
+
+```bash
+greptime cli meta del key --store-addrs=$ENDPOINT \
+ --backend=postgres-store \
+ __table_name/greptime/public/metric_table_3
+```
+
+输出(返回删除的键值对数量):
+```bash
+1
+```
+
+## 删除表元数据
+
+```bash
+greptime cli meta del table --table-id=1059 \
+ --store-addrs=$ENDPOINT \
+ --backend=postgres-store
+```
+
+输出:
+```bash
+Table(1059) deleted
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/utilities/metadata.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/utilities/metadata.md
new file mode 100644
index 0000000000..f50c814a04
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/utilities/metadata.md
@@ -0,0 +1,240 @@
+---
+keywords: [备份, 恢复, 导出工具, 导入工具, 数据库元信息备份, 数据恢复, 命令行工具, GreptimeDB CLI, 灾难恢复]
+description: 介绍 GreptimeDB 的元信息导出和导入工具,用于数据库元信息的备份和恢复,包括命令语法、选项。
+---
+
+# 元数据导出和导入
+
+元数据导出和导入工具提供了备份和恢复 GreptimeDB 元信息的功能。这些工具允许进行元信息备份和恢复操作。
+
+## 导出工具
+
+### 命令语法
+
+```bash
+greptime cli meta snapshot save [OPTIONS]
+```
+
+### 选项
+
+#### 存储后端选项
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ------------------ | -------- | ----------------- | ------------------------------------------------------------------------------------------------------ |
+| --store-addrs | 是 | - | 要连接的元数据存储服务地址(仅支持 etcd、MySQL、PostgreSQL),格式与 Metasrv 配置中的 store-addrs 一致 |
+| --backend | 是 | - | 元数据存储后端类型,支持 `etcd-store`、`postgres-store`、`mysql-store` |
+| --store-key-prefix | 否 | "" | 元数据存储前缀,参考 Metasrv 配置 |
+| --meta-table-name | 否 | greptime_metakv | 当后端为 `postgres-store` 或 `mysql-store` 时,元数据存储的表名 |
+| --max-txn-ops | 否 | 128 | 最大事务操作数 |
+
+#### 文件选项
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ----------- | -------- | ----------------- | -------------------------------------------------- |
+| --file-name | 否 | metadata_snapshot | 元数据导出的文件名,会自动添加 `.metadata.fb` 后缀 |
+| --dir | 否 | "" | 存储导出数据的目录 |
+
+#### 对象存储选项
+
+要使用对象存储来存储导出的元数据,请启用以下任一提供商并配置其连接参数:
+
+##### S3
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ------------------------------ | -------- | ------ | ------------------------------------------- |
+| --enable-s3 | 否 | false | 是否使用 S3 作为导出数据的存储介质 |
+| --s3-bucket | 否 | - | S3 桶名 |
+| --s3-root | 否 | - | S3 桶中的根路径 |
+| --s3-access-key-id | 否 | - | S3 访问密钥 ID |
+| --s3-secret-access-key | 否 | - | S3 访问密钥 |
+| --s3-region | 否 | - | S3 区域名称 |
+| --s3-endpoint | 否 | - | S3 端点 URL(可选,默认根据桶区域确定) |
+| --s3-enable-virtual-host-style | 否 | false | 为 S3 API 请求启用虚拟主机样式 |
+
+##### OSS(阿里云)
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ----------------------- | -------- | ------ | ---------------------------------- |
+| --enable-oss | 否 | false | 是否使用 OSS 作为导出数据的存储介质 |
+| --oss-bucket | 否 | - | OSS 桶名 |
+| --oss-root | 否 | - | OSS 桶中的根路径 |
+| --oss-access-key-id | 否 | - | OSS 访问密钥 ID |
+| --oss-access-key-secret | 否 | - | OSS 访问密钥 |
+| --oss-endpoint | 否 | - | OSS 端点 URL |
+
+##### GCS(谷歌云存储)
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| --------------------- | -------- | ------ | ---------------------------------- |
+| --enable-gcs | 否 | false | 是否使用 GCS 作为导出数据的存储介质 |
+| --gcs-bucket | 否 | - | GCS 桶名 |
+| --gcs-root | 否 | - | GCS 桶中的根路径 |
+| --gcs-scope | 否 | - | GCS 服务范围 |
+| --gcs-credential-path | 否 | - | GCS 凭证文件路径 |
+| --gcs-credential | 否 | - | GCS 凭证内容 |
+| --gcs-endpoint | 否 | - | GCS 端点 URL |
+
+##### Azure Blob 存储
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| --------------------- | -------- | ------ | ---------------------------------------- |
+| --enable-azblob | 否 | false | 是否使用 Azure Blob 作为导出数据的存储介质 |
+| --azblob-container | 否 | - | Azure Blob 容器名称 |
+| --azblob-root | 否 | - | 容器中的根路径 |
+| --azblob-account-name | 否 | - | Azure Blob 账户名称 |
+| --azblob-account-key | 否 | - | Azure Blob 账户密钥 |
+| --azblob-endpoint | 否 | - | Azure Blob 端点 URL |
+| --azblob-sas-token | 否 | - | Azure Blob SAS 令牌 |
+
+## 导入工具
+
+### 命令语法
+
+```bash
+greptime cli meta snapshot restore [OPTIONS]
+```
+
+### 选项
+
+#### 存储后端选项
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ------------------ | -------- | --------------- | ------------------------------------------------------------------------------------------------------ |
+| --store-addrs | 是 | - | 要连接的元数据存储服务地址(仅支持 etcd、MySQL、PostgreSQL),格式与 Metasrv 配置中的 store-addrs 一致 |
+| --backend | 是 | - | 元数据存储后端类型,支持 `etcd-store`、`postgres-store`、`mysql-store` |
+| --store-key-prefix | 否 | "" | 元数据存储的 key 前缀,参考 Metasrv 配置 |
+| --meta-table-name | 否 | greptime_metakv | 当后端为 `postgres-store` 或 `mysql-store` 时,元数据存储的表名 |
+| --max-txn-ops | 否 | 128 | 最大事务操作数 |
+
+#### 文件选项
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ----------- | -------- | ----------------------------- | -------------------------------------------------------------------------------------- |
+| --file-name | 否 | metadata_snapshot.metadata.fb | 元数据导出的文件名 |
+| --dir | 否 | "." | 存储导出数据的目录 |
+| --force | 否 | false | 是否强制导入,当目标后端检测包含旧数据时,默认无法导入数据,若想强制导入则可开启此标志 |
+
+#### 对象存储选项
+
+要使用对象存储来导入元数据,请启用以下任一提供商并配置其连接参数:
+
+##### S3
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ------------------------------ | -------- | ------ | ------------------------------------------- |
+| --enable-s3 | 否 | false | 是否使用 S3 作为导出数据的存储介质 |
+| --s3-bucket | 否 | - | S3 桶名 |
+| --s3-root | 否 | - | S3 桶中的根路径 |
+| --s3-access-key-id | 否 | - | S3 访问密钥 ID |
+| --s3-secret-access-key | 否 | - | S3 访问密钥 |
+| --s3-region | 否 | - | S3 区域名称 |
+| --s3-endpoint | 否 | - | S3 端点 URL(可选,默认根据桶区域确定) |
+| --s3-enable-virtual-host-style | 否 | false | 为 S3 API 请求启用虚拟主机样式 |
+
+##### OSS(阿里云)
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ----------------------- | -------- | ------ | ---------------------------------- |
+| --enable-oss | 否 | false | 是否使用 OSS 作为导出数据的存储介质 |
+| --oss-bucket | 否 | - | OSS 桶名 |
+| --oss-root | 否 | - | OSS 桶中的根路径 |
+| --oss-access-key-id | 否 | - | OSS 访问密钥 ID |
+| --oss-access-key-secret | 否 | - | OSS 访问密钥 |
+| --oss-endpoint | 否 | - | OSS 端点 URL |
+
+##### GCS(谷歌云存储)
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| --------------------- | -------- | ------ | ---------------------------------- |
+| --enable-gcs | 否 | false | 是否使用 GCS 作为导出数据的存储介质 |
+| --gcs-bucket | 否 | - | GCS 桶名 |
+| --gcs-root | 否 | - | GCS 桶中的根路径 |
+| --gcs-scope | 否 | - | GCS 服务范围 |
+| --gcs-credential-path | 否 | - | GCS 凭证文件路径 |
+| --gcs-credential | 否 | - | GCS 凭证内容 |
+| --gcs-endpoint | 否 | - | GCS 端点 URL |
+
+##### Azure Blob 存储
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| --------------------- | -------- | ------ | ---------------------------------------- |
+| --enable-azblob | 否 | false | 是否使用 Azure Blob 作为导出数据的存储介质 |
+| --azblob-container | 否 | - | Azure Blob 容器名称 |
+| --azblob-root | 否 | - | 容器中的根路径 |
+| --azblob-account-name | 否 | - | Azure Blob 账户名称 |
+| --azblob-account-key | 否 | - | Azure Blob 账户密钥 |
+| --azblob-endpoint | 否 | - | Azure Blob 端点 URL |
+| --azblob-sas-token | 否 | - | Azure Blob SAS 令牌 |
+
+## 信息工具
+
+信息工具允许您查看元数据快照的内容而无需恢复它。
+
+### 命令语法
+
+```bash
+greptime cli meta snapshot info [OPTIONS]
+```
+
+### 选项
+
+#### 文件选项
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ------------- | -------- | ----------------- | ---------------------- |
+| --file-name | 否 | metadata_snapshot | 要查看的元数据快照文件名 |
+| --dir | 否 | "." | 快照文件存储的目录 |
+| --inspect-key | 否 | "*" | 过滤元数据键的查询模式 |
+| --limit | 否 | - | 显示的最大条目数 |
+
+#### 对象存储选项
+
+要检查存储在对象存储中的快照,请启用以下任一提供商并配置其连接参数:
+
+##### S3
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ------------------------------ | -------- | ------ | --------------------------------------- |
+| --enable-s3 | 否 | false | 是否使用 S3 作为快照的存储介质 |
+| --s3-bucket | 否 | - | S3 桶名 |
+| --s3-root | 否 | - | S3 桶中的根路径 |
+| --s3-access-key-id | 否 | - | S3 访问密钥 ID |
+| --s3-secret-access-key | 否 | - | S3 访问密钥 |
+| --s3-region | 否 | - | S3 区域名称 |
+| --s3-endpoint | 否 | - | S3 端点 URL(可选,默认根据桶区域确定) |
+| --s3-enable-virtual-host-style | 否 | false | 为 S3 API 请求启用虚拟主机样式 |
+
+##### OSS(阿里云)
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| ----------------------- | -------- | ------ | ------------------------------ |
+| --enable-oss | 否 | false | 是否使用 OSS 作为快照的存储介质 |
+| --oss-bucket | 否 | - | OSS 桶名 |
+| --oss-root | 否 | - | OSS 桶中的根路径 |
+| --oss-access-key-id | 否 | - | OSS 访问密钥 ID |
+| --oss-access-key-secret | 否 | - | OSS 访问密钥 |
+| --oss-endpoint | 否 | - | OSS 端点 URL |
+
+##### GCS(谷歌云存储)
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| --------------------- | -------- | ------ | ------------------------------ |
+| --enable-gcs | 否 | false | 是否使用 GCS 作为快照的存储介质 |
+| --gcs-bucket | 否 | - | GCS 桶名 |
+| --gcs-root | 否 | - | GCS 桶中的根路径 |
+| --gcs-scope | 否 | - | GCS 服务范围 |
+| --gcs-credential-path | 否 | - | GCS 凭证文件路径 |
+| --gcs-credential | 否 | - | GCS 凭证内容 |
+| --gcs-endpoint | 否 | - | GCS 端点 URL |
+
+##### Azure Blob 存储
+
+| 选项 | 是否必需 | 默认值 | 描述 |
+| --------------------- | -------- | ------ | ------------------------------------ |
+| --enable-azblob | 否 | false | 是否使用 Azure Blob 作为快照的存储介质 |
+| --azblob-container | 否 | - | Azure Blob 容器名称 |
+| --azblob-root | 否 | - | 容器中的根路径 |
+| --azblob-account-name | 否 | - | Azure Blob 账户名称 |
+| --azblob-account-key | 否 | - | Azure Blob 账户密钥 |
+| --azblob-endpoint | 否 | - | Azure Blob 端点 URL |
+| --azblob-sas-token | 否 | - | Azure Blob SAS 令牌 |
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/utilities/repair-logical-tables.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/utilities/repair-logical-tables.md
new file mode 100644
index 0000000000..1621bd48f7
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/command-lines/utilities/repair-logical-tables.md
@@ -0,0 +1,55 @@
+---
+keywords: [GreptimeDB CLI, 逻辑表修复, 元数据修复, 表元数据, 存储后端]
+description: 使用 CLI 修复 GreptimeDB 集群逻辑表的指南,包括元数据一致性修复。
+---
+
+# 逻辑表修复
+
+`greptime cli meta repair-logical-tables` 命令可以用于修复 GreptimeDB 集群的逻辑表。在某些情况下,逻辑表元数据可能与存储在元数据存储中的元数据不一致。此命令可用于修复逻辑表元数据。
+
+:::tip
+该工具需要连接到元数据存储和 Datanode。确保集群正在运行且工具可与 Datanode 通信。
+:::
+
+## 命令语法
+
+```bash
+greptime cli meta repair-logical-tables [OPTIONS]
+```
+
+## 选项
+
+| 选项 | 描述 | 默认值 | 值 |
+| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ----------------------------------------------------- |
+| `--store-addrs ...` | 元数据存储服务地址。可以是 etcd、postgres 或 mysql。
对于 postgres 存储,格式为:`"password=password dbname=postgres user=postgres host=localhost port=5432"`。
对于 etcd 存储,格式为:`"127.0.0.1:2379"`。
对于 mysql 存储,格式为:`"mysql://user:password@ip:port/dbname"` | - | - |
+| `--max-txn-ops ` | 单个事务中操作的最大数量。仅在使用 [etcd-store] 时使用 | 128 | - |
+| `--backend ` | 元数据存储后端类型 | etcd-store | etcd-store, memory-store, postgres-store, mysql-store |
+| `--store-key-prefix ` | 元数据存储前缀 | - | - |
+| `--meta-table-name ` | 元数据存储的表名。元数据存储后端为 [postgres-store] 或 [mysql-store] 时使用 | greptime_metakv | - |
+| `--table-names ` | 要修复的表名,用逗号分隔 | - |
+| `--table-ids ` | 要修复的表 ID,用逗号分隔 | - |
+| `--schema-name ` | 要修复的表所属数据库的名称 | public |
+| `--catalog-name ` | 要修复的表所属 catalog 的名称 | greptime |
+| `--fail-fast` | 如果任何修复操作失败,是否立即失败 | - |
+| `--client-timeout-secs ` | 客户端操作 Datanode 的超时时间 | 30 |
+| `--client-connect-timeout-secs ` | 客户端连接 Datanode 的超时时间 | 3 |
+
+
+## 示例
+
+### 通过表名修复逻辑表
+
+```bash
+greptime cli repair-logical-tables --store-addrs=$ENDPOINT \
+ --backend=postgres-store \
+ --table-names=metric_table_1,metric_table_2 \
+ --schema-name=public \
+ --catalog-name=greptime
+```
+
+输出:
+```bash
+2025-06-20T08:31:43.904497Z INFO cli::metadata::repair: All alter table requests sent successfully for table: greptime.public.metric_table_1
+2025-06-20T08:31:43.904499Z INFO cli::metadata::repair: All alter table requests sent successfully for table: greptime.public.metric_table_2
+2025-06-20T08:31:43.904539Z INFO cli::metadata::repair: Repair logical tables result: 2 tables repaired, 0 tables skipped
+```
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/glossary.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/glossary.md
new file mode 100644
index 0000000000..e9f0bf5a93
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/glossary.md
@@ -0,0 +1,240 @@
+---
+keywords: [云原生, 可观测, 开源, 时序数据库, 车联网, 物联网, 日志, 指标, 事件, Rust]
+description: 本文档提供与云原生开源时序数据库 GreptimeDB 相关的核心术语与概念的清晰定义和解析,涵盖指标、日志及事件处理领域。通过探索术语库,深入了解支撑 GreptimeDB 的创新功能与技术架构。
+---
+
+# Glossary(术语表)
+
+欢迎访问 GreptimeDB 技术术语库!本资源系统阐释了云原生开源时序数据库 GreptimeDB 的核心概念与关键技术术语,涵盖指标、日志及事件处理领域。通过本术语库,您将深入理解支撑 GreptimeDB 的创新架构与技术实现。
+
+> 注:该排名顺序按照英文词汇首字母正序排列。
+
+---
+
+## A
+
+### Anomaly Detection (异常检测)
+识别数据点、事件或观测值显著偏离常态的过程。在时序数据场景中,异常检测可辅助发现可能表征关键事件的非常规模式。
+
+### Append Only Table (Append Only 表)
+GreptimeDB 中针对写入密集型工作负载优化的表类型,数据仅插入而不更新或删除。这种设计显著提升写入和查询性能,特别适用于日志分析和时序数据场景。
+
+---
+
+## C
+
+### Cardinality (基数)
+衡量数据库元素唯一性的指标,如数据列中唯一值的数量。高基数场景(尤其在时序数据中)将显著提升存储复杂度与资源需求。
+
+### Cloud-Native Design (云原生架构)
+基于云计算框架构建弹性可扩展应用的架构方法论。GreptimeDB 的云原生设计支持从边缘计算节点到云端分布式集群的无缝扩展。
+
+### Columnar Storage (列式存储)
+按列而非行组织数据表的存储格式。该格式显著提升分析型查询效率,是 GreptimeDB 实现高性价比的重要技术基础。
+
+---
+
+## D
+
+### Decoupled Compute and Storage Architecture (存算分离架构)
+将计算资源与存储资源解耦管理的架构设计。该架构支持独立扩展与资源优化,实现工作负载管理的灵活性与高性能。
+
+---
+
+## E
+
+### Edge Database (边缘数据库)
+部署在网络边缘侧(临近数据源或终端用户)的数据库系统,通过降低数据传输延迟实现实时数据处理。
+
+### Edge Deployment (边缘部署)
+在临近数据源或终端用户的边缘节点部署服务的实践方案。GreptimeDB 支持边缘部署模式,可在资源受限环境下实现实时数据处理。
+
+### Event Management (事件管理)
+对指标、日志、追踪等事件数据进行采集、组织与分析的系统化实践,是保障实时系统稳定运行的核心环节。
+
+---
+
+## D
+
+### Datanode (数据节点)
+GreptimeDB 分布式架构中负责数据存储和处理的核心组件。Datanode 处理数据摄入、存储管理、本地数据查询执行,并维护包含实际表数据的 region。可在集群中部署多个 datanode 以提供水平可扩展性、容错能力和分布式数据处理能力。
+
+---
+
+## F
+
+### Field (字段)
+GreptimeDB 数据模型中包含实际测量数据或日志内容的列类型。Field 存储数值、文本内容或其他数据指标,代表时序数据中的核心信息,与 Tag 和 Time Index 列相补构成完整的数据模型。
+
+### Flow Engine (流处理引擎)
+GreptimeDB 的实时流数据处理系统,支持对流式数据进行连续增量计算。Flow Engine 类似智能物化视图,当源表有新数据到达时自动更新结果表。以可配置间隔(默认一秒)处理数据,计算开销极小,特别适用于 ETL 流程、降采样、实时分析和持续聚合等场景。
+
+### Frontend (前端节点)
+GreptimeDB 分布式架构中的查询处理层,作为客户端连接的入口点。Frontend 节点处理 SQL 解析、查询规划、分布式查询协调和结果聚合。它们将查询路由到适当的 datanode,管理客户端会话,并为各种数据库接口(包括 MySQL、PostgreSQL 和 GreptimeDB 原生协议)提供协议兼容性。
+
+---
+
+## G
+
+### GreptimeCloud
+GreptimeDB 的全托管云服务,提供 serverless 自动扩展的数据库即服务(DBaaS)能力。GreptimeCloud 通过自动扩展、按量付费、企业级安全和无缝云边协同部署等特性消除运维开销,非常适合寻求无忧可观测性数据库解决方案的组织。
+
+---
+
+## I
+
+### IoT Cloud (物联网云平台)
+专为物联网应用设计的云计算平台,提供海量设备数据存储、处理与连接管理能力。
+
+### IoT Database (物联网数据库)
+针对物联网传感器高频时序数据优化的数据库系统。GreptimeDB 可高效处理物联网设备产生的大规模时序数据,提供弹性扩展能力。
+
+### IoT Observability (物联网可观测性)
+通过指标、日志与事件数据对物联网设备及系统进行监控、分析与洞察的能力,确保物联网生态的可靠运行。
+
+### Interoperability (协议互操作性)
+异构系统间无缝协作的能力。GreptimeDB 原生支持 SQL、InfluxDB、OpenTelemetry、Prometheus、Elasticsearch、Loki 等协议与 API,实现开箱即用的系统集成。
+
+---
+
+## L
+
+### Log Aggregation (日志聚合)
+对一组日志执行计算以生成单个摘要统计数据,以供分析和故障排除,例如 SUM,COUNT 等。
+
+### Log Management (日志管理)
+涵盖日志采集、存储、分析与可视化的全生命周期管理方案,是保障系统性能与安全的重要基础。
+
+---
+
+## M
+
+### Memory Leak (内存泄漏)
+程序未能正确释放闲置内存导致的软件缺陷,长期运行可能引发系统性能下降或崩溃。
+
+### Metric Engine (指标引擎)
+GreptimeDB 中专门设计用于高效处理指标数据的存储引擎,特别适用于可观测性工作负载中常见的数千个小表场景。Metric Engine 使用合成的宽物理表来存储来自众多逻辑表的数据,实现高效的列和元数据重用,降低存储开销并增强列式压缩效果。基于 Mito Engine 构建,提供强大的存储能力。
+
+### Mito Engine (Mito 引擎)
+GreptimeDB 的默认存储引擎,基于日志结构合并树(LSM-Tree)架构,针对时序工作负载进行优化。Mito 具备预写日志(WAL)、内存表和时间窗口压缩策略(TWCS),能够处理高吞吐量写入同时保持出色的查询性能。原生集成对象存储解决方案(S3、GCS、Azure Blob)并实现分层缓存以优化存储成本和访问速度。
+
+---
+
+## L
+
+### LSM-Tree (日志结构合并树)
+GreptimeDB 存储引擎采用的数据结构,通过先将数据写入日志再定期合并为有序结构来优化写入性能。该设计特别适合高写入吞吐量的时序工作负载。
+
+---
+
+## M
+
+### Metasrv (元数据服务)
+GreptimeDB 分布式架构中的元数据管理服务,维护集群状态、表结构和 region 分布信息。Metasrv 协调集群操作,管理表的创建和修改,处理 region 分配和迁移,确保集群范围内的元数据一致性。它作为集群管理的中央控制平面,是所有元数据操作的权威数据源。
+
+---
+
+## O
+
+### Observability (可观测性)
+通过系统外部输出推断内部状态的能力。GreptimeDB 作为可观测性基础设施,可通过指标、日志与事件数据实现系统性能监控与深度洞察。
+
+### OpenTelemetry
+面向云原生应用的开源可观测性框架,提供遥测数据(追踪、指标、日志)的采集、处理与导出工具链。GreptimeDB 深度集成 OpenTelemetry 以强化数据可观测性。
+
+---
+
+## P
+
+### Pipeline (数据管道)
+GreptimeDB 中用于实时处理传入数据的强大解析和转换机制。Pipeline 由可配置的处理器组成,用于预处理原始数据;分发器用于将数据路由到不同管道;以及转换规则用于数据类型转换和表结构定义。支持多种输入格式和数据源(包括日志、Prometheus 指标和其他可观测性数据),提供广泛的处理能力,包括时间戳解析、正则匹配、字段提取和数据类型转换,实现可观测性数据的结构化存储和高效查询。
+
+
+
+### PromQL (Prometheus 查询语言)
+专为 Prometheus 设计的时序数据查询语言。GreptimeDB 支持 PromQL 且兼容性接近 100%,支持用户执行复杂的时序数据分析操作并使用现有的 Prometheus 仪表盘和告警规则。
+
+---
+
+## R
+
+### Read Replica (读副本)
+GreptimeDB 企业版中的功能,通过创建额外的只读数据实例来提升查询性能和可扩展性。读副本将读取工作负载分布到多个实例上,减少主数据库的负载同时提供更快的查询响应。该功能支持数据访问点的地理分布,提升读取操作的高可用性,并在企业环境中实现读密集型工作负载的高效扩展。
+
+### Region (区域)
+GreptimeDB 架构中数据分布的基本单元。Region 包含表数据的子集,可分布在集群的不同节点上。每个 Region 管理自己的存储、索引和查询处理,实现水平扩展和容错能力。
+
+### Rust
+以前沿内存安全特性著称的系统级编程语言。GreptimeDB 采用 Rust 语言构建,为其高性能与高可靠性提供底层保障。
+
+---
+
+## S
+
+### Scalability (弹性扩展)
+通过垂直扩展(提升单节点性能)或水平扩展(增加集群节点)应对数据量与查询负载增长的能力。GreptimeDB 的弹性扩展特性确保系统在业务增长时持续保持高性能。
+
+### SQL
+关系型数据库的标准查询语言。GreptimeDB 支持使用 SQL 对指标、日志及事件数据进行高效查询。
+
+### Stream Processing (流式处理)
+对到达的数据流进行连续实时处理的技术。在 GreptimeDB 中,流式处理通过 Flow Engine 实现,对流式时序数据执行增量计算。支持对 metrics、logs 和 events 进行即时过滤、计算和聚合,以最小延迟提供可操作的洞察。
+
+---
+
+## T
+
+### Tag (标签)
+GreptimeDB 数据模型中用于唯一标识时序数据的列类型。具有相同 Tag 值的行属于同一个时间序列,使 Tag 成为组织和查询可观测性数据的关键。Tag 通常用于存储元数据,如主机名、服务名或设备 ID,并在表架构中指定为 PRIMARY KEY 列。
+
+### Time Index (时间索引)
+GreptimeDB 表中的特殊时间戳列,作为时序数据的主要时间维度。每个 GreptimeDB 表都需要一个 Time Index 列来按时间顺序组织数据,实现基于时间的查询,支持高效的时序操作,如降采样和时间窗口聚合。
+
+### Time Series Database (时序数据库)
+专为时间戳索引数据设计的数据库类型。GreptimeDB 作为云原生时序数据库,深度优化了对指标、日志及事件的分析查询性能。
+
+---
+
+## T
+
+### Trigger (触发器)
+GreptimeDB 企业版中的监控和告警功能,支持对时序数据条件进行自动化评估。Trigger 在指定间隔内持续监控表中的数据,执行基于 SQL 的规则来检查预定义的阈值或条件,并在满足条件时通过 webhook 发送通知。该功能与 Alertmanager 等告警系统集成,支持自定义标签和注释,特别适用于实时系统监控、性能告警和自动化事件响应。
+
+---
+
+## U
+
+### Unified Analysis (统一分析)
+在单一平台集成多源异构数据分析的能力。GreptimeDB 通过兼容 SQL 与 PromQL 实现跨数据类型(指标/日志/事件)的统一查询分析。
+
+### Unified Observability (统一可观测性)
+将 metrics、logs 和 traces 整合到单一系统中的数据库架构方法,消除数据孤岛并降低运维复杂性。GreptimeDB 通过将所有遥测数据类型视为带有时间戳的宽事件来实现统一可观测性,实现跨信号关联、简化数据管道和成本高效的可观测性基础设施。
+
+---
+
+## W
+
+### WAL (预写日志)
+GreptimeDB 用于确保数据持久性和一致性的日志机制。WAL 在数据变更应用到主存储之前记录所有变更,在系统故障时实现数据恢复。GreptimeDB 支持灵活的 WAL 选项,包括本地磁盘存储或 Kafka 等分布式服务。
+
+### Wide Events (宽事件)
+可观测性 2.0 中的基础概念,将 metrics、logs 和 traces 融合为单一综合事件的上下文丰富、高维度遥测数据。宽事件捕获每次服务交互的广泛上下文信息,包括高基数字段(用户 ID、会话 ID)、业务逻辑数据、基础设施详情和请求元数据。GreptimeDB 原生支持将宽事件作为带时间戳的可观测性数据,支持复杂的多维度查询并解决系统行为分析中的 "unknown unknowns" 问题。
+
+---
+
+## V
+
+### Vector Processing (向量化处理)
+GreptimeDB 查询引擎采用的高性能数据处理技术,通过批量操作数据向量(数组)来提升查询性能。支持 SIMD 指令加速,显著提升大规模时序数据的分析速度。
+
+### Vehicle Data Collection (车载数据采集)
+对车辆传感器读数、GPS 定位信息等数据进行采集的标准化流程,是现代车联网生态的核心组成部分。
+
+### Vehicle-Cloud Integrated TSDB (车云协同时序数据库)
+专为车联网设计的时序数据库系统,支持车载终端与云端系统的协同工作,实现车联网数据的高效存储与实时分析。
+
+---
+
+*注:本术语表将持续更新,以反映 GreptimeDB 生态的最新功能演进与技术概念扩展。*
+
+---
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/gtctl.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/gtctl.md
new file mode 100644
index 0000000000..5ba0e28623
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/gtctl.md
@@ -0,0 +1,246 @@
+---
+keywords: [gtctl, 安装, Homebrew, 源代码构建, 自动补全, 快速入门, 部署, Kubernetes, 裸机模式]
+description: 介绍 gtctl 工具的安装、使用方法,包括一键安装、通过 Homebrew 安装、从源代码构建、启用自动补全、快速入门、部署等内容。
+---
+
+# gtctl
+
+[gtctl][1],g-t-control,是一个用于管理 GreptimeDB 集群的命令行工具。gtctl 是集成了 GreptimeDB 集群的多种操作的多合一 binary。
+
+## 安装
+
+### 一键安装
+
+使用以下命令下载二进制文件:
+
+```bash
+curl -fsSL https://raw.githubusercontent.com/greptimeteam/gtctl/develop/hack/install.sh | sh
+```
+
+下载完成后,gtctl 将位于当前目录中。
+
+你还可以从 AWS 中国区 S3 存储桶安装 gtctl:
+
+```bash
+curl -fsSL https://downloads.greptime.cn/releases/scripts/gtctl/install.sh | sh -s -- -s aws
+```
+
+### 通过 Homebrew 安装
+
+在 macOS 上,可以通过 Homebrew 安装 gtctl:
+
+```bash
+brew tap greptimeteam/greptime
+brew install gtctl
+```
+
+### 从源代码构建
+
+如果已经安装了 [Go][2],可以在该项目下运行 `make` 命令来构建 gtctl:
+
+```bash
+make gtctl
+```
+
+构建完成后,gtctl 将生成在 `./bin/` 目录下。如果想要安装 gtctl,可以运行 `install` 命令:
+
+```bash
+# 构建的 gtctl 将安装在 /usr/local/bin 目录下
+make install
+
+# 构建的 gtctl 将安装在自定义路径下
+make install INSTALL_DIR=
+```
+
+## 启用 gtctl 自动补全(可选)
+
+gtctl 支持多种不同的 shell 自动补全。
+
+### Bash
+
+在 Bash 中,可以使用命令 `gtctl completion bash` 生成 gtctl 的自动补全脚本。将补全脚本引入到你的 shell 中可以启用 gtctl 的自动补全功能。
+
+```bash
+echo 'source <(gtctl completion bash)' >> ~/.bashrc
+```
+
+### Zsh
+
+在 Zsh 中,可以使用命令 `gtctl completion zsh` 生成 gtctl 的自动补全脚本。将补全脚本引入到你的 shell 中可以启用 gtctl 的自动补全功能。
+
+```bash
+mkdir -p $ZSH/completions && gtctl completion zsh > $ZSH/completions/_gtctl
+```
+
+### Fish
+
+在 Fish 中,可以使用命令 `gtctl completion fish` 生成 gtctl 的自动补全脚本。将补全脚本引入到你的 shell 中可以启用 gtctl 的自动补全功能。
+
+```bash
+gtctl completion fish | source
+```
+
+## 快速入门
+
+体验 GreptimeDB 集群的**最快**方法是使用 playground:
+
+```bash
+gtctl playground
+```
+
+`playground` 命令将在你的环境中以**裸机**模式部署最小的 GreptimeDB 集群。
+
+## 部署
+
+gtctl 支持两种部署模式:Kubernetes 和裸机模式(Bare-Metal)。
+
+### Kubernetes
+
+#### 先决条件
+
+* 需要 Kubernetes 版本 1.18 或更高。
+
+ 你可以使用 [kind][3] 创建自己的 Kubernetes 集群:
+
+ ```bash
+ kind create cluster
+ ```
+
+#### 创建
+
+创建自己的 GreptimeDB 集群和 etcd 集群:
+
+```bash
+gtctl cluster create mycluster -n default
+```
+
+如果你想使用存储在中国区的 artifacts(charts 和镜像),你可以启用 `--use-greptime-cn-artifacts`:
+
+```bash
+gtctl cluster create mycluster -n default --use-greptime-cn-artifacts
+```
+
+创建完成后,整个 GreptimeDB 集群将在 default 命名空间中启动:
+
+```bash
+# 获取集群。
+gtctl cluster get mycluster -n default
+
+# 列出所有集群。
+gtctl cluster list
+```
+
+所有在 [charts][4] 中提供的用于 cluster、etcd 和 operator 的值都是可配置的,你可以使用 `--set` 进行配置。gtctl 还提供了一些常用的配置选项,你可以使用 `gtctl cluster create --help` 来查看它们。
+
+```bash
+# 将 cluster datanode 副本数配置为 5
+gtctl cluster create mycluster --set cluster.datanode.replicas=5
+
+# 两种配置 etcd 存储大小为 15Gi 的方式
+gtctl cluster create mycluster --set etcd.storage.volumeSize=15Gi
+gtctl cluster create mycluster --etcd-storage-size 15Gi
+```
+
+#### 预运行
+
+在集群创建过程中,gtctl 提供了 `--dry-run` 选项。如果用户使用 `--dry-run` 执行命令,gtctl 将输出清单的内容而不应用它们:
+
+```bash
+gtctl cluster create mycluster -n default --dry-run
+```
+
+#### 连接
+
+你可以使用 kubectl 的 `port-forward` 命令将前端请求转发到本地:
+
+```bash
+kubectl port-forward svc/mycluster-frontend 4002:4002 > connections.out &
+```
+
+使用 gtctl 的 `connect` 命令或你的 `mysql` 客户端连接到集群:
+
+```bash
+gtctl cluster connect mycluster -p mysql
+
+mysql -h 127.0.0.1 -P 4002
+```
+
+#### 扩缩容(实验性)
+
+你可以使用以下命令来扩展(或缩小)集群的规模:
+
+```bash
+# 将 datanode 扩展到 3 个副本。
+gtctl cluster scale -n -c datanode --replicas 3
+
+# 将 frontend 扩展到 5 个副本。
+gtctl cluster scale -n -c frontend --replicas 5
+```
+
+#### 删除
+
+如果你想删除集群,可以执行以下操作:
+
+```bash
+# 删除集群。
+gtctl cluster delete mycluster -n default
+
+# 删除集群,包括 etcd 集群。
+gtctl cluster delete mycluster -n default --tear-down-etcd
+```
+
+### 裸机模式(Bare-Metal)
+
+#### 创建
+
+你可以使用以下简单命令在裸机环境中部署 GreptimeDB 集群:
+
+```bash
+gtctl cluster create mycluster --bare-metal
+```
+
+它会在 `${HOME}/.gtctl` 中创建所有必要的元信息。
+
+如果你想进行更多的配置,可以使用 yaml 格式的配置文件:
+
+```bash
+gtctl cluster create mycluster --bare-metal --config
+```
+
+你可以参考 [`examples/bare-metal`][5] 中提供的示例配置文件 `cluster.yaml` 和 `cluster-with-local-artifacts.yaml`。
+
+#### 删除
+
+由于裸机模式下的集群在前台运行,任何 `SIGINT` 和 `SIGTERM` 信号都会删除集群。例如,在键盘上按下 `Ctrl+C` 后集群将被删除。
+
+删除操作还会删除位于 `${HOME}/.gtctl` 中的一个集群的元信息。如果启用了 `--retain-logs`(默认启用),集群的日志将保留。
+
+## 开发
+
+Makefile 提供了许多有用的工具,你可以简单地运行 `make help` 来获取更多信息:
+
+* 编译项目
+
+ ```bash
+ make
+ ```
+
+ 然后 gtctl 会生成在 `./bin/` 目录下。
+
+* 运行单元测试
+
+ ```bash
+ make test
+ ```
+
+* 运行端到端测试
+
+ ```bash
+ make e2e
+ ```
+
+[1]:
+[2]:
+[3]:
+[4]:
+[5]:
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/http-endpoints.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/http-endpoints.md
new file mode 100644
index 0000000000..27c6629061
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/http-endpoints.md
@@ -0,0 +1,236 @@
+---
+keywords: [HTTP API, 管理 API, 健康检查, 状态, 指标, 配置, 仪表盘, 日志级别, 性能分析]
+description: 介绍 GreptimeDB 中各种 HTTP 路径及其用法的完整列表。
+---
+
+# HTTP API 端点列表
+
+以下是 GreptimeDB 中各种 HTTP 路径及其用法的完整列表:
+
+## 管理 API
+
+未版本化的端点(不在 `/v1` 下)。用于健康检查、状态、指标等管理用途。
+
+### 健康检查
+
+- **路径**: `/health`
+- **方法**: `GET`, `POST`
+- **描述**: 提供一个健康检查端点以验证服务器是否正在运行。
+- **用法**: 访问此端点以检查服务器的健康状态。
+
+请参考[检查 GreptimeDB 健康状态文档](/enterprise/deployments-administration/monitoring/check-db-status.md#查看-greptimedb-是否正常运行)获取示例。
+
+### 状态
+
+- **路径**: `/status`
+- **方法**: `GET`
+- **描述**: 检索服务器的当前状态。
+- **用法**: 使用此端点获取服务器状态信息。
+
+请参考[检查 GreptimeDB 状态文档](/enterprise/deployments-administration/monitoring/check-db-status.md#查看-greptimedb-的部署状态)获取示例。
+
+### 指标
+
+- **路径**: `/metrics`
+- **方法**: `GET`
+- **描述**: 暴露 Prometheus 指标以进行监控。
+- **用法**: Prometheus 可以抓取此端点以收集指标数据。
+
+示例如下:
+
+```bash
+curl -X GET http://127.0.0.1:4000/metrics
+
+# HELP greptime_app_version app version
+# TYPE greptime_app_version gauge
+greptime_app_version{app="greptime-edge",short_version="main-b4bd34c5",version="0.12.0"} 1
+# HELP greptime_catalog_catalog_count catalog catalog count
+# TYPE greptime_catalog_catalog_count gauge
+greptime_catalog_catalog_count 1
+# HELP greptime_catalog_schema_count catalog schema count
+# TYPE greptime_catalog_schema_count gauge
+greptime_catalog_schema_count 3
+# HELP greptime_flow_run_interval_ms flow run interval in ms
+# TYPE greptime_flow_run_interval_ms gauge
+greptime_flow_run_interval_ms 1000
+# HELP greptime_meta_create_catalog meta create catalog
+# TYPE greptime_meta_create_catalog histogram
+greptime_meta_create_catalog_bucket{le="0.005"} 1
+greptime_meta_create_catalog_bucket{le="0.01"} 1
+greptime_meta_create_catalog_bucket{le="0.025"} 1
+greptime_meta_create_catalog_bucket{le="0.05"} 1
+greptime_meta_create_catalog_bucket{le="0.1"} 1
+...
+```
+
+### 配置
+
+- **路径**: `/config`
+- **方法**: `GET`
+- **描述**: 检索服务器的配置选项。
+- **用法**: 访问此端点以获取配置详细信息。
+
+示例如下:
+
+```shell
+curl http://localhost:4000/config
+```
+
+输出包含 GreptimeDB 服务器的配置信息。
+
+```toml
+enable_telemetry = true
+user_provider = "static_user_provider:file:user"
+init_regions_in_background = false
+init_regions_parallelism = 16
+
+[http]
+addr = "127.0.0.1:4000"
+timeout = "30s"
+body_limit = "64MiB"
+is_strict_mode = false
+
+# ...
+```
+
+### 仪表盘
+
+- **路径**: `/dashboard`
+- **方法**: `GET`, `POST`
+- **描述**: 提供对服务器仪表盘界面的访问。
+- **用法**: 访问这些端点以与基于 Web 的仪表盘进行交互。
+
+此仪表盘与 GreptimeDB 服务器一起打包,并提供一个用户友好的界面与服务器进行交互。构建 GreptimeDB 时需要启用相应的编译标志。仪表盘的原始源代码在 https://github.com/GreptimeTeam/dashboard。
+
+### 日志级别
+
+- **路径**: `/debug/log_level`
+- **方法**: `POST`
+- **描述**: 动态调整服务器的日志级别。
+- **用法**: 发送日志级别更改请求到此端点。
+
+有关更多信息,请参阅[如何文档](https://github.com/GreptimeTeam/greptimedb/blob/main/docs/how-to/how-to-change-log-level-on-the-fly.md)。
+
+### 性能分析工具
+
+- **基础路径**: `/debug/prof/`
+- **端点**:
+ - `cpu`
+ - `mem`
+- **方法**: `POST` 用于分析数据库节点。
+- **描述**: 运行时 CPU 或内存使用情况分析。
+- **用法**:
+ - 有关 CPU 分析的详细指南,请参阅 [CPU 分析](https://github.com/GreptimeTeam/greptimedb/blob/main/docs/how-to/how-to-profile-cpu.md)。
+ - 有关内存分析的详细指南,请参阅 [内存分析](https://github.com/GreptimeTeam/greptimedb/blob/main/docs/how-to/how-to-profile-memory.md)。
+
+## 查询端点
+
+用于向 GreptimeDB 发送查询的各种查询 API。
+
+### SQL API
+
+- **路径**: `/v1/sql`
+- **方法**: `GET`, `POST`
+- **描述**: 执行 SQL 查询。
+- **用法**: 在请求体中发送 SQL 语句。
+
+有关 SQL API 的更多信息,请参阅用户指南中的 [HTTP API 文档](/user-guide/protocols/http.md#post-sql-statements)。
+
+### PromQL API
+
+- **路径**: `/v1/promql`
+- **方法**: `GET`, `POST`
+- **描述**: 执行 PromQL 查询以获取 Prometheus 兼容的指标,并以 GreptimeDB 的 JSON 格式返回数据。
+- **用法**: 在请求体中发送 PromQL 语句。
+
+有关 PromQL API 的更多信息,请参阅 [PromQL 文档](/user-guide/query-data/promql.md)。
+
+## 协议端点
+
+与 GreptimeDB 兼容的各种协议的端点。如 InfluxDB、Prometheus、OpenTelemetry 等。
+
+### InfluxDB 兼容性
+
+- **路径**:
+ - `/v1/influxdb/write`
+ - `/v1/influxdb/api/v2/write`
+ - `/v1/influxdb/ping`
+ - `/v1/influxdb/health`
+- **方法**:
+ - `POST` 用于写入端点。
+ - `GET` 用于 ping 和健康检查端点。
+- **描述**: 提供与 InfluxDB 兼容的数据写入和健康检查端点。
+- **用法**:
+ - 使用 InfluxDB 行协议写入数据。
+ - 使用 ping 和健康检查端点检查服务器状态。
+
+有关 InfluxDB 协议的详细文档,请参阅[这里](/user-guide/protocols/influxdb-line-protocol.md)。
+
+### Prometheus 远程写入/读取
+
+- **路径**:
+ - `/v1/prometheus/write`
+ - `/v1/prometheus/read`
+- **方法**: `POST`
+- **描述**: 支持 Prometheus 远程写入和读取 API。
+- **用法**:
+ - 使用 Prometheus 远程写入协议发送指标数据。
+ - 使用 Prometheus 远程读取协议读取指标数据。
+
+### Prometheus HTTP API
+
+- **基础路径**: `/v1/prometheus/api/v1`
+- **端点**:
+ - `/format_query`
+ - `/status/buildinfo`
+ - `/query`
+ - `/query_range`
+ - `/labels`
+ - `/series`
+ - `/parse_query`
+ - `/label/{label_name}/values`
+- **方法**: `GET`, `POST`
+- **描述**: 提供 Prometheus HTTP API 端点以查询和检索指标数据。
+- **用法**: 使用这些端点以标准 Prometheus HTTP API 进行指标交互。
+
+有关 Prometheus HTTP API 的更多信息,请参阅原始 Prometheus 文档 [Prometheus HTTP API](https://prometheus.io/docs/prometheus/latest/querying/api/)。
+
+### OpenTelemetry 协议 (OTLP)
+
+- **路径**:
+ - `/v1/otlp/v1/metrics`
+ - `/v1/otlp/v1/traces`
+ - `/v1/otlp/v1/logs`
+- **方法**: `POST`
+- **描述**: 支持 OpenTelemetry 协议以写入 Metrics、Traces 和 Logs。
+- **用法**: 将 OpenTelemetry 格式的数据发送到这些端点。
+
+### Loki 兼容性
+
+- **路径**: `/v1/loki/api/v1/push`
+- **方法**: `POST`
+- **描述**: 以兼容 Loki 的 API 写入日志。
+- **用法**: 将日志数据以 Loki 的格式发送到此端点。
+
+### OpenTSDB 协议
+
+- **路径**: `/v1/opentsdb/api/put`
+- **方法**: `POST`
+- **描述**: 支持使用 OpenTSDB 协议写入数据。
+- **用法**: 使用 OpenTSDB 的 JSON 格式写入时间序列数据。
+
+## 日志写入端点
+
+- **路径**:
+ - `/v1/ingest`
+ - `/v1/pipelines/{pipeline_name}`
+ - `/v1/pipelines/dryrun`
+- **方法**:
+ - `POST` 写入日志和添加 Pipeline。
+ - `DELETE` 用于删除 Pipeline。
+- **描述**: 提供日志写入和 Pipeline 管理的端点。
+- **用法**:
+ - 通过 `/logs` 端点写入日志。
+ - 使用 `/pipelines` 端点管理日志 Pipeline。
+
+有关日志写入和 Pipeline 管理的更多信息,请参阅[日志概述](/user-guide/logs/overview.md)。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/pipeline/built-in-pipelines.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/pipeline/built-in-pipelines.md
new file mode 100644
index 0000000000..6ebf48b298
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/pipeline/built-in-pipelines.md
@@ -0,0 +1,183 @@
+---
+keywords: [内置 pipeline, greptime_identity, JSON 日志, 日志处理, 时间索引, pipeline, GreptimeDB]
+description: 了解 GreptimeDB 的内置 pipeline,包括用于处理 JSON 日志的 greptime_identity pipeline,具有自动 schema 创建、类型转换和时间索引配置功能。
+---
+
+# 内置 Pipeline
+
+GreptimeDB 提供了常见日志格式的内置 Pipeline,允许你直接使用而无需创建新的 Pipeline。
+
+请注意,内置 Pipeline 的名称以 "greptime_" 为前缀,不可编辑。
+
+## `greptime_identity`
+
+`greptime_identity` Pipeline 适用于写入 JSON 日志,并自动为 JSON 日志中的每个字段创建列。嵌套的 JSON 对象将自动展开为使用点符号的单独列。
+
+- 嵌套对象会被自动展开(例如,`{"a": {"b": 1}}` 变成列 `a.b`)
+- 数组会被转换为 JSON 字符串
+- 如果相同字段包含不同类型的数据,则会返回错误
+- 值为 `null` 的字段将被忽略
+- 如果没有手动指定,一个作为时间索引的额外列 `greptime_timestamp` 将被添加到表中,以指示日志写入的时间
+
+### 类型转换规则
+
+- `string` -> `string`
+- `number` -> `int64` 或 `float64`
+- `boolean` -> `bool`
+- `null` -> 忽略
+- `array` -> `string`(JSON 字符串格式)
+- `object` -> 自动展开为单独的列(参见[展开 JSON 对象](#展开-json-对象))
+
+例如,如果我们有以下 JSON 数据:
+
+```json
+[
+ {"name": "Alice", "age": 20, "is_student": true, "score": 90.5,"object": {"a":1,"b":2}},
+ {"age": 21, "is_student": false, "score": 85.5, "company": "A" ,"whatever": null},
+ {"name": "Charlie", "age": 22, "is_student": true, "score": 95.5,"array":[1,2,3]}
+]
+```
+
+我们将合并每个批次的行结构以获得最终 schema。注意,嵌套对象会自动展开为单独的列(例如 `object.a`、`object.b`),数组会转换为 JSON 字符串。表 schema 如下所示:
+
+```sql
+mysql> desc pipeline_logs;
++--------------------+---------------------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++--------------------+---------------------+------+------+---------+---------------+
+| age | Int64 | | YES | | FIELD |
+| is_student | Boolean | | YES | | FIELD |
+| name | String | | YES | | FIELD |
+| object.a | Int64 | | YES | | FIELD |
+| object.b | Int64 | | YES | | FIELD |
+| score | Float64 | | YES | | FIELD |
+| company | String | | YES | | FIELD |
+| array | String | | YES | | FIELD |
+| greptime_timestamp | TimestampNanosecond | PRI | NO | | TIMESTAMP |
++--------------------+---------------------+------+------+---------+---------------+
+9 rows in set (0.00 sec)
+```
+
+数据将存储在表中,如下所示:
+
+```sql
+mysql> select * from pipeline_logs;
++------+------------+---------+----------+----------+-------+---------+-----------+----------------------------+
+| age | is_student | name | object.a | object.b | score | company | array | greptime_timestamp |
++------+------------+---------+----------+----------+-------+---------+-----------+----------------------------+
+| 22 | 1 | Charlie | NULL | NULL | 95.5 | NULL | [1,2,3] | 2024-10-18 09:35:48.333020 |
+| 21 | 0 | NULL | NULL | NULL | 85.5 | A | NULL | 2024-10-18 09:35:48.333020 |
+| 20 | 1 | Alice | 1 | 2 | 90.5 | NULL | NULL | 2024-10-18 09:35:48.333020 |
++------+------------+---------+----------+----------+-------+---------+-----------+----------------------------+
+3 rows in set (0.01 sec)
+```
+
+### 自定义时间索引列
+
+每个 GreptimeDB 表中都必须有时间索引列。`greptime_identity` pipeline 不需要额外的 YAML 配置,如果你希望使用写入数据中自带的时间列(而不是日志数据到达服务端的时间戳)作为表的时间索引列,则需要通过参数进行指定。
+
+假设这是一份待写入的日志数据:
+```JSON
+[
+ {"action": "login", "ts": 1742814853}
+]
+```
+
+设置如下的 URL 参数来指定自定义时间索引列:
+```shell
+curl -X "POST" "http://localhost:4000/v1/ingest?db=public&table=pipeline_logs&pipeline_name=greptime_identity&custom_time_index=ts;epoch;s" \
+ -H "Content-Type: application/json" \
+ -H "Authorization: Basic {{authentication}}" \
+ -d $'[{"action": "login", "ts": 1742814853}]'
+```
+
+取决于数据的格式,`custom_time_index` 参数接受两种格式的配置值:
+- Unix 时间戳: `<字段名>;epoch;<精度>`
+ - 该字段需要是整数或者字符串
+ - 精度为这四种选项之一: `s`, `ms`, `us`, or `ns`.
+- 时间戳字符串: `<字段名>;datestr;<字符串解析格式>`
+ - 例如输入的时间字段值为 `2025-03-24 19:31:37+08:00`,则对应的字符串解析格式为 `%Y-%m-%d %H:%M:%S%:z`
+
+通过上述配置,结果表就能正确使用输入字段作为时间索引列
+```sql
+DESC pipeline_logs;
+```
+```sql
++--------+-----------------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++--------+-----------------+------+------+---------+---------------+
+| ts | TimestampSecond | PRI | NO | | TIMESTAMP |
+| action | String | | YES | | FIELD |
++--------+-----------------+------+------+---------+---------------+
+2 rows in set (0.02 sec)
+```
+
+假设时间变量名称为 `input_ts`,以下是一些使用 `custom_time_index` 的示例:
+- 1742814853: `custom_time_index=input_ts;epoch;s`
+- 1752749137000: `custom_time_index=input_ts;epoch;ms`
+- "2025-07-17T10:00:00+0800": `custom_time_index=input_ts;datestr;%Y-%m-%dT%H:%M:%S%z`
+- "2025-06-27T15:02:23.082253908Z": `custom_time_index=input_ts;datestr;%Y-%m-%dT%H:%M:%S%.9f%#z`
+
+
+### 展开 JSON 对象
+
+`greptime_identity` pipeline **自动展开**嵌套的 JSON 对象为单层结构。此行为始终启用,使用点符号(例如 `a.b.c`)为每个嵌套字段创建单独的列。
+
+#### 控制展开深度
+
+你可以使用 `x-greptime-pipeline-params` header 中的 `max_nested_levels` 参数来控制对象展开的深度。默认值为 10 层。
+
+以下是一个示例请求:
+
+```shell
+curl -X "POST" "http://localhost:4000/v1/ingest?db=&table=&pipeline_name=greptime_identity&version=" \
+ -H "Content-Type: application/x-ndjson" \
+ -H "Authorization: Basic {{authentication}}" \
+ -H "x-greptime-pipeline-params: max_nested_levels=5" \
+ -d "$"
+```
+
+当达到最大嵌套级别时,任何剩余的嵌套结构都会被转换为 JSON 字符串并存储在单个列中。例如,当 `max_nested_levels=3` 时:
+
+```JSON
+{
+ "a": {
+ "b": {
+ "c": {
+ "d": [1, 2, 3]
+ }
+ }
+ },
+ "e": [
+ "foo",
+ "bar"
+ ],
+ "f": {
+ "g": {
+ "h": 123,
+ "i": "hello",
+ "j": {
+ "k": true
+ }
+ }
+ }
+}
+```
+
+将被展开为:
+
+```json
+{
+ "a.b.c": "{\"d\":[1,2,3]}",
+ "e": "[\"foo\",\"bar\"]",
+ "f.g.h": 123,
+ "f.g.i": "hello",
+ "f.g.j": "{\"k\":true}"
+}
+```
+
+注意:
+- 任何级别的数组都会被转换为 JSON 字符串(例如,`"e"` 变成 `"[\"foo\",\"bar\"]"`)
+- 当达到嵌套级别限制时(此例中为第 3 层),剩余的嵌套对象会被转换为 JSON 字符串(例如 `"a.b.c"` 和 `"f.g.j"`)
+- 深度限制内的常规标量值以其原生类型存储(例如 `"f.g.h"` 为整数,`"f.g.i"` 为字符串)
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/pipeline/pipeline-config.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/pipeline/pipeline-config.md
new file mode 100644
index 0000000000..ef9f942bb8
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/pipeline/pipeline-config.md
@@ -0,0 +1,1175 @@
+---
+keywords: [Pipeline 配置, Processor, Transform, 解析日志, 转换日志, YAML 配置, 数据处理, 时间字段解析, 字段拆分]
+description: 介绍 GreptimeDB 中 Pipeline 的配置,包括 Processor 和 Transform 的使用方法,以及各种 Processor 的详细配置示例。
+---
+
+# Pipeline 配置
+
+Pipeline 是 GreptimeDB 中对 log 数据进行解析和转换的一种机制,由一个唯一的名称和一组配置规则组成,这些规则定义了如何对日志数据进行格式化、拆分和转换。目前我们支持 JSON(`application/json` 或者 `application/x-ndjson`,推荐后者)和纯文本(`text/plain`)格式的日志数据作为输入。
+
+这些配置以 YAML 格式提供,使得 Pipeline 能够在日志写入过程中,根据设定的规则对数据进行处理,并将处理后的数据存储到数据库中,便于后续的结构化查询。
+
+## 输入格式
+
+一般情况下,Pipeline 接收一组键值对形式的 map 作为 Pipeline 的输入。如下三种格式均可作为 Pipeline 的输入:
+
+### JSON 格式
+
+当请求的 Content-Type 为 `application/json` 时,请求的数据格式为标准的 JSON 格式。
+
+```json
+[
+ {"message": "hello world", "time": "2024-07-12T16:18:53.048"},
+ {"message": "hello greptime", "time": "2024-07-12T16:18:53.048"}
+]
+```
+
+### NDJSON 格式
+
+当请求的 Content-Type 为 `application/x-ndjson` 时,每行数据会被视为一条独立的标准 JSON 对象。
+
+```json
+{"message": "hello world", "time": "2024-07-12T16:18:53.048"}
+{"message": "hello greptime", "time": "2024-07-12T16:18:53.048"}
+```
+
+### 纯文本格式
+
+当请求的 Content-Type 为 `text/plain` 时,每行数据会被视为一条独立的对象。并且会将整行数据视为一个字符串,存储在一个只包含 `message` 字段的 map 对象中
+
+```
+hello world 2024-07-12T16:18:53.048
+hello greptime 2024-07-12T16:18:53.048
+```
+
+上述的纯文本格式数据会被转换为如下的等价形式:
+
+```json
+{"message": "hello world 2024-07-12T16:18:53.048"}
+{"message": "hello greptime 2024-07-12T16:18:53.048"}
+```
+
+也就是说,当输入内容为纯文本格式时,需要在编写 `Processor` 和 `Transform` 的过程中,使用 `message` 来指代每行数据的内容。
+
+## 整体结构
+
+Pipeline 由四部分组成:Processors、Dispatcher、Transform 和 Table suffix。
+Processors 对数据进行预处理。
+Dispatcher 可以将 pipeline 执行上下文转发到不同的后续 pipeline 上。
+Transform 决定最终保存在数据库中的数据类型和表结构。
+Table suffix 支持将数据保存到不同的表中。
+
+- Version 用于指定 pipeline 配置的格式。虽然它是可选的,但是我们强烈建议使用 version 2 来编写新配置。更多详情请参考这个[章节](#版本-2-中的-transform)。
+- Processor 用于对 log 数据进行预处理,例如解析时间字段,替换字段等。
+- Dispatcher(可选) 用于将执行上下文转发到另一个 pipeline,同一个输入批次的数据可以基于特定的值被不同的 pipeline 进行处理。
+- Transform(可选) 用于对数据进行格式转换,例如将字符串类型转换为数字类型,并且指定数据库表中列的索引信息。
+- Table suffix(可选) 用于将数据存储到不同的表中,以便后续使用。
+
+一个包含 Processor 和 Transform 的简单配置示例如下:
+
+```yaml
+version: 2
+processors:
+ - urlencoding:
+ fields:
+ - string_field_a
+ - string_field_b
+ method: decode
+ ignore_missing: true
+dispatcher:
+ field: type
+ rules:
+ - value: http
+ table_suffix: http
+ pipeline: http
+ - value: db
+ table_suffix: db
+transform:
+ - fields:
+ - string_field_a
+ - string_field_b
+ type: string
+ # 写入的数据必须包含 timestamp 字段
+ - fields:
+ - reqTimeSec, req_time_sec
+ # epoch 是特殊字段类型,必须指定精度
+ type: epoch, ms
+ index: timestamp
+table_suffix: _${string_field_a}
+```
+
+从 `v0.15` 开始, GreptimeDB 引入了一个新的文件格式版本。
+其主要的差别在于 Transform 的处理逻辑。
+请参考[下述章节](#版本-2-中的-transform)查看更多细节。
+
+## Processor
+
+Processor 用于对 log 数据进行预处理,其配置位于 YAML 文件中的 `processors` 字段下。
+Pipeline 会按照多个 Processor 的顺序依次加工数据,每个 Processor 都依赖于上一个 Processor 处理的结果。
+Processor 由一个 name 和多个配置组成,不同类型的 Processor 配置有不同的字段。
+
+我们目前内置了以下几种 Processor:
+
+- `date`: 解析格式化的时间字符串字段,例如 `2024-07-12T16:18:53.048`。
+- `epoch`: 解析数字时间戳字段,例如 `1720772378893`。
+- `decolorize`: 移除日志数据中的 ANSI 颜色代码。
+- `dissect`: 对 log 数据字段进行拆分。
+- `gsub`: 对 log 数据字段进行替换。
+- `join`: 对 log 中的 array 类型字段进行合并。
+- `letter`: 对 log 数据字段进行字母转换。
+- `regex`: 对 log 数据字段进行正则匹配。
+- `urlencoding`: 对 log 数据字段进行 URL 编解码。
+- `csv`: 对 log 数据字段进行 CSV 解析。
+- `json_path`: 从 JSON 数据中提取字段。(**已废弃**,请使用 `vrl` )
+- `json_parse`: 将一个字段解析成 JSON 对象。
+- `simple_extract`: 使用简单的 key 从 JSON 数据中提取字段。
+- `digest`: 提取日志消息模板。
+- `select`: 从 pipeline 执行上下文中保留或移除字段。
+- `vrl`: 使用 pipeline 上下文执行 [vrl](https://vector.dev/docs/reference/vrl/) 脚本。
+- `filter`: 过滤不需要写入的行数据。
+
+### Processor 的输入和输出
+
+大多数 Processor 接收一个 `field` 或者 `fields` 参数(一个串行处理的 `field` 列表)作为输入数据。
+Processor 会产出一个或者多个输出数据。
+对于那些只产出一个输出数据的 processor,输出的数据会替换上下文中原始 key 所关联的数据。
+
+下述的示例中,在 `letter` processor 之后,一个大写版本的字符串会被保存在 `message` 字段中。
+```yaml
+processors:
+ - letter:
+ fields:
+ - message
+ method: upper
+```
+
+我们可以将输出数据保存到另一个字段中,使得原有的字段不变。
+下述的示例中,我们依然使用 `message` 字段作为 `letter` processor 的输入,但是将输出保存到一个名为 `upper_message` 的新字段中。
+```yaml
+processors:
+ - letter:
+ fields:
+ - key: message
+ rename_to: upper_message
+ method: upper
+```
+
+这个重命名的语法有一种便捷的书写方式:通过 `,` 将两个字段分割即可。
+以下是一个示例:
+```yaml
+processors:
+ - letter:
+ fields:
+ - message, upper_message
+ method: upper
+```
+
+重命名主要有两个场景:
+1. 保持原字段不变,使得它可以被多个 processor 使用,或者作为原始记录被保存到数据库中。
+2. 统一命名。例如为了一致性,将驼峰命名法的变量重命名为蛇形命名法。
+
+### `date`
+
+`date` Processor 用于解析时间字段。示例配置如下:
+
+```yaml
+processors:
+ - date:
+ fields:
+ - time
+ formats:
+ - '%Y-%m-%d %H:%M:%S%.3f'
+ ignore_missing: true
+ timezone: 'Asia/Shanghai'
+```
+
+如上所示,`date` Processor 的配置包含以下字段:
+
+- `fields`: 需要解析的时间字段名列表。
+- `formats`: 时间格式化字符串,支持多个时间格式化字符串。按照提供的顺序尝试解析,直到解析成功。你可以在[这里](https://docs.rs/chrono/latest/chrono/format/strftime/index.html)找到格式化的语法说明。
+- `ignore_missing`: 忽略字段不存在的情况。默认为 `false`。如果字段不存在,并且此配置为 false,则会抛出异常。
+- `timezone`:时区。使用[tz_database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 中的时区标识符来指定时区。默认为 `UTC`。
+
+### `epoch`
+
+`epoch` Processor 用于解析时间戳字段,示例配置如下:
+
+```yaml
+processors:
+ - epoch:
+ fields:
+ - reqTimeSec
+ resolution: millisecond
+ ignore_missing: true
+```
+
+如上所示,`epoch` Processor 的配置包含以下字段:
+
+- `fields`: 需要解析的时间戳字段名列表。
+- `resolution`: 时间戳精度,支持 `s`, `sec` , `second` , `ms`, `millisecond`, `milli`, `us`, `microsecond`, `micro`, `ns`, `nanosecond`, `nano`。默认为 `ms`。
+- `ignore_missing`: 忽略字段不存在的情况。默认为 `false`。如果字段不存在,并且此配置为 false,则会抛出异常。
+
+### `decolorize`
+
+`decolorize` Processor 用于移除日志数据中的 ANSI 颜色代码。示例配置如下:
+
+```yaml
+processors:
+ - decolorize:
+ fields:
+ - message
+```
+
+如上所示,`decolorize` Processor 的配置包含以下字段:
+
+- `fields`: 需要移除颜色代码的字段名列表。
+
+### `dissect`
+
+`dissect` Processor 用于对 log 数据字段进行拆分,示例配置如下:
+
+```yaml
+processors:
+ - dissect:
+ fields:
+ - message
+ patterns:
+ - '%{key1} %{key2}'
+ ignore_missing: true
+ append_separator: '-'
+```
+
+如上所示,`dissect` Processor 的配置包含以下字段:
+
+- `fields`: 需要拆分的字段名列表。不支持字段重命名。
+- `patterns`: 拆分的 dissect 模式。
+- `ignore_missing`: 忽略字段不存在的情况。默认为 `false`。如果字段不存在,并且此配置为 false,则会抛出异常。
+- `append_separator`: 对于多个追加到一起的字段,指定连接符。默认是一个空字符串。
+
+#### Dissect 模式
+
+和 Logstash 的 Dissect 模式类似,Dissect 模式由 `%{key}` 组成,其中 `%{key}` 为一个字段名。例如:
+
+```
+"%{key1} %{key2} %{+key3} %{+key4/2} %{key5->} %{?key6}"
+```
+
+#### Dissect 修饰符
+
+Dissect 模式支持以下修饰符:
+
+| 修饰符 | 说明 | 示例 |
+| ----------- | ---------------------------------------- | --------------------- |
+| `+` | 将两个或多个字段追加到一起 | `%{+key} %{+key}` |
+| `+` 和 `/n` | 按照指定的顺序将两个或多个字段追加到一起 | `%{+key/2} %{+key/1}` |
+| `->` | 忽略右侧的任何重复字符 | `%{key1->} %{key2->}` |
+| `?` | 忽略匹配的值 | `%{?key}` |
+
+#### `dissect` 示例
+
+例如,对于以下 log 数据:
+
+```
+"key1 key2 key3 key4 key5 key6"
+```
+
+使用以下 Dissect 模式:
+
+```
+"%{key1} %{key2} %{+key3} %{+key3/2} %{key5->} %{?key6}"
+```
+
+将得到以下结果:
+
+```
+{
+ "key1": "key1",
+ "key2": "key2",
+ "key3": "key3 key4",
+ "key5": "key5"
+}
+```
+
+### `gsub`
+
+`gsub` Processor 用于对 log 数据字段进行替换,示例配置如下:
+
+```yaml
+processors:
+ - gsub:
+ fields:
+ - message
+ pattern: 'old'
+ replacement: 'new'
+ ignore_missing: true
+```
+
+如上所示,`gsub` Processor 的配置包含以下字段:
+
+- `fields`: 需要替换的字段名列表。
+- `pattern`: 需要替换的字符串。支持正则表达式。
+- `replacement`: 替换后的字符串。
+- `ignore_missing`: 忽略字段不存在的情况。默认为 `false`。如果字段不存在,并且此配置为 false,则会抛出异常。
+
+### `join`
+
+`join` Processor 用于对 log 中的 Array 类型字段进行合并,示例配置如下:
+
+```yaml
+processors:
+ - join:
+ fields:
+ - message
+ separator: ','
+ ignore_missing: true
+```
+
+如上所示,`join` Processor 的配置包含以下字段:
+
+- `fields`: 需要合并的字段名列表。注意,这里每行字段的值需要是 Array 类型,每行字段会单独合并自己数组内的值,所有行的字段不会合并到一起。
+- `separator`: 合并后的分隔符。
+- `ignore_missing`: 忽略字段不存在的情况。默认为 `false`。如果字段不存在,并且此配置为 false,则会抛出异常。
+
+#### `join` 示例
+
+例如,对于以下 log 数据:
+
+```json
+{
+ "message": ["a", "b", "c"]
+}
+```
+
+使用以下配置:
+
+```yaml
+processors:
+ - join:
+ fields:
+ - message
+ separator: ','
+```
+
+将得到以下结果:
+
+```json
+{
+ "message": "a,b,c"
+}
+```
+
+### `letter`
+
+`letter` Processor 用于对 log 数据字段进行字母转换,示例配置如下:
+
+```yaml
+processors:
+ - letter:
+ fields:
+ - message
+ method: upper
+ ignore_missing: true
+```
+
+如上所示,`letter` Processor 的配置包含以下字段:
+
+- `fields`: 需要转换的字段名列表。
+- `method`: 转换方法,支持 `upper`, `lower` ,`capital`。默认为 `lower`。注意 `capital` 只会将第一个字母转换为大写。
+- `ignore_missing`: 忽略字段不存在的情况。默认为 `false`。如果字段不存在,并且此配置为 false,则会抛出异常。
+
+### `regex`
+
+`regex` Processor 用于对 log 数据字段进行正则匹配,示例配置如下:
+
+```yaml
+processors:
+ - regex:
+ fields:
+ - message
+ patterns:
+ - ':(?[0-9])'
+ ignore_missing: true
+```
+
+如上所示,`regex` Processor 的配置包含以下字段:
+
+- `fields`: 需要匹配的字段名列表。如果重命名了字段,重命名后的字段名将与 `pattern` 中的命名捕获组名进行拼接。
+- `pattern`: 要进行匹配的正则表达式,需要使用命名捕获组才可以从对应字段中取出对应数据。
+- `ignore_missing`: 忽略字段不存在的情况。默认为 `false`。如果字段不存在,并且此配置为 false,则会抛出异常。
+
+#### regex 命名捕获组的规则
+
+`regex` Processor 支持使用 `(?...)` 的语法来命名捕获组,最终将数据处理为这种形式:
+
+```json
+{
+ "_": ""
+}
+```
+
+例如 `regex` Processor 中 field 填写的字段名为 `message`,对应的内容为 `"[ERROR] error message"`,
+你可以将 pattern 设置为 `\[(?[A-Z]+)\] (?.+)`,
+最终数据会被处理为:
+```json
+{
+ "message_level": "ERROR",
+ "message_content": "error message"
+}
+```
+
+### `urlencoding`
+
+`urlencoding` Processor 用于对 log 数据字段进行 URL 编码,示例配置如下:
+
+```yaml
+processors:
+ - urlencoding:
+ fields:
+ - string_field_a
+ - string_field_b
+ method: decode
+ ignore_missing: true
+```
+
+如上所示,`urlencoding` Processor 的配置包含以下字段:
+
+- `fields`: 需要编码的字段名列表。
+- `method`: 编码方法,支持 `encode`, `decode`。默认为 `encode`。
+- `ignore_missing`: 忽略字段不存在的情况。默认为 `false`。如果字段不存在,并且此配置为 false,则会抛出异常。
+
+### `csv`
+
+`csv` Processor 用于对 log 数据中没有携带 header 的 CSV 类型字段解析,示例配置如下:
+
+```yaml
+processors:
+ - csv:
+ fields:
+ - message
+ separator: ','
+ quote: '"'
+ trim: true
+ ignore_missing: true
+```
+
+如上所示,`csv` Processor 的配置包含以下字段:
+
+- `fields`: 需要解析的字段名列表。
+- `separator`: 分隔符。
+- `quote`: 引号。
+- `trim`: 是否去除空格。默认为 `false`。
+- `ignore_missing`: 忽略字段不存在的情况。默认为 `false`。如果字段不存在,并且此配置为 false,则会抛出异常。
+
+### `json_path`(废弃)
+
+:::danger 废弃特性
+增加 vrl processor 后,`json_path` 处理器的使用场景已经大大减少。
+如果你需要从 JSON 数据中提取字段,建议使用 `vrl` 处理器来实现更灵活的处理。
+我们计划在未来的版本中废弃 `json_path` 处理器。
+:::
+
+`json_path` 处理器用于从 JSON 数据中提取字段。以下是一个配置示例:
+
+```yaml
+processors:
+ - json_path:
+ fields:
+ - complex_object
+ json_path: "$.shop.orders[?(@.active)].id"
+ ignore_missing: true
+ result_index: 1
+```
+
+在上述示例中,`json_path` processor 的配置包括以下字段:
+
+- `fields`:要提取的字段名称列表。
+- `json_path`:要提取的 JSON 路径。
+- `ignore_missing`:忽略字段缺失的情况。默认为 `false`。如果字段缺失且此配置设置为 `false`,将抛出异常。
+- `result_index`:指定提取数组中要用作结果值的下标。默认情况下,包含所有值。Processor 提取的结果值是包含 path 中所有值的数组。如果指定了索引,将使用提取数组中对应的下标的值作为最终结果。
+
+#### JSON 路径语法
+
+JSON 路径语法基于 [jsonpath-rust](https://github.com/besok/jsonpath-rust) 库。
+
+在此阶段,我们仅推荐使用一些简单的字段提取操作,以便将嵌套字段提取到顶层。
+
+#### `json_path` 示例
+
+例如,给定以下日志数据:
+
+```json
+{
+ "product_object": {
+ "hello": "world"
+ },
+ "product_array": [
+ "hello",
+ "world"
+ ],
+ "complex_object": {
+ "shop": {
+ "orders": [
+ {
+ "id": 1,
+ "active": true
+ },
+ {
+ "id": 2
+ },
+ {
+ "id": 3
+ },
+ {
+ "id": 4,
+ "active": true
+ }
+ ]
+ }
+ }
+}
+```
+
+使用以下配置:
+
+```yaml
+processors:
+ - json_path:
+ fields:
+ - product_object, object_target
+ json_path: "$.hello"
+ result_index: 0
+ - json_path:
+ fields:
+ - product_array, array_target
+ json_path: "$.[1]"
+ result_index: 0
+ - json_path:
+ fields:
+ - complex_object, complex_target_1
+ json_path: "$.shop.orders[?(@.active)].id"
+ - json_path:
+ fields:
+ - complex_target_1, complex_target_2
+ json_path: "$.[1]"
+ result_index: 0
+ - json_path:
+ fields:
+ - complex_object, complex_target_3
+ json_path: "$.shop.orders[?(@.active)].id"
+ result_index: 1
+transform:
+ - fields:
+ - object_target
+ - array_target
+ type: string
+ - fields:
+ - complex_target_3
+ - complex_target_2
+ type: uint32
+ - fields:
+ - complex_target_1
+ type: json
+```
+
+结果将是:
+
+```json
+{
+ "object_target": "world",
+ "array_target": "world",
+ "complex_target_3": 4,
+ "complex_target_2": 4,
+ "complex_target_1": [1, 4]
+}
+```
+
+### `json_parse`
+
+`json_parse`,如其名字所示,将一个字符串解析成一个 JSON 对象。以下是一份示例配置:
+
+```yaml
+processors:
+ - json_parse:
+ fields:
+ - complex_object, target_field
+ ignore_missing: true
+```
+
+在上述示例中,`json_parse` 处理器的配置包含以下字段:
+
+- `fields`:对于每个字段,第一个 key 表示输入字符串中的 key,第二个 key 表示输出的 key 名称。如果不填写第二个 key,则默认使用第一个 key 名作为输出名,也就是替换第一个 key 中的值。上面的示例表示解析 `complex_object` 并将输出放入 `target_field` 中。
+- `ignore_missing`:忽略字段不存在的情况。默认为 `false`。如果字段不存在且此配置为 `false`,将抛出异常。
+
+#### `json_parse` example
+
+例如,给定以下日志数据:
+
+```json
+{
+ "product_object": "{\"hello\":\"world\"}",
+}
+```
+
+使用以下配置:
+
+```yaml
+processors:
+ - json_parse:
+ fields:
+ - product_object
+```
+
+结果将是:
+
+```json
+{
+ "product_object": {
+ "hello": "world"
+ }
+}
+```
+
+### `simple_extract`
+
+虽然 `json_path` 处理器能够使用复杂表达式从 JSON 对象中提取字段,但它相对较慢且成本较高。`simple_extract` 处理器提供了一种简单的方法,仅使用键名来提取字段。以下是示例配置:
+
+```yaml
+processors:
+ - simple_extract:
+ fields:
+ - complex_object, target_field
+ key: "shop.name"
+ ignore_missing: true
+```
+
+在上述示例中,`simple_extract` 处理器的配置包含以下字段:
+
+- `fields`:对于每个字段,第一个键表示上下文中的输入 JSON 对象,第二个键表示输出键名。上面的示例表示从 `complex_object` 中提取数据并将输出放入 `target_field` 中。
+- `key`:提取键,使用 `x.x` 格式,每个 `.` 表示一个新的嵌套层。
+- `ignore_missing`:忽略字段不存在的情况。默认为 `false`。如果字段不存在且此配置为 `false`,将抛出异常。
+
+#### `simple_extract` 示例
+
+例如,给定以下日志数据:
+
+```json
+{
+ "product_object": {
+ "hello": "world"
+ },
+ "product_array": [
+ "hello",
+ "world"
+ ],
+ "complex_object": {
+ "shop": {
+ "name": "some_shop_name"
+ }
+ }
+}
+```
+
+使用以下配置:
+
+```yaml
+processors:
+ - simple_extract:
+ fields:
+ - complex_object, shop_name
+ key: "shop.name"
+transform:
+ - fields:
+ - shop_name
+ type: string
+```
+
+结果将是:
+
+```json
+{
+ "shop_name": "some_shop_name"
+}
+```
+
+### `digest`
+
+`digest` 处理器用于从日志内容中提取日志模板,它通过识别并移除可变内容(如数字、UUID、IP 地址、引号中的内容和括号中的文本等)来实现。提取出的模板可用于日志的分类和分析。配置示例如下:
+
+```yaml
+processors:
+ - digest:
+ fields:
+ - message
+ presets:
+ - numbers
+ - uuid
+ - ip
+ - quoted
+ - bracketed
+ regex:
+ - "foobar"
+ ignore_missing: true
+```
+
+在上述示例中,`digest` 处理器的配置包含以下字段:
+
+- `fields`:要进行摘要处理的字段名列表。处理后的结果将存储在带有 `_digest` 后缀的新字段中。
+- `presets`:要移除的预设模式列表。支持以下模式:
+ - `numbers`:匹配数字序列
+ - `uuid`:匹配 UUID 字符串,如 `123e4567-e89b-12d3-a456-426614174000`
+ - `ip`:匹配 IPv4/IPv6 地址(可选带端口号)
+ - `quoted`:匹配单引号/双引号内的文本(包括各种 Unicode 引号)
+ - `bracketed`:匹配各种类型括号内的文本(包括各种 Unicode 括号)
+- `regex`:要移除的自定义正则表达式列表
+- `ignore_missing`:是否忽略字段不存在的情况。默认为 `false`。如果字段不存在且此配置为 `false`,将抛出异常。
+
+#### `digest` 示例
+
+例如,给定以下日志数据:
+
+```json
+{
+ "message": "User 'john.doe' from [192.168.1.1] accessed resource 12345 with UUID 123e4567-e89b-12d3-a456-426614174000"
+}
+```
+
+使用以下配置:
+
+```yaml
+processors:
+ - digest:
+ fields:
+ - message
+ presets:
+ - numbers
+ - uuid
+ - ip
+ - quoted
+ - bracketed
+```
+
+结果将是:
+
+```json
+{
+ "message": "User 'john.doe' from [192.168.1.1] accessed resource 12345 with UUID 123e4567-e89b-12d3-a456-426614174000",
+ "message_digest": "User from accessed resource with UUID "
+}
+```
+
+提取的模板可用于对相似的日志消息进行分组或分析日志模式,即使可变内容不同。例如,以下所有日志消息都会生成相同的模板:
+
+- `User 'alice' from [10.0.0.1] accessed resource 54321 with UUID 987fbc97-4bed-5078-9141-2791ba07c9f3`
+- `User 'bob' from [2001:0db8::1] accessed resource 98765 with UUID 550e8400-e29b-41d4-a716-446655440000`
+
+### `select`
+
+`select` 处理器用于从 pipeline 执行上下文中保留或者移除字段。
+
+从 `v0.15` 开始,我们引入了[`自动 transform`](#自动-transform)用来简化配置。
+`自动 transform`会尝试将 pipeline 执行上下文中所有的字段都保存下来。
+`select` 处理器在这里能选择上下文中的字段并保留或者移除,在`自动 transform`模式下即反映了最终的表结构。
+
+`select` 处理器的选项非常简单:
+- `type` (可选)
+ - `include` (默认): 只保留选中的字段列表
+ - `exclude`: 从当前的上下文中移除选中的字段列表
+- `fields`: 选择的字段列表
+
+以下是一个简单的示例:
+```YAML
+processors:
+ - dissect:
+ fields:
+ - message
+ patterns:
+ - "%{+ts} %{+ts} %{http_status_code} %{content}"
+ - date:
+ fields:
+ - ts
+ formats:
+ - "%Y-%m-%d %H:%M:%S%.3f"
+ - select:
+ fields:
+ - http_status_code
+ - ts
+```
+
+通过 `dissect` 和 `date` 处理器之后,现在上下文中有四个字段: `ts`,`http_status_code`,`content` 和最初的 `message`。
+在没有 `select` 处理器的情况下,四个字段都会被保存下来。
+`select` 处理器在这里选择了 `http_status_code` 和 `ts` 两个字段来保存(默认 `include` 行为),等效于从 pipeline 执行上下文中删除了 `content` 和 `message` 字段,使得最终只有 `http_status_code` 和 `ts` 这两个字段被保存到数据库中。
+
+上述的示例也可以用以下 `select` 处理器配置来达成效果:
+```YAML
+ - select:
+ type: exclude
+ fields:
+ - content
+ - message
+```
+
+### `vrl`
+
+:::warning 实验性特性
+此实验性功能可能存在预期外的行为,其功能未来可能发生变化。
+:::
+
+`vrl` 处理器使用 pipeline 上下文作为环境来运行 vrl 编程脚本。
+相比于简单的处理器,它功能更加强大,允许你编写编程代码来此操作上下文中的变量;不过执行 vrl 脚本会消耗更多的资源。
+更多的 vrl 语言介绍和使用,请参考[官方网站](https://vector.dev/docs/reference/vrl/)。
+
+`vrl` 处理器目前只有一个配置项,就是 `source`(源码)。以下是一个示例:
+```YAML
+processors:
+ - date:
+ field: time
+ formats:
+ - "%Y-%m-%d %H:%M:%S%.3f"
+ ignore_missing: true
+ - vrl:
+ source: |
+ .from_source = "channel_2"
+ cond, err = .id1 > .id2
+ if (cond) {
+ .from_source = "channel_1"
+ }
+ del(.id1)
+ del(.id2)
+ .
+```
+
+这份配置使用 `|` 在 YAML 中开启一个多行的文本。随后即可编写整个脚本。
+
+在使用 `vrl` 处理器时,有一些需要注意的点:
+1. 整个脚本必须以一个单独的 `.` 行作为结尾,表示将整个上下文作为脚本的返回值。
+2. vrl 脚本的返回值中不能包含任何的 `regex` 类型的变量。在脚本的过程中可以使用这种类型,但是在返回之前需要 `del`(删除) 掉。
+3. 由于 pipeline 的类型和 vrl 的类型之前存在转换,经过 vrl 处理的类型会变成最大的容量类型,即 `i64`, `u64` 和 `Timestamp::nanoseconds`。
+
+### `filter`
+
+`filter` 处理器用于根据指定条件筛选数据行,从而移除不需要的数据。
+
+以下是一个简单的 `filter` 处理器配置:
+```YAML
+processors:
+ - date:
+ field: time
+ formats:
+ - "%Y-%m-%d %H:%M:%S%.3f"
+ - filter:
+ field: name
+ mode: simple
+ match_op: in
+ case_insensitive: true
+ targets:
+ - John
+ - Wick
+transform:
+ - field: name
+ type: string
+ - field: time
+ type: time
+ index: timestamp
+```
+`filter` 处理器在这里会检查 pipeline 上下文中的 `name` 变量的值。
+如果它的值和 targets 列表 `['John', 'Wick']` 中的任意值匹配,则认为条件判断成功。
+这条输入数据的处理将会被中止,不会被持久化到数据库中。
+
+`filter` 处理器接受以下参数:
+1. `field`(或者 `fields`):用于比较的上下文变量,可以是一个或者多个;任意一个满足条件即会触发过滤。
+2. `mode`(可选):默认为 `simple`,即为简单字符串匹配。这个字段是为了将来对 `filter` 处理器的功能进行扩展。
+3. `match_op`(可选):如果 mode 是 `simple`,这个选项可以设置为 `in` 或者 `not_in`,意为检查目标列表是否包含变量。默认为 `in`。
+4. `case_insensitive`(可选):默认为 `true`.
+5. `targets`: 用于比较的目标列表。
+
+## Transform
+
+Transform 用于对 log 数据进行转换,并且指定在数据库表中列的索引信息。其配置位于 YAML 文件中的 `transform` 字段下。
+
+从 `v0.15` 开始,GreptimeDB 引入了版本 2 格式和自动 transform,可以大幅简化配置。具体详情见下。
+
+Transform 由一个或多个配置组成,每个配置包含以下字段:
+
+- `fields`: 需要转换的字段名列表
+- `type`: 指定在数据库中的数据类型
+- `index`(可选): 索引类型
+- `tag`(可选): 设置列为 tag
+- `on_failure`(可选): 转换失败时的处理方式
+- `default`(可选): 默认值
+
+### 版本 2 中的 Transform
+
+在最初的 pipeline 版本中,你需要在 transform 中手动指定所有的字段,来将它们持久化到数据库中。
+如果一个字段没有在 transform 中被指定,那么它将会被丢弃。
+当字段的数量不断增加时,配置将会变得繁琐、容易出错。
+
+从 `v0.15` 开始,GreptimeDB 引入了一种新的 transform 模式,使得编写 pipeline 配置变得更加简单。
+你只需要在 transform 指定需要设置索引和数据类型转换的字段即可;其他 pipeline 上下文中的字段将会被 pipeline 引擎自动转换并保存。
+配合 `select` 处理器,我们可以决定什么字段会被最终保留在数据库中。
+
+但是这无法兼容已经存在的 pipeline 配置文件。
+如果你已经在 pipeline 配置中使用了 `dissect` 或者 `regex` 处理器,那么在升级数据库版本后,原始的日志文本,因为还留存于 pipeline 上下文中,会被立刻写入到数据库中。
+
+因此,GreptimeDB pipeline 引入了 `version` 字段来执行要使用的 transform 版本,就像 Docker Compose 文件的版本号字段一样。
+以下是一个示例:
+```YAML
+version: 2
+processors:
+ - date:
+ field: input_str
+ formats:
+ - "%Y-%m-%dT%H:%M:%S%.3fZ"
+
+transform:
+ - field: input_str, ts
+ type: time, ms
+ index: timestamp
+```
+
+只需要在配置文件的开头加上 `version: 2`,pipeline 引擎就会以新的 transform 模式来处理数据:
+1. 顺序执行所有配置的 transform 规则。
+2. 将 pipeline 上下文中的所有字段保存到最终的结果表中
+
+注意:
+- Transform 规则**必须设置一个时间索引列**。
+- 版本 2 中的 transform 规则执行会将原始字段从 pipeline 上下文中移除,故你无法在 transform 规则对同一个字段引用多次
+
+### 自动 transform
+
+在版本 2 中 transform 的配置编写已经进行了大幅的简化。
+即使如此,在某些场景下,我们仍然希望能够结合处理器的处理能力与 `greptime_identity` 的自动字段保存能力,从而无需编写任何转换代码,即可让 pipeline 引擎自动推导并保存字段。
+
+现在自定义 pipeline 支持了这点。
+如果 pipeline 配置中没有 transform 模块,pipeline 引擎将会尝试为上下文中的变量自动推导数据类型,并将它们持久化到数据库中,就像 `greptime_identity` 一样。
+
+当在 GreptimeDB 中创建表时,必须指定一个时间索引列。在这个场景中,pipeline 引擎会尝试从上下文中寻找一个 `timestamp`
+类型的字段,并将其设置成时间索引列。`timestamp` 类型的字段是 `date` 或者 `epoch` processor 的产物。所以在 processors 声明中,必须存在一个
+`date` 或者 `epoch` processor。同时,只允许存在一个 `timestamp` 类型的字段,多个 `timestamp` 字段的情况下会因无法判断在哪一列上设置时间索引而报错。
+
+例如,以下 pipeline 配置现在是有效的。
+```YAML
+version: 2
+processors:
+ - dissect:
+ fields:
+ - message
+ patterns:
+ - '%{ip_address} - %{username} [%{timestamp}] "%{http_method} %{request_line} %{protocol}" %{status_code} %{response_size}'
+ ignore_missing: true
+ - date:
+ fields:
+ - timestamp
+ formats:
+ - "%d/%b/%Y:%H:%M:%S %z"
+```
+
+其产生的表结构如下:
+```
+mysql> desc auto_trans;
++---------------+---------------------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++---------------+---------------------+------+------+---------+---------------+
+| timestamp | TimestampNanosecond | PRI | NO | | TIMESTAMP |
+| host | String | | YES | | FIELD |
+| http_method | String | | YES | | FIELD |
+| ip_address | String | | YES | | FIELD |
+| message | String | | YES | | FIELD |
+| protocol | String | | YES | | FIELD |
+| request_line | String | | YES | | FIELD |
+| response_size | String | | YES | | FIELD |
+| service | String | | YES | | FIELD |
+| source_type | String | | YES | | FIELD |
+| status_code | String | | YES | | FIELD |
+| username | String | | YES | | FIELD |
++---------------+---------------------+------+------+---------+---------------+
+12 rows in set (0.03 sec)
+```
+
+可以看到所有的字段都被保存下来了,包括原始的 `message` 字段。注意所有的字段都被保存成 `String` 类型,`timestamp` 字段自动被设置成时间索引列。
+
+### `fields` 字段
+
+每个字段名都是一个字符串。
+在 transform 中 `fields` 也可以使用重命名,语法参考[这里](#processor-的输入和输出)。
+字段的最终命名会被作为数据库表中的列的名字。
+
+### `type` 字段
+
+GreptimeDB 目前内置了以下几种转换类型:
+
+- `int8`, `int16`, `int32`, `int64`: 整数类型。
+- `uint8`, `uint16`, `uint32`, `uint64`: 无符号整数类型。
+- `float32`, `float64`: 浮点数类型。
+- `string`: 字符串类型。
+- `time`: 时间类型。将被转换为 GreptimeDB `timestamp(9)` 类型。
+- `epoch`: 时间戳类型。将被转换为 GreptimeDB `timestamp(n)` 类型。n 为时间戳精度,n 的值视 epoch 精度而定。当精度为 `s` 时,n 为 0;当精度为 `ms` 时,n 为 3;当精度为 `us` 时,n 为 6;当精度为 `ns` 时,n 为 9。
+
+如果字段在转换过程中获得了非法值,Pipeline 将会抛出异常。例如将一个字符串 `abc` 转换为整数时,由于该字符串不是一个合法的整数,Pipeline 将会抛出异常。
+
+### `index` 字段
+
+`Pipeline` 会将处理后的数据写入到 GreptimeDB 自动创建的数据表中。为了提高查询效率,GreptimeDB 会为表中的某些列创建索引。`index` 字段用于指定哪些字段需要被索引。关于 GreptimeDB 的索引类型,请参考[数据索引](/user-guide/manage-data/data-index.md)文档。
+
+GreptimeDB 支持以下四种字段的索引类型:
+
+- `timestamp`: 用于指定某列是时间索引列
+- `inverted`: 用于指定某列使用 inverted 类型的索引(倒排索引)
+- `fulltext`: 用于指定某列使用 fulltext 类型的索引(全文索引),该列需要是字符串类型
+- `skipping`: 用于指定某列使用 skipping 类型的索引(跳数索引),该列需要是字符串类型
+
+
+不提供 `index` 字段时,GreptimeDB 将不会在该字段上建立索引。
+
+在 GreptimeDB 中,一张表里必须包含一个 `timestamp` 类型的列作为该表的时间索引列,因此一个 Pipeline 有且只有一个时间索引列。
+
+#### 时间戳列
+
+通过 `index: timestamp` 指定哪个字段是时间索引列,写法请参考下方的 [Transform 示例](#transform-示例)。
+
+#### Inverted 索引
+
+通过 `index: inverted` 指定在哪个列上建立倒排索引,写法请参考下方的 [Transform 示例](#transform-示例)。
+
+#### Fulltext 索引
+
+通过 `index: fulltext` 指定在哪个列上建立全文索引,该索引可大大提升 [日志搜索](/user-guide/logs/fulltext-search.md) 的性能,写法请参考下方的 [Transform 示例](#transform-示例)。
+
+#### Skipping 索引
+
+通过 `index: skipping` 指定在哪个列上建立跳数索引,该索引只需少量存储空间的索引文件即可以加速在高基数列上的查询,写法请参考下方的 [Transform 示例](#transform-示例)。
+
+### `tag` 字段
+
+`Pipeline` 支持手动指定 tag 列。关于 tag 列的更多信息,请参考[数据模型](/user-guide/concepts/data-model.md)文档。写法请参考下方的 [Transform 示例](#transform-示例)。
+
+### `on_failure` 字段
+
+`on_failure` 字段用于指定转换失败时的处理方式,支持以下几种方式:
+
+- `ignore`: 忽略转换失败的字段,不写入数据库。
+- `default`: 写入默认值。默认值由 `default` 字段指定。
+
+### `default` 字段
+
+`default` 字段用于指定转换失败时的默认值。
+
+### Transform 示例
+
+例如,对于以下 log 数据:
+
+```json
+{
+ "num_field_a": "3",
+ "string_field_a": "john",
+ "string_field_b": "It was snowing when he was born.",
+ "time_field_a": 1625760000
+}
+```
+
+使用以下配置:
+
+```yaml
+transform:
+ - fields:
+ - string_field_a, name
+ type: string
+ index: skipping
+ tag: true
+ - fields:
+ - num_field_a, age
+ type: int32
+ index: inverted
+ - fields:
+ - string_field_b, description
+ type: string
+ index: fulltext
+ - fields:
+ - time_field_a, born_time
+ type: epoch, s
+ index: timestamp
+```
+
+将得到以下结果:
+
+```
+{
+ "name": "john",
+ "age": 3,
+ "description": "It was snowing when he was born.",
+ "born_time": 2021-07-08 16:00:00
+}
+```
+
+## Dispatcher
+
+Dispatcher 允许用户将数据路由到其他 Pipeline 上。这是为了应对当多种日志类型共享
+单一来源且需要存储在不同结构的单独表中。
+
+配置例子如下:
+
+```yaml
+dispatcher:
+ field: type
+ rules:
+ - value: http
+ table_suffix: http
+ pipeline: http
+ - value: db
+ table_suffix: db
+
+```
+
+Dispatcher 在 processor 之后执行。当匹配到相应的规则时,下一个 pipeline 将被执行。
+
+你可以指定路由数据所依据的字段名 `field`,并指定路由规则 `rules`。假如 `field`
+字段匹配到规则中的 `value`,数据将被路由到 `pipeline`。如果规则中没有指定
+`pipeline`,将会根据当前的数据结构推断表结构。在上面的例子里,如果用户输入的数据
+中 `type` 字段的值为 `http`,我们将把数据路由给名为 `http` 的 pipeline 执行。如
+果 `type` 字段的值为 `db`,我们将用当前数据的结构作为表结构存储。
+
+写入的目标表名由 `table_suffix` 指定,这个后缀将和请求输入的 `table` 参数及下划
+线组合形成最终的表名。例如,请求的表名叫做 `applogs`,当匹配到上面例子中的
+`http` 规则时,最终的表名叫做 `applogs_http`。
+
+如果没有规则匹配到,数据将执行当前 pipeline 中定一个 transform 规则。
+
+## Table suffix
+
+:::warning 实验性特性
+此实验性功能可能存在预期外的行为,其功能未来可能发生变化。
+:::
+
+在一些场景下,你可能需要将写入的日志数据基于输入的字段值保存到不同表上。
+比如你可能希望按照产生的应用名将日志保存到不同的表上,在表名上添加这个应用名的后缀。
+
+一个配置示例如下:
+```yaml
+table_suffix: _${app_name}
+```
+
+语法非常简单: 使用 `${}` 来引用 pipeline 执行上下文中的变量。
+该变量可以是输入数据中直接存在的,也可以是前序处理流程中产生的。
+变量替换完成之后,整个字符串会被添加到输入的表名后。
+
+注意:
+1. 引用的变量必须是一个整数或者字符串类型的数据
+2. 如果在执行过程中遇到任何错误(例如变量不存在或者无效数据类型),输入的表名会被作为最终表名
+
+下面举一个例子。以下是输入数据:
+```JSON
+[
+ {"type": "db"},
+ {"type": "http"},
+ {"t": "test"}
+]
+```
+
+输入的表名为 `persist_app`,pipeline 配置如下:
+```YAML
+table_suffix: _${type}
+```
+
+这三行输入数据会被写入到三张不同的表中:
+1. `persist_app_db`
+2. `persist_app_http`
+3. `persist_app`, 因为输入的数据中并没有 `type` 字段,所以使用了默认的表名
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/pipeline/write-log-api.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/pipeline/write-log-api.md
new file mode 100644
index 0000000000..0c23d9d4d1
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/pipeline/write-log-api.md
@@ -0,0 +1,161 @@
+---
+keywords: [日志写入, HTTP 接口, Pipeline 配置, 数据格式, 请求参数]
+description: 介绍如何通过 HTTP 接口使用指定的 Pipeline 将日志写入 GreptimeDB,包括请求参数、数据格式和示例。
+---
+
+# 写入日志的 API
+
+在写入日志之前,请先阅读 [Pipeline 配置](/user-guide/logs/use-custom-pipelines.md#上传-pipeline)完成配置的设定和上传。
+
+## HTTP API
+
+你可以使用以下命令通过 HTTP 接口写入日志:
+
+```shell
+curl -X "POST" "http://localhost:4000/v1/ingest?db=&table=&pipeline_name=&version=&skip_error=" \
+ -H "Content-Type: application/x-ndjson" \
+ -H "Authorization: Basic {{authentication}}" \
+ -d "$"
+```
+
+
+### 请求参数
+
+此接口接受以下参数:
+
+- `db`:数据库名称。
+- `table`:表名称。
+- `pipeline_name`:[Pipeline](./pipeline-config.md) 名称。
+- `version`:Pipeline 版本号。可选,默认使用最新版本。
+- `skip_error`:写入日志时是否跳过错误。可选,默认为 `false`。当设置为 `true` 时,GreptimeDB 会跳过遇到错误的单条日志项并继续处理剩余的日志,不会因为一条日志项的错误导致整个请求失败。
+
+### `Content-Type` 和 Body 数据格式
+
+GreptimeDB 使用 `Content-Type` header 来决定如何解码请求体内容。目前我们支持以下两种格式:
+- `application/json`: 包括普通的 JSON 格式和 NDJSON 格式。
+- `application/x-ndjson`: 指定 NDJSON 格式,会尝试先分割行再进行解析,可以达到精确的错误检查。
+- `text/plain`: 通过换行符分割的多行日志文本行。
+
+#### `application/json` 和 `application/x-ndjson` 格式
+
+以下是一份 JSON 格式请求体内容的示例:
+
+```JSON
+[
+ {"message":"127.0.0.1 - - [25/May/2024:20:16:37 +0000] \"GET /index.html HTTP/1.1\" 200 612 \"-\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\""},
+ {"message":"192.168.1.1 - - [25/May/2024:20:17:37 +0000] \"POST /api/login HTTP/1.1\" 200 1784 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36\""},
+ {"message":"10.0.0.1 - - [25/May/2024:20:18:37 +0000] \"GET /images/logo.png HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0\""},
+ {"message":"172.16.0.1 - - [25/May/2024:20:19:37 +0000] \"GET /contact HTTP/1.1\" 404 162 \"-\" \"Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1\""}
+]
+```
+
+请注意整个 JSON 是一个数组(包含多行日志)。每个 JSON 对象代表即将要被 Pipeline 引擎处理的一行日志。
+
+JSON 对象中的 key 名,也就是这里的 `message`,会被用作 Pipeline processor 处理时的 field 名称。比如:
+
+```yaml
+processors:
+ - dissect:
+ fields:
+ # `message` 是 JSON 对象中的 key 名
+ - message
+ patterns:
+ - '%{ip_address} - - [%{timestamp}] "%{http_method} %{request_line}" %{status_code} %{response_size} "-" "%{user_agent}"'
+ ignore_missing: true
+
+# pipeline 文件的剩余部分在这里省略
+```
+
+我们也可以将这个请求体内容改写成 NDJSON 的格式,如下所示:
+
+```JSON
+{"message":"127.0.0.1 - - [25/May/2024:20:16:37 +0000] \"GET /index.html HTTP/1.1\" 200 612 \"-\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\""}
+{"message":"192.168.1.1 - - [25/May/2024:20:17:37 +0000] \"POST /api/login HTTP/1.1\" 200 1784 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36\""}
+{"message":"10.0.0.1 - - [25/May/2024:20:18:37 +0000] \"GET /images/logo.png HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0\""}
+{"message":"172.16.0.1 - - [25/May/2024:20:19:37 +0000] \"GET /contact HTTP/1.1\" 404 162 \"-\" \"Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1\""}
+```
+
+注意到最外层的数组符被消去了,现在每个 JSON 对象通过换行符分割而不是 `,`。
+
+#### `text/plain` 格式
+
+纯文本日志在整个生态系统中被广泛应用。GreptimeDB 同样支持日志数据以 `text/plain` 格式进行输入,使得我们可以直接从日志产生源进行写入。
+
+以下是一份和上述样例请求体内容等价的文本请求示例:
+
+```plain
+127.0.0.1 - - [25/May/2024:20:16:37 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
+192.168.1.1 - - [25/May/2024:20:17:37 +0000] "POST /api/login HTTP/1.1" 200 1784 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36"
+10.0.0.1 - - [25/May/2024:20:18:37 +0000] "GET /images/logo.png HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0"
+172.16.0.1 - - [25/May/2024:20:19:37 +0000] "GET /contact HTTP/1.1" 404 162 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1"
+```
+
+仅需要将 `Content-Type` header 设置成 `text/plain`,即可将纯文本请求发送到 GreptimeDB。
+
+主要注意的是,和 JSON 格式自带 key 名可以被 Pipeline processor 识别和处理不同,`text/plain` 格式直接将整行文本输入到 Pipeline engine。在这种情况下我们可以使用 `message` 来指代整行输入文本,例如:
+
+```yaml
+processors:
+ - dissect:
+ fields:
+ # 使用 `message` 作为 field 名称
+ - message
+ patterns:
+ - '%{ip_address} - - [%{timestamp}] "%{http_method} %{request_line}" %{status_code} %{response_size} "-" "%{user_agent}"'
+ ignore_missing: true
+
+# pipeline 文件的剩余部分在这里省略
+```
+
+对于 `text/plain` 格式的输入,推荐首先使用 `dissect` 或者 `regex` processor 将整行文本分割成不同的字段,以便进行后续的处理。
+
+## 设置表选项
+
+写入日志的表选项需要在 pipeline 中配置。
+从 `v0.15` 开始,pipeline 引擎可以识别特定的变量名称,并且通过这些变量对应的值设置相应的建表选项。
+通过与 `vrl` 处理器的结合,现在可以非常轻易地通过输入的数据在 pipeline 的执行过程中设置建表选项。
+
+以下是支持的表选项变量名:
+- `greptime_auto_create_table`
+- `greptime_ttl`
+- `greptime_append_mode`
+- `greptime_merge_mode`
+- `greptime_physical_table`
+- `greptime_skip_wal`
+
+请前往[表选项](/reference/sql/create.md#表选项)文档了解每一个选项的详细含义。
+
+以下是 pipeline 特有的变量:
+- `greptime_table_suffix`: 在给定的目标表后增加后缀
+
+以如下 pipeline 文件为例
+```YAML
+processors:
+ - date:
+ field: time
+ formats:
+ - "%Y-%m-%d %H:%M:%S%.3f"
+ ignore_missing: true
+ - vrl:
+ source: |
+ .greptime_table_suffix, err = "_" + .id
+ .greptime_table_ttl = "1d"
+ .
+```
+
+在这份 vrl 脚本中,我们将表后缀变量设置为输入字段中的 `id`(通过一个下划线连接),然后将 ttl 设置成 `1d`。
+然后我们使用如下数据执行写入。
+
+```JSON
+{
+ "id": "2436",
+ "time": "2024-05-25 20:16:37.217"
+}
+```
+
+假设给定的表名为 `d_table`,那么最终的表名就会按照预期被设置成 `d_table_2436`。这个表同样的 ttl 同样会被设置成 1 天。
+
+## 示例
+
+请参考[快速开始](/user-guide/logs/quick-start.md)和[使用自定义 pipeline 中的](/user-guide/logs/use-custom-pipelines.md#使用-pipeline-写入日志)写入日志部分的文档。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql-tools.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql-tools.md
new file mode 100644
index 0000000000..bd6436e05e
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql-tools.md
@@ -0,0 +1,290 @@
+---
+keywords: [SQL 工具, 查询库, 编程语言 Driver, 数据库连接, Raw SQL, 命令行工具, GUI 工具, HTTP API]
+description: 介绍如何使用 SQL 工具与 GreptimeDB 交互,包括推荐的查询库、安装方法、连接数据库、使用 Raw SQL 查询数据等内容。
+---
+
+# SQL 工具
+
+GreptimeDB 使用 SQL 作为主要查询语言,并支持许多流行的 SQL 工具。
+本文档指导你如何使用 SQL 工具与 GreptimeDB 交互。
+
+## 编程语言 Driver
+
+推荐使用成熟的 SQL driver 来查询数据。
+
+### 推荐的查询库
+
+
+
+ Java 数据库连接(JDBC)是 JavaSoft 规范的标准应用程序编程接口(API),它允许 Java 程序访问数据库管理系统。
+
+ 许多数据库协议,如 MySQL 或 PostgreSQL,都已经基于 JDBC API 实现了自己的驱动程序。
+ 由于 GreptimeDB [支持多种协议](/user-guide/protocols/overview.md),这里我们使用 MySQL 协议作为示例来演示如何使用 JDBC。
+ 如果你希望使用其他协议,只需要将 MySQL driver 换为相应的 driver。
+
+
+ 推荐使用 [GORM](https://gorm.io/) 库来查询数据。
+
+
+
+### 安装
+
+
+
+ 如果你使用的是 [Maven](https://maven.apache.org/),请将以下内容添加到 `pom.xml` 的依赖项列表中:
+
+ ```xml
+
+ mysql
+ mysql-connector-java
+ 8.0.33
+
+ ```
+
+
+
+ 使用下方的命令安装 GORM:
+
+ ```shell
+ go get -u gorm.io/gorm
+ ```
+
+ 以 MySQL 为例安装 driver:
+
+ ```shell
+ go get -u gorm.io/driver/mysql
+ ```
+
+ 将库引入到代码中:
+
+ ```go
+ import (
+ "gorm.io/gorm"
+ "gorm.io/driver/mysql"
+ )
+ ```
+
+
+
+### Connect to database
+
+下面以 MySQL 为例演示如何连接到 GreptimeDB。
+
+
+
+ ```java
+ public static Connection getConnection() throws IOException, ClassNotFoundException, SQLException {
+ Properties prop = new Properties();
+ prop.load(QueryJDBC.class.getResourceAsStream("/db-connection.properties"));
+
+ String dbName = (String) prop.get("db.database-driver");
+ String dbConnUrl = (String) prop.get("db.url");
+ String dbUserName = (String) prop.get("db.username");
+ String dbPassword = (String) prop.get("db.password");
+
+ Class.forName(dbName);
+ Connection dbConn = DriverManager.getConnection(dbConnUrl, dbUserName, dbPassword);
+
+ return Objects.requireNonNull(dbConn, "Failed to make connection!");
+ }
+ ```
+
+ 你需要一个 properties 文件来存储数据库连接信息,将其放在 Resources 目录中并命名为 `db-connection.properties`。文件内容如下:
+
+ ```txt
+ # DataSource
+ db.database-driver=com.mysql.cj.jdbc.Driver
+ db.url=jdbc:mysql://localhost:4002/public
+ db.username=
+ db.password=
+ ```
+
+ 或者你可以从 [这里](https://github.com/GreptimeTeam/greptimedb-ingester-java/blob/main/ingester-example/src/main/resources/db-connection.properties) 获取文件。
+
+
+ ```go
+ type Mysql struct {
+ Host string
+ Port string
+ User string
+ Password string
+ Database string
+
+ DB *gorm.DB
+ }
+
+ m := &Mysql{
+ Host: "127.0.0.1",
+ Port: "4002", // default port for MySQL
+ User: "username",
+ Password: "password",
+ Database: "public",
+ }
+
+ dsn := fmt.Sprintf("tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
+ m.Host, m.Port, m.Database)
+ dsn = fmt.Sprintf("%s:%s@%s", m.User, m.Password, dsn)
+ db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
+ if err != nil {
+ // error handling
+ }
+ m.DB = db
+ ```
+
+
+
+#### 时区
+
+
+
+ 通过设置 URL 参数来设置 JDBC 时区:
+
+ ```txt
+ jdbc:mysql://127.0.0.1:4002?connectionTimeZone=Asia/Shanghai&forceConnectionTimeZoneToSession=true
+ ```
+ * `connectionTimeZone={LOCAL|SERVER|user-defined-time-zone}` 配置连接时区。
+ * `forceConnectionTimeZoneToSession=true` 使 session `time_zone` 变量被设置为 `connectionTimeZone` 指定的值。
+
+
+ 在 DSN 中设置时区。例如,将时区设置为 `Asia/Shanghai`:
+
+ ```go
+ dsn := fmt.Sprintf("tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local&time_zone=%27Asia%2FShanghai%27",
+ m.Host, m.Port, m.Database)
+ ```
+
+ 更多信息请参考 [MySQL Driver 文档](https://github.com/go-sql-driver/mysql?tab=readme-ov-file#system-variables)。
+
+
+
+### Raw SQL
+
+推荐使用 Raw SQL 来体验 GreptimeDB 的全部功能。
+下面的例子展示了如何使用 Raw SQL 查询数据:
+
+
+
+ ```java
+ try (Connection conn = getConnection()) {
+ Statement statement = conn.createStatement();
+
+ // DESC table;
+ ResultSet rs = statement.executeQuery("DESC cpu_metric");
+ LOG.info("Column | Type | Key | Null | Default | Semantic Type ");
+ while (rs.next()) {
+ LOG.info("{} | {} | {} | {} | {} | {}",
+ rs.getString(1),
+ rs.getString(2),
+ rs.getString(3),
+ rs.getString(4),
+ rs.getString(5),
+ rs.getString(6));
+ }
+
+ // SELECT COUNT(*) FROM cpu_metric;
+ rs = statement.executeQuery("SELECT COUNT(*) FROM cpu_metric");
+ while (rs.next()) {
+ LOG.info("Count: {}", rs.getInt(1));
+ }
+
+ // SELECT * FROM cpu_metric ORDER BY ts DESC LIMIT 5;
+ rs = statement.executeQuery("SELECT * FROM cpu_metric ORDER BY ts DESC LIMIT 5");
+ LOG.info("host | ts | cpu_user | cpu_sys");
+ while (rs.next()) {
+ LOG.info("{} | {} | {} | {}",
+ rs.getString("host"),
+ rs.getTimestamp("ts"),
+ rs.getDouble("cpu_user"),
+ rs.getDouble("cpu_sys"));
+ }
+ }
+ ```
+
+ 请参考 [此处](https://github.com/GreptimeTeam/greptimedb-ingester-java/blob/main/ingester-example/src/main/java/io/greptime/QueryJDBC.java) 获取直接可执行的代码。
+
+
+ The following code declares a GORM object model:
+
+ ```go
+ type CpuMetric struct {
+ Host string `gorm:"column:host;primaryKey"`
+ Ts time.Time `gorm:"column:ts;primaryKey"`
+ CpuUser float64 `gorm:"column:cpu_user"`
+ CpuSys float64 `gorm:"column:cpu_sys"`
+ }
+ ```
+
+ 如果你正在使用 [高层级 API](/user-guide/ingest-data/for-iot/grpc-sdks/go.md#高层级-api) 来插入数据,你可以在模型中同时声明 GORM 和 GreptimeDB Tag。
+
+ ```go
+ type CpuMetric struct {
+ Host string `gorm:"column:host;primaryKey" greptime:"tag;column:host;type:string"`
+ Ts time.Time `gorm:"column:ts;primaryKey" greptime:"timestamp;column:ts;type:timestamp;precision:millisecond"`
+ CpuUser float64 `gorm:"column:cpu_user" greptime:"field;column:cpu_user;type:float64"`
+ CpuSys float64 `gorm:"column:cpu_sys" greptime:"field;column:cpu_sys;type:float64"`
+ }
+ ```
+
+ 声明表名:
+
+ ```go
+ func (CpuMetric) TableName() string {
+ return "cpu_metric"
+ }
+ ```
+
+ 使用 Raw SQL 查询数据:
+
+ ```go
+ var cpuMetric CpuMetric
+ db.Raw("SELECT * FROM cpu_metric LIMIT 10").Scan(&result)
+ ```
+
+
+
+### 查询库参考
+
+有关如何使用查询库的更多信息,请参考相应库的文档:
+
+
+
+ - [JDBC 在线教程](https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html)
+
+
+ - [GORM](https://gorm.io/docs/index.html)
+
+
+
+## 命令行工具
+
+### MySQL
+
+你可以使用 `mysql` 命令行工具连接到 GreptimeDB。
+请参考 [MySQL 协议](/user-guide/protocols/mysql.md) 文档获取连接信息。
+
+连接到服务器后,你可以使用所有 [GreptimeDB SQL 命令](/reference/sql/overview.md)与数据库交互。
+
+### PostgreSQL
+
+你可以使用 `psql` 命令行工具连接到 GreptimeDB。
+请参考 [PostgreSQL 协议](/user-guide/protocols/postgresql.md) 文档获取连接信息。
+
+连接到服务器后,你可以使用所有 [GreptimeDB SQL 命令](/reference/sql/overview.md)与数据库交互。
+
+## GreptimeDB 控制台
+
+你可以在 [Greptime 控制台](/getting-started/installation/greptimedb-dashboard.md)中运行 SQL 并可视化数据。
+
+## GUI 工具
+
+### DBeaver
+
+请参考 [DBeaver 集成指南](/user-guide/integrations/dbeaver.md)。
+
+
+
+## HTTP API
+
+你可以将 POST SQL 到 GreptimeDB HTTP API 以查询数据。
+请参考 [HTTP API](/user-guide/protocols/http.md) 文档获取更多信息。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/admin.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/admin.md
new file mode 100644
index 0000000000..bccf7efe37
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/admin.md
@@ -0,0 +1,45 @@
+---
+keywords: [管理函数, ADMIN 语句, SQL ADMIN, 数据库管理, 表管理, 数据管理]
+description: ADMIN 语句用于运行管理函数来管理数据库和数据。
+---
+
+# ADMIN
+
+`ADMIN` 语句用于运行管理函数:
+
+```sql
+ADMIN function(arg1, arg2, ...)
+```
+
+## 管理函数
+
+GreptimeDB 提供了一些管理函数来管理数据库和数据:
+
+* `flush_table(table_name)` 根据表名将表的 Memtable 刷新到 SST 文件中。
+* `flush_region(region_id)` 根据 Region ID 将 Region 的 Memtable 刷新到 SST 文件中。通过 [PARTITIONS](./information-schema/partitions.md) 表查找 Region ID。
+* `compact_table(table_name, [type], [options])` 为表启动一个 compaction 任务,详细信息请阅读 [compaction](/user-guide/deployments-administration/manage-data/compaction.md#严格窗口压缩策略swcs和手动压缩)。
+* `compact_region(region_id)` 为 Region 启动一个 compaction 任务。
+* `migrate_region(region_id, from_peer, to_peer, [timeout])` 在 Datanode 之间迁移 Region,请阅读 [Region Migration](/user-guide/deployments-administration/manage-data/region-migration.md)。
+* `procedure_state(procedure_id)` 根据 ID 查询 Procedure 状态。
+* `flush_flow(flow_name)` 将 Flow 的输出刷新到目标接收表。
+* `reconcile_table(table_name)` 修复指定表的元数据不一致问题,详细信息请阅读 [table reconciliation](/user-guide/deployments-administration/maintenance/table-reconciliation.md)。
+* `reconcile_database(database_name)` 修复指定数据库中所有表的元数据不一致问题,详细信息请阅读 [table reconciliation](/user-guide/deployments-administration/maintenance/table-reconciliation.md)。
+* `reconcile_catalog()` 修复整个集群中所有表的元数据不一致问题,详细信息请阅读 [table reconciliation](/user-guide/deployments-administration/maintenance/table-reconciliation.md)。
+
+例如:
+```sql
+-- 刷新表 test --
+admin flush_table("test");
+
+-- 为表 test 启动 compaction 任务,默认并行度为 1 --
+admin compact_table("test");
+
+-- 启动常规 compaction,并行度设置为 2 --
+admin compact_table("test", "regular", "parallelism=2");
+
+-- 启动 SWCS compaction,使用默认时间窗口,并行度设置为 2 --
+admin compact_table("test", "swcs", "parallelism=2");
+
+-- 启动 SWCS compaction,自定义时间窗口和并行度 --
+admin compact_table("test", "swcs", "window=1800,parallelism=2");
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/alter.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/alter.md
new file mode 100644
index 0000000000..c9a857a33a
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/alter.md
@@ -0,0 +1,247 @@
+---
+keywords: [修改数据库, 修改表, ALTER 语句, SQL ALTER, 数据库设置, 表设置]
+description: ALTER 用于修改数据库的设置、表的设置或表的元数据。
+---
+
+# ALTER
+
+`ALTER` 可以用来修改数据库的设置,表的设置或表的元数据,包括:
+
+* 修改数据库选项
+* 添加/删除/修改列
+* 设置/取消列默认值
+* 重命名表
+* 修改表选项
+
+## ALTER DATABASE
+
+
+`ALTER DATABASE` 语句可以用来修改数据库的选项。
+
+### 语法
+
+```sql
+ALTER DATABASE db
+ [SET = [, ...]
+ | UNSET [, ...]
+ ]
+```
+
+当前支持修改以下数据库选项:
+- `ttl`: 数据库中数据的默认保留时间。过期的数据会被异步删除。
+ - 如果之前未设置 ttl,通过 `ALTER` 设置新的 ttl 后,超过保留时间的数据将被删除。
+ - 如果之前已设置过 ttl,通过 `ALTER` 修改 ttl 后,新的保留时间将立即生效,超过新保留时间的数据将被删除。
+ - 如果之前已设置过 ttl,通过 `ALTER` 取消 ttl 设置后,新增的数据将不会被删除,但已被删除的数据无法恢复。
+
+### 示例
+
+#### 修改数据库中数据的默认保留时间
+
+修改数据库中数据的默认保留时间为 1 天:
+
+```sql
+ALTER DATABASE db SET 'ttl'='1d';
+```
+
+取消数据库中数据的默认保留时间设置:
+
+```sql
+ALTER DATABASE db UNSET 'ttl';
+```
+
+## ALTER TABLE
+
+## 语法
+
+```sql
+ALTER TABLE [db.]table
+ [ADD COLUMN name1 type1 [options], ADD COLUMN name2 type2 [options], ...
+ | DROP COLUMN name
+ | MODIFY COLUMN name type
+ | MODIFY COLUMN name SET DEFAULT value
+ | MODIFY COLUMN name DROP DEFAULT
+ | MODIFY COLUMN name SET FULLTEXT INDEX [WITH ]
+ | MODIFY COLUMN name UNSET FULLTEXT INDEX
+ | RENAME name
+ | SET = [, ...]
+ ]
+```
+
+
+### 增加列
+
+在表中增加新列:
+
+```sql
+ALTER TABLE monitor ADD COLUMN load_15 double;
+```
+
+列的定义和 [CREATE](./create.md) 中的定义方式一样。
+
+我们可以在表中同时增加多个列:
+
+```sql
+ALTER TABLE monitor ADD COLUMN disk_usage double, ADD COLUMN disk_free double;
+```
+
+我们可以设置新列的位置。比如放在第一位:
+
+```sql
+ALTER TABLE monitor ADD COLUMN load_15 double FIRST;
+```
+
+或者放在某个已有列之后:
+
+```sql
+ALTER TABLE monitor ADD COLUMN load_15 double AFTER memory;
+```
+
+增加一个带默认值的 Tag 列(加入 Primary key 约束):
+```sql
+ALTER TABLE monitor ADD COLUMN app STRING DEFAULT 'shop' PRIMARY KEY;
+```
+
+
+### 移除列
+
+从表中移除列:
+
+```sql
+ALTER TABLE monitor DROP COLUMN load_15;
+```
+
+后续的所有查询立刻不能获取到被移除的列。
+
+### 修改列类型
+
+修改列的数据类型
+
+```sql
+ALTER TABLE monitor MODIFY COLUMN load_15 STRING;
+```
+
+被修改的的列不能是 tag 列(primary key)或 time index 列,同时该列必须允许空值 `NULL` 存在来保证数据能够安全地进行转换(转换失败时返回 `NULL`)。
+
+### 设置列默认值
+
+为现有列设置默认值:
+
+```sql
+ALTER TABLE monitor MODIFY COLUMN load_15 SET DEFAULT 0.0;
+```
+
+设置字符串默认值:
+
+```sql
+ALTER TABLE monitor MODIFY COLUMN `status` SET DEFAULT 'active';
+```
+
+默认值将在插入新行时使用,当该列没有显式提供值时。
+
+移除列的默认值:
+
+```sql
+ALTER TABLE monitor MODIFY COLUMN load_15 DROP DEFAULT;
+```
+
+删除默认值后,该列将使用 `NULL` 作为默认值。数据库只允许对可为空的列删除默认值。
+
+### 修改表的参数
+
+`ALTER TABLE` 语句也可以用来更改表的选项。
+当前支持修改以下表选项:
+- `ttl`: 表数据的保留时间。
+- `compaction.twcs.time_window`: TWCS compaction 策略的时间窗口,其值是一个[时间范围字符段](/reference/time-durations.md)。
+- `compaction.twcs.max_output_file_size`: TWCS compaction 策略的最大允许输出文件大小。
+- `compaction.twcs.trigger_file_num`: 某个窗口内触发 compaction 的最小文件数量阈值。
+
+
+```sql
+ALTER TABLE monitor SET 'ttl'='1d';
+
+ALTER TABLE monitor SET 'compaction.twcs.time_window'='2h';
+
+ALTER TABLE monitor SET 'compaction.twcs.max_output_file_size'='500MB';
+
+ALTER TABLE monitor SET 'compaction.twcs.trigger_file_num'='8';
+```
+
+### 移除表参数
+
+```sql
+ALTER TABLE monitor UNSET 'ttl';
+```
+
+### 创建列的索引
+
+在列上启用倒排索引:
+
+```sql
+ALTER TABLE monitor MODIFY COLUMN host SET INVERTED INDEX;
+```
+
+启用列的全文索引:
+
+```sql
+ALTER TABLE monitor MODIFY COLUMN load_15 SET FULLTEXT INDEX WITH (analyzer = 'English', case_sensitive = 'false', backend = 'bloom');
+```
+
+在启用列的全文索引时,可以使用 `FULLTEXT INDEX WITH` 指定以下选项:
+
+- `analyzer`:设置全文索引的分析器语言。支持的值为 `English` 和 `Chinese`。默认为 `English`。
+- `case_sensitive`:设置全文索引是否区分大小写。支持的值为 `true` 和 `false`。默认为 `false`。
+- `backend`:设置全文索引的后端实现。支持的值为 `bloom` 和 `tantivy`。默认为 `bloom`。
+- `granularity`:(适用于 `bloom` 后端)每个过滤器覆盖的数据块大小。粒度越小,过滤效果越好,但索引大小会增加。默认为 `10240`。
+- `false_positive_rate`:(适用于 `bloom` 后端)错误识别块的概率。该值越低,准确性越高(过滤效果越好),但索引大小会增加。该值为介于 `0` 和 `1` 之间的浮点数。默认为 `0.01`。
+
+更多关于全文索引配置和性能对比的信息,请参考[全文索引配置指南](/user-guide/manage-data/data-index.md#全文索引)。
+
+与 `CREATE TABLE` 一样,可以不带 `WITH` 选项,全部使用默认值。
+
+启用列上的跳数索引:
+```sql
+ALTER TABLE monitor MODIFY COLUMN host SET SKIPPING INDEX WITH(granularity = 1024, type = 'BLOOM');
+```
+
+跳数索引的有效选项包括:
+* `type`: 索引类型,目前仅支持 `BLOOM` 即布隆过滤器。
+* `granularity`: (适用于 `BLOOM` 类型)每个过滤器覆盖的数据块大小。粒度越小,过滤效果越好,但索引大小会增加。默认为 `10240`。
+* `false_positive_rate`: (适用于 `BLOOM` 类型)错误识别块的概率。该值越低,准确性越高(过滤效果越好),但索引大小会增加。该值为介于 `0` 和 `1` 之间的浮点数。默认为 `0.01`。
+
+### 移除列的索引
+
+语法如下:
+
+```sql
+ALTER TABLE [table] MODIFY COLUMN [column] UNSET [INVERTED | SKIPPING | FULLTEXT] INDEX;
+```
+
+例如,移除倒排索引:
+
+```sql
+ALTER TABLE monitor_pk MODIFY COLUMN host UNSET INVERTED INDEX;
+```
+
+移除跳数索引:
+
+```sql
+ALTER TABLE monitor_pk MODIFY COLUMN host UNSET SKIPPING INDEX;
+```
+
+移除全文索引:
+
+```sql
+ALTER TABLE monitor MODIFY COLUMN load_15 UNSET FULLTEXT INDEX;
+```
+
+修改列的全文索引选项时,列的数据类型必须是字符串类型。
+
+当列的全文索引未开启过时,可以启用全文索引,并设置 `analyzer` 和 `case_sensitive` 选项;当列的全文索引选项已经启用时,可以关闭全文索引,**但不能修改选项,跳数索引也是如此**。
+
+### 重命名表
+
+```sql
+ALTER TABLE monitor RENAME monitor_new;
+```
+
+该命令只是重命名表,不会修改表中的数据。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/case.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/case.md
new file mode 100644
index 0000000000..9bcb03ca6c
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/case.md
@@ -0,0 +1,94 @@
+---
+keywords: [条件逻辑, CASE 语句, SQL CASE, 条件查询, 数据检索, SQL 语法]
+description: CASE 语句允许在查询中执行条件逻辑,根据条件返回特定值。
+---
+
+# CASE
+
+CASE 语句类似于编程语言中的 IF-THEN-ELSE 结构,允许你在查询中执行条件逻辑,
+它使你能够根据条件返回特定值,从而使数据检索和操作更加动态。
+
+## 语法
+
+```sql
+CASE
+ WHEN condition1 THEN result1
+ WHEN condition2 THEN result2
+ ...
+ ELSE result
+END
+```
+
+- `condition1`,`condition2`,...:表达式的判断条件。
+- `result1`,`result2`,...:满足相应条件时要返回的值。
+- `result`:当没有条件满足时要返回的值(可选)。
+
+## 示例
+
+`CASE` 语句可以在各种子句中使用,例如 `SELECT`,`WHERE`,`ORDER BY` 和 `GROUP BY`。
+
+### 在 `SELECT` 中使用 `CASE`
+
+在 `SELECT` 子句中,你可以使用 `CASE` 语句根据条件创建新列。
+请参阅查询数据指南中的[示例](/user-guide/query-data/sql.md#case)。
+
+你还可以将 `CASE` 与 `SUM` 等函数一起使用,以有条件地聚合数据。
+例如,你可以计算状态码为 200 和 404 的日志总数:
+
+```sql
+SELECT
+ SUM(CASE WHEN status_code = '200' THEN 1 ELSE 0 END) AS status_200_count,
+ SUM(CASE WHEN status_code = '404' THEN 1 ELSE 0 END) AS status_404_count
+FROM nginx_logs;
+```
+
+### 在 `WHERE` 中使用 `CASE`
+
+在 `WHERE` 子句中,你可以根据条件过滤行。
+例如,以下查询根据 `ts` 条件从 `monitor` 表中检索数据:
+
+```sql
+SELECT *
+FROM monitor
+WHERE host = CASE
+ WHEN ts > '2023-12-13 02:05:46' THEN '127.0.0.1'
+ ELSE '127.0.0.2'
+ END;
+```
+
+### 在 `GROUP BY` 中使用 `CASE`
+
+`CASE` 语句可以在 `GROUP BY` 子句中使用,以根据特定条件对数据进行分类。
+例如,以下查询按 `host` 列分组,并将 `cpu` 列分类为三类:'high','medium' 和 'low':
+
+```sql
+SELECT
+ host,
+ COUNT(*) AS count,
+ CASE
+ WHEN cpu > 0.5 THEN 'high'
+ WHEN cpu > 0.3 THEN 'medium'
+ ELSE 'low'
+ END AS cpu_status
+FROM monitor
+GROUP BY
+ host, cpu_status;
+```
+
+### 在 `ORDER BY` 中使用 `CASE`
+
+根据 GreptimeDB 的[数据模型](/user-guide/concepts/data-model.md),
+`Tag` 列拥有索引,可以在 `ORDER BY` 子句中使用以提高查询性能。
+假如 `nginx_logs` 表中的 `status_code` 和 `http_method` 列是存储字符串值的 `Tag` 列,
+你可以利用 `CASE` 语句根据这些列对数据进行排序,如下所示:
+
+```sql
+SELECT *
+FROM nginx_logs
+ORDER BY
+ CASE
+ WHEN status_code IS NOT NULL THEN status_code
+ ELSE http_method
+ END;
+```
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/cast.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/cast.md
new file mode 100644
index 0000000000..01f28fa475
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/cast.md
@@ -0,0 +1,35 @@
+---
+keywords: [数据类型转换, CAST 语句, SQL CAST, 类型转换, 数据类型, SQL 语法]
+description: CAST 用于将一个数据类型的表达式转换为另一个数据类型。
+---
+
+# CAST
+
+`CAST` 用于将一个数据类型的表达式转换为另一个数据类型。
+
+## Syntax
+
+```sql
+CAST (expression AS data_type)
+```
+
+## 参数
+
+- expression: 需要类型转换的表达式。
+- data_type: 需要被转换为的数据类型。
+
+# 示例
+
+将字符串转换为 `INT` 类型:
+
+ ```sql
+ SELECT CAST('123' AS INT) ;
+ ```
+
+```sql
++-------------+
+| Utf8("123") |
++-------------+
+| 123 |
++-------------+
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/compatibility.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/compatibility.md
new file mode 100644
index 0000000000..56c899fd36
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/compatibility.md
@@ -0,0 +1,25 @@
+---
+keywords: [ANSI SQL, SQL 兼容性, SQL 扩展, SQL 语法, 数据库兼容性, SQL 特性]
+description: GreptimeDB 支持的 SQL 是 ANSI SQL 的子集,并且拥有一些特有的扩展。
+---
+
+# ANSI Compatibility
+
+GreptimeDB 支持的 SQL 是 ANSI SQL 的子集,并且拥有一些特有的扩展。一些主要的不兼容和扩展描述如下:
+
+1. 建表
+ * 支持特有的 `TIME INDEX` 约束,详细请参考[数据模型](/user-guide/concepts/data-model.md)和 [CREATE](./create.md) 建表语法一节。
+ * 目前仅支持 `PRIMARY KEY` 约束,不支持其他类型的约束,也不支持外键。
+ * GreptimeDB 是原生的分布式数据库,因此分布式表的建表语句支持分区规则,也请参考[CREATE](./create.md) 建表语法一节。
+2. 插入新数据:与 ANSI SQL 语法一致,但是强制要求提供 `TIME INDEX` 列值(或默认值)。
+3. 更新:不支持 `UPDATE` 语法,但是在 `INSERT` 的时候,如果主键和 `TIME INDEX` 对应的列值一样,那么后续插入的行将覆盖以前写入的行,从而变相实现更新。
+ * 从 0.8 开始,GreptimeDB 支持 [append 模式](/reference/sql/create.md#创建-Append-Only-表),创建时指定`append_mode = "true"` 选项的表将保留重复的数据行。
+ * GreptimeDB 支持 [merge 模式](/reference/sql/create.md#create-an-append-only-table),该模式使用 `merge_mode="last_non_null"` 选项创建表,允许部分更新字段。
+4. 查询:查询语法兼容 ANSI SQL,存在部分功能差异和缺失
+ * 从 v0.9.0 开始支持[视图](/user-guide/query-data/view.md)。
+ * TQL 语法扩展:TQL 子命令支持在 SQL 中执行 PromQL,详细请参考 [TQL](./tql.md) 一节。
+ * [Range Query](/reference/sql/range.md#range-query) 支持按照指定窗口来查询和聚合时序数据。
+5. 删除数据:语法与 ANSI SQL 基本一致。
+6. 他项:
+ * 标识符,如表名,列名等,约束与 ANSI SQL 类似,大小写敏感,遇到特殊字符或者大写需要用双引号括起来。
+ * GreptimeDB 针对不同方言做了优化,比如用 MySQL 客户端或者 PostgreSQL 客户端连接到数据库时,允许使用特定 SQL 方言的标识符规则,比如在 MySQL 中可以用反引号 `` ` ``,而在 PostgreSQL 中还是标准的双引号 `"`。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/copy.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/copy.md
new file mode 100644
index 0000000000..bdae6e7a54
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/copy.md
@@ -0,0 +1,227 @@
+---
+keywords: [数据导入, 数据导出, COPY 语句, SQL COPY, 数据库复制, 表复制]
+description: COPY 语句用于导入和导出表或数据库的数据。
+---
+
+# COPY
+
+## COPY TABLE
+### COPY TO
+
+`COPY TO` 被用来将表的内容导出到文件中,其语法如下:
+
+```sql
+COPY tbl TO '/xxx/xxx/output.parquet' WITH (FORMAT = 'parquet');
+```
+
+命令以 `COPY` 关键字开始,后面跟着要导出数据的表名(本例中为 `tbl`)。
+`TO` 指定导出数据的文件路径和名称(本例中为 `/xxx/xxx/output.parquet`)。
+
+例如,可以使用自定义时间戳和日期格式导出数据到 CSV 文件:
+
+```sql
+COPY tbl TO '/path/to/file.csv' WITH (
+ FORMAT = 'csv',
+ TIMESTAMP_FORMAT = '%Y/%m/%d %H:%M:%S',
+ DATE_FORMAT = '%Y-%m-%d'
+);
+```
+
+#### `WITH` 选项
+
+`WITH` 可以添加一些选项,比如文件的 `FORMAT` 用来指定导出文件的格式。本例中的格式为 Parquet,它是一种用于大数据处理的列式存储格式。Parquet 为大数据分析高效地压缩和编码列式数据。
+
+| 选项 | 描述 | 是否必需 |
+|---|---|---|
+| `FORMAT` | 目标文件格式,例如 JSON, CSV, Parquet | **是** |
+| `START_TIME`/`END_TIME`| 需要导出数据的时间范围,时间范围为左闭右开 | 可选 |
+| `TIMESTAMP_FORMAT` | 导出 CSV 格式时自定义时间戳列的格式。使用 [strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 格式说明符(例如 `'%Y-%m-%d %H:%M:%S'`)。仅支持 CSV 格式。 | 可选 |
+| `DATE_FORMAT` | 导出 CSV 格式时自定义日期列的格式。使用 [strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 格式说明符(例如 `'%Y-%m-%d'`)。仅支持 CSV 格式。 | 可选 |
+| `TIME_FORMAT` | 导出 CSV 格式时自定义时间列的格式。使用 [strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 格式说明符(例如 `'%H:%M:%S'`)。仅支持 CSV 格式。 | 可选 |
+
+#### `CONNECTION` 选项
+
+`COPY TO` 支持导出数据到云存储上,比如 S3。详情请参考 [连接 S3](#连接-s3)。
+
+
+### COPY FROM
+
+`COPY FROM` 被用来将文件中的数据导入到表中,其语法如下:
+
+```sql
+COPY [.]
+FROM { '/[]' }
+[ [ WITH ]
+ (
+ [ FORMAT = { 'CSV' | 'JSON' | 'PARQUET' | 'ORC' } ]
+ [ PATTERN = '' ]
+ )
+]
+[LIMIT NUM]
+```
+
+命令以 `COPY` 关键字开始,后面跟着要导入数据的表名。
+
+#### `WITH` 选项
+
+`FORMAT` 指定导入文件的格式,本例中为 Parquet。
+
+选项 `PATTERN` 允许使用通配符(如 *)指定匹配某种模式的多个输入文件。例如,你可以使用以下语法导入目录(必须是绝对路径)"/path/to/folder" 中文件名包含 `parquet` 的所有文件:
+
+```sql
+COPY tbl FROM '/path/to/folder/' WITH (FORMAT = 'parquet', PATTERN = '.*parquet.*');
+```
+
+例如,如果你只有一个文件需要导入,可以使用下方的语法:
+
+```sql
+COPY tbl FROM '/path/to/folder/xxx.parquet' WITH (FORMAT = 'parquet');
+```
+
+| 选项 | 描述 | 是否必需 |
+|---|---|---|
+| `FORMAT` | 目标文件格式,例如 JSON, CSV, Parquet, ORC | **是** |
+| `PATTERN` | 使用正则匹配文件,例如 `*_today.parquet` | 可选 |
+
+:::tip NOTE
+CSV 文件必须带有 header,包含表的列名。
+:::
+
+#### Connection 选项
+
+`COPY FROM` 同样支持从云存储上导入数据,比如 S3。详情请参考 [连接 S3](#连接-s3)。
+
+#### LIMIT 选项
+
+可以通过 `LIMIT` 手动限制一次插入的最大行数。
+
+### 连接 S3
+
+你可以从 S3 导入/导出数据
+
+```sql
+-- COPY FROM
+COPY tbl FROM '' WITH (FORMAT = 'parquet') CONNECTION(REGION = 'us-west-2');
+
+-- COPY TO
+COPY tbl TO '' WITH (FORMAT = 'parquet') CONNECTION(REGION = 'us-west-2');
+```
+
+#### URL
+
+注意:你应该使用 `S3://bucket/key-name` 指定文件。下方的例子展示了正确的格式:
+
+```
+S3://my-bucket/data.parquet
+```
+
+另一种方式是使用 Virtual-hosted–style(`ENABLE_VIRTUAL_HOST_STYLE` 需要设置成 `true`),例如:
+
+```
+https://bucket-name.s3.region-code.amazonaws.com/key-name
+```
+
+:::tip NOTE
+可以在 S3 控制台上点击 `Copy S3 URI` 或者 `COPY URL` 直接获取对应的 URL/HTTP 前缀或者完整路径。
+:::
+
+#### 选项
+
+你可以设置这些 **CONNECTION** 选项:
+
+| 选项 | 描述 | 是否必需 |
+|---|---|---|
+| `REGION` | AWS region 名称,例如 `us-west-2` | **是** |
+| `ENDPOINT` | The bucket endpoint,例如 `s3.us-west-2.amazonaws.com` | 可选 |
+| `ACCESS_KEY_ID` | 用于连接 AWS S3 兼容的对象存储的访问密钥 ID | 可选 |
+| `SECRET_ACCESS_KEY` | 用于连接 AWS S3 兼容的对象存储的秘密访问密钥 | 可选 |
+| `ENABLE_VIRTUAL_HOST_STYLE` | 如果你使用 virtual hosting 的方式来定位 bucket,将该选项设置为 "true" | 可选 |
+| `SESSION_TOKEN` | 用于连接 AWS S3 服务的临时凭证。 | 可选 |
+
+## COPY 查询结果
+
+你可以使用 `COPY` 语句将查询结果导出到文件中。语法如下:
+
+```sql
+COPY () TO '' WITH (FORMAT = { 'CSV' | 'JSON' | 'PARQUET' });
+```
+
+| 选项 | 描述 | 是否必需 |
+|---|---|---|
+| `QUERY` | 要执行的 SQL SELECT 语句 | **是** |
+| `PATH` | 输出文件的路径 | **是** |
+| `FORMAT` | 输出文件格式:'CSV'、'JSON' 或 'PARQUET' | **是** |
+| `TIMESTAMP_FORMAT` | 导出 CSV 格式时自定义时间戳列的格式。使用 [strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 格式说明符。仅支持 CSV 格式。 | 可选 |
+| `DATE_FORMAT` | 导出 CSV 格式时自定义日期列的格式。使用 [strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 格式说明符。仅支持 CSV 格式。 | 可选 |
+| `TIME_FORMAT` | 导出 CSV 格式时自定义时间列的格式。使用 [strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 格式说明符。仅支持 CSV 格式。 | 可选 |
+
+例如,以下语句将查询结果导出到 CSV 文件中:
+
+```sql
+COPY (SELECT * FROM tbl WHERE host = 'host1') TO '/path/to/file.csv' WITH (FORMAT = 'csv');
+```
+
+也可以在导出到 CSV 时指定自定义日期和时间格式:
+
+```sql
+COPY (SELECT * FROM tbl WHERE host = 'host1') TO '/path/to/file.csv' WITH (
+ FORMAT = 'csv',
+ TIMESTAMP_FORMAT = '%m-%d-%Y %H:%M:%S',
+ DATE_FORMAT = '%Y/%m/%d'
+);
+```
+
+## COPY DATABASE
+
+`COPY` 语句除可以导入/导出表之外,也可以导入/导出指定的数据库,其语法如下:
+
+```sql
+COPY DATABASE
+ [TO | FROM] ''
+ WITH (
+ FORMAT = { 'CSV' | 'JSON' | 'PARQUET' }
+ START_TIME = "",
+ END_TIME = ""
+ )
+ [CONNECTION(
+ REGION = "",
+ ENDPOINT = "",
+ ACCESS_KEY_ID = "",
+ SECRET_ACCESS_KEY = "",
+ ENABLE_VIRTUAL_HOST_STYLE = "[true | false]",
+ )]
+```
+
+| 选项 | 描述 | 是否必需 |
+|---|---|---|
+| `FORMAT` | 目标文件格式,例如 JSON, CSV, Parquet | **是** |
+| `START_TIME`/`END_TIME`| 需要导出数据的时间范围,时间范围为左闭右开 | 可选 |
+
+> - 当导入/导出表时,`` 参数必须以 `/` 结尾;
+> - COPY DATABASE 同样可以通过 `CONNECTION` 参数将数据导入/导出的路径指向 S3 等对象存储
+
+
+### 示例
+
+```sql
+-- 将 public 数据库中所有数据导出到 /tmp/export/ 目录下
+COPY DATABASE public TO '/tmp/export/' WITH (FORMAT='parquet');
+
+-- 将 public 数据库中时间范围在 2022-04-11 08:00:00 到 2022-04-11 09:00:00 之间的数据导出到 /tmp/export/ 目录下
+COPY DATABASE public TO '/tmp/export/' WITH (FORMAT='parquet', START_TIME='2022-04-11 08:00:00', END_TIME='2022-04-11 09:00:00');
+
+-- 从 /tmp/export/ 目录恢复 public 数据库的数据
+COPY DATABASE public FROM '/tmp/export/' WITH (FORMAT='parquet');
+```
+
+## Windows 平台上的路径
+
+请注意,在 Windows 平台上执行 `COPY`/`COPY DATABASE` 语句时,请使用 `/` 代替 `` 中的 `\`,如 `C:/some_dir/output.parquet`。
+
+```sql
+-- 下列语句将会报错
+COPY tbl TO 'C:\xxx\xxx\output.parquet' WITH (FORMAT = 'parquet');
+
+-- 下列语句能够正常执行
+COPY tbl TO 'C:/xxx/xxx/output.parquet' WITH (FORMAT = 'parquet');
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/create.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/create.md
new file mode 100644
index 0000000000..43480516db
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/create.md
@@ -0,0 +1,488 @@
+---
+keywords: [创建数据库, 创建表, CREATE 语句, SQL 创建, 数据库选项, 表选项]
+description: CREATE 用于创建新的数据库或表,支持指定列、主键、时间索引、存储引擎和其他选项。
+---
+
+# CREATE
+
+`CREATE` 用于创建新的数据库或者表。
+
+## CREATE DATABASE
+
+### Syntax
+
+创建新数据库:
+
+```sql
+CREATE DATABASE [IF NOT EXISTS] db_name [WITH ]
+```
+
+如果 `db_name` 数据库已经存在,`CREATE` 语句的行为如下:
+
+- 不会创建新的数据库。
+- 当 `IF NOT EXISTS` 子句被指定时,不会返回错误。
+- 否则,返回错误。
+
+数据库也可以通过使用 `WITH` 关键字配置与 `CREATE TABLE` 语句类似的选项。数据库支持以下选项:
+
+- `ttl` - 数据库中所有表的数据存活时间(不能设置为 `instant`)
+- `memtable.type` - 内存表类型(`time_series`、`partition_tree`)
+- `append_mode` - 数据库中的表是否为仅追加模式(`true`/`false`)
+- `merge_mode` - 合并重复行的策略(`last_row`、`last_non_null`)
+- `skip_wal` - 是否为数据库中的表禁用预写日志(`'true'`/`'false'`)
+- `compaction.*` - 压缩相关设置(如 `compaction.type`、`compaction.twcs.time_window`)
+
+阅读更多关于[表选项](#表选项)的信息。
+
+:::note 重要的行为差异
+数据库选项的行为有所不同:
+
+- **TTL**:此选项具有**持续影响**。没有指定 TTL 的表会持续继承这个数据库级别的值。更改数据库 TTL 会立即影响所有没有明确自行设置 TTL 的表。
+
+- **其他选项**(`memtable.type`、`append_mode`、`merge_mode`、`skip_wal`、`compaction.*`):这些选项充当**模板变量**,仅在创建新表时应用。更改这些数据库级别的选项不会影响已存在的表——它们仅作为新创建表的默认值。
+:::
+
+在创建表时,如果未提供相应的表选项,将使用在数据库级别配置的选项或者默认值。
+
+### 示例
+
+创建名为 `test` 的数据库:
+
+```sql
+CREATE DATABASE test;
+```
+
+```sql
+Query OK, 1 row affected (0.05 sec)
+```
+
+使用 `IF NOT EXISTS` 再次创建:
+
+```sql
+CREATE DATABASE IF NOT EXISTS test;
+```
+
+创建一个具有 7 天 `TTL`(数据存活时间)的数据库,也就是该数据库中的所有表如果没有单独设置 TTL 选项,都将继承此选项值。
+
+```sql
+CREATE DATABASE test WITH (ttl='7d');
+```
+
+创建一个带有多个选项的数据库,包括仅追加模式和自定义内存表类型:
+
+```sql
+CREATE DATABASE test WITH (
+ ttl='30d',
+ 'memtable.type'='partition_tree',
+ 'append_mode'='true'
+);
+```
+
+创建一个禁用预写日志并设置自定义合并模式的数据库:
+
+```sql
+CREATE DATABASE test WITH (
+ 'skip_wal'='true',
+ 'merge_mode'='last_non_null'
+);
+```
+
+
+## CREATE TABLE
+
+### Syntax
+
+在 `db` 或当前数据库中创建新表:
+
+```sql
+CREATE TABLE [IF NOT EXISTS] [db.]table_name
+(
+ column1 type1 [NULL | NOT NULL] [DEFAULT expr1] [TIME INDEX] [PRIMARY KEY] [indexes] [COMMENT comment1],
+ column2 type2 [NULL | NOT NULL] [DEFAULT expr2] [TIME INDEX] [PRIMARY KEY] [indexes] [COMMENT comment2],
+ ...
+ [TIME INDEX (column)],
+ [PRIMARY KEY(column1, column2, ...)],
+)
+[
+ PARTITION ON COLUMNS(column1, column2, ...) (
+ ,
+ ...
+ )
+]
+ENGINE = engine WITH([TTL | storage | ...] = expr, ...)
+```
+
+表 schema 由 `ENGINE` 之前的括号指定,表 schema 是列的定义和表的约束。
+列定义包括列名称和数据类型,以及可选的 `NULL`、`NOT NULL`、`DEFAULT` 等。
+
+关于 `engine` 选项和表引擎的选择,请阅读[表引擎](/reference/about-greptimedb-engines.md)介绍。
+
+### 表约束
+
+表约束包括以下内容:
+
+- `TIME INDEX` 指定时间索引列,每个表只能有一个时间索引列。它表示 GreptimeDB 的 [数据模型](/user-guide/concepts/data-model.md) 中的 `Timestamp` 类型。
+- `PRIMARY KEY` 指定表的主键列,它表示 GreptimeDB 的 [数据模型](/user-guide/concepts/data-model.md) 中的 `Tag` 类型。它不能包含时间索引列,但是它总是隐式地将时间索引列添加到键的末尾。
+- 其他列是 GreptimeDB 的 [数据模型](/user-guide/concepts/data-model.md) 中的 `Field` 类型。
+
+:::tip 注意
+`CREATE` 语句中指定的 `PRIMARY KEY` **不是** 传统关系数据库中的主键。
+实际上,传统关系数据库中的 `PRIMARY KEY` 相当于 GreptimeDB 中的 `PRIMARY KEY` 和 `TIME INDEX` 的组合。
+换句话说,`PRIMARY KEY` 和 `TIME INDEX` 一起构成了 GreptimeDB 中行的唯一标识符。
+:::
+
+如果表已经存在且创建表时指定了 `IF NOT EXISTS`,`CREATE` 语句不会返回错误;否则返回错误。
+
+#### 索引
+
+
+GreptimeDB 提供了丰富的索引实现来加速查询,请在[索引](/user-guide/manage-data/data-index.md)章节查看更多信息。
+
+### 表选项
+
+用户可以使用 `WITH` 添加表选项。有效的选项包括以下内容:
+
+| 选项 | 描述 | 值 |
+| ------------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `ttl` | 表数据的存储时间 | 一个时间范围字符串,例如 `'60m'`, `'1h'` 代表 1 小时, `'14d'` 代表 14 天等。支持的时间单位有:`s` / `m` / `h` / `d` |
+| `storage` | 自定义表的存储引擎,存储引擎提供商的名字 | 字符串,类似 `S3`、`Gcs` 等。必须在 `[[storage.providers]]` 列表里配置,参考 [configuration](/user-guide/deployments-administration/configuration.md#存储引擎提供商)。 |
+| `compaction.type` | Compaction 策略 | 字符串值。只支持 `twcs`。你可以阅读这篇[文章](https://cassandra.apache.org/doc/latest/cassandra/managing/operating/compaction/twcs.html)来了解 `twcs` compaction 策略 |
+| `compaction.twcs.trigger_file_num` | 某个窗口内触发 compaction 的最小文件数量阈值 | 字符串值,如 '8'。只在 `compaction.type` 为 `twcs` 时可用 |
+| `compaction.twcs.time_window` | Compaction 时间窗口 | 字符串值,如 '1d' 表示 1 天。该表会根据时间戳将数据分区到不同的时间窗口中。只在 `compaction.type` 为 `twcs` 时可用 |
+| `compaction.twcs.max_output_file_size` | TWCS compaction 的最大输出文件大小 | 字符串值,如 '1GB'、'512MB'。设置 TWCS compaction 产生的文件的最大大小。只在 `compaction.type` 为 `twcs` 时可用 |
+| `memtable.type` | memtable 的类型 | 字符串值,支持 `time_series`,`partition_tree` |
+| `append_mode` | 该表是否时 append-only 的 | 字符串值。默认值为 'false',根据 'merge_mode' 按主键和时间戳删除重复行。设置为 'true' 可以开启 append 模式和创建 append-only 表,保留所有重复的行 |
+| `merge_mode` | 合并重复行的策略 | 字符串值。只有当 `append_mode` 为 'false' 时可用。默认值为 `last_row`,保留相同主键和时间戳的最后一行。设置为 `last_non_null` 则保留相同主键和时间戳的最后一个非空字段。 |
+| `comment` | 表级注释 | 字符串值。 |
+| `index.type` | Index 类型 | **仅用于 metric engine** 字符串值,支持 `none`, `skipping`. |
+| `skip_wal` | 是否关闭表的预写日志 | 字符串类型。当设置为 `'true'` 时表的写入数据将不会持久化到预写日志,可以避免存储磨损同时提升写入吞吐。但是当进程重启时,尚未 flush 的数据会丢失。请仅在数据源本身可以确保可靠性的情况下使用此功能。 |
+
+#### 创建指定 TTL 的表
+例如,创建一个存储数据 TTL(Time-To-Live) 为七天的表:
+
+```sql
+CREATE TABLE IF NOT EXISTS temperatures(
+ ts TIMESTAMP TIME INDEX,
+ temperature DOUBLE DEFAULT 10,
+) with(ttl='7d');
+```
+`ttl` 值是一个字符串,支持以下类型的值:
+
+- [时间范围字符串](/reference/time-durations.md),如 `1hour 12min 5s`。
+- `forever`, `NULL`, `0s` (或任何长度为 0 的时间范围,如 `0d`)或空字符串 `''`,表示数据永远不会被删除。
+- `instant`, 注意数据库的 TTL 不能设置为 `instant`。`instant` 表示数据在插入时立即删除,如果你想将输入发送到流任务而不保存它,可以使用 `instant`,请参阅[流管理文档](/user-guide/flow-computation/manage-flow.md#manage-flows)了解更多细节。
+- 未设置,可以使用 `ALTER TABLE UNSET 'ttl'` 来取消表的 `ttl` 设置,这样表将继承数据库的 `ttl` 策略(如果有的话)。
+
+如果一张表有自己的 TTL 策略,那么它将使用该 TTL 策略。否则,数据库的 TTL 策略将被应用到表上。
+
+比如说,如果表的 TTL 设置为 `forever`,那么无论数据库的 TTL 是什么,数据都不会被删除。但是如果你取消表的 TTL 设置:
+```sql
+ALTER TABLE UNSET 'ttl';
+```
+那么数据库的 TTL 将会被应用到表上。
+
+请注意表和数据库的默认 TTL 策略都是未设置,也就是没有设置 TTL,代表着数据永远不会删除。
+
+#### 创建自定义存储的表
+或者创建一个表单独将数据存储在 Google Cloud Storage 服务上:
+
+```sql
+CREATE TABLE IF NOT EXISTS temperatures(
+ ts TIMESTAMP TIME INDEX,
+ temperature DOUBLE DEFAULT 10,
+) with(ttl='7d', storage="Gcs");
+```
+
+#### 创建自定义 compaction 参数的表
+创建带自定义 twcs compaction 参数的表。这个表会尝试根据数据的时间戳将数据按 1 天的时间窗口分区,并会在最新时间窗口内的文件超过 8 个时合并该窗口的文件
+
+```sql
+CREATE TABLE IF NOT EXISTS temperatures(
+ ts TIMESTAMP TIME INDEX,
+ temperature DOUBLE DEFAULT 10,
+)
+with(
+ 'compaction.type'='twcs',
+ 'compaction.twcs.time_window'='1d',
+ 'compaction.twcs.trigger_file_num'='8',
+ 'compaction.twcs.max_output_file_size'='1GB'
+);
+```
+
+#### 创建 Append-Only 表
+创建一个 append-only 表来关闭去重
+```sql
+CREATE TABLE IF NOT EXISTS temperatures(
+ ts TIMESTAMP TIME INDEX,
+ temperature DOUBLE DEFAULT 10,
+) with('append_mode'='true');
+```
+
+#### 创建带有 merge 模式的表
+
+创建一个带有 `last_row` merge 模式的表,这是默认的 merge 模式。
+
+```sql
+create table if not exists metrics(
+ host string,
+ ts timestamp,
+ cpu double,
+ memory double,
+ TIME INDEX (ts),
+ PRIMARY KEY(host)
+)
+with('merge_mode'='last_row');
+```
+
+在 `last_row` 模式下,表会通过保留最新的行来合并具有相同主键和时间戳的行。
+
+```sql
+INSERT INTO metrics VALUES ('host1', 0, 0, NULL), ('host2', 1, NULL, 1);
+INSERT INTO metrics VALUES ('host1', 0, NULL, 10), ('host2', 1, 11, NULL);
+
+SELECT * from metrics ORDER BY host, ts;
+
++-------+-------------------------+------+--------+
+| host | ts | cpu | memory |
++-------+-------------------------+------+--------+
+| host1 | 1970-01-01T00:00:00 | | 10.0 |
+| host2 | 1970-01-01T00:00:00.001 | 11.0 | |
++-------+-------------------------+------+--------+
+```
+
+
+创建带有 `last_non_null` merge 模式的表。
+
+```sql
+create table if not exists metrics(
+ host string,
+ ts timestamp,
+ cpu double,
+ memory double,
+ TIME INDEX (ts),
+ PRIMARY KEY(host)
+)
+with('merge_mode'='last_non_null');
+```
+
+在 `last_non_null` 模式下,表会通过保留每个字段的最新非 NULL 值来合并具有相同主键和时间戳的行。
+
+```sql
+INSERT INTO metrics VALUES ('host1', 0, 0, NULL), ('host2', 1, NULL, 1);
+INSERT INTO metrics VALUES ('host1', 0, NULL, 10), ('host2', 1, 11, NULL);
+
+SELECT * from metrics ORDER BY host, ts;
+
++-------+-------------------------+------+--------+
+| host | ts | cpu | memory |
++-------+-------------------------+------+--------+
+| host1 | 1970-01-01T00:00:00 | 0.0 | 10.0 |
+| host2 | 1970-01-01T00:00:00.001 | 11.0 | 1.0 |
++-------+-------------------------+------+--------+
+```
+
+#### 创建 metric engine 的物理表
+
+metric engine 使用合成物理宽表来存储大量的小表数据,实现重用相同列和元数据的效果。详情请参考 [metric engine 文档](/contributor-guide/datanode/metric-engine)和[表引擎](/reference/about-greptimedb-engines.md)介绍。
+
+创建一个使用 metric engine 的物理表。
+```sql
+CREATE TABLE greptime_physical_table (
+ greptime_timestamp TIMESTAMP(3) NOT NULL,
+ greptime_value DOUBLE NULL,
+ TIME INDEX (greptime_timestamp),
+)
+engine = metric
+with (
+ "physical_metric_table" = "",
+);
+```
+
+#### 创建一个带有跳数索引的物理表
+
+默认情况下,metric engine 不会为列创建索引。你可以通过设置 `index.type` 为 `skipping` 来设置索引类型。
+
+创建一个带有跳数索引的物理表。所有自动添加的列都将应用跳数索引。
+
+```sql
+CREATE TABLE greptime_physical_table (
+ greptime_timestamp TIMESTAMP(3) NOT NULL,
+ greptime_value DOUBLE NULL,
+ TIME INDEX (greptime_timestamp),
+)
+engine = metric
+with (
+ "physical_metric_table" = "",
+ "index.type" = "skipping",
+);
+```
+
+
+### 列选项
+
+GreptimeDB 支持以下列选项:
+
+| 选项 | 描述 |
+| ----------------- | -------------------------------------------------------- |
+| NULL | 列值可以为 `null` |
+| NOT NULL | 列值不能为 `null` |
+| DEFAULT `expr` | 该列的默认值是 `expr`,其类型必须是该列的类型 |
+| COMMENT `comment` | 列注释,必须为字符串类型 |
+| FULLTEXT INDEX | 创建全文索引,可以加速全文搜索操作。仅适用于字符串类型列 |
+| SKIPPING INDEX | 创建跳数索引,可以加速查询稀疏数据。 |
+| INVERTED INDEX | 创建倒排索引,可以加速查询稠密数据。 |
+
+表约束 `TIME INDEX` 和 `PRIMARY KEY` 也可以通过列选项设置,但是它们只能在列定义中指定一次,在多个列选项中指定 `PRIMARY KEY` 会报错:
+
+```sql
+CREATE TABLE system_metrics (
+ host STRING PRIMARY KEY,
+ idc STRING PRIMARY KEY,
+ cpu_util DOUBLE,
+ memory_util DOUBLE,
+ disk_util DOUBLE,
+ ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
+ TIME INDEX(ts)
+);
+```
+
+会得到报错:
+
+```sql
+ Illegal primary keys definition: not allowed to inline multiple primary keys in columns options
+```
+
+正确的做法是使用 `PRIMARY KEY()` 来指定多个列作为主键:
+
+```sql
+CREATE TABLE system_metrics (
+ host STRING,
+ idc STRING,
+ cpu_util DOUBLE,
+ memory_util DOUBLE,
+ disk_util DOUBLE,
+ ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP() TIME INDEX,
+ PRIMARY KEY(host, idc),
+);
+```
+
+```sql
+Query OK, 0 rows affected (0.01 sec)
+```
+
+#### `INDEX` 列选项
+
+更多关于索引配置、性能对比和使用指南的信息,请参考[索引](/user-guide/manage-data/data-index.md)章节。
+
+### Region 分区规则
+
+请参考 [分区](/contributor-guide/frontend/table-sharding.md#partition) 章节。
+
+## CREATE EXTERNAL TABLE
+
+### Syntax
+
+在 `db` 或当前数据库中创建新的文件外部表:
+
+```sql
+CREATE EXTERNAL TABLE [IF NOT EXISTS] [db.]table_name
+[
+ (
+ column1 type1 [NULL | NOT NULL] [DEFAULT expr1] [TIME INDEX] [PRIMARY KEY] [COMMENT comment1],
+ column2 type2 [NULL | NOT NULL] [DEFAULT expr2] [TIME INDEX] [PRIMARY KEY] [COMMENT comment2],
+ ...
+ [TIME INDEX (column)],
+ [PRIMARY KEY(column1, column2, ...)]
+ )
+] WITH (
+ LOCATION = url,
+ FORMAT = { 'CSV' | 'JSON' | 'PARQUET' | 'ORC' }
+ [,PATTERN = regex_pattern ]
+ [,REGION = region ]
+ [,ENDPOINT = uri ]
+ [,ACCESS_KEY_ID = key_id ]
+ [,SECRET_ACCESS_KEY = access_key ]
+ [,ENABLE_VIRTUAL HOST_STYLE = { TRUE | FALSE }]
+ [,SESSION_TOKEN = token ]
+ ...
+)
+```
+
+### 表选项
+
+| 选项 | 描述 | 是否必需 |
+| ---------- | ------------------------------------------------------------------ | -------- |
+| `LOCATION` | 外部表的位置,例如 `s3://[]`, `//[]` | **是** |
+| `FORMAT` | 目标文件的格式,例如 JSON,CSV,Parquet, ORC | **是** |
+| `PATTERN` | 使用正则来匹配文件,例如 `*_today.parquet` | 可选 |
+
+#### S3
+
+| 选项 | 描述 | 是否必需 |
+| --------------------------- | --------------------------------------------------------------- | -------- |
+| `REGION` | AWS region 名称,例如 us-east-1 | **是** |
+| `ENDPOINT` | The bucket endpoint | 可选 |
+| `ACCESS_KEY_ID` | 用于连接 AWS S3 兼容对象存储的访问密钥 ID | 可选 |
+| `SECRET_ACCESS_KEY` | 用于连接 AWS S3 兼容对象存储的秘密访问密钥 | 可选 |
+| `ENABLE_VIRTUAL HOST_STYLE` | 如果你想要使用 virtual hosting 来定位 bucket,将其设置为 `true` | 可选 |
+| `SESSION_TOKEN` | 用于连接 AWS S3 服务的临时凭证 | 可选 |
+
+### 时间索引列
+
+在利用 `CREATE EXTERNAL TABLE` 语句创建外部表时,要求使用 `TIME INDEX` 约束来指定一个时间索引列。
+
+### 示例
+
+你可以在创建外部表时不带有列定义,列定义将会被自动推断:
+
+```sql
+CREATE EXTERNAL TABLE IF NOT EXISTS city WITH (location='/var/data/city.csv',format='csv');
+```
+
+在这个例子中,我们没有明确定义表的列,为满足外边表必须指定**时间索引列**的要求,`CREATE EXTERNAL TABLE` 语句会依据下述规则推断出时间索引列:
+
+1. 如果可以从文件元数据中推断出时间索引列,那么就用该列作为时间索引列。
+2. 如果存在名为 `greptime_timestamp` 的列(该列的类型必须为 `TIMESTAMP`,否则将抛出错误),那么就用该列作为时间索引列。
+3. 否则,将自动创建名为 `greptime_timestamp` 的列作为时间索引列,并添加 `DEFAULT '1970-01-01 00:00:00+0000'` 约束。
+
+或者带有列定义:
+
+```sql
+CREATE EXTERNAL TABLE city (
+ host string,
+ ts timestamp,
+ cpu float64 default 0,
+ memory float64,
+ TIME INDEX (ts),
+ PRIMARY KEY(host)
+) WITH (location='/var/data/city.csv', format='csv');
+```
+
+在这个例子中,我们明确定义了 `ts` 列作为时间索引列。如果在文件中没有适合的时间索引列,你也可以创建一个占位符列,并添加 `DEFAULT expr` 约束。
+
+## 创建 Flow
+
+```sql
+CREATE [OR REPLACE] FLOW [ IF NOT EXISTS ]
+SINK TO
+[ EXPIRE AFTER ]
+[ COMMENT '' ]
+AS
+;
+```
+
+用于创建或更新 Flow 任务,请阅读[Flow 管理文档](/user-guide/flow-computation/manage-flow.md#创建-flow)。
+
+## 创建 View
+
+```sql
+CREATE [OR REPLACE] VIEW [ IF NOT EXISTS ]
+AS select_statement
+```
+
+用于创建或更新视图,请阅读[视图用户指南](/user-guide/query-data/view.md#视图)。
+
+## 创建 Trigger
+
+请参考 [CREATE TRIGGER](/reference/sql/trigger-syntax.md#create-trigger) 文档。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/data-types.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/data-types.md
new file mode 100644
index 0000000000..c536069215
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/data-types.md
@@ -0,0 +1,407 @@
+---
+keywords: [SQL 数据类型, 字符串类型, 数值类型, 日期和时间类型, 布尔类型, JSON 类型]
+description: SQL 数据类型定义了列可以存储的数据类型,包括字符串、二进制、数值、日期和时间、布尔和 JSON 类型。
+---
+
+# 数据类型
+
+SQL 数据类型定义了列可以存储的数据类型。当您运行 `DESC TABLE` 命令时,你可以看到每列的数据类型。
+
+## 字符串和二进制数据类型
+
+| 类型名称 | 描述 | 大小 |
+| -------- | ------------------------------------------------------- | ------------------- |
+| `String` | UTF-8 编码的字符串。最多可容纳 2,147,483,647 字节的数据 | 字符串的长度 |
+| `Binary` | 变长二进制值。最多可容纳 2,147,483,647 字节的数据 | 数据的长度 + 2 字节 |
+
+`String` 和 `Binary` 的最大容量取决于它们的编码方式以及存储引擎如何处理它们。例如,`String` 值被编码为 UTF-8,如果所有字符的长度为 3 个字节,该字段最多可以存储 715,827,882 个字符。对于 `Binary` 类型,它们最多可以存储 2,147,483,647 字节。
+
+## 数值数据类型
+
+| 类型名称 | 描述 | 大小 |
+| --------- | ------------------------------------------ | ------ |
+| `Int8` | -128 ~ 127 | 1 字节 |
+| `Int16` | -32768 ~ 32767 | 2 字节 |
+| `Int32` | -2147483648 ~ 2147483647 | 4 字节 |
+| `Int64` | -9223372036854775808 ~ 9223372036854775807 | 8 字节 |
+| `UInt8` | 0 ~ 255 | 1 字节 |
+| `UInt16` | 0 ~ 65535 | 2 字节 |
+| `UInt32` | 0 ~ 4294967295 | 4 字节 |
+| `UInt64` | 0 ~ 18446744073709551615 | 8 字节 |
+| `Float32` | 32 位 IEEE 754 浮点数 | 4 字节 |
+| `Float64` | 双精度 IEEE 754 浮点数 | 8 字节 |
+
+## Decimal 类型
+
+GreptimeDB 支持 `decimal` 类型,这是一种定点类型,表示为 `decimal(precision, scale)`,其中 `precision` 是总位数,`scale` 是小数部分的位数。例如,`123.45` 的总位数为 5,小数位数为 2。
+
+- `precision` 可以在 [1, 38] 范围内。
+- `scale` 可以在 [0, precision] 范围内。
+
+如果未指定总位数和比例,则默认的十进制数是 `decimal(38, 10)`。
+
+```sql
+CREATE TABLE decimals(
+ d DECIMAL(3, 2),
+ ts TIMESTAMP TIME INDEX,
+);
+
+INSERT INTO decimals VALUES ('0.1',1000), ('0.2',2000);
+
+SELECT * FROM decimals;
+```
+
+```sql
++------+---------------------+
+| d | ts |
++------+---------------------+
+| 0.10 | 1970-01-01T00:00:01 |
+| 0.20 | 1970-01-01T00:00:02 |
++------+---------------------+
+```
+
+## 日期和时间类型
+
+| 类型名称 | 描述 | 大小 |
+| ---------------------- | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
+| `TimestampSecond` | 64 位时间戳值,精度为秒,范围:`[-262144-01-01 00:00:00, +262143-12-31 23:59:59]` | 8 字节 |
+| `TimestampMillisecond` | 64 位时间戳值,毫秒精度,范围:`[-262144-01-01 00:00:00.000, +262143-12-31 23:59:59.999]` | 8 字节 |
+| `TimestampMicroSecond` | 64 位时间戳值,微秒精度,范围:`[-262144-01-01 00:00:00.000000, +262143-12-31 23:59:59.999999]` | 8 字节 |
+| `TimestampNanosecond` | 64 位时间戳值,纳秒精度,范围: `[1677-09-21 00:12:43.145225, 2262-04-11 23:47:16.854775807]` | 8 字节 |
+| `Interval` | 时间间隔 | 对于 `YearMonth`, 使用 4 字节,对于 `DayTime`, 使用 8 字节,对于 `MonthDayNano`, 使用 16 字节 |
+
+:::tip 注意
+使用 MySQL/PostgreSQL 协议写入时间戳字符串字面量时,值的范围限制为 '0001-01-01 00:00:00' 到 '9999-12-31 23:59:59'。
+:::
+
+### Interval 类型详解
+
+`Interval` 类型用于需要跟踪和操作时间间隔的场景。它的编写语法如下:
+
+```
+QUANTITY UNIT [QUANTITY UNIT...]
+```
+
+* `QUANTITY`:是一个数字(可能有符号),
+* `UNIT`:时间单位,可以是 `microsecond`(微秒)、`millisecond`(毫秒)、`second`(秒)、`minute`(分钟)、`hour`(小时)、`day`(天)、`week`(周)、`month`(月)、`year`(年)、`decade`(十年)、`century`(世纪)或这些单位的缩写或复数形式;
+
+不同的时间单位将会被计算合并,每个单位的符号决定它是增加还是减少总间隔。例如,“1 年 -2 个月”导致净间隔为 10 个月。
+遗憾的是,GreptimeDB 暂时还不支持以 [ISO 8601 时间间隔](https://en.wikipedia.org/wiki/ISO_8601#Time_intervals)格式编写间隔,例如 `P3Y3M700DT133H17M36.789S` 等。但它支持以这种格式输出。
+
+让我们来看一些例子:
+
+```sql
+SELECT '2 years 15 months 100 weeks 99 hours 123456789 milliseconds'::INTERVAL;
+```
+
+```sql
++---------------------------------------------------------------------+
+| Utf8("2 years 15 months 100 weeks 99 hours 123456789 milliseconds") |
++---------------------------------------------------------------------+
+| P3Y3M700DT133H17M36.789S |
++---------------------------------------------------------------------+
+```
+
+55 分钟前:
+
+```sql
+SELECT '-1 hour 5 minute'::INTERVAL;
+```
+
+```sql
++--------------------------+
+| Utf8("-1 hour 5 minute") |
++--------------------------+
+| P0Y0M0DT0H-55M0S |
++--------------------------+
+```
+
+1 小时 5 分钟前:
+
+```sql
+SELECT '-1 hour -5 minute'::INTERVAL;
+```
+
+```sql
++---------------------------+
+| Utf8("-1 hour -5 minute") |
++---------------------------+
+| P0Y0M0DT-1H-5M0S |
++---------------------------+
+```
+
+当然,你可以通过算术运算来操作时间间隔。
+获取 5 分钟前的时间:
+
+```sql
+SELECT now() - '5 minute'::INTERVAL;
+```
+
+```sql
++----------------------------------------------+
+| now() - IntervalMonthDayNano("300000000000") |
++----------------------------------------------+
+| 2024-06-24 21:24:05.012306 |
++----------------------------------------------+
+```
+
+GreptimeDB 还支持类似 `3y2mon4h` 这样不包含空格的简写形式:
+
+```sql
+SELECT '3y2mon4h'::INTERVAL;
+```
+
+```
++---------------------------------------------------------+
+| IntervalMonthDayNano("3010670175542044842954670112768") |
++---------------------------------------------------------+
+| P3Y2M0DT4H0M0S |
++---------------------------------------------------------+
+```
+
+同样也支持符号数:
+
+```sql
+SELECT '-1h5m'::INTERVAL;
+```
+
+```
++----------------------------------------------+
+| IntervalMonthDayNano("18446740773709551616") |
++----------------------------------------------+
+| P0Y0M0DT0H-55M0S |
++----------------------------------------------+
+```
+
+支持的缩写包括:
+
+| 缩写 | 全称 |
+| ------ | ------------ |
+| y | years |
+| mon | months |
+| w | weeks |
+| d | days |
+| h | hours |
+| m | minutes |
+| s | seconds |
+| millis | milliseconds |
+| ms | milliseconds |
+| us | microseconds |
+| ns | nanoseconds |
+
+#### INTERVAL 关键字
+
+在上述示例中,我们使用了 `cast` 类型转换操作 `'{quantity unit}'::INTERVAL` 来演示 interval 类型。实际上,interval 类型也可以使用 `INTERVAL` 关键字支持的语法,不过不同数据库方言之间的行为有所差异:
+
+1. 在 MySQL 中,语法为 `INTERVAL {quantity} {unit}`,其中 `quantity` 可以是数字或字符串,具体取决于上下文。例如:
+```sql
+mysql> SELECT INTERVAL 1 YEAR;
++--------------------------------------------------------------------------------------+
+| IntervalMonthDayNano("IntervalMonthDayNano { months: 12, days: 0, nanoseconds: 0 }") |
++--------------------------------------------------------------------------------------+
+| P1Y0M0DT0H0M0S |
++--------------------------------------------------------------------------------------+
+1 row in set (0.01 sec)
+
+mysql> SELECT INTERVAL '1 YEAR 2' MONTH;
++--------------------------------------------------------------------------------------+
+| IntervalMonthDayNano("IntervalMonthDayNano { months: 14, days: 0, nanoseconds: 0 }") |
++--------------------------------------------------------------------------------------+
+| P1Y2M0DT0H0M0S |
++--------------------------------------------------------------------------------------+
+1 row in set (0.00 sec)
+```
+
+2. 在 PostgreSQL 和默认的 GreptimeDB 方言中,语法为 `INTERVAL '{quantity unit}'`,即 INTERVAL 关键字后跟 interval 字符串:
+```sql
+public=> SELECT INTERVAL '1 year';
+ IntervalMonthDayNano("IntervalMonthDayNano { months: 12, days: 0, nanoseconds: 0 }")
+--------------------------------------------------------------------------------------
+ 1 year
+(1 row)
+
+public=> SELECT INTERVAL '1 year 2 month';
+ IntervalMonthDayNano("IntervalMonthDayNano { months: 14, days: 0, nanoseconds: 0 }")
+--------------------------------------------------------------------------------------
+ 1 year 2 mons
+(1 row)
+```
+
+## JSON 类型(实验功能)
+
+:::warning
+JSON 类型目前仍处于实验阶段,在未来的版本中可能会有所调整。
+:::
+
+GreptimeDB 支持 JSON 类型,允许用户存储和查询 JSON 格式的数据。JSON 类型非常灵活,可以存储各种形式的结构化或非结构化数据,适合日志记录、分析和半结构化数据存储等场景。
+
+```sql
+CREATE TABLE json_data(
+ my_json JSON,
+ ts TIMESTAMP TIME INDEX
+);
+
+INSERT INTO json_data VALUES ('{"key1": "value1", "key2": 10}', 1000),
+ ('{"name": "GreptimeDB", "open_source": true}', 2000);
+
+SELECT * FROM json_data;
+```
+
+输出:
+
+```
++------------------------------------------+---------------------+
+| my_json | ts |
++------------------------------------------+---------------------+
+| {"key1":"value1","key2":10} | 1970-01-01 00:00:01 |
+| {"name":"GreptimeDB","open_source":true} | 1970-01-01 00:00:02 |
++------------------------------------------+---------------------+
+```
+
+### 查询 JSON 数据
+
+您可以直接查询 JSON 数据,也可以使用 GreptimeDB 提供的 [JSON 函数](./functions/overview.md#json-functions) 提取特定字段。以下是一个示例:
+
+```sql
+SELECT json_get_string(my_json, '$.name') as name FROM json_data;
+```
+
+输出:
+
+```
++---------------------------------------------------+
+| name |
++---------------------------------------------------+
+| NULL |
+| GreptimeDB |
++---------------------------------------------------+
+```
+
+
+## 布尔类型
+
+| 类型名称 | 描述 | 大小 |
+| --------- | ------ | ------ |
+| `Boolean` | 布尔值 | 1 字节 |
+
+在 SQL 语句中使用 `TRUE` 或 `FALSE` 表示布尔值。例如:
+
+```sql
+CREATE TABLE bools(
+ b BOOLEAN,
+ ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP() TIME INDEX,
+);
+```
+
+```sql
+INSERT INTO bools(b) VALUES (TRUE), (FALSE);
+```
+
+## 与 MySQL 和 PostgreSQL 兼容的数据类型
+
+### 类型别名
+
+对于从 MySQL 或 PostgreSQL 迁移到 GreptimeDB 的用户,GreptimeDB 支持以下类型别名。
+
+| 数据类型 | 别名 |
+| ---------------------- | --------------------------------------------------------------- |
+| `String` | `Text`, `TinyText`, `MediumText`, `LongText`, `Varchar`, `Char` |
+| `Binary` | `Varbinary` |
+| `Int8` | `TinyInt` |
+| `Int16` | `SmallInt` |
+| `Int32` | `Int` |
+| `Int64` | `BigInt` |
+| `UInt8` | `UnsignedTinyInt` |
+| `UInt16` | `UnsignedSmallInt` |
+| `UInt32` | `UnsignedInt` |
+| `UInt64` | `UnsignedBigInt` |
+| `Float32` | `Float` |
+| `Float64` | `Double` |
+| `TimestampSecond` | `Timestamp_s`, `Timestamp_sec`, `Timestamp(0)` |
+| `TimestampMillisecond` | `Timestamp`, `Timestamp_ms` , `Timestamp(3)` |
+| `TimestampMicroSecond` | `Timestamp_us`, `Timestamp(6)` |
+| `TimestampNanosecond` | `Timestamp_ns`, `Timestamp(9)` |
+
+在创建表时也可以使用这些别名类型。
+例如,使用 `Varchar` 代替 `String`,使用 `Double` 代替 `Float64`,使用 `Timestamp(0)` 代替 `TimestampSecond`。
+
+```sql
+CREATE TABLE alias_types (
+ s TEXT,
+ i Double,
+ ts0 Timestamp(0) DEFAULT CURRENT_TIMESTAMP() TIME INDEX,
+ PRIMARY KEY(s)
+);
+```
+
+### 日期和时间类型
+
+除了在 GreptimeDB 中用作默认时间类型的 `Timestamp` 类型之外
+GreptimeDB 还支持与 MySQL 和 PostgreSQL 兼容的 `Date` 和 `DateTime` 类型。
+
+| 类型名称 | 描述 | 大小 |
+| ---------- | -------------------------------------------------- | ------ |
+| `Date` | 32 位日期值,表示自 UNIX Epoch 以来的天数 | 4 字节 |
+| `DateTime` | 64 位毫秒精度的间戳,等同于 `TimestampMicrosecond` | 8 字节 |
+
+## 示例
+
+### 创建表
+
+```sql
+CREATE TABLE data_types (
+ s STRING,
+ vbi BINARY,
+ b BOOLEAN,
+ tint INT8,
+ sint INT16,
+ i INT32,
+ bint INT64,
+ utint UINT8,
+ usint UINT16,
+ ui UINT32,
+ ubint UINT64,
+ f FLOAT32,
+ d FLOAT64,
+ dm DECIMAL(3, 2),
+ dt DATE,
+ dtt DATETIME,
+ ts0 TIMESTAMPSECOND,
+ ts3 TIMESTAMPMILLISECOND,
+ ts6 TIMESTAMPMICROSECOND,
+ ts9 TIMESTAMPNANOSECOND DEFAULT CURRENT_TIMESTAMP() TIME INDEX,
+ PRIMARY KEY(s));
+```
+
+### 描述表结构
+
+```sh
+DESC TABLE data_types;
+```
+
+```sql
++--------+----------------------+------+------+---------------------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++--------+----------------------+------+------+---------------------+---------------+
+| s | String | PRI | YES | | TAG |
+| vbi | Binary | | YES | | FIELD |
+| b | Boolean | | YES | | FIELD |
+| tint | Int8 | | YES | | FIELD |
+| sint | Int16 | | YES | | FIELD |
+| i | Int32 | | YES | | FIELD |
+| bint | Int64 | | YES | | FIELD |
+| utint | UInt8 | | YES | | FIELD |
+| usint | UInt16 | | YES | | FIELD |
+| ui | UInt32 | | YES | | FIELD |
+| ubint | UInt64 | | YES | | FIELD |
+| f | Float32 | | YES | | FIELD |
+| d | Float64 | | YES | | FIELD |
+| dm | Decimal(3, 2) | | YES | | FIELD |
+| dt | Date | | YES | | FIELD |
+| dtt | TimestampMicrosecond | | YES | | FIELD |
+| ts0 | TimestampSecond | | YES | | FIELD |
+| ts3 | TimestampMillisecond | | YES | | FIELD |
+| ts6 | TimestampMicrosecond | | YES | | FIELD |
+| ts9 | TimestampNanosecond | PRI | NO | current_timestamp() | TIMESTAMP |
++--------+----------------------+------+------+---------------------+---------------+
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/delete.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/delete.md
new file mode 100644
index 0000000000..4d78aa4a57
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/delete.md
@@ -0,0 +1,30 @@
+---
+keywords: [SQL DELETE 语句, 删除行数据, 数据删除, SQL 示例, 数据库操作]
+description: DELETE 用于从表中删除行数据,满足条件的行会立刻被标记,后续查询无法获取这些行数据。
+---
+
+# DELETE
+
+`DELETE` 用于从表中删除行数据。
+
+## Syntax
+
+```sql
+DELETE FROM [db.]table WHERE expr
+```
+
+上述命令从表 `[db.]table` 中删除满足 `expr` 的行。被删除的行会立刻被标记,后续的查询立刻不能获取到这些行数据。
+
+## 示例
+
+例如,有一个带有主键 `host` 的表:
+
+```sql
+CREATE TABLE monitor ( host STRING, ts TIMESTAMP, cpu DOUBLE DEFAULT 0, memory DOUBLE, TIME INDEX (ts), PRIMARY KEY(host)) ;
+```
+
+删除 host 为 `host1` 以及时间戳为 `1655276557000` 的行:
+
+```sql
+DELETE FROM monitor WHERE host = 'host1' and ts = 1655276557000;
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/describe_table.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/describe_table.md
new file mode 100644
index 0000000000..5a129f5a6c
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/describe_table.md
@@ -0,0 +1,44 @@
+---
+keywords: [SQL DESCRIBE TABLE 语句, 表结构描述, 列信息, 数据库表, SQL 示例]
+description: DESCRIBE TABLE 用于描述数据库中表的结构,包括列名、类型、主键、是否为空、默认值和语义类型。
+---
+
+# DESCRIBE TABLE
+
+`DESCRIBE [TABLE] [db.]table` 描述了 `db` 或当前使用的数据库中的表结构。
+
+## 示例
+
+描述表 `monitor`:
+
+```sql
+DESCRIBE TABLE monitor;
+```
+
+或者
+
+```sql
+DESCRIBE monitor;
+```
+
+```sql
+```sql
++--------+----------------------+------+------+---------------------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++--------+----------------------+------+------+---------------------+---------------+
+| host | String | PRI | YES | | TAG |
+| ts | TimestampMillisecond | PRI | NO | current_timestamp() | TIMESTAMP |
+| cpu | Float64 | | YES | 0 | FIELD |
+| memory | Float64 | | YES | | FIELD |
++--------+----------------------+------+------+---------------------+---------------+
+4 rows in set (0.00 sec)
+```
+
+结果中展示相应的表结构:
+
+* `Column`: 列名
+* `Type`: 列类型
+* `Key`: `PRI` 表示该列在 `PRIMARY KEY` 约束里。
+* `Null`: `YES` 表示可以为空,否则为 `NO`
+* `Default`: 列的默认值
+* `Semantic Type`:该列的语义类型,对应数据模型中的 `TAG`、`FIELD` 或 `TIMESTAMP`。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/distinct.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/distinct.md
new file mode 100644
index 0000000000..a5f7afea9a
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/distinct.md
@@ -0,0 +1,23 @@
+---
+keywords: [SQL DISTINCT 语句, 唯一值选择, 数据去重, SQL 示例, 数据分析]
+description: SELECT DISTINCT 用于从一组数据中选择唯一值,可以与过滤条件结合使用。
+---
+
+# DISTINCT
+
+`SELECT DISTINCT` 用于从一组数据中选择唯一值,从查询的输出中返回唯一值,其基本语法如下:
+
+```sql
+SELECT DISTINCT idc
+FROM system_metrics;
+```
+
+`SELECT DISTINCT` 可以与 filter 结合使用:
+
+```sql
+SELECT DISTINCT idc, host
+FROM system_metrics
+WHERE host != 'host2';
+```
+
+`SELECT DISTINCT` 是 GreptimeDB SQL 中一个简单但功能强大的命令,它允许用户将数据压缩成唯一值的综合。它可以用于一个或多个列,使其在数据分析和报告中非常灵活。使用 `SELECT DISTINCT` 是获取表中存储的数据类型概述的好方法。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/drop.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/drop.md
new file mode 100644
index 0000000000..101df13be8
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/drop.md
@@ -0,0 +1,99 @@
+---
+keywords: [SQL DROP 语句, 删除数据库, 删除表, 删除视图, 删除流, SQL 示例]
+description: DROP 用于删除数据库、表、流或视图,操作不可撤销,需谨慎使用。
+---
+
+# DROP
+
+## DROP DATABASE
+
+`DROP DATABASE` 用于删除数据库,它删除数据库的目录项并删除包含数据的目录。
+
+:::danger 危险操作
+
+`DROP DATABASE` 无法撤消。请谨慎使用!
+
+:::
+
+### 语法
+
+```sql
+DROP DATABASE [ IF EXISTS ] db_name
+```
+
+- `IF EXISTS`: 如果数据库不存在,则不抛出错误。
+- `db_name`: 要删除的数据库的名称。
+
+### 示例
+
+删除名为 `test` 的数据库:
+
+```sql
+DROP DATABASE test;
+```
+
+## DROP TABLE
+
+`DROP TABLE` 从数据库中删除表,它将删除该表的表定义和所有表数据、索引、规则和约束。
+
+:::danger 危险操作
+
+`DROP TABLE` 无法撤消。请谨慎使用!
+
+:::
+
+### 语法
+
+```sql
+DROP TABLE [ IF EXISTS ] table_name
+```
+
+- `IF EXISTS`: 如果表不存在,则不抛出错误。
+- `table_name`: 要删除的表的名称。
+
+### 示例
+
+删除 `monitor` 表:
+
+```sql
+DROP TABLE monitor;
+```
+
+## DROP FLOW
+
+```sql
+DROP FLOW [ IF EXISTS ] flow_name;
+```
+
+- `IF EXISTS`: 如果流不存在,则不抛出错误。
+- `flow_name`: 要删除的流的名称。
+
+```sql
+DROP FLOW IF EXISTS test_flow;
+```
+
+```
+Query OK, 0 rows affected (0.00 sec)
+```
+
+## DROP VIEW
+
+```sql
+DROP VIEW [ IF EXISTS ] view_name;
+```
+
+- `IF EXISTS`: 如果视图不存在,则不抛出错误。
+- `view_name`: 要删除的视图的名称。
+
+```sql
+DROP VIEW IF EXISTS test_view;
+```
+
+```
+Query OK, 0 rows affected (0.00 sec)
+```
+
+## DROP TRIGGER
+
+请参考 [Trigger 语法](/reference/sql/trigger-syntax.md#drop-trigger)文档。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/explain.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/explain.md
new file mode 100644
index 0000000000..408c4a5be1
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/explain.md
@@ -0,0 +1,95 @@
+---
+keywords: [SQL EXPLAIN 语句, 执行计划, 查询优化, ANALYZE 子句, SQL 示例]
+description: EXPLAIN 用于提供语句的执行计划,ANALYZE 子句将执行语句并测量每个计划节点的时间和输出行数。
+---
+
+# EXPLAIN
+
+`EXPLAIN` 用于提供语句的执行计划。
+
+## Syntax
+
+```sql
+EXPLAIN [ANALYZE] [VERBOSE] SELECT ...
+```
+
+`ANALYZE` 子句将执行语句并测量每个计划节点花费的时间以及输出的总行数等。
+
+`VERBOSE` 子句可以进一步提供执行计划时详细的信息。
+
+## 示例
+
+Explain 以下的查询:
+
+```sql
+EXPLAIN SELECT * FROM monitor where host='host1'\G
+```
+
+样例输出:
+
+```sql
+*************************** 1. row ***************************
+plan_type: logical_plan
+ plan: MergeScan [is_placeholder=false]
+*************************** 2. row ***************************
+plan_type: physical_plan
+ plan: MergeScanExec: peers=[4612794875904(1074, 0), ]
+```
+
+`plan_type` 列指示了是 `logical_plan` 还是 `physical_plan`,`plan` 列详细说明了执行计划。
+
+`MergeScan` 计划负责合并多个 region 的查询结果。物理计划 `MergeScanExec` 中的 `peers` 数组包含了将要扫描的 region 的 ID。
+
+使用 `ANALYZE` 解释执行计划:
+
+```sql
+EXPLAIN ANALYZE SELECT * FROM monitor where host='host1'\G
+```
+
+样例输出:
+
+```sql
+*************************** 1. row ***************************
+stage: 0
+ node: 0
+ plan: MergeScanExec: peers=[4612794875904(1074, 0), ] metrics=[output_rows: 0, greptime_exec_read_cost: 0, finish_time: 3301415, first_consume_time: 3299166, ready_time: 3104209, ]
+
+*************************** 2. row ***************************
+stage: 1
+ node: 0
+ plan: SeqScan: region=4612794875904(1074, 0), partition_count=0 (0 memtable ranges, 0 file 0 ranges) metrics=[output_rows: 0, mem_used: 0, build_parts_cost: 1, build_reader_cost: 1, elapsed_await: 1, elapsed_poll: 21250, scan_cost: 1, yield_cost: 1, ]
+
+*************************** 3. row ***************************
+stage: NULL
+ node: NULL
+ plan: Total rows: 0
+```
+
+`EXPLAIN ANALYZE` 语句提供了每个执行阶段的指标。`SeqScan` 计划会扫描一个 region 的数据。
+
+获取查询执行更详细的信息:
+
+```sql
+EXPLAIN ANALYZE VERBOSE SELECT * FROM monitor where host='host1';
+```
+
+样例输出:
+
+```sql
+*************************** 1. row ***************************
+stage: 0
+ node: 0
+ plan: MergeScanExec: peers=[4612794875904(1074, 0), ] metrics=[output_rows: 0, greptime_exec_read_cost: 0, finish_time: 3479084, first_consume_time: 3476000, ready_time: 3209041, ]
+
+*************************** 2. row ***************************
+stage: 1
+ node: 0
+ plan: SeqScan: region=4612794875904(1074, 0), partition_count=0 (0 memtable ranges, 0 file 0 ranges), projection=["host", "ts", "cpu", "memory"], filters=[host = Utf8("host1")], metrics_per_partition: [[partition=0, {prepare_scan_cost=579.75µs, build_reader_cost=0ns, scan_cost=0ns, convert_cost=0ns, yield_cost=0ns, total_cost=789.708µs, num_rows=0, num_batches=0, num_mem_ranges=0, num_file_ranges=0, build_parts_cost=0ns, rg_total=0, rg_fulltext_filtered=0, rg_inverted_filtered=0, rg_minmax_filtered=0, rg_bloom_filtered=0, rows_before_filter=0, rows_fulltext_filtered=0, rows_inverted_filtered=0, rows_bloom_filtered=0, rows_precise_filtered=0, num_sst_record_batches=0, num_sst_batches=0, num_sst_rows=0, first_poll=785.041µs}]] metrics=[output_rows: 0, mem_used: 0, build_parts_cost: 1, build_reader_cost: 1, elapsed_await: 1, elapsed_poll: 17208, scan_cost: 1, yield_cost: 1, ]
+
+*************************** 3. row ***************************
+stage: NULL
+ node: NULL
+ plan: Total rows: 0
+```
+
+`EXPLAIN ANALYZE VERBOSE` 语句会展示计划执行阶段更详细的指标信息。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/approximate.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/approximate.md
new file mode 100644
index 0000000000..6ade634657
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/approximate.md
@@ -0,0 +1,265 @@
+---
+keywords: [近似函数, 近似去重计数, 近似分位数, SQL 函数]
+description: 列出和描述 GreptimeDB 中可用的近似函数,包括它们的用法和示例。
+---
+
+# 近似函数
+
+本页面列出了 GreptimeDB 中的近似函数,这些函数用于近似数据分析。
+
+:::warning
+下述的近似函数目前仍处于实验阶段,可能会在未来的版本中发生变化。
+:::
+
+## 近似去重计数 (HLL)
+
+这里使用了 [HyperLogLog](https://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf) (HLL) 算法来计算一组值的近似去重计数。它在内存使用和速度方面提供了高效的性能。GreptimeDB 提供了三个函数来处理 HLL 算法,具体描述如下:
+
+:::warning
+由于算法的近似性质,结果可能不完全精确,但通常非常接近实际的去重计数。HyperLogLog 算法的相对标准误差约为 1.04/√m,其中 m 是算法中使用的寄存器数量。GreptimeDB 默认使用 16384 个寄存器,这使得相对标准误差约为 0.008125(即 0.8125%)。
+:::
+
+### `hll`
+
+`hll(value)` 从给定列创建二进制的 HyperLogLog 状态。`value` 可以是你希望计算近似去重计数的任何列。它返回 HLL 状态的二进制表示,可以存储在表中或用于进一步计算。有关如何结合其他函数使用此函数计算近似去重计数的完整示例,请参阅 [完整使用示例](#完整使用示例)。
+
+### `hll_merge`
+
+`hll_merge(hll_state)` 将多个 HyperLogLog 状态合并为一个。当你需要合并多个 HLL 计算结果时,例如聚合来自不同时间窗口或来源的数据时,这非常有用。`hll_state` 参数是由 [`hll`](#hll) 创建的 HLL 状态的二进制表示。合并后的状态可用于计算所有合并状态的近似去重计数。有关如何结合其他函数使用此函数计算近似去重计数的完整示例,请参阅 [完整使用示例](#完整使用示例)。
+
+
+### `hll_count`
+
+`hll_count(hll_state)` 从 HyperLogLog 状态中计算得到近似去重计数的结果。此函数接受由 `hll` 创建或由 `hll_merge` 合并的 HLL 状态,并返回近似的去重值计数。有关如何结合其他函数使用此函数计算近似去重计数的完整示例,请参阅 [完整使用示例](#完整使用示例)。
+
+### 完整使用示例
+
+此示例演示了如何组合使用这些函数来计算近似的去重的用户 ID 的数量。
+
+首先创建用于存储用户访问日志的基础表 `access_log`,以及用于在 10 秒时间窗口内存储 HyperLogLog 状态的 `access_log_10s` 表。请注意,`state` 列的类型为 `BINARY`,它将以二进制格式存储 HyperLogLog 状态。
+```sql
+CREATE TABLE access_log (
+ `url` STRING,
+ user_id BIGINT,
+ ts TIMESTAMP TIME INDEX,
+ PRIMARY KEY (`url`, `user_id`)
+);
+
+CREATE TABLE access_log_10s (
+ `url` STRING,
+ time_window timestamp time INDEX,
+ state BINARY,
+ PRIMARY KEY (`url`)
+);
+```
+
+将一些示例数据插入到 `access_log` 中:
+```sql
+INSERT INTO access_log VALUES
+ ("/dashboard", 1, "2025-03-04 00:00:00"),
+ ("/dashboard", 1, "2025-03-04 00:00:01"),
+ ("/dashboard", 2, "2025-03-04 00:00:05"),
+ ("/dashboard", 2, "2025-03-04 00:00:10"),
+ ("/dashboard", 2, "2025-03-04 00:00:13"),
+ ("/dashboard", 4, "2025-03-04 00:00:15"),
+ ("/not_found", 1, "2025-03-04 00:00:10"),
+ ("/not_found", 3, "2025-03-04 00:00:11"),
+ ("/not_found", 4, "2025-03-04 00:00:12");
+```
+
+现在我们可以使用 `hll` 函数为 `user_id` 列创建 10 秒时间窗口的 HyperLogLog 状态。输出将是 HLL 状态的二进制表示,其中包含计算后续近似去重计数所需的信息。`date_bin` 函数用于将数据分组到 10 秒的时间窗口中。因此,此 `INSERT INTO` 语句将为 `access_log` 表中每个 10 秒时间窗口创建 HyperLogLog 状态,并将其插入到 `access_log_10s` 表中:
+```sql
+-- 使用 10 秒窗口查询来计算 HyperLogLog 状态:
+INSERT INTO
+ access_log_10s
+SELECT
+ `url`,
+ date_bin("10s" :: INTERVAL, ts) AS time_window,
+ hll(`user_id`) AS state
+FROM
+ access_log
+GROUP BY
+ `url`,
+ time_window;
+-- 结果类似:
+-- Query OK, 3 rows affected (0.05 sec)
+```
+然后我们可以使用 `hll_count` 函数从 HyperLogLog 状态(即 `state` 列)中检索近似去重计数。例如,要获取每个 10 秒时间窗口的用户访问近似去重计数,我们可以运行以下查询:
+```sql
+-- 使用 `hll_count` 查询 `access_log_10s` 中的近似数据,请注意对于小型数据集,结果可能不是很准确。
+SELECT `url`, `time_window`, hll_count(state) FROM access_log_10s;
+
+-- 结果如下:
+-- +------------+---------------------+---------------------------------+
+-- | url | time_window | hll_count(access_log_10s.state) |
+-- +------------+---------------------+---------------------------------+
+-- | /dashboard | 2025-03-04 00:00:00 | 2 |
+-- | /dashboard | 2025-03-04 00:00:10 | 2 |
+-- | /not_found | 2025-03-04 00:00:10 | 3 |
+-- +------------+---------------------+---------------------------------+
+```
+
+此外,我们可以通过使用 `hll_merge` 合并 HyperLogLog 状态,将 10 秒的数据聚合到 1 分钟级别。这使我们能够计算更大时间窗口的近似去重计数,这对于分析随时间变化的趋势非常有用。以下查询演示了如何实现:
+```sql
+-- 使用 `hll_merge` 合并 HyperLogLog 状态,将 10 秒的数据聚合到 1 分钟级别。
+SELECT
+ `url`,
+ date_bin('1 minute' :: INTERVAL, `time_window`) AS time_window_1m,
+ hll_count(hll_merge(state)) as uv_per_min
+FROM
+ access_log_10s
+GROUP BY
+ `url`,
+ date_bin('1 minute' :: INTERVAL, `time_window`);
+
+-- 结果如下:
+-- +------------+---------------------+------------+
+-- | url | time_window_1m | uv_per_min |
+-- +------------+---------------------+------------+
+-- | /dashboard | 2025-03-04 00:00:00 | 3 |
+-- | /not_found | 2025-03-04 00:00:00 | 3 |
+-- +------------+---------------------+------------+
+```
+
+请注意 `hll_merge` 函数如何用于合并 `access_log_10s` 表中的 HyperLogLog 状态,然后 `hll_count` 函数用于计算每个 1 分钟时间窗口的近似去重计数。如果只使用 `hll_merge` 而不使用 `hll_count`,结果将只是合并后的 HyperLogLog 状态的不可读二进制表示,这对于分析没有太大用处。因此,我们使用 `hll_count` 从合并后的状态中计算得到近似去重计数。
+
+以下流程图说明了 HyperLogLog 函数的上述用法。首先,原始事件数据按时间窗口和 URL 分组,然后使用 `hll` 函数为每个时间窗口和 URL 创建一个 HyperLogLog 状态,接着使用 `hll_count` 函数检索每个时间窗口和 URL 的近似去重计数。最后,使用 `hll_merge` 函数合并每个 URL 的 HyperLogLog 状态,然后再次使用 `hll_count` 函数检索 1 分钟时间窗口的近似去重计数。
+
+
+## 近似分位数(UDDSketch)
+
+使用 [UDDSketch](https://arxiv.org/abs/2004.08604) 算法提供了三个函数用于近似分位数计算。
+
+:::warning
+UDDSketch 算法旨在提供具有可调误差率的近似分位数,这有助于实现高效的内存使用和快速计算。结果可能并非完全精确,但通常非常接近实际分位数。
+:::
+
+### `uddsketch_state`
+
+`uddsketch_state` 函数用于从给定列创建二进制格式的 UDDSketch 状态。它接受三个参数:
+- `bucket_num`:用于记录分位数信息的桶数量。关于如何确定该值,请参阅[如何确定桶数量和误差率](#如何确定桶数量和误差率)。
+- `error_rate`:分位数计算所需的误差率。
+- `value`:用于计算分位数的列。
+
+例如,对于下述表 `percentile_base`,我们可以为 `value` 列创建一个 `uddsketch_state`,其中桶数量为 128,误差率为 0.01 (1%)。输出将是 UDDSketch 状态的二进制表示,其中包含后续计算近似分位数所需的信息。
+
+该输出的二进制状态可被视为 `value` 列中值的直方图,后续可使用 `uddsketch_merge` 进行合并,或使用 `uddsketch_calc` 计算分位数。有关如何结合使用这些函数来计算近似分位数的完整示例,请参阅[UDDSketch 完整使用示例](#uddsketch-完整使用示例)。
+
+### `uddsketch_merge`
+
+`uddsketch_merge` 函数用于将多个 UDDSketch 状态合并为一个。它接受三个参数:
+- `bucket_num`:用于记录分位数信息的桶数量。关于如何确定该值,请参阅[如何确定桶数量和误差率](#如何确定桶数量和误差率)。
+- `error_rate`:分位数计算所需的误差率。
+- `udd_state`:由 `uddsketch_state` 创建的 UDDSketch 状态的二进制表示。
+
+当你需要合并来自不同时间窗口或来源的结果时,此函数非常有用。请注意,`bucket_num` 和 `error_rate` 必须与创建原始状态时使用的参数匹配,否则合并将失败。
+
+例如,如果你有来自不同时间窗口的多个 UDDSketch 状态,你可以将它们合并为一个状态,以计算所有数据的整体分位数。该输出的二进制状态随后可用于使用 `uddsketch_calc` 计算分位数。有关如何结合使用这些函数来计算近似分位数的完整示例,请参阅[UDDSketch 完整使用示例](#uddsketch-完整使用示例)。
+
+
+### `uddsketch_calc`
+
+`uddsketch_calc` 函数用于从 UDDSketch 状态计算近似分位数。它接受两个参数:
+- `quantile`:一个介于 0 和 1 之间的值,表示要计算的目标分位数,例如,0.99 代表第 99 百分位数。
+- `udd_state`:由 `uddsketch_state` 创建或由 `uddsketch_merge` 合并的 UDDSketch 状态的二进制表示。
+
+有关如何结合使用这些函数来计算近似分位数的完整示例,请参阅[UDDSketch 完整使用示例](#uddsketch-完整使用示例)。
+
+### 如何确定桶数量和误差率
+
+`bucket_num` 参数设置了 UDDSketch 算法可使用的内部容器的最大数量,直接控制其内存占用。可以将其视为跟踪不同值范围的物理存储容量。更大的 `bucket_num` 允许 UddSketch 状态更准确地表示更宽的数据动态范围(即最大值和最小值之间更大的比率)。如果此限制对于你的数据而言过小,UddSketch 状态将被迫合并非常高或非常低的值,从而降低其准确性。对于大多数用例,`bucket_num` 的推荐值为 128,这在准确性和内存使用之间提供了良好的平衡。
+
+`error_rate` 定义了分位数计算所需的精度。它保证任何计算出的分位数(例如 p99)都在真实值的某个*相对*百分比范围内。例如,`error_rate` 为 `0.01` 确保结果在实际值的 1% 以内。较小的 `error_rate` 提供更高的准确性,因为它强制 UDDSketch 算法使用更细粒度的桶来区分更接近的数字。
+
+这两个参数之间存在直接的权衡关系。为了达到小 `error_rate` 所承诺的高精度,UDDSketch 算法需要足够的 `bucket_num`,特别是对于跨度较大的数据。`bucket_num` 充当了精度的物理限制。如果你的 `bucket_num` 受到内存限制,那么将 `error_rate` 设置为极小值并不会提高精度,因为受到可用桶数量的限制。
+
+### UDDSketch 完整使用示例
+本示例演示了如何使用上述三个 `uddsketch` 函数来计算一组值的近似分位数。
+
+首先创建用于存储原始数据的基表 `percentile_base`,以及用于存储 5 秒时间窗口内 UDDSketch 状态的 `percentile_5s` 表。请注意,`percentile_state` 列的类型为 `BINARY`,它将以二进制格式存储 UDDSketch 状态。
+```sql
+CREATE TABLE percentile_base (
+ `id` INT PRIMARY KEY,
+ `value` DOUBLE,
+ `ts` timestamp(0) time index
+);
+
+CREATE TABLE percentile_5s (
+ `percentile_state` BINARY,
+ `time_window` timestamp(0) time index
+);
+```
+
+向 `percentile_base` 插入一些示例数据:
+```sql
+INSERT INTO percentile_base (`id`, `value`, `ts`) VALUES
+ (1, 10.0, 1),
+ (2, 20.0, 2),
+ (3, 30.0, 3),
+ (4, 40.0, 4),
+ (5, 50.0, 5),
+ (6, 60.0, 6),
+ (7, 70.0, 7),
+ (8, 80.0, 8),
+ (9, 90.0, 9),
+ (10, 100.0, 10);
+```
+
+现在我们可以使用 `uddsketch_state` 函数为 `value` 列创建一个 UDDSketch 状态,其中桶数量为 128,误差率为 0.01 (1%)。输出将是 UDDSketch 状态的二进制表示,其中包含后续计算近似分位数所需的信息。`date_bin` 函数用于将数据分到 5 秒的时间窗口中。因此,此 `INSERT INTO` 语句将为 `percentile_base` 表中每个 5 秒时间窗口创建 UDDSketch 状态,并将其插入到 `percentile_5s` 表中:
+
+```sql
+INSERT INTO
+ percentile_5s
+SELECT
+ uddsketch_state(128, 0.01, `value`) AS percentile_state,
+ date_bin('5 seconds' :: INTERVAL, `ts`) AS time_window
+FROM
+ percentile_base
+GROUP BY
+ time_window;
+-- 结果类似:
+-- Query OK, 3 rows affected (0.05 sec)
+```
+
+现在我们可以使用 `uddsketch_calc` 函数从 UDDSketch 状态中计算近似分位数。例如,要获取每个 5 秒时间窗口的近似第 99 百分位数 (p99),我们可以运行以下查询:
+```sql
+-- 查询 percentile_5s 以获取近似第 99 百分位数
+SELECT
+ time_window,
+ uddsketch_calc(0.99, `percentile_state`) AS p99
+FROM
+ percentile_5s;
+
+-- 结果如下:
+-- +---------------------+--------------------+
+-- | time_window | p99 |
+-- +---------------------+--------------------+
+-- | 1970-01-01 00:00:00 | 40.04777053326359 |
+-- | 1970-01-01 00:00:05 | 89.13032933635911 |
+-- | 1970-01-01 00:00:10 | 100.49456770856492 |
+-- +---------------------+--------------------+
+```
+请注意,在上述查询中,`percentile_state` 列是由 `uddsketch_state` 创建的 UDDSketch 状态。
+
+此外,我们可以通过使用 `uddsketch_merge` 合并 UDDSketch 状态,将 5 秒的数据聚合到 1 分钟级别。这使我们能够计算更大时间窗口的近似分位数,这对于分析随时间变化的趋势非常有用。以下查询演示了如何实现:
+```sql
+-- 此外,我们可以通过使用 `uddsketch_merge` 合并 UDDSketch 状态,将 5 秒的数据聚合到 1 分钟级别。
+SELECT
+ date_bin('1 minute' :: INTERVAL, `time_window`) AS time_window_1m,
+ uddsketch_calc(0.99, uddsketch_merge(128, 0.01, `percentile_state`)) AS p99
+FROM
+ percentile_5s
+GROUP BY
+ time_window_1m;
+
+-- 结果如下:
+-- +---------------------+--------------------+
+-- | time_window_1m | p99 |
+-- +---------------------+--------------------+
+-- | 1970-01-01 00:00:00 | 100.49456770856492 |
+-- +---------------------+--------------------+
+```
+请注意 `uddsketch_merge` 函数是如何用于合并 `percentile_5s` 表中的 UDDSketch 状态,然后 `uddsketch_calc` 函数用于计算每个 1 分钟时间窗口的近似第 99 百分位数 (p99)。
+
+以下流程图说明了 UDDSketch 函数的上述用法。首先,原始事件数据按时间窗口分组,然后使用 `uddsketch_state` 函数为每个时间窗口创建一个 UDDSketch 状态,接着使用 `uddsketch_calc` 函数检索每个时间窗口的近似第 99 分位数。最后,使用 `uddsketch_merge` 函数合并每个时间窗口的 UDDSketch 状态,然后再次使用 `uddsketch_calc` 函数检索 1 分钟时间窗口的近似第 99 分位数。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/df-functions.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/df-functions.md
new file mode 100644
index 0000000000..f69beb3e59
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/df-functions.md
@@ -0,0 +1,5812 @@
+---
+keywords: [DataFusion functions, scalar functions, window functions, array functions]
+description: 介绍了 Apache DataFusion 项目中的函数,包括标量函数和窗口函数的定义、使用方法和相关的 SQL 查询示例。
+---
+# DataFusion Functions
+
+This page is generated from the Apache DataFusion project's documents:
+ * [DataFusion Scalar Functions](https://raw.githubusercontent.com/apache/datafusion/main/docs/source/user-guide/sql/scalar_functions.md)
+ * [DataFusion Scalar Functions (NEW)](https://raw.githubusercontent.com/apache/datafusion/main/docs/source/user-guide/sql/scalar_functions_new.md)
+ * [DataFusion Aggregate Functions](https://raw.githubusercontent.com/apache/datafusion/main/docs/source/user-guide/sql/aggregate_functions.md)
+ * [DataFusion Window Functions](https://raw.githubusercontent.com/apache/datafusion/main/docs/source/user-guide/sql/window_functions.md)
+
+
+
+
+
+## Scalar Functions
+
+Scalar functions operate on a single row at a time and return a single value.
+
+### Math Functions
+
+- [abs](#abs)
+- [acos](#acos)
+- [acosh](#acosh)
+- [asin](#asin)
+- [asinh](#asinh)
+- [atan](#atan)
+- [atan2](#atan2)
+- [atanh](#atanh)
+- [cbrt](#cbrt)
+- [ceil](#ceil)
+- [cos](#cos)
+- [cosh](#cosh)
+- [cot](#cot)
+- [degrees](#degrees)
+- [exp](#exp)
+- [factorial](#factorial)
+- [floor](#floor)
+- [gcd](#gcd)
+- [isnan](#isnan)
+- [iszero](#iszero)
+- [lcm](#lcm)
+- [ln](#ln)
+- [log](#log)
+- [log10](#log10)
+- [log2](#log2)
+- [nanvl](#nanvl)
+- [pi](#pi)
+- [pow](#pow)
+- [power](#power)
+- [radians](#radians)
+- [random](#random)
+- [round](#round)
+- [signum](#signum)
+- [sin](#sin)
+- [sinh](#sinh)
+- [sqrt](#sqrt)
+- [tan](#tan)
+- [tanh](#tanh)
+- [trunc](#trunc)
+
+##### `abs`
+
+Returns the absolute value of a number.
+
+```sql
+abs(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `acos`
+
+Returns the arc cosine or inverse cosine of a number.
+
+```sql
+acos(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `acosh`
+
+Returns the area hyperbolic cosine or inverse hyperbolic cosine of a number.
+
+```sql
+acosh(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `asin`
+
+Returns the arc sine or inverse sine of a number.
+
+```sql
+asin(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `asinh`
+
+Returns the area hyperbolic sine or inverse hyperbolic sine of a number.
+
+```sql
+asinh(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `atan`
+
+Returns the arc tangent or inverse tangent of a number.
+
+```sql
+atan(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `atan2`
+
+Returns the arc tangent or inverse tangent of `expression_y / expression_x`.
+
+```sql
+atan2(expression_y, expression_x)
+```
+
+###### Arguments
+
+- **expression_y**: First numeric expression to operate on.
+ Can be a constant, column, or function, and any combination of arithmetic operators.
+- **expression_x**: Second numeric expression to operate on.
+ Can be a constant, column, or function, and any combination of arithmetic operators.
+
+##### `atanh`
+
+Returns the area hyperbolic tangent or inverse hyperbolic tangent of a number.
+
+```sql
+atanh(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `cbrt`
+
+Returns the cube root of a number.
+
+```sql
+cbrt(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `ceil`
+
+Returns the nearest integer greater than or equal to a number.
+
+```sql
+ceil(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `cos`
+
+Returns the cosine of a number.
+
+```sql
+cos(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `cosh`
+
+Returns the hyperbolic cosine of a number.
+
+```sql
+cosh(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `cot`
+
+Returns the cotangent of a number.
+
+```sql
+cot(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `degrees`
+
+Converts radians to degrees.
+
+```sql
+degrees(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `exp`
+
+Returns the base-e exponential of a number.
+
+```sql
+exp(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `factorial`
+
+Factorial. Returns 1 if value is less than 2.
+
+```sql
+factorial(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `floor`
+
+Returns the nearest integer less than or equal to a number.
+
+```sql
+floor(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `gcd`
+
+Returns the greatest common divisor of `expression_x` and `expression_y`. Returns 0 if both inputs are zero.
+
+```sql
+gcd(expression_x, expression_y)
+```
+
+###### Arguments
+
+- **expression_x**: First numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression_y**: Second numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `isnan`
+
+Returns true if a given number is +NaN or -NaN otherwise returns false.
+
+```sql
+isnan(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `iszero`
+
+Returns true if a given number is +0.0 or -0.0 otherwise returns false.
+
+```sql
+iszero(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `lcm`
+
+Returns the least common multiple of `expression_x` and `expression_y`. Returns 0 if either input is zero.
+
+```sql
+lcm(expression_x, expression_y)
+```
+
+###### Arguments
+
+- **expression_x**: First numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression_y**: Second numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `ln`
+
+Returns the natural logarithm of a number.
+
+```sql
+ln(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `log`
+
+Returns the base-x logarithm of a number. Can either provide a specified base, or if omitted then takes the base-10 of a number.
+
+```sql
+log(base, numeric_expression)
+log(numeric_expression)
+```
+
+###### Arguments
+
+- **base**: Base numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `log10`
+
+Returns the base-10 logarithm of a number.
+
+```sql
+log10(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `log2`
+
+Returns the base-2 logarithm of a number.
+
+```sql
+log2(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `nanvl`
+
+Returns the first argument if it's not _NaN_.
+Returns the second argument otherwise.
+
+```sql
+nanvl(expression_x, expression_y)
+```
+
+###### Arguments
+
+- **expression_x**: Numeric expression to return if it's not _NaN_. Can be a constant, column, or function, and any combination of arithmetic operators.
+- **expression_y**: Numeric expression to return if the first expression is _NaN_. Can be a constant, column, or function, and any combination of arithmetic operators.
+
+##### `pi`
+
+Returns an approximate value of π.
+
+```sql
+pi()
+```
+
+##### `pow`
+
+_Alias of [power](#power)._
+
+##### `power`
+
+Returns a base expression raised to the power of an exponent.
+
+```sql
+power(base, exponent)
+```
+
+###### Arguments
+
+- **base**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **exponent**: Exponent numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Aliases
+
+- pow
+
+##### `radians`
+
+Converts degrees to radians.
+
+```sql
+radians(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `random`
+
+Returns a random float value in the range [0, 1).
+The random seed is unique to each row.
+
+```sql
+random()
+```
+
+##### `round`
+
+Rounds a number to the nearest integer.
+
+```sql
+round(numeric_expression[, decimal_places])
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **decimal_places**: Optional. The number of decimal places to round to. Defaults to 0.
+
+##### `signum`
+
+Returns the sign of a number.
+Negative numbers return `-1`.
+Zero and positive numbers return `1`.
+
+```sql
+signum(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `sin`
+
+Returns the sine of a number.
+
+```sql
+sin(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `sinh`
+
+Returns the hyperbolic sine of a number.
+
+```sql
+sinh(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `sqrt`
+
+Returns the square root of a number.
+
+```sql
+sqrt(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `tan`
+
+Returns the tangent of a number.
+
+```sql
+tan(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `tanh`
+
+Returns the hyperbolic tangent of a number.
+
+```sql
+tanh(numeric_expression)
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `trunc`
+
+Truncates a number to a whole number or truncated to the specified decimal places.
+
+```sql
+trunc(numeric_expression[, decimal_places])
+```
+
+###### Arguments
+
+- **numeric_expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **decimal_places**: Optional. The number of decimal places to
+ truncate to. Defaults to 0 (truncate to a whole number). If
+ `decimal_places` is a positive integer, truncates digits to the
+ right of the decimal point. If `decimal_places` is a negative
+ integer, replaces digits to the left of the decimal point with `0`.
+
+### Conditional Functions
+
+- [coalesce](#coalesce)
+- [greatest](#greatest)
+- [ifnull](#ifnull)
+- [least](#least)
+- [nullif](#nullif)
+- [nvl](#nvl)
+- [nvl2](#nvl2)
+
+##### `coalesce`
+
+Returns the first of its arguments that is not _null_. Returns _null_ if all arguments are _null_. This function is often used to substitute a default value for _null_ values.
+
+```sql
+coalesce(expression1[, ..., expression_n])
+```
+
+###### Arguments
+
+- **expression1, expression_n**: Expression to use if previous expressions are _null_. Can be a constant, column, or function, and any combination of arithmetic operators. Pass as many expression arguments as necessary.
+
+###### Example
+
+```sql
+> select coalesce(null, null, 'datafusion');
++----------------------------------------+
+| coalesce(NULL,NULL,Utf8("datafusion")) |
++----------------------------------------+
+| datafusion |
++----------------------------------------+
+```
+
+##### `greatest`
+
+Returns the greatest value in a list of expressions. Returns _null_ if all expressions are _null_.
+
+```sql
+greatest(expression1[, ..., expression_n])
+```
+
+###### Arguments
+
+- **expression1, expression_n**: Expressions to compare and return the greatest value.. Can be a constant, column, or function, and any combination of arithmetic operators. Pass as many expression arguments as necessary.
+
+###### Example
+
+```sql
+> select greatest(4, 7, 5);
++---------------------------+
+| greatest(4,7,5) |
++---------------------------+
+| 7 |
++---------------------------+
+```
+
+##### `ifnull`
+
+_Alias of [nvl](#nvl)._
+
+##### `least`
+
+Returns the smallest value in a list of expressions. Returns _null_ if all expressions are _null_.
+
+```sql
+least(expression1[, ..., expression_n])
+```
+
+###### Arguments
+
+- **expression1, expression_n**: Expressions to compare and return the smallest value. Can be a constant, column, or function, and any combination of arithmetic operators. Pass as many expression arguments as necessary.
+
+###### Example
+
+```sql
+> select least(4, 7, 5);
++---------------------------+
+| least(4,7,5) |
++---------------------------+
+| 4 |
++---------------------------+
+```
+
+##### `nullif`
+
+Returns _null_ if _expression1_ equals _expression2_; otherwise it returns _expression1_.
+This can be used to perform the inverse operation of [`coalesce`](#coalesce).
+
+```sql
+nullif(expression1, expression2)
+```
+
+###### Arguments
+
+- **expression1**: Expression to compare and return if equal to expression2. Can be a constant, column, or function, and any combination of operators.
+- **expression2**: Expression to compare to expression1. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select nullif('datafusion', 'data');
++-----------------------------------------+
+| nullif(Utf8("datafusion"),Utf8("data")) |
++-----------------------------------------+
+| datafusion |
++-----------------------------------------+
+> select nullif('datafusion', 'datafusion');
++-----------------------------------------------+
+| nullif(Utf8("datafusion"),Utf8("datafusion")) |
++-----------------------------------------------+
+| |
++-----------------------------------------------+
+```
+
+##### `nvl`
+
+Returns _expression2_ if _expression1_ is NULL otherwise it returns _expression1_.
+
+```sql
+nvl(expression1, expression2)
+```
+
+###### Arguments
+
+- **expression1**: Expression to return if not null. Can be a constant, column, or function, and any combination of operators.
+- **expression2**: Expression to return if expr1 is null. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select nvl(null, 'a');
++---------------------+
+| nvl(NULL,Utf8("a")) |
++---------------------+
+| a |
++---------------------+\
+> select nvl('b', 'a');
++--------------------------+
+| nvl(Utf8("b"),Utf8("a")) |
++--------------------------+
+| b |
++--------------------------+
+```
+
+###### Aliases
+
+- ifnull
+
+##### `nvl2`
+
+Returns _expression2_ if _expression1_ is not NULL; otherwise it returns _expression3_.
+
+```sql
+nvl2(expression1, expression2, expression3)
+```
+
+###### Arguments
+
+- **expression1**: Expression to test for null. Can be a constant, column, or function, and any combination of operators.
+- **expression2**: Expression to return if expr1 is not null. Can be a constant, column, or function, and any combination of operators.
+- **expression3**: Expression to return if expr1 is null. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select nvl2(null, 'a', 'b');
++--------------------------------+
+| nvl2(NULL,Utf8("a"),Utf8("b")) |
++--------------------------------+
+| b |
++--------------------------------+
+> select nvl2('data', 'a', 'b');
++----------------------------------------+
+| nvl2(Utf8("data"),Utf8("a"),Utf8("b")) |
++----------------------------------------+
+| a |
++----------------------------------------+
+```
+
+### String Functions
+
+- [ascii](#ascii)
+- [bit_length](#bit_length)
+- [btrim](#btrim)
+- [char_length](#char_length)
+- [character_length](#character_length)
+- [chr](#chr)
+- [concat](#concat)
+- [concat_ws](#concat_ws)
+- [contains](#contains)
+- [ends_with](#ends_with)
+- [find_in_set](#find_in_set)
+- [initcap](#initcap)
+- [instr](#instr)
+- [left](#left)
+- [length](#length)
+- [levenshtein](#levenshtein)
+- [lower](#lower)
+- [lpad](#lpad)
+- [ltrim](#ltrim)
+- [octet_length](#octet_length)
+- [overlay](#overlay)
+- [position](#position)
+- [repeat](#repeat)
+- [replace](#replace)
+- [reverse](#reverse)
+- [right](#right)
+- [rpad](#rpad)
+- [rtrim](#rtrim)
+- [split_part](#split_part)
+- [starts_with](#starts_with)
+- [strpos](#strpos)
+- [substr](#substr)
+- [substr_index](#substr_index)
+- [substring](#substring)
+- [substring_index](#substring_index)
+- [to_hex](#to_hex)
+- [translate](#translate)
+- [trim](#trim)
+- [upper](#upper)
+- [uuid](#uuid)
+
+##### `ascii`
+
+Returns the Unicode character code of the first character in a string.
+
+```sql
+ascii(str)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select ascii('abc');
++--------------------+
+| ascii(Utf8("abc")) |
++--------------------+
+| 97 |
++--------------------+
+> select ascii('🚀');
++-------------------+
+| ascii(Utf8("🚀")) |
++-------------------+
+| 128640 |
++-------------------+
+```
+
+**Related functions**:
+
+- [chr](#chr)
+
+##### `bit_length`
+
+Returns the bit length of a string.
+
+```sql
+bit_length(str)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select bit_length('datafusion');
++--------------------------------+
+| bit_length(Utf8("datafusion")) |
++--------------------------------+
+| 80 |
++--------------------------------+
+```
+
+**Related functions**:
+
+- [length](#length)
+- [octet_length](#octet_length)
+
+##### `btrim`
+
+Trims the specified trim string from the start and end of a string. If no trim string is provided, all whitespace is removed from the start and end of the input string.
+
+```sql
+btrim(str[, trim_str])
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **trim_str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators. _Default is whitespace characters._
+
+###### Example
+
+```sql
+> select btrim('__datafusion____', '_');
++-------------------------------------------+
+| btrim(Utf8("__datafusion____"),Utf8("_")) |
++-------------------------------------------+
+| datafusion |
++-------------------------------------------+
+```
+
+###### Alternative Syntax
+
+```sql
+trim(BOTH trim_str FROM str)
+```
+
+```sql
+trim(trim_str FROM str)
+```
+
+###### Aliases
+
+- trim
+
+**Related functions**:
+
+- [ltrim](#ltrim)
+- [rtrim](#rtrim)
+
+##### `char_length`
+
+_Alias of [character_length](#character_length)._
+
+##### `character_length`
+
+Returns the number of characters in a string.
+
+```sql
+character_length(str)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select character_length('Ångström');
++------------------------------------+
+| character_length(Utf8("Ångström")) |
++------------------------------------+
+| 8 |
++------------------------------------+
+```
+
+###### Aliases
+
+- length
+- char_length
+
+**Related functions**:
+
+- [bit_length](#bit_length)
+- [octet_length](#octet_length)
+
+##### `chr`
+
+Returns the character with the specified ASCII or Unicode code value.
+
+```sql
+chr(expression)
+```
+
+###### Arguments
+
+- **expression**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select chr(128640);
++--------------------+
+| chr(Int64(128640)) |
++--------------------+
+| 🚀 |
++--------------------+
+```
+
+**Related functions**:
+
+- [ascii](#ascii)
+
+##### `concat`
+
+Concatenates multiple strings together.
+
+```sql
+concat(str[, ..., str_n])
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **str_n**: Subsequent string expressions to concatenate.
+
+###### Example
+
+```sql
+> select concat('data', 'f', 'us', 'ion');
++-------------------------------------------------------+
+| concat(Utf8("data"),Utf8("f"),Utf8("us"),Utf8("ion")) |
++-------------------------------------------------------+
+| datafusion |
++-------------------------------------------------------+
+```
+
+**Related functions**:
+
+- [concat_ws](#concat_ws)
+
+##### `concat_ws`
+
+Concatenates multiple strings together with a specified separator.
+
+```sql
+concat_ws(separator, str[, ..., str_n])
+```
+
+###### Arguments
+
+- **separator**: Separator to insert between concatenated strings.
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **str_n**: Subsequent string expressions to concatenate.
+
+###### Example
+
+```sql
+> select concat_ws('_', 'data', 'fusion');
++--------------------------------------------------+
+| concat_ws(Utf8("_"),Utf8("data"),Utf8("fusion")) |
++--------------------------------------------------+
+| data_fusion |
++--------------------------------------------------+
+```
+
+**Related functions**:
+
+- [concat](#concat)
+
+##### `contains`
+
+Return true if search_str is found within string (case-sensitive).
+
+```sql
+contains(str, search_str)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **search_str**: The string to search for in str.
+
+###### Example
+
+```sql
+> select contains('the quick brown fox', 'row');
++---------------------------------------------------+
+| contains(Utf8("the quick brown fox"),Utf8("row")) |
++---------------------------------------------------+
+| true |
++---------------------------------------------------+
+```
+
+##### `ends_with`
+
+Tests if a string ends with a substring.
+
+```sql
+ends_with(str, substr)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **substr**: Substring to test for.
+
+###### Example
+
+```sql
+> select ends_with('datafusion', 'soin');
++--------------------------------------------+
+| ends_with(Utf8("datafusion"),Utf8("soin")) |
++--------------------------------------------+
+| false |
++--------------------------------------------+
+> select ends_with('datafusion', 'sion');
++--------------------------------------------+
+| ends_with(Utf8("datafusion"),Utf8("sion")) |
++--------------------------------------------+
+| true |
++--------------------------------------------+
+```
+
+##### `find_in_set`
+
+Returns a value in the range of 1 to N if the string str is in the string list strlist consisting of N substrings.
+
+```sql
+find_in_set(str, strlist)
+```
+
+###### Arguments
+
+- **str**: String expression to find in strlist.
+- **strlist**: A string list is a string composed of substrings separated by , characters.
+
+###### Example
+
+```sql
+> select find_in_set('b', 'a,b,c,d');
++----------------------------------------+
+| find_in_set(Utf8("b"),Utf8("a,b,c,d")) |
++----------------------------------------+
+| 2 |
++----------------------------------------+
+```
+
+##### `initcap`
+
+Capitalizes the first character in each word in the input string. Words are delimited by non-alphanumeric characters.
+
+```sql
+initcap(str)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select initcap('apache datafusion');
++------------------------------------+
+| initcap(Utf8("apache datafusion")) |
++------------------------------------+
+| Apache Datafusion |
++------------------------------------+
+```
+
+**Related functions**:
+
+- [lower](#lower)
+- [upper](#upper)
+
+##### `instr`
+
+_Alias of [strpos](#strpos)._
+
+##### `left`
+
+Returns a specified number of characters from the left side of a string.
+
+```sql
+left(str, n)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **n**: Number of characters to return.
+
+###### Example
+
+```sql
+> select left('datafusion', 4);
++-----------------------------------+
+| left(Utf8("datafusion"),Int64(4)) |
++-----------------------------------+
+| data |
++-----------------------------------+
+```
+
+**Related functions**:
+
+- [right](#right)
+
+##### `length`
+
+_Alias of [character_length](#character_length)._
+
+##### `levenshtein`
+
+Returns the [`Levenshtein distance`](https://en.wikipedia.org/wiki/Levenshtein_distance) between the two given strings.
+
+```sql
+levenshtein(str1, str2)
+```
+
+###### Arguments
+
+- **str1**: String expression to compute Levenshtein distance with str2.
+- **str2**: String expression to compute Levenshtein distance with str1.
+
+###### Example
+
+```sql
+> select levenshtein('kitten', 'sitting');
++---------------------------------------------+
+| levenshtein(Utf8("kitten"),Utf8("sitting")) |
++---------------------------------------------+
+| 3 |
++---------------------------------------------+
+```
+
+##### `lower`
+
+Converts a string to lower-case.
+
+```sql
+lower(str)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select lower('Ångström');
++-------------------------+
+| lower(Utf8("Ångström")) |
++-------------------------+
+| ångström |
++-------------------------+
+```
+
+**Related functions**:
+
+- [initcap](#initcap)
+- [upper](#upper)
+
+##### `lpad`
+
+Pads the left side of a string with another string to a specified string length.
+
+```sql
+lpad(str, n[, padding_str])
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **n**: String length to pad to.
+- **padding_str**: Optional string expression to pad with. Can be a constant, column, or function, and any combination of string operators. _Default is a space._
+
+###### Example
+
+```sql
+> select lpad('Dolly', 10, 'hello');
++---------------------------------------------+
+| lpad(Utf8("Dolly"),Int64(10),Utf8("hello")) |
++---------------------------------------------+
+| helloDolly |
++---------------------------------------------+
+```
+
+**Related functions**:
+
+- [rpad](#rpad)
+
+##### `ltrim`
+
+Trims the specified trim string from the beginning of a string. If no trim string is provided, all whitespace is removed from the start of the input string.
+
+```sql
+ltrim(str[, trim_str])
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **trim_str**: String expression to trim from the beginning of the input string. Can be a constant, column, or function, and any combination of arithmetic operators. _Default is whitespace characters._
+
+###### Example
+
+```sql
+> select ltrim(' datafusion ');
++-------------------------------+
+| ltrim(Utf8(" datafusion ")) |
++-------------------------------+
+| datafusion |
++-------------------------------+
+> select ltrim('___datafusion___', '_');
++-------------------------------------------+
+| ltrim(Utf8("___datafusion___"),Utf8("_")) |
++-------------------------------------------+
+| datafusion___ |
++-------------------------------------------+
+```
+
+###### Alternative Syntax
+
+```sql
+trim(LEADING trim_str FROM str)
+```
+
+**Related functions**:
+
+- [btrim](#btrim)
+- [rtrim](#rtrim)
+
+##### `octet_length`
+
+Returns the length of a string in bytes.
+
+```sql
+octet_length(str)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select octet_length('Ångström');
++--------------------------------+
+| octet_length(Utf8("Ångström")) |
++--------------------------------+
+| 10 |
++--------------------------------+
+```
+
+**Related functions**:
+
+- [bit_length](#bit_length)
+- [length](#length)
+
+##### `overlay`
+
+Returns the string which is replaced by another string from the specified position and specified count length.
+
+```sql
+overlay(str PLACING substr FROM pos [FOR count])
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **substr**: Substring to replace in str.
+- **pos**: The start position to start the replace in str.
+- **count**: The count of characters to be replaced from start position of str. If not specified, will use substr length instead.
+
+###### Example
+
+```sql
+> select overlay('Txxxxas' placing 'hom' from 2 for 4);
++--------------------------------------------------------+
+| overlay(Utf8("Txxxxas"),Utf8("hom"),Int64(2),Int64(4)) |
++--------------------------------------------------------+
+| Thomas |
++--------------------------------------------------------+
+```
+
+##### `position`
+
+_Alias of [strpos](#strpos)._
+
+##### `repeat`
+
+Returns a string with an input string repeated a specified number.
+
+```sql
+repeat(str, n)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **n**: Number of times to repeat the input string.
+
+###### Example
+
+```sql
+> select repeat('data', 3);
++-------------------------------+
+| repeat(Utf8("data"),Int64(3)) |
++-------------------------------+
+| datadatadata |
++-------------------------------+
+```
+
+##### `replace`
+
+Replaces all occurrences of a specified substring in a string with a new substring.
+
+```sql
+replace(str, substr, replacement)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **substr**: Substring expression to replace in the input string. Substring expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **replacement**: Replacement substring expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select replace('ABabbaBA', 'ab', 'cd');
++-------------------------------------------------+
+| replace(Utf8("ABabbaBA"),Utf8("ab"),Utf8("cd")) |
++-------------------------------------------------+
+| ABcdbaBA |
++-------------------------------------------------+
+```
+
+##### `reverse`
+
+Reverses the character order of a string.
+
+```sql
+reverse(str)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select reverse('datafusion');
++-----------------------------+
+| reverse(Utf8("datafusion")) |
++-----------------------------+
+| noisufatad |
++-----------------------------+
+```
+
+##### `right`
+
+Returns a specified number of characters from the right side of a string.
+
+```sql
+right(str, n)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **n**: Number of characters to return.
+
+###### Example
+
+```sql
+> select right('datafusion', 6);
++------------------------------------+
+| right(Utf8("datafusion"),Int64(6)) |
++------------------------------------+
+| fusion |
++------------------------------------+
+```
+
+**Related functions**:
+
+- [left](#left)
+
+##### `rpad`
+
+Pads the right side of a string with another string to a specified string length.
+
+```sql
+rpad(str, n[, padding_str])
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **n**: String length to pad to.
+- **padding_str**: String expression to pad with. Can be a constant, column, or function, and any combination of string operators. _Default is a space._
+
+###### Example
+
+```sql
+> select rpad('datafusion', 20, '_-');
++-----------------------------------------------+
+| rpad(Utf8("datafusion"),Int64(20),Utf8("_-")) |
++-----------------------------------------------+
+| datafusion_-_-_-_-_- |
++-----------------------------------------------+
+```
+
+**Related functions**:
+
+- [lpad](#lpad)
+
+##### `rtrim`
+
+Trims the specified trim string from the end of a string. If no trim string is provided, all whitespace is removed from the end of the input string.
+
+```sql
+rtrim(str[, trim_str])
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **trim_str**: String expression to trim from the end of the input string. Can be a constant, column, or function, and any combination of arithmetic operators. _Default is whitespace characters._
+
+###### Example
+
+```sql
+> select rtrim(' datafusion ');
++-------------------------------+
+| rtrim(Utf8(" datafusion ")) |
++-------------------------------+
+| datafusion |
++-------------------------------+
+> select rtrim('___datafusion___', '_');
++-------------------------------------------+
+| rtrim(Utf8("___datafusion___"),Utf8("_")) |
++-------------------------------------------+
+| ___datafusion |
++-------------------------------------------+
+```
+
+###### Alternative Syntax
+
+```sql
+trim(TRAILING trim_str FROM str)
+```
+
+**Related functions**:
+
+- [btrim](#btrim)
+- [ltrim](#ltrim)
+
+##### `split_part`
+
+Splits a string based on a specified delimiter and returns the substring in the specified position.
+
+```sql
+split_part(str, delimiter, pos)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **delimiter**: String or character to split on.
+- **pos**: Position of the part to return.
+
+###### Example
+
+```sql
+> select split_part('1.2.3.4.5', '.', 3);
++--------------------------------------------------+
+| split_part(Utf8("1.2.3.4.5"),Utf8("."),Int64(3)) |
++--------------------------------------------------+
+| 3 |
++--------------------------------------------------+
+```
+
+##### `starts_with`
+
+Tests if a string starts with a substring.
+
+```sql
+starts_with(str, substr)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **substr**: Substring to test for.
+
+###### Example
+
+```sql
+> select starts_with('datafusion','data');
++----------------------------------------------+
+| starts_with(Utf8("datafusion"),Utf8("data")) |
++----------------------------------------------+
+| true |
++----------------------------------------------+
+```
+
+##### `strpos`
+
+Returns the starting position of a specified substring in a string. Positions begin at 1. If the substring does not exist in the string, the function returns 0.
+
+```sql
+strpos(str, substr)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **substr**: Substring expression to search for.
+
+###### Example
+
+```sql
+> select strpos('datafusion', 'fus');
++----------------------------------------+
+| strpos(Utf8("datafusion"),Utf8("fus")) |
++----------------------------------------+
+| 5 |
++----------------------------------------+
+```
+
+###### Alternative Syntax
+
+```sql
+position(substr in origstr)
+```
+
+###### Aliases
+
+- instr
+- position
+
+##### `substr`
+
+Extracts a substring of a specified number of characters from a specific starting position in a string.
+
+```sql
+substr(str, start_pos[, length])
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **start_pos**: Character position to start the substring at. The first character in the string has a position of 1.
+- **length**: Number of characters to extract. If not specified, returns the rest of the string after the start position.
+
+###### Example
+
+```sql
+> select substr('datafusion', 5, 3);
++----------------------------------------------+
+| substr(Utf8("datafusion"),Int64(5),Int64(3)) |
++----------------------------------------------+
+| fus |
++----------------------------------------------+
+```
+
+###### Alternative Syntax
+
+```sql
+substring(str from start_pos for length)
+```
+
+###### Aliases
+
+- substring
+
+##### `substr_index`
+
+Returns the substring from str before count occurrences of the delimiter delim.
+If count is positive, everything to the left of the final delimiter (counting from the left) is returned.
+If count is negative, everything to the right of the final delimiter (counting from the right) is returned.
+
+```sql
+substr_index(str, delim, count)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **delim**: The string to find in str to split str.
+- **count**: The number of times to search for the delimiter. Can be either a positive or negative number.
+
+###### Example
+
+```sql
+> select substr_index('www.apache.org', '.', 1);
++---------------------------------------------------------+
+| substr_index(Utf8("www.apache.org"),Utf8("."),Int64(1)) |
++---------------------------------------------------------+
+| www |
++---------------------------------------------------------+
+> select substr_index('www.apache.org', '.', -1);
++----------------------------------------------------------+
+| substr_index(Utf8("www.apache.org"),Utf8("."),Int64(-1)) |
++----------------------------------------------------------+
+| org |
++----------------------------------------------------------+
+```
+
+###### Aliases
+
+- substring_index
+
+##### `substring`
+
+_Alias of [substr](#substr)._
+
+##### `substring_index`
+
+_Alias of [substr_index](#substr_index)._
+
+##### `to_hex`
+
+Converts an integer to a hexadecimal string.
+
+```sql
+to_hex(int)
+```
+
+###### Arguments
+
+- **int**: Integer expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select to_hex(12345689);
++-------------------------+
+| to_hex(Int64(12345689)) |
++-------------------------+
+| bc6159 |
++-------------------------+
+```
+
+##### `translate`
+
+Translates characters in a string to specified translation characters.
+
+```sql
+translate(str, chars, translation)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **chars**: Characters to translate.
+- **translation**: Translation characters. Translation characters replace only characters at the same position in the **chars** string.
+
+###### Example
+
+```sql
+> select translate('twice', 'wic', 'her');
++--------------------------------------------------+
+| translate(Utf8("twice"),Utf8("wic"),Utf8("her")) |
++--------------------------------------------------+
+| there |
++--------------------------------------------------+
+```
+
+##### `trim`
+
+_Alias of [btrim](#btrim)._
+
+##### `upper`
+
+Converts a string to upper-case.
+
+```sql
+upper(str)
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select upper('dataFusion');
++---------------------------+
+| upper(Utf8("dataFusion")) |
++---------------------------+
+| DATAFUSION |
++---------------------------+
+```
+
+**Related functions**:
+
+- [initcap](#initcap)
+- [lower](#lower)
+
+##### `uuid`
+
+Returns [`UUID v4`]() string value which is unique per row.
+
+```sql
+uuid()
+```
+
+###### Example
+
+```sql
+> select uuid();
++--------------------------------------+
+| uuid() |
++--------------------------------------+
+| 6ec17ef8-1934-41cc-8d59-d0c8f9eea1f0 |
++--------------------------------------+
+```
+
+### Binary String Functions
+
+- [decode](#decode)
+- [encode](#encode)
+
+##### `decode`
+
+Decode binary data from textual representation in string.
+
+```sql
+decode(expression, format)
+```
+
+###### Arguments
+
+- **expression**: Expression containing encoded string data
+- **format**: Same arguments as [encode](#encode)
+
+**Related functions**:
+
+- [encode](#encode)
+
+##### `encode`
+
+Encode binary data into a textual representation.
+
+```sql
+encode(expression, format)
+```
+
+###### Arguments
+
+- **expression**: Expression containing string or binary data
+- **format**: Supported formats are: `base64`, `hex`
+
+**Related functions**:
+
+- [decode](#decode)
+
+### Regular Expression Functions
+
+Apache DataFusion uses a [PCRE-like](https://en.wikibooks.org/wiki/Regular_Expressions/Perl-Compatible_Regular_Expressions)
+regular expression [syntax](https://docs.rs/regex/latest/regex/#syntax)
+(minus support for several features including look-around and backreferences).
+The following regular expression functions are supported:
+
+- [regexp_count](#regexp_count)
+- [regexp_like](#regexp_like)
+- [regexp_match](#regexp_match)
+- [regexp_replace](#regexp_replace)
+
+##### `regexp_count`
+
+Returns the number of matches that a [regular expression](https://docs.rs/regex/latest/regex/#syntax) has in a string.
+
+```sql
+regexp_count(str, regexp[, start, flags])
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **regexp**: Regular expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **start**: - **start**: Optional start position (the first position is 1) to search for the regular expression. Can be a constant, column, or function.
+- **flags**: Optional regular expression flags that control the behavior of the regular expression. The following flags are supported:
+ - **i**: case-insensitive: letters match both upper and lower case
+ - **m**: multi-line mode: ^ and $ match begin/end of line
+ - **s**: allow . to match \n
+ - **R**: enables CRLF mode: when multi-line mode is enabled, \r\n is used
+ - **U**: swap the meaning of x* and x*?
+
+###### Example
+
+```sql
+> select regexp_count('abcAbAbc', 'abc', 2, 'i');
++---------------------------------------------------------------+
+| regexp_count(Utf8("abcAbAbc"),Utf8("abc"),Int64(2),Utf8("i")) |
++---------------------------------------------------------------+
+| 1 |
++---------------------------------------------------------------+
+```
+
+##### `regexp_like`
+
+Returns true if a [regular expression](https://docs.rs/regex/latest/regex/#syntax) has at least one match in a string, false otherwise.
+
+```sql
+regexp_like(str, regexp[, flags])
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **regexp**: Regular expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **flags**: Optional regular expression flags that control the behavior of the regular expression. The following flags are supported:
+ - **i**: case-insensitive: letters match both upper and lower case
+ - **m**: multi-line mode: ^ and $ match begin/end of line
+ - **s**: allow . to match \n
+ - **R**: enables CRLF mode: when multi-line mode is enabled, \r\n is used
+ - **U**: swap the meaning of x* and x*?
+
+###### Example
+
+```sql
+select regexp_like('Köln', '[a-zA-Z]ö[a-zA-Z]{2}');
++--------------------------------------------------------+
+| regexp_like(Utf8("Köln"),Utf8("[a-zA-Z]ö[a-zA-Z]{2}")) |
++--------------------------------------------------------+
+| true |
++--------------------------------------------------------+
+SELECT regexp_like('aBc', '(b|d)', 'i');
++--------------------------------------------------+
+| regexp_like(Utf8("aBc"),Utf8("(b|d)"),Utf8("i")) |
++--------------------------------------------------+
+| true |
++--------------------------------------------------+
+```
+
+Additional examples can be found [here](https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/regexp.rs)
+
+##### `regexp_match`
+
+Returns the first [regular expression](https://docs.rs/regex/latest/regex/#syntax) matches in a string.
+
+```sql
+regexp_match(str, regexp[, flags])
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **regexp**: Regular expression to match against.
+ Can be a constant, column, or function.
+- **flags**: Optional regular expression flags that control the behavior of the regular expression. The following flags are supported:
+ - **i**: case-insensitive: letters match both upper and lower case
+ - **m**: multi-line mode: ^ and $ match begin/end of line
+ - **s**: allow . to match \n
+ - **R**: enables CRLF mode: when multi-line mode is enabled, \r\n is used
+ - **U**: swap the meaning of x* and x*?
+
+###### Example
+
+```sql
+ > select regexp_match('Köln', '[a-zA-Z]ö[a-zA-Z]{2}');
+ +---------------------------------------------------------+
+ | regexp_match(Utf8("Köln"),Utf8("[a-zA-Z]ö[a-zA-Z]{2}")) |
+ +---------------------------------------------------------+
+ | [Köln] |
+ +---------------------------------------------------------+
+ SELECT regexp_match('aBc', '(b|d)', 'i');
+ +---------------------------------------------------+
+ | regexp_match(Utf8("aBc"),Utf8("(b|d)"),Utf8("i")) |
+ +---------------------------------------------------+
+ | [B] |
+ +---------------------------------------------------+
+```
+
+Additional examples can be found [here](https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/regexp.rs)
+
+##### `regexp_replace`
+
+Replaces substrings in a string that match a [regular expression](https://docs.rs/regex/latest/regex/#syntax).
+
+```sql
+regexp_replace(str, regexp, replacement[, flags])
+```
+
+###### Arguments
+
+- **str**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **regexp**: Regular expression to match against.
+ Can be a constant, column, or function.
+- **replacement**: Replacement string expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **flags**: Optional regular expression flags that control the behavior of the regular expression. The following flags are supported:
+- **g**: (global) Search globally and don't return after the first match
+- **i**: case-insensitive: letters match both upper and lower case
+- **m**: multi-line mode: ^ and $ match begin/end of line
+- **s**: allow . to match \n
+- **R**: enables CRLF mode: when multi-line mode is enabled, \r\n is used
+- **U**: swap the meaning of x* and x*?
+
+###### Example
+
+```sql
+> select regexp_replace('foobarbaz', 'b(..)', 'X\\1Y', 'g');
++------------------------------------------------------------------------+
+| regexp_replace(Utf8("foobarbaz"),Utf8("b(..)"),Utf8("X\1Y"),Utf8("g")) |
++------------------------------------------------------------------------+
+| fooXarYXazY |
++------------------------------------------------------------------------+
+SELECT regexp_replace('aBc', '(b|d)', 'Ab\\1a', 'i');
++-------------------------------------------------------------------+
+| regexp_replace(Utf8("aBc"),Utf8("(b|d)"),Utf8("Ab\1a"),Utf8("i")) |
++-------------------------------------------------------------------+
+| aAbBac |
++-------------------------------------------------------------------+
+```
+
+Additional examples can be found [here](https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/regexp.rs)
+
+### Time and Date Functions
+
+- [current_date](#current_date)
+- [current_time](#current_time)
+- [current_timestamp](#current_timestamp)
+- [date_bin](#date_bin)
+- [date_format](#date_format)
+- [date_part](#date_part)
+- [date_trunc](#date_trunc)
+- [datepart](#datepart)
+- [datetrunc](#datetrunc)
+- [from_unixtime](#from_unixtime)
+- [make_date](#make_date)
+- [now](#now)
+- [to_char](#to_char)
+- [to_date](#to_date)
+- [to_local_time](#to_local_time)
+- [to_timestamp](#to_timestamp)
+- [to_timestamp_micros](#to_timestamp_micros)
+- [to_timestamp_millis](#to_timestamp_millis)
+- [to_timestamp_nanos](#to_timestamp_nanos)
+- [to_timestamp_seconds](#to_timestamp_seconds)
+- [to_unixtime](#to_unixtime)
+- [today](#today)
+
+##### `current_date`
+
+Returns the current UTC date.
+
+The `current_date()` return value is determined at query time and will return the same date, no matter when in the query plan the function executes.
+
+```sql
+current_date()
+```
+
+###### Aliases
+
+- today
+
+##### `current_time`
+
+Returns the current UTC time.
+
+The `current_time()` return value is determined at query time and will return the same time, no matter when in the query plan the function executes.
+
+```sql
+current_time()
+```
+
+##### `current_timestamp`
+
+_Alias of [now](#now)._
+
+##### `date_bin`
+
+Calculates time intervals and returns the start of the interval nearest to the specified timestamp. Use `date_bin` to downsample time series data by grouping rows into time-based "bins" or "windows" and applying an aggregate or selector function to each window.
+
+For example, if you "bin" or "window" data into 15 minute intervals, an input timestamp of `2023-01-01T18:18:18Z` will be updated to the start time of the 15 minute bin it is in: `2023-01-01T18:15:00Z`.
+
+```sql
+date_bin(interval, expression, origin-timestamp)
+```
+
+###### Arguments
+
+- **interval**: Bin interval.
+- **expression**: Time expression to operate on. Can be a constant, column, or function.
+- **origin-timestamp**: Optional. Starting point used to determine bin boundaries. If not specified defaults 1970-01-01T00:00:00Z (the UNIX epoch in UTC). The following intervals are supported:
+
+ - nanoseconds
+ - microseconds
+ - milliseconds
+ - seconds
+ - minutes
+ - hours
+ - days
+ - weeks
+ - months
+ - years
+ - century
+
+###### Example
+
+```sql
+-- Bin the timestamp into 1 day intervals
+> SELECT date_bin(interval '1 day', time) as bin
+FROM VALUES ('2023-01-01T18:18:18Z'), ('2023-01-03T19:00:03Z') t(time);
++---------------------+
+| bin |
++---------------------+
+| 2023-01-01T00:00:00 |
+| 2023-01-03T00:00:00 |
++---------------------+
+2 row(s) fetched.
+
+-- Bin the timestamp into 1 day intervals starting at 3AM on 2023-01-01
+> SELECT date_bin(interval '1 day', time, '2023-01-01T03:00:00') as bin
+FROM VALUES ('2023-01-01T18:18:18Z'), ('2023-01-03T19:00:03Z') t(time);
++---------------------+
+| bin |
++---------------------+
+| 2023-01-01T03:00:00 |
+| 2023-01-03T03:00:00 |
++---------------------+
+2 row(s) fetched.
+```
+
+##### `date_format`
+
+_Alias of [to_char](#to_char)._
+
+##### `date_part`
+
+Returns the specified part of the date as an integer.
+
+```sql
+date_part(part, expression)
+```
+
+###### Arguments
+
+- **part**: Part of the date to return. The following date parts are supported:
+
+ - year
+ - quarter (emits value in inclusive range [1, 4] based on which quartile of the year the date is in)
+ - month
+ - week (week of the year)
+ - day (day of the month)
+ - hour
+ - minute
+ - second
+ - millisecond
+ - microsecond
+ - nanosecond
+ - dow (day of the week)
+ - doy (day of the year)
+ - epoch (seconds since Unix epoch)
+
+- **expression**: Time expression to operate on. Can be a constant, column, or function.
+
+###### Alternative Syntax
+
+```sql
+extract(field FROM source)
+```
+
+###### Aliases
+
+- datepart
+
+##### `date_trunc`
+
+Truncates a timestamp value to a specified precision.
+
+```sql
+date_trunc(precision, expression)
+```
+
+###### Arguments
+
+- **precision**: Time precision to truncate to. The following precisions are supported:
+
+ - year / YEAR
+ - quarter / QUARTER
+ - month / MONTH
+ - week / WEEK
+ - day / DAY
+ - hour / HOUR
+ - minute / MINUTE
+ - second / SECOND
+
+- **expression**: Time expression to operate on. Can be a constant, column, or function.
+
+###### Aliases
+
+- datetrunc
+
+##### `datepart`
+
+_Alias of [date_part](#date_part)._
+
+##### `datetrunc`
+
+_Alias of [date_trunc](#date_trunc)._
+
+##### `from_unixtime`
+
+Converts an integer to RFC3339 timestamp format (`YYYY-MM-DDT00:00:00.000000000Z`). Integers and unsigned integers are interpreted as seconds since the unix epoch (`1970-01-01T00:00:00Z`) return the corresponding timestamp.
+
+```sql
+from_unixtime(expression[, timezone])
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **timezone**: Optional timezone to use when converting the integer to a timestamp. If not provided, the default timezone is UTC.
+
+###### Example
+
+```sql
+> select from_unixtime(1599572549, 'America/New_York');
++-----------------------------------------------------------+
+| from_unixtime(Int64(1599572549),Utf8("America/New_York")) |
++-----------------------------------------------------------+
+| 2020-09-08T09:42:29-04:00 |
++-----------------------------------------------------------+
+```
+
+##### `make_date`
+
+Make a date from year/month/day component parts.
+
+```sql
+make_date(year, month, day)
+```
+
+###### Arguments
+
+- **year**: Year to use when making the date. Can be a constant, column or function, and any combination of arithmetic operators.
+- **month**: Month to use when making the date. Can be a constant, column or function, and any combination of arithmetic operators.
+- **day**: Day to use when making the date. Can be a constant, column or function, and any combination of arithmetic operators.
+
+###### Example
+
+```sql
+> select make_date(2023, 1, 31);
++-------------------------------------------+
+| make_date(Int64(2023),Int64(1),Int64(31)) |
++-------------------------------------------+
+| 2023-01-31 |
++-------------------------------------------+
+> select make_date('2023', '01', '31');
++-----------------------------------------------+
+| make_date(Utf8("2023"),Utf8("01"),Utf8("31")) |
++-----------------------------------------------+
+| 2023-01-31 |
++-----------------------------------------------+
+```
+
+Additional examples can be found [here](https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/make_date.rs)
+
+##### `now`
+
+Returns the current UTC timestamp.
+
+The `now()` return value is determined at query time and will return the same timestamp, no matter when in the query plan the function executes.
+
+```sql
+now()
+```
+
+###### Aliases
+
+- current_timestamp
+
+##### `to_char`
+
+Returns a string representation of a date, time, timestamp or duration based on a [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html). Unlike the PostgreSQL equivalent of this function numerical formatting is not supported.
+
+```sql
+to_char(expression, format)
+```
+
+###### Arguments
+
+- **expression**: Expression to operate on. Can be a constant, column, or function that results in a date, time, timestamp or duration.
+- **format**: A [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) string to use to convert the expression.
+- **day**: Day to use when making the date. Can be a constant, column or function, and any combination of arithmetic operators.
+
+###### Example
+
+```sql
+> select to_char('2023-03-01'::date, '%d-%m-%Y');
++----------------------------------------------+
+| to_char(Utf8("2023-03-01"),Utf8("%d-%m-%Y")) |
++----------------------------------------------+
+| 01-03-2023 |
++----------------------------------------------+
+```
+
+Additional examples can be found [here](https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/to_char.rs)
+
+###### Aliases
+
+- date_format
+
+##### `to_date`
+
+Converts a value to a date (`YYYY-MM-DD`).
+Supports strings, integer and double types as input.
+Strings are parsed as YYYY-MM-DD (e.g. '2023-07-20') if no [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html)s are provided.
+Integers and doubles are interpreted as days since the unix epoch (`1970-01-01T00:00:00Z`).
+Returns the corresponding date.
+
+Note: `to_date` returns Date32, which represents its values as the number of days since unix epoch(`1970-01-01`) stored as signed 32 bit value. The largest supported date value is `9999-12-31`.
+
+```sql
+to_date('2017-05-31', '%Y-%m-%d')
+```
+
+###### Arguments
+
+- **expression**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **format_n**: Optional [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) strings to use to parse the expression. Formats will be tried in the order
+ they appear with the first successful one being returned. If none of the formats successfully parse the expression
+ an error will be returned.
+
+###### Example
+
+```sql
+> select to_date('2023-01-31');
++-------------------------------+
+| to_date(Utf8("2023-01-31")) |
++-------------------------------+
+| 2023-01-31 |
++-------------------------------+
+> select to_date('2023/01/31', '%Y-%m-%d', '%Y/%m/%d');
++---------------------------------------------------------------------+
+| to_date(Utf8("2023/01/31"),Utf8("%Y-%m-%d"),Utf8("%Y/%m/%d")) |
++---------------------------------------------------------------------+
+| 2023-01-31 |
++---------------------------------------------------------------------+
+```
+
+Additional examples can be found [here](https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/to_date.rs)
+
+##### `to_local_time`
+
+Converts a timestamp with a timezone to a timestamp without a timezone (with no offset or timezone information). This function handles daylight saving time changes.
+
+```sql
+to_local_time(expression)
+```
+
+###### Arguments
+
+- **expression**: Time expression to operate on. Can be a constant, column, or function.
+
+###### Example
+
+```sql
+> SELECT to_local_time('2024-04-01T00:00:20Z'::timestamp);
++---------------------------------------------+
+| to_local_time(Utf8("2024-04-01T00:00:20Z")) |
++---------------------------------------------+
+| 2024-04-01T00:00:20 |
++---------------------------------------------+
+
+> SELECT to_local_time('2024-04-01T00:00:20Z'::timestamp AT TIME ZONE 'Europe/Brussels');
++---------------------------------------------+
+| to_local_time(Utf8("2024-04-01T00:00:20Z")) |
++---------------------------------------------+
+| 2024-04-01T00:00:20 |
++---------------------------------------------+
+
+> SELECT
+ time,
+ arrow_typeof(time) as type,
+ to_local_time(time) as to_local_time,
+ arrow_typeof(to_local_time(time)) as to_local_time_type
+FROM (
+ SELECT '2024-04-01T00:00:20Z'::timestamp AT TIME ZONE 'Europe/Brussels' AS time
+);
++---------------------------+------------------------------------------------+---------------------+-----------------------------+
+| time | type | to_local_time | to_local_time_type |
++---------------------------+------------------------------------------------+---------------------+-----------------------------+
+| 2024-04-01T00:00:20+02:00 | Timestamp(Nanosecond, Some("Europe/Brussels")) | 2024-04-01T00:00:20 | Timestamp(Nanosecond, None) |
++---------------------------+------------------------------------------------+---------------------+-----------------------------+
+
+## combine `to_local_time()` with `date_bin()` to bin on boundaries in the timezone rather
+## than UTC boundaries
+
+> SELECT date_bin(interval '1 day', to_local_time('2024-04-01T00:00:20Z'::timestamp AT TIME ZONE 'Europe/Brussels')) AS date_bin;
++---------------------+
+| date_bin |
++---------------------+
+| 2024-04-01T00:00:00 |
++---------------------+
+
+> SELECT date_bin(interval '1 day', to_local_time('2024-04-01T00:00:20Z'::timestamp AT TIME ZONE 'Europe/Brussels')) AT TIME ZONE 'Europe/Brussels' AS date_bin_with_timezone;
++---------------------------+
+| date_bin_with_timezone |
++---------------------------+
+| 2024-04-01T00:00:00+02:00 |
++---------------------------+
+```
+
+##### `to_timestamp`
+
+Converts a value to a timestamp (`YYYY-MM-DDT00:00:00Z`). Supports strings, integer, unsigned integer, and double types as input. Strings are parsed as RFC3339 (e.g. '2023-07-20T05:44:00') if no [Chrono formats] are provided. Integers, unsigned integers, and doubles are interpreted as seconds since the unix epoch (`1970-01-01T00:00:00Z`). Returns the corresponding timestamp.
+
+Note: `to_timestamp` returns `Timestamp(Nanosecond)`. The supported range for integer input is between `-9223372037` and `9223372036`. Supported range for string input is between `1677-09-21T00:12:44.0` and `2262-04-11T23:47:16.0`. Please use `to_timestamp_seconds` for the input outside of supported bounds.
+
+```sql
+to_timestamp(expression[, ..., format_n])
+```
+
+###### Arguments
+
+- **expression**: Expression to operate on. Can be a constant, column, or function, and any combination of arithmetic operators.
+- **format_n**: Optional [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) strings to use to parse the expression. Formats will be tried in the order they appear with the first successful one being returned. If none of the formats successfully parse the expression an error will be returned.
+
+###### Example
+
+```sql
+> select to_timestamp('2023-01-31T09:26:56.123456789-05:00');
++-----------------------------------------------------------+
+| to_timestamp(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
++-----------------------------------------------------------+
+| 2023-01-31T14:26:56.123456789 |
++-----------------------------------------------------------+
+> select to_timestamp('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
++--------------------------------------------------------------------------------------------------------+
+| to_timestamp(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
++--------------------------------------------------------------------------------------------------------+
+| 2023-05-17T03:59:00.123456789 |
++--------------------------------------------------------------------------------------------------------+
+```
+
+Additional examples can be found [here](https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/to_timestamp.rs)
+
+##### `to_timestamp_micros`
+
+Converts a value to a timestamp (`YYYY-MM-DDT00:00:00.000000Z`). Supports strings, integer, and unsigned integer types as input. Strings are parsed as RFC3339 (e.g. '2023-07-20T05:44:00') if no [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html)s are provided. Integers and unsigned integers are interpreted as microseconds since the unix epoch (`1970-01-01T00:00:00Z`) Returns the corresponding timestamp.
+
+```sql
+to_timestamp_micros(expression[, ..., format_n])
+```
+
+###### Arguments
+
+- **expression**: Expression to operate on. Can be a constant, column, or function, and any combination of arithmetic operators.
+- **format_n**: Optional [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) strings to use to parse the expression. Formats will be tried in the order they appear with the first successful one being returned. If none of the formats successfully parse the expression an error will be returned.
+
+###### Example
+
+```sql
+> select to_timestamp_micros('2023-01-31T09:26:56.123456789-05:00');
++------------------------------------------------------------------+
+| to_timestamp_micros(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
++------------------------------------------------------------------+
+| 2023-01-31T14:26:56.123456 |
++------------------------------------------------------------------+
+> select to_timestamp_micros('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
++---------------------------------------------------------------------------------------------------------------+
+| to_timestamp_micros(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
++---------------------------------------------------------------------------------------------------------------+
+| 2023-05-17T03:59:00.123456 |
++---------------------------------------------------------------------------------------------------------------+
+```
+
+Additional examples can be found [here](https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/to_timestamp.rs)
+
+##### `to_timestamp_millis`
+
+Converts a value to a timestamp (`YYYY-MM-DDT00:00:00.000Z`). Supports strings, integer, and unsigned integer types as input. Strings are parsed as RFC3339 (e.g. '2023-07-20T05:44:00') if no [Chrono formats](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) are provided. Integers and unsigned integers are interpreted as milliseconds since the unix epoch (`1970-01-01T00:00:00Z`). Returns the corresponding timestamp.
+
+```sql
+to_timestamp_millis(expression[, ..., format_n])
+```
+
+###### Arguments
+
+- **expression**: Expression to operate on. Can be a constant, column, or function, and any combination of arithmetic operators.
+- **format_n**: Optional [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) strings to use to parse the expression. Formats will be tried in the order they appear with the first successful one being returned. If none of the formats successfully parse the expression an error will be returned.
+
+###### Example
+
+```sql
+> select to_timestamp_millis('2023-01-31T09:26:56.123456789-05:00');
++------------------------------------------------------------------+
+| to_timestamp_millis(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
++------------------------------------------------------------------+
+| 2023-01-31T14:26:56.123 |
++------------------------------------------------------------------+
+> select to_timestamp_millis('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
++---------------------------------------------------------------------------------------------------------------+
+| to_timestamp_millis(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
++---------------------------------------------------------------------------------------------------------------+
+| 2023-05-17T03:59:00.123 |
++---------------------------------------------------------------------------------------------------------------+
+```
+
+Additional examples can be found [here](https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/to_timestamp.rs)
+
+##### `to_timestamp_nanos`
+
+Converts a value to a timestamp (`YYYY-MM-DDT00:00:00.000000000Z`). Supports strings, integer, and unsigned integer types as input. Strings are parsed as RFC3339 (e.g. '2023-07-20T05:44:00') if no [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html)s are provided. Integers and unsigned integers are interpreted as nanoseconds since the unix epoch (`1970-01-01T00:00:00Z`). Returns the corresponding timestamp.
+
+```sql
+to_timestamp_nanos(expression[, ..., format_n])
+```
+
+###### Arguments
+
+- **expression**: Expression to operate on. Can be a constant, column, or function, and any combination of arithmetic operators.
+- **format_n**: Optional [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) strings to use to parse the expression. Formats will be tried in the order they appear with the first successful one being returned. If none of the formats successfully parse the expression an error will be returned.
+
+###### Example
+
+```sql
+> select to_timestamp_nanos('2023-01-31T09:26:56.123456789-05:00');
++-----------------------------------------------------------------+
+| to_timestamp_nanos(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
++-----------------------------------------------------------------+
+| 2023-01-31T14:26:56.123456789 |
++-----------------------------------------------------------------+
+> select to_timestamp_nanos('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
++--------------------------------------------------------------------------------------------------------------+
+| to_timestamp_nanos(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
++--------------------------------------------------------------------------------------------------------------+
+| 2023-05-17T03:59:00.123456789 |
++---------------------------------------------------------------------------------------------------------------+
+```
+
+Additional examples can be found [here](https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/to_timestamp.rs)
+
+##### `to_timestamp_seconds`
+
+Converts a value to a timestamp (`YYYY-MM-DDT00:00:00.000Z`). Supports strings, integer, and unsigned integer types as input. Strings are parsed as RFC3339 (e.g. '2023-07-20T05:44:00') if no [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html)s are provided. Integers and unsigned integers are interpreted as seconds since the unix epoch (`1970-01-01T00:00:00Z`). Returns the corresponding timestamp.
+
+```sql
+to_timestamp_seconds(expression[, ..., format_n])
+```
+
+###### Arguments
+
+- **expression**: Expression to operate on. Can be a constant, column, or function, and any combination of arithmetic operators.
+- **format_n**: Optional [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) strings to use to parse the expression. Formats will be tried in the order they appear with the first successful one being returned. If none of the formats successfully parse the expression an error will be returned.
+
+###### Example
+
+```sql
+> select to_timestamp_seconds('2023-01-31T09:26:56.123456789-05:00');
++-------------------------------------------------------------------+
+| to_timestamp_seconds(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
++-------------------------------------------------------------------+
+| 2023-01-31T14:26:56 |
++-------------------------------------------------------------------+
+> select to_timestamp_seconds('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
++----------------------------------------------------------------------------------------------------------------+
+| to_timestamp_seconds(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
++----------------------------------------------------------------------------------------------------------------+
+| 2023-05-17T03:59:00 |
++----------------------------------------------------------------------------------------------------------------+
+```
+
+Additional examples can be found [here](https://github.com/apache/datafusion/blob/main/datafusion-examples/examples/to_timestamp.rs)
+
+##### `to_unixtime`
+
+Converts a value to seconds since the unix epoch (`1970-01-01T00:00:00Z`). Supports strings, dates, timestamps and double types as input. Strings are parsed as RFC3339 (e.g. '2023-07-20T05:44:00') if no [Chrono formats](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) are provided.
+
+```sql
+to_unixtime(expression[, ..., format_n])
+```
+
+###### Arguments
+
+- **expression**: Expression to operate on. Can be a constant, column, or function, and any combination of arithmetic operators.
+- **format_n**: Optional [Chrono format](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) strings to use to parse the expression. Formats will be tried in the order they appear with the first successful one being returned. If none of the formats successfully parse the expression an error will be returned.
+
+###### Example
+
+```sql
+> select to_unixtime('2020-09-08T12:00:00+00:00');
++------------------------------------------------+
+| to_unixtime(Utf8("2020-09-08T12:00:00+00:00")) |
++------------------------------------------------+
+| 1599566400 |
++------------------------------------------------+
+> select to_unixtime('01-14-2023 01:01:30+05:30', '%q', '%d-%m-%Y %H/%M/%S', '%+', '%m-%d-%Y %H:%M:%S%#z');
++-----------------------------------------------------------------------------------------------------------------------------+
+| to_unixtime(Utf8("01-14-2023 01:01:30+05:30"),Utf8("%q"),Utf8("%d-%m-%Y %H/%M/%S"),Utf8("%+"),Utf8("%m-%d-%Y %H:%M:%S%#z")) |
++-----------------------------------------------------------------------------------------------------------------------------+
+| 1673638290 |
++-----------------------------------------------------------------------------------------------------------------------------+
+```
+
+##### `today`
+
+_Alias of [current_date](#current_date)._
+
+### Array Functions
+
+- [array_any_value](#array_any_value)
+- [array_append](#array_append)
+- [array_cat](#array_cat)
+- [array_concat](#array_concat)
+- [array_contains](#array_contains)
+- [array_dims](#array_dims)
+- [array_distance](#array_distance)
+- [array_distinct](#array_distinct)
+- [array_element](#array_element)
+- [array_empty](#array_empty)
+- [array_except](#array_except)
+- [array_extract](#array_extract)
+- [array_has](#array_has)
+- [array_has_all](#array_has_all)
+- [array_has_any](#array_has_any)
+- [array_indexof](#array_indexof)
+- [array_intersect](#array_intersect)
+- [array_join](#array_join)
+- [array_length](#array_length)
+- [array_max](#array_max)
+- [array_ndims](#array_ndims)
+- [array_pop_back](#array_pop_back)
+- [array_pop_front](#array_pop_front)
+- [array_position](#array_position)
+- [array_positions](#array_positions)
+- [array_prepend](#array_prepend)
+- [array_push_back](#array_push_back)
+- [array_push_front](#array_push_front)
+- [array_remove](#array_remove)
+- [array_remove_all](#array_remove_all)
+- [array_remove_n](#array_remove_n)
+- [array_repeat](#array_repeat)
+- [array_replace](#array_replace)
+- [array_replace_all](#array_replace_all)
+- [array_replace_n](#array_replace_n)
+- [array_resize](#array_resize)
+- [array_reverse](#array_reverse)
+- [array_slice](#array_slice)
+- [array_sort](#array_sort)
+- [array_to_string](#array_to_string)
+- [array_union](#array_union)
+- [arrays_overlap](#arrays_overlap)
+- [cardinality](#cardinality)
+- [empty](#empty)
+- [flatten](#flatten)
+- [generate_series](#generate_series)
+- [list_any_value](#list_any_value)
+- [list_append](#list_append)
+- [list_cat](#list_cat)
+- [list_concat](#list_concat)
+- [list_contains](#list_contains)
+- [list_dims](#list_dims)
+- [list_distance](#list_distance)
+- [list_distinct](#list_distinct)
+- [list_element](#list_element)
+- [list_empty](#list_empty)
+- [list_except](#list_except)
+- [list_extract](#list_extract)
+- [list_has](#list_has)
+- [list_has_all](#list_has_all)
+- [list_has_any](#list_has_any)
+- [list_indexof](#list_indexof)
+- [list_intersect](#list_intersect)
+- [list_join](#list_join)
+- [list_length](#list_length)
+- [list_max](#list_max)
+- [list_ndims](#list_ndims)
+- [list_pop_back](#list_pop_back)
+- [list_pop_front](#list_pop_front)
+- [list_position](#list_position)
+- [list_positions](#list_positions)
+- [list_prepend](#list_prepend)
+- [list_push_back](#list_push_back)
+- [list_push_front](#list_push_front)
+- [list_remove](#list_remove)
+- [list_remove_all](#list_remove_all)
+- [list_remove_n](#list_remove_n)
+- [list_repeat](#list_repeat)
+- [list_replace](#list_replace)
+- [list_replace_all](#list_replace_all)
+- [list_replace_n](#list_replace_n)
+- [list_resize](#list_resize)
+- [list_reverse](#list_reverse)
+- [list_slice](#list_slice)
+- [list_sort](#list_sort)
+- [list_to_string](#list_to_string)
+- [list_union](#list_union)
+- [make_array](#make_array)
+- [make_list](#make_list)
+- [range](#range)
+- [string_to_array](#string_to_array)
+- [string_to_list](#string_to_list)
+
+##### `array_any_value`
+
+Returns the first non-null element in the array.
+
+```sql
+array_any_value(array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_any_value([NULL, 1, 2, 3]);
++-------------------------------+
+| array_any_value(List([NULL,1,2,3])) |
++-------------------------------------+
+| 1 |
++-------------------------------------+
+```
+
+###### Aliases
+
+- list_any_value
+
+##### `array_append`
+
+Appends an element to the end of an array.
+
+```sql
+array_append(array, element)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **element**: Element to append to the array.
+
+###### Example
+
+```sql
+> select array_append([1, 2, 3], 4);
++--------------------------------------+
+| array_append(List([1,2,3]),Int64(4)) |
++--------------------------------------+
+| [1, 2, 3, 4] |
++--------------------------------------+
+```
+
+###### Aliases
+
+- list_append
+- array_push_back
+- list_push_back
+
+##### `array_cat`
+
+_Alias of [array_concat](#array_concat)._
+
+##### `array_concat`
+
+Concatenates arrays.
+
+```sql
+array_concat(array[, ..., array_n])
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **array_n**: Subsequent array column or literal array to concatenate.
+
+###### Example
+
+```sql
+> select array_concat([1, 2], [3, 4], [5, 6]);
++---------------------------------------------------+
+| array_concat(List([1,2]),List([3,4]),List([5,6])) |
++---------------------------------------------------+
+| [1, 2, 3, 4, 5, 6] |
++---------------------------------------------------+
+```
+
+###### Aliases
+
+- array_cat
+- list_concat
+- list_cat
+
+##### `array_contains`
+
+_Alias of [array_has](#array_has)._
+
+##### `array_dims`
+
+Returns an array of the array's dimensions.
+
+```sql
+array_dims(array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_dims([[1, 2, 3], [4, 5, 6]]);
++---------------------------------+
+| array_dims(List([1,2,3,4,5,6])) |
++---------------------------------+
+| [2, 3] |
++---------------------------------+
+```
+
+###### Aliases
+
+- list_dims
+
+##### `array_distance`
+
+Returns the Euclidean distance between two input arrays of equal length.
+
+```sql
+array_distance(array1, array2)
+```
+
+###### Arguments
+
+- **array1**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **array2**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_distance([1, 2], [1, 4]);
++------------------------------------+
+| array_distance(List([1,2], [1,4])) |
++------------------------------------+
+| 2.0 |
++------------------------------------+
+```
+
+###### Aliases
+
+- list_distance
+
+##### `array_distinct`
+
+Returns distinct values from the array after removing duplicates.
+
+```sql
+array_distinct(array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_distinct([1, 3, 2, 3, 1, 2, 4]);
++---------------------------------+
+| array_distinct(List([1,2,3,4])) |
++---------------------------------+
+| [1, 2, 3, 4] |
++---------------------------------+
+```
+
+###### Aliases
+
+- list_distinct
+
+##### `array_element`
+
+Extracts the element with the index n from the array.
+
+```sql
+array_element(array, index)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **index**: Index to extract the element from the array.
+
+###### Example
+
+```sql
+> select array_element([1, 2, 3, 4], 3);
++-----------------------------------------+
+| array_element(List([1,2,3,4]),Int64(3)) |
++-----------------------------------------+
+| 3 |
++-----------------------------------------+
+```
+
+###### Aliases
+
+- array_extract
+- list_element
+- list_extract
+
+##### `array_empty`
+
+_Alias of [empty](#empty)._
+
+##### `array_except`
+
+Returns an array of the elements that appear in the first array but not in the second.
+
+```sql
+array_except(array1, array2)
+```
+
+###### Arguments
+
+- **array1**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **array2**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_except([1, 2, 3, 4], [5, 6, 3, 4]);
++----------------------------------------------------+
+| array_except([1, 2, 3, 4], [5, 6, 3, 4]); |
++----------------------------------------------------+
+| [1, 2] |
++----------------------------------------------------+
+> select array_except([1, 2, 3, 4], [3, 4, 5, 6]);
++----------------------------------------------------+
+| array_except([1, 2, 3, 4], [3, 4, 5, 6]); |
++----------------------------------------------------+
+| [1, 2] |
++----------------------------------------------------+
+```
+
+###### Aliases
+
+- list_except
+
+##### `array_extract`
+
+_Alias of [array_element](#array_element)._
+
+##### `array_has`
+
+Returns true if the array contains the element.
+
+```sql
+array_has(array, element)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **element**: Scalar or Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_has([1, 2, 3], 2);
++-----------------------------+
+| array_has(List([1,2,3]), 2) |
++-----------------------------+
+| true |
++-----------------------------+
+```
+
+###### Aliases
+
+- list_has
+- array_contains
+- list_contains
+
+##### `array_has_all`
+
+Returns true if all elements of sub-array exist in array.
+
+```sql
+array_has_all(array, sub-array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **sub-array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_has_all([1, 2, 3, 4], [2, 3]);
++--------------------------------------------+
+| array_has_all(List([1,2,3,4]), List([2,3])) |
++--------------------------------------------+
+| true |
++--------------------------------------------+
+```
+
+###### Aliases
+
+- list_has_all
+
+##### `array_has_any`
+
+Returns true if any elements exist in both arrays.
+
+```sql
+array_has_any(array, sub-array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **sub-array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_has_any([1, 2, 3], [3, 4]);
++------------------------------------------+
+| array_has_any(List([1,2,3]), List([3,4])) |
++------------------------------------------+
+| true |
++------------------------------------------+
+```
+
+###### Aliases
+
+- list_has_any
+- arrays_overlap
+
+##### `array_indexof`
+
+_Alias of [array_position](#array_position)._
+
+##### `array_intersect`
+
+Returns an array of elements in the intersection of array1 and array2.
+
+```sql
+array_intersect(array1, array2)
+```
+
+###### Arguments
+
+- **array1**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **array2**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_intersect([1, 2, 3, 4], [5, 6, 3, 4]);
++----------------------------------------------------+
+| array_intersect([1, 2, 3, 4], [5, 6, 3, 4]); |
++----------------------------------------------------+
+| [3, 4] |
++----------------------------------------------------+
+> select array_intersect([1, 2, 3, 4], [5, 6, 7, 8]);
++----------------------------------------------------+
+| array_intersect([1, 2, 3, 4], [5, 6, 7, 8]); |
++----------------------------------------------------+
+| [] |
++----------------------------------------------------+
+```
+
+###### Aliases
+
+- list_intersect
+
+##### `array_join`
+
+_Alias of [array_to_string](#array_to_string)._
+
+##### `array_length`
+
+Returns the length of the array dimension.
+
+```sql
+array_length(array, dimension)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **dimension**: Array dimension.
+
+###### Example
+
+```sql
+> select array_length([1, 2, 3, 4, 5], 1);
++-------------------------------------------+
+| array_length(List([1,2,3,4,5]), 1) |
++-------------------------------------------+
+| 5 |
++-------------------------------------------+
+```
+
+###### Aliases
+
+- list_length
+
+##### `array_max`
+
+Returns the maximum value in the array.
+
+```sql
+array_max(array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_max([3,1,4,2]);
++-----------------------------------------+
+| array_max(List([3,1,4,2])) |
++-----------------------------------------+
+| 4 |
++-----------------------------------------+
+```
+
+###### Aliases
+
+- list_max
+
+##### `array_ndims`
+
+Returns the number of dimensions of the array.
+
+```sql
+array_ndims(array, element)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **element**: Array element.
+
+###### Example
+
+```sql
+> select array_ndims([[1, 2, 3], [4, 5, 6]]);
++----------------------------------+
+| array_ndims(List([1,2,3,4,5,6])) |
++----------------------------------+
+| 2 |
++----------------------------------+
+```
+
+###### Aliases
+
+- list_ndims
+
+##### `array_pop_back`
+
+Returns the array without the last element.
+
+```sql
+array_pop_back(array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_pop_back([1, 2, 3]);
++-------------------------------+
+| array_pop_back(List([1,2,3])) |
++-------------------------------+
+| [1, 2] |
++-------------------------------+
+```
+
+###### Aliases
+
+- list_pop_back
+
+##### `array_pop_front`
+
+Returns the array without the first element.
+
+```sql
+array_pop_front(array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_pop_front([1, 2, 3]);
++-------------------------------+
+| array_pop_front(List([1,2,3])) |
++-------------------------------+
+| [2, 3] |
++-------------------------------+
+```
+
+###### Aliases
+
+- list_pop_front
+
+##### `array_position`
+
+Returns the position of the first occurrence of the specified element in the array.
+
+```sql
+array_position(array, element)
+array_position(array, element, index)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **element**: Element to search for position in the array.
+- **index**: Index at which to start searching.
+
+###### Example
+
+```sql
+> select array_position([1, 2, 2, 3, 1, 4], 2);
++----------------------------------------------+
+| array_position(List([1,2,2,3,1,4]),Int64(2)) |
++----------------------------------------------+
+| 2 |
++----------------------------------------------+
+> select array_position([1, 2, 2, 3, 1, 4], 2, 3);
++----------------------------------------------------+
+| array_position(List([1,2,2,3,1,4]),Int64(2), Int64(3)) |
++----------------------------------------------------+
+| 3 |
++----------------------------------------------------+
+```
+
+###### Aliases
+
+- list_position
+- array_indexof
+- list_indexof
+
+##### `array_positions`
+
+Searches for an element in the array, returns all occurrences.
+
+```sql
+array_positions(array, element)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **element**: Element to search for position in the array.
+
+###### Example
+
+```sql
+> select array_positions([1, 2, 2, 3, 1, 4], 2);
++-----------------------------------------------+
+| array_positions(List([1,2,2,3,1,4]),Int64(2)) |
++-----------------------------------------------+
+| [2, 3] |
++-----------------------------------------------+
+```
+
+###### Aliases
+
+- list_positions
+
+##### `array_prepend`
+
+Prepends an element to the beginning of an array.
+
+```sql
+array_prepend(element, array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **element**: Element to prepend to the array.
+
+###### Example
+
+```sql
+> select array_prepend(1, [2, 3, 4]);
++---------------------------------------+
+| array_prepend(Int64(1),List([2,3,4])) |
++---------------------------------------+
+| [1, 2, 3, 4] |
++---------------------------------------+
+```
+
+###### Aliases
+
+- list_prepend
+- array_push_front
+- list_push_front
+
+##### `array_push_back`
+
+_Alias of [array_append](#array_append)._
+
+##### `array_push_front`
+
+_Alias of [array_prepend](#array_prepend)._
+
+##### `array_remove`
+
+Removes the first element from the array equal to the given value.
+
+```sql
+array_remove(array, element)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **element**: Element to be removed from the array.
+
+###### Example
+
+```sql
+> select array_remove([1, 2, 2, 3, 2, 1, 4], 2);
++----------------------------------------------+
+| array_remove(List([1,2,2,3,2,1,4]),Int64(2)) |
++----------------------------------------------+
+| [1, 2, 3, 2, 1, 4] |
++----------------------------------------------+
+```
+
+###### Aliases
+
+- list_remove
+
+##### `array_remove_all`
+
+Removes all elements from the array equal to the given value.
+
+```sql
+array_remove_all(array, element)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **element**: Element to be removed from the array.
+
+###### Example
+
+```sql
+> select array_remove_all([1, 2, 2, 3, 2, 1, 4], 2);
++--------------------------------------------------+
+| array_remove_all(List([1,2,2,3,2,1,4]),Int64(2)) |
++--------------------------------------------------+
+| [1, 3, 1, 4] |
++--------------------------------------------------+
+```
+
+###### Aliases
+
+- list_remove_all
+
+##### `array_remove_n`
+
+Removes the first `max` elements from the array equal to the given value.
+
+```sql
+array_remove_n(array, element, max))
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **element**: Element to be removed from the array.
+- **max**: Number of first occurrences to remove.
+
+###### Example
+
+```sql
+> select array_remove_n([1, 2, 2, 3, 2, 1, 4], 2, 2);
++---------------------------------------------------------+
+| array_remove_n(List([1,2,2,3,2,1,4]),Int64(2),Int64(2)) |
++---------------------------------------------------------+
+| [1, 3, 2, 1, 4] |
++---------------------------------------------------------+
+```
+
+###### Aliases
+
+- list_remove_n
+
+##### `array_repeat`
+
+Returns an array containing element `count` times.
+
+```sql
+array_repeat(element, count)
+```
+
+###### Arguments
+
+- **element**: Element expression. Can be a constant, column, or function, and any combination of array operators.
+- **count**: Value of how many times to repeat the element.
+
+###### Example
+
+```sql
+> select array_repeat(1, 3);
++---------------------------------+
+| array_repeat(Int64(1),Int64(3)) |
++---------------------------------+
+| [1, 1, 1] |
++---------------------------------+
+> select array_repeat([1, 2], 2);
++------------------------------------+
+| array_repeat(List([1,2]),Int64(2)) |
++------------------------------------+
+| [[1, 2], [1, 2]] |
++------------------------------------+
+```
+
+###### Aliases
+
+- list_repeat
+
+##### `array_replace`
+
+Replaces the first occurrence of the specified element with another specified element.
+
+```sql
+array_replace(array, from, to)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **from**: Initial element.
+- **to**: Final element.
+
+###### Example
+
+```sql
+> select array_replace([1, 2, 2, 3, 2, 1, 4], 2, 5);
++--------------------------------------------------------+
+| array_replace(List([1,2,2,3,2,1,4]),Int64(2),Int64(5)) |
++--------------------------------------------------------+
+| [1, 5, 2, 3, 2, 1, 4] |
++--------------------------------------------------------+
+```
+
+###### Aliases
+
+- list_replace
+
+##### `array_replace_all`
+
+Replaces all occurrences of the specified element with another specified element.
+
+```sql
+array_replace_all(array, from, to)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **from**: Initial element.
+- **to**: Final element.
+
+###### Example
+
+```sql
+> select array_replace_all([1, 2, 2, 3, 2, 1, 4], 2, 5);
++------------------------------------------------------------+
+| array_replace_all(List([1,2,2,3,2,1,4]),Int64(2),Int64(5)) |
++------------------------------------------------------------+
+| [1, 5, 5, 3, 5, 1, 4] |
++------------------------------------------------------------+
+```
+
+###### Aliases
+
+- list_replace_all
+
+##### `array_replace_n`
+
+Replaces the first `max` occurrences of the specified element with another specified element.
+
+```sql
+array_replace_n(array, from, to, max)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **from**: Initial element.
+- **to**: Final element.
+- **max**: Number of first occurrences to replace.
+
+###### Example
+
+```sql
+> select array_replace_n([1, 2, 2, 3, 2, 1, 4], 2, 5, 2);
++-------------------------------------------------------------------+
+| array_replace_n(List([1,2,2,3,2,1,4]),Int64(2),Int64(5),Int64(2)) |
++-------------------------------------------------------------------+
+| [1, 5, 5, 3, 2, 1, 4] |
++-------------------------------------------------------------------+
+```
+
+###### Aliases
+
+- list_replace_n
+
+##### `array_resize`
+
+Resizes the list to contain size elements. Initializes new elements with value or empty if value is not set.
+
+```sql
+array_resize(array, size, value)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **size**: New size of given array.
+- **value**: Defines new elements' value or empty if value is not set.
+
+###### Example
+
+```sql
+> select array_resize([1, 2, 3], 5, 0);
++-------------------------------------+
+| array_resize(List([1,2,3],5,0)) |
++-------------------------------------+
+| [1, 2, 3, 0, 0] |
++-------------------------------------+
+```
+
+###### Aliases
+
+- list_resize
+
+##### `array_reverse`
+
+Returns the array with the order of the elements reversed.
+
+```sql
+array_reverse(array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_reverse([1, 2, 3, 4]);
++------------------------------------------------------------+
+| array_reverse(List([1, 2, 3, 4])) |
++------------------------------------------------------------+
+| [4, 3, 2, 1] |
++------------------------------------------------------------+
+```
+
+###### Aliases
+
+- list_reverse
+
+##### `array_slice`
+
+Returns a slice of the array based on 1-indexed start and end positions.
+
+```sql
+array_slice(array, begin, end)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **begin**: Index of the first element. If negative, it counts backward from the end of the array.
+- **end**: Index of the last element. If negative, it counts backward from the end of the array.
+- **stride**: Stride of the array slice. The default is 1.
+
+###### Example
+
+```sql
+> select array_slice([1, 2, 3, 4, 5, 6, 7, 8], 3, 6);
++--------------------------------------------------------+
+| array_slice(List([1,2,3,4,5,6,7,8]),Int64(3),Int64(6)) |
++--------------------------------------------------------+
+| [3, 4, 5, 6] |
++--------------------------------------------------------+
+```
+
+###### Aliases
+
+- list_slice
+
+##### `array_sort`
+
+Sort array.
+
+```sql
+array_sort(array, desc, nulls_first)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **desc**: Whether to sort in descending order(`ASC` or `DESC`).
+- **nulls_first**: Whether to sort nulls first(`NULLS FIRST` or `NULLS LAST`).
+
+###### Example
+
+```sql
+> select array_sort([3, 1, 2]);
++-----------------------------+
+| array_sort(List([3,1,2])) |
++-----------------------------+
+| [1, 2, 3] |
++-----------------------------+
+```
+
+###### Aliases
+
+- list_sort
+
+##### `array_to_string`
+
+Converts each element to its text representation.
+
+```sql
+array_to_string(array, delimiter[, null_string])
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **delimiter**: Array element separator.
+- **null_string**: Optional. String to replace null values in the array. If not provided, nulls will be handled by default behavior.
+
+###### Example
+
+```sql
+> select array_to_string([[1, 2, 3, 4], [5, 6, 7, 8]], ',');
++----------------------------------------------------+
+| array_to_string(List([1,2,3,4,5,6,7,8]),Utf8(",")) |
++----------------------------------------------------+
+| 1,2,3,4,5,6,7,8 |
++----------------------------------------------------+
+```
+
+###### Aliases
+
+- list_to_string
+- array_join
+- list_join
+
+##### `array_union`
+
+Returns an array of elements that are present in both arrays (all elements from both arrays) with out duplicates.
+
+```sql
+array_union(array1, array2)
+```
+
+###### Arguments
+
+- **array1**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+- **array2**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select array_union([1, 2, 3, 4], [5, 6, 3, 4]);
++----------------------------------------------------+
+| array_union([1, 2, 3, 4], [5, 6, 3, 4]); |
++----------------------------------------------------+
+| [1, 2, 3, 4, 5, 6] |
++----------------------------------------------------+
+> select array_union([1, 2, 3, 4], [5, 6, 7, 8]);
++----------------------------------------------------+
+| array_union([1, 2, 3, 4], [5, 6, 7, 8]); |
++----------------------------------------------------+
+| [1, 2, 3, 4, 5, 6, 7, 8] |
++----------------------------------------------------+
+```
+
+###### Aliases
+
+- list_union
+
+##### `arrays_overlap`
+
+_Alias of [array_has_any](#array_has_any)._
+
+##### `cardinality`
+
+Returns the total number of elements in the array.
+
+```sql
+cardinality(array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select cardinality([[1, 2, 3, 4], [5, 6, 7, 8]]);
++--------------------------------------+
+| cardinality(List([1,2,3,4,5,6,7,8])) |
++--------------------------------------+
+| 8 |
++--------------------------------------+
+```
+
+##### `empty`
+
+Returns 1 for an empty array or 0 for a non-empty array.
+
+```sql
+empty(array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select empty([1]);
++------------------+
+| empty(List([1])) |
++------------------+
+| 0 |
++------------------+
+```
+
+###### Aliases
+
+- array_empty
+- list_empty
+
+##### `flatten`
+
+Converts an array of arrays to a flat array.
+
+- Applies to any depth of nested arrays
+- Does not change arrays that are already flat
+
+The flattened array contains all the elements from all source arrays.
+
+```sql
+flatten(array)
+```
+
+###### Arguments
+
+- **array**: Array expression. Can be a constant, column, or function, and any combination of array operators.
+
+###### Example
+
+```sql
+> select flatten([[1, 2], [3, 4]]);
++------------------------------+
+| flatten(List([1,2], [3,4])) |
++------------------------------+
+| [1, 2, 3, 4] |
++------------------------------+
+```
+
+##### `generate_series`
+
+Similar to the range function, but it includes the upper bound.
+
+```sql
+generate_series(start, stop, step)
+```
+
+###### Arguments
+
+- **start**: Start of the series. Ints, timestamps, dates or string types that can be coerced to Date32 are supported.
+- **end**: End of the series (included). Type must be the same as start.
+- **step**: Increase by step (can not be 0). Steps less than a day are supported only for timestamp ranges.
+
+###### Example
+
+```sql
+> select generate_series(1,3);
++------------------------------------+
+| generate_series(Int64(1),Int64(3)) |
++------------------------------------+
+| [1, 2, 3] |
++------------------------------------+
+```
+
+##### `list_any_value`
+
+_Alias of [array_any_value](#array_any_value)._
+
+##### `list_append`
+
+_Alias of [array_append](#array_append)._
+
+##### `list_cat`
+
+_Alias of [array_concat](#array_concat)._
+
+##### `list_concat`
+
+_Alias of [array_concat](#array_concat)._
+
+##### `list_contains`
+
+_Alias of [array_has](#array_has)._
+
+##### `list_dims`
+
+_Alias of [array_dims](#array_dims)._
+
+##### `list_distance`
+
+_Alias of [array_distance](#array_distance)._
+
+##### `list_distinct`
+
+_Alias of [array_distinct](#array_distinct)._
+
+##### `list_element`
+
+_Alias of [array_element](#array_element)._
+
+##### `list_empty`
+
+_Alias of [empty](#empty)._
+
+##### `list_except`
+
+_Alias of [array_except](#array_except)._
+
+##### `list_extract`
+
+_Alias of [array_element](#array_element)._
+
+##### `list_has`
+
+_Alias of [array_has](#array_has)._
+
+##### `list_has_all`
+
+_Alias of [array_has_all](#array_has_all)._
+
+##### `list_has_any`
+
+_Alias of [array_has_any](#array_has_any)._
+
+##### `list_indexof`
+
+_Alias of [array_position](#array_position)._
+
+##### `list_intersect`
+
+_Alias of [array_intersect](#array_intersect)._
+
+##### `list_join`
+
+_Alias of [array_to_string](#array_to_string)._
+
+##### `list_length`
+
+_Alias of [array_length](#array_length)._
+
+##### `list_max`
+
+_Alias of [array_max](#array_max)._
+
+##### `list_ndims`
+
+_Alias of [array_ndims](#array_ndims)._
+
+##### `list_pop_back`
+
+_Alias of [array_pop_back](#array_pop_back)._
+
+##### `list_pop_front`
+
+_Alias of [array_pop_front](#array_pop_front)._
+
+##### `list_position`
+
+_Alias of [array_position](#array_position)._
+
+##### `list_positions`
+
+_Alias of [array_positions](#array_positions)._
+
+##### `list_prepend`
+
+_Alias of [array_prepend](#array_prepend)._
+
+##### `list_push_back`
+
+_Alias of [array_append](#array_append)._
+
+##### `list_push_front`
+
+_Alias of [array_prepend](#array_prepend)._
+
+##### `list_remove`
+
+_Alias of [array_remove](#array_remove)._
+
+##### `list_remove_all`
+
+_Alias of [array_remove_all](#array_remove_all)._
+
+##### `list_remove_n`
+
+_Alias of [array_remove_n](#array_remove_n)._
+
+##### `list_repeat`
+
+_Alias of [array_repeat](#array_repeat)._
+
+##### `list_replace`
+
+_Alias of [array_replace](#array_replace)._
+
+##### `list_replace_all`
+
+_Alias of [array_replace_all](#array_replace_all)._
+
+##### `list_replace_n`
+
+_Alias of [array_replace_n](#array_replace_n)._
+
+##### `list_resize`
+
+_Alias of [array_resize](#array_resize)._
+
+##### `list_reverse`
+
+_Alias of [array_reverse](#array_reverse)._
+
+##### `list_slice`
+
+_Alias of [array_slice](#array_slice)._
+
+##### `list_sort`
+
+_Alias of [array_sort](#array_sort)._
+
+##### `list_to_string`
+
+_Alias of [array_to_string](#array_to_string)._
+
+##### `list_union`
+
+_Alias of [array_union](#array_union)._
+
+##### `make_array`
+
+Returns an array using the specified input expressions.
+
+```sql
+make_array(expression1[, ..., expression_n])
+```
+
+###### Arguments
+
+- **expression_n**: Expression to include in the output array. Can be a constant, column, or function, and any combination of arithmetic or string operators.
+
+###### Example
+
+```sql
+> select make_array(1, 2, 3, 4, 5);
++----------------------------------------------------------+
+| make_array(Int64(1),Int64(2),Int64(3),Int64(4),Int64(5)) |
++----------------------------------------------------------+
+| [1, 2, 3, 4, 5] |
++----------------------------------------------------------+
+```
+
+###### Aliases
+
+- make_list
+
+##### `make_list`
+
+_Alias of [make_array](#make_array)._
+
+##### `range`
+
+Returns an Arrow array between start and stop with step. The range start..end contains all values with `start <= x < end`. It is empty if `start >= end`. Step cannot be 0.
+
+```sql
+range(start, stop, step)
+```
+
+###### Arguments
+
+- **start**: Start of the range. Ints, timestamps, dates or string types that can be coerced to Date32 are supported.
+- **end**: End of the range (not included). Type must be the same as start.
+- **step**: Increase by step (cannot be 0). Steps less than a day are supported only for timestamp ranges.
+
+###### Example
+
+```sql
+> select range(2, 10, 3);
++-----------------------------------+
+| range(Int64(2),Int64(10),Int64(3))|
++-----------------------------------+
+| [2, 5, 8] |
++-----------------------------------+
+
+> select range(DATE '1992-09-01', DATE '1993-03-01', INTERVAL '1' MONTH);
++--------------------------------------------------------------+
+| range(DATE '1992-09-01', DATE '1993-03-01', INTERVAL '1' MONTH) |
++--------------------------------------------------------------+
+| [1992-09-01, 1992-10-01, 1992-11-01, 1992-12-01, 1993-01-01, 1993-02-01] |
++--------------------------------------------------------------+
+```
+
+##### `string_to_array`
+
+Splits a string into an array of substrings based on a delimiter. Any substrings matching the optional `null_str` argument are replaced with NULL.
+
+```sql
+string_to_array(str, delimiter[, null_str])
+```
+
+###### Arguments
+
+- **str**: String expression to split.
+- **delimiter**: Delimiter string to split on.
+- **null_str**: Substring values to be replaced with `NULL`.
+
+###### Example
+
+```sql
+> select string_to_array('abc##def', '##');
++-----------------------------------+
+| string_to_array(Utf8('abc##def')) |
++-----------------------------------+
+| ['abc', 'def'] |
++-----------------------------------+
+> select string_to_array('abc def', ' ', 'def');
++---------------------------------------------+
+| string_to_array(Utf8('abc def'), Utf8(' '), Utf8('def')) |
++---------------------------------------------+
+| ['abc', NULL] |
++---------------------------------------------+
+```
+
+###### Aliases
+
+- string_to_list
+
+##### `string_to_list`
+
+_Alias of [string_to_array](#string_to_array)._
+
+### Struct Functions
+
+- [named_struct](#named_struct)
+- [row](#row)
+- [struct](#struct)
+
+##### `named_struct`
+
+Returns an Arrow struct using the specified name and input expressions pairs.
+
+```sql
+named_struct(expression1_name, expression1_input[, ..., expression_n_name, expression_n_input])
+```
+
+###### Arguments
+
+- **expression_n_name**: Name of the column field. Must be a constant string.
+- **expression_n_input**: Expression to include in the output struct. Can be a constant, column, or function, and any combination of arithmetic or string operators.
+
+###### Example
+
+For example, this query converts two columns `a` and `b` to a single column with
+a struct type of fields `field_a` and `field_b`:
+
+```sql
+> select * from t;
++---+---+
+| a | b |
++---+---+
+| 1 | 2 |
+| 3 | 4 |
++---+---+
+> select named_struct('field_a', a, 'field_b', b) from t;
++-------------------------------------------------------+
+| named_struct(Utf8("field_a"),t.a,Utf8("field_b"),t.b) |
++-------------------------------------------------------+
+| {field_a: 1, field_b: 2} |
+| {field_a: 3, field_b: 4} |
++-------------------------------------------------------+
+```
+
+##### `row`
+
+_Alias of [struct](#struct)._
+
+##### `struct`
+
+Returns an Arrow struct using the specified input expressions optionally named.
+Fields in the returned struct use the optional name or the `cN` naming convention.
+For example: `c0`, `c1`, `c2`, etc.
+
+```sql
+struct(expression1[, ..., expression_n])
+```
+
+###### Arguments
+
+- **expression1, expression_n**: Expression to include in the output struct. Can be a constant, column, or function, any combination of arithmetic or string operators.
+
+###### Example
+
+For example, this query converts two columns `a` and `b` to a single column with
+a struct type of fields `field_a` and `c1`:
+
+```sql
+> select * from t;
++---+---+
+| a | b |
++---+---+
+| 1 | 2 |
+| 3 | 4 |
++---+---+
+
+-- use default names `c0`, `c1`
+> select struct(a, b) from t;
++-----------------+
+| struct(t.a,t.b) |
++-----------------+
+| {c0: 1, c1: 2} |
+| {c0: 3, c1: 4} |
++-----------------+
+
+-- name the first field `field_a`
+select struct(a as field_a, b) from t;
++--------------------------------------------------+
+| named_struct(Utf8("field_a"),t.a,Utf8("c1"),t.b) |
++--------------------------------------------------+
+| {field_a: 1, c1: 2} |
+| {field_a: 3, c1: 4} |
++--------------------------------------------------+
+```
+
+###### Aliases
+
+- row
+
+### Map Functions
+
+- [element_at](#element_at)
+- [map](#map)
+- [map_extract](#map_extract)
+- [map_keys](#map_keys)
+- [map_values](#map_values)
+
+##### `element_at`
+
+_Alias of [map_extract](#map_extract)._
+
+##### `map`
+
+Returns an Arrow map with the specified key-value pairs.
+
+The `make_map` function creates a map from two lists: one for keys and one for values. Each key must be unique and non-null.
+
+```sql
+map(key, value)
+map(key: value)
+make_map(['key1', 'key2'], ['value1', 'value2'])
+```
+
+###### Arguments
+
+- **key**: For `map`: Expression to be used for key. Can be a constant, column, function, or any combination of arithmetic or string operators.
+ For `make_map`: The list of keys to be used in the map. Each key must be unique and non-null.
+- **value**: For `map`: Expression to be used for value. Can be a constant, column, function, or any combination of arithmetic or string operators.
+ For `make_map`: The list of values to be mapped to the corresponding keys.
+
+###### Example
+
+```sql
+-- Using map function
+SELECT MAP('type', 'test');
+----
+{type: test}
+
+SELECT MAP(['POST', 'HEAD', 'PATCH'], [41, 33, null]);
+----
+{POST: 41, HEAD: 33, PATCH: NULL}
+
+SELECT MAP([[1,2], [3,4]], ['a', 'b']);
+----
+{[1, 2]: a, [3, 4]: b}
+
+SELECT MAP { 'a': 1, 'b': 2 };
+----
+{a: 1, b: 2}
+
+-- Using make_map function
+SELECT MAKE_MAP(['POST', 'HEAD'], [41, 33]);
+----
+{POST: 41, HEAD: 33}
+
+SELECT MAKE_MAP(['key1', 'key2'], ['value1', null]);
+----
+{key1: value1, key2: }
+```
+
+##### `map_extract`
+
+Returns a list containing the value for the given key or an empty list if the key is not present in the map.
+
+```sql
+map_extract(map, key)
+```
+
+###### Arguments
+
+- **map**: Map expression. Can be a constant, column, or function, and any combination of map operators.
+- **key**: Key to extract from the map. Can be a constant, column, or function, any combination of arithmetic or string operators, or a named expression of the previously listed.
+
+###### Example
+
+```sql
+SELECT map_extract(MAP {'a': 1, 'b': NULL, 'c': 3}, 'a');
+----
+[1]
+
+SELECT map_extract(MAP {1: 'one', 2: 'two'}, 2);
+----
+['two']
+
+SELECT map_extract(MAP {'x': 10, 'y': NULL, 'z': 30}, 'y');
+----
+[]
+```
+
+###### Aliases
+
+- element_at
+
+##### `map_keys`
+
+Returns a list of all keys in the map.
+
+```sql
+map_keys(map)
+```
+
+###### Arguments
+
+- **map**: Map expression. Can be a constant, column, or function, and any combination of map operators.
+
+###### Example
+
+```sql
+SELECT map_keys(MAP {'a': 1, 'b': NULL, 'c': 3});
+----
+[a, b, c]
+
+SELECT map_keys(map([100, 5], [42, 43]));
+----
+[100, 5]
+```
+
+##### `map_values`
+
+Returns a list of all values in the map.
+
+```sql
+map_values(map)
+```
+
+###### Arguments
+
+- **map**: Map expression. Can be a constant, column, or function, and any combination of map operators.
+
+###### Example
+
+```sql
+SELECT map_values(MAP {'a': 1, 'b': NULL, 'c': 3});
+----
+[1, , 3]
+
+SELECT map_values(map([100, 5], [42, 43]));
+----
+[42, 43]
+```
+
+### Hashing Functions
+
+- [digest](#digest)
+- [md5](#md5)
+- [sha224](#sha224)
+- [sha256](#sha256)
+- [sha384](#sha384)
+- [sha512](#sha512)
+
+##### `digest`
+
+Computes the binary hash of an expression using the specified algorithm.
+
+```sql
+digest(expression, algorithm)
+```
+
+###### Arguments
+
+- **expression**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **algorithm**: String expression specifying algorithm to use. Must be one of:
+ - md5
+ - sha224
+ - sha256
+ - sha384
+ - sha512
+ - blake2s
+ - blake2b
+ - blake3
+
+###### Example
+
+```sql
+> select digest('foo', 'sha256');
++------------------------------------------+
+| digest(Utf8("foo"), Utf8("sha256")) |
++------------------------------------------+
+| |
++------------------------------------------+
+```
+
+##### `md5`
+
+Computes an MD5 128-bit checksum for a string expression.
+
+```sql
+md5(expression)
+```
+
+###### Arguments
+
+- **expression**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select md5('foo');
++-------------------------------------+
+| md5(Utf8("foo")) |
++-------------------------------------+
+| |
++-------------------------------------+
+```
+
+##### `sha224`
+
+Computes the SHA-224 hash of a binary string.
+
+```sql
+sha224(expression)
+```
+
+###### Arguments
+
+- **expression**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select sha224('foo');
++------------------------------------------+
+| sha224(Utf8("foo")) |
++------------------------------------------+
+| |
++------------------------------------------+
+```
+
+##### `sha256`
+
+Computes the SHA-256 hash of a binary string.
+
+```sql
+sha256(expression)
+```
+
+###### Arguments
+
+- **expression**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select sha256('foo');
++--------------------------------------+
+| sha256(Utf8("foo")) |
++--------------------------------------+
+| |
++--------------------------------------+
+```
+
+##### `sha384`
+
+Computes the SHA-384 hash of a binary string.
+
+```sql
+sha384(expression)
+```
+
+###### Arguments
+
+- **expression**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select sha384('foo');
++-----------------------------------------+
+| sha384(Utf8("foo")) |
++-----------------------------------------+
+| |
++-----------------------------------------+
+```
+
+##### `sha512`
+
+Computes the SHA-512 hash of a binary string.
+
+```sql
+sha512(expression)
+```
+
+###### Arguments
+
+- **expression**: String expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select sha512('foo');
++-------------------------------------------+
+| sha512(Utf8("foo")) |
++-------------------------------------------+
+| |
++-------------------------------------------+
+```
+
+### Union Functions
+
+Functions to work with the union data type, also know as tagged unions, variant types, enums or sum types. Note: Not related to the SQL UNION operator
+
+- [union_extract](#union_extract)
+- [union_tag](#union_tag)
+
+##### `union_extract`
+
+Returns the value of the given field in the union when selected, or NULL otherwise.
+
+```sql
+union_extract(union, field_name)
+```
+
+###### Arguments
+
+- **union**: Union expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **field_name**: String expression to operate on. Must be a constant.
+
+###### Example
+
+```sql
+❯ select union_column, union_extract(union_column, 'a'), union_extract(union_column, 'b') from table_with_union;
++--------------+----------------------------------+----------------------------------+
+| union_column | union_extract(union_column, 'a') | union_extract(union_column, 'b') |
++--------------+----------------------------------+----------------------------------+
+| {a=1} | 1 | |
+| {b=3.0} | | 3.0 |
+| {a=4} | 4 | |
+| {b=} | | |
+| {a=} | | |
++--------------+----------------------------------+----------------------------------+
+```
+
+##### `union_tag`
+
+Returns the name of the currently selected field in the union
+
+```sql
+union_tag(union_expression)
+```
+
+###### Arguments
+
+- **union**: Union expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+❯ select union_column, union_tag(union_column) from table_with_union;
++--------------+-------------------------+
+| union_column | union_tag(union_column) |
++--------------+-------------------------+
+| {a=1} | a |
+| {b=3.0} | b |
+| {a=4} | a |
+| {b=} | b |
+| {a=} | a |
++--------------+-------------------------+
+```
+
+### Other Functions
+
+- [arrow_cast](#arrow_cast)
+- [arrow_typeof](#arrow_typeof)
+- [get_field](#get_field)
+- [version](#version)
+
+##### `arrow_cast`
+
+Casts a value to a specific Arrow data type.
+
+```sql
+arrow_cast(expression, datatype)
+```
+
+###### Arguments
+
+- **expression**: Expression to cast. The expression can be a constant, column, or function, and any combination of operators.
+- **datatype**: [Arrow data type](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html) name to cast to, as a string. The format is the same as that returned by [`arrow_typeof`]
+
+###### Example
+
+```sql
+> select arrow_cast(-5, 'Int8') as a,
+ arrow_cast('foo', 'Dictionary(Int32, Utf8)') as b,
+ arrow_cast('bar', 'LargeUtf8') as c,
+ arrow_cast('2023-01-02T12:53:02', 'Timestamp(Microsecond, Some("+08:00"))') as d
+ ;
++----+-----+-----+---------------------------+
+| a | b | c | d |
++----+-----+-----+---------------------------+
+| -5 | foo | bar | 2023-01-02T12:53:02+08:00 |
++----+-----+-----+---------------------------+
+```
+
+##### `arrow_typeof`
+
+Returns the name of the underlying [Arrow data type](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html) of the expression.
+
+```sql
+arrow_typeof(expression)
+```
+
+###### Arguments
+
+- **expression**: Expression to evaluate. The expression can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> select arrow_typeof('foo'), arrow_typeof(1);
++---------------------------+------------------------+
+| arrow_typeof(Utf8("foo")) | arrow_typeof(Int64(1)) |
++---------------------------+------------------------+
+| Utf8 | Int64 |
++---------------------------+------------------------+
+```
+
+##### `get_field`
+
+Returns a field within a map or a struct with the given key.
+Note: most users invoke `get_field` indirectly via field access
+syntax such as `my_struct_col['field_name']` which results in a call to
+`get_field(my_struct_col, 'field_name')`.
+
+```sql
+get_field(expression1, expression2)
+```
+
+###### Arguments
+
+- **expression1**: The map or struct to retrieve a field for.
+- **expression2**: The field name in the map or struct to retrieve data for. Must evaluate to a string.
+
+###### Example
+
+```sql
+> create table t (idx varchar, v varchar) as values ('data','fusion'), ('apache', 'arrow');
+> select struct(idx, v) from t as c;
++-------------------------+
+| struct(c.idx,c.v) |
++-------------------------+
+| {c0: data, c1: fusion} |
+| {c0: apache, c1: arrow} |
++-------------------------+
+> select get_field((select struct(idx, v) from t), 'c0');
++-----------------------+
+| struct(t.idx,t.v)[c0] |
++-----------------------+
+| data |
+| apache |
++-----------------------+
+> select get_field((select struct(idx, v) from t), 'c1');
++-----------------------+
+| struct(t.idx,t.v)[c1] |
++-----------------------+
+| fusion |
+| arrow |
++-----------------------+
+```
+
+##### `version`
+
+Returns the version of DataFusion.
+
+```sql
+version()
+```
+
+###### Example
+
+```sql
+> select version();
++--------------------------------------------+
+| version() |
++--------------------------------------------+
+| Apache DataFusion 42.0.0, aarch64 on macos |
++--------------------------------------------+
+```
+404: Not Found
+
+
+
+
+## Aggregate Functions
+
+Aggregate functions operate on a set of values to compute a single result.
+
+### General Functions
+
+- [array_agg](#array_agg)
+- [avg](#avg)
+- [bit_and](#bit_and)
+- [bit_or](#bit_or)
+- [bit_xor](#bit_xor)
+- [bool_and](#bool_and)
+- [bool_or](#bool_or)
+- [count](#count)
+- [first_value](#first_value)
+- [grouping](#grouping)
+- [last_value](#last_value)
+- [max](#max)
+- [mean](#mean)
+- [median](#median)
+- [min](#min)
+- [string_agg](#string_agg)
+- [sum](#sum)
+- [var](#var)
+- [var_pop](#var_pop)
+- [var_population](#var_population)
+- [var_samp](#var_samp)
+- [var_sample](#var_sample)
+
+##### `array_agg`
+
+Returns an array created from the expression elements. If ordering is required, elements are inserted in the specified order.
+This aggregation function can only mix DISTINCT and ORDER BY if the ordering expression is exactly the same as the argument expression.
+
+```sql
+array_agg(expression [ORDER BY expression])
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT array_agg(column_name ORDER BY other_column) FROM table_name;
++-----------------------------------------------+
+| array_agg(column_name ORDER BY other_column) |
++-----------------------------------------------+
+| [element1, element2, element3] |
++-----------------------------------------------+
+> SELECT array_agg(DISTINCT column_name ORDER BY column_name) FROM table_name;
++--------------------------------------------------------+
+| array_agg(DISTINCT column_name ORDER BY column_name) |
++--------------------------------------------------------+
+| [element1, element2, element3] |
++--------------------------------------------------------+
+```
+
+##### `avg`
+
+Returns the average of numeric values in the specified column.
+
+```sql
+avg(expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT avg(column_name) FROM table_name;
++---------------------------+
+| avg(column_name) |
++---------------------------+
+| 42.75 |
++---------------------------+
+```
+
+###### Aliases
+
+- mean
+
+##### `bit_and`
+
+Computes the bitwise AND of all non-null input values.
+
+```sql
+bit_and(expression)
+```
+
+###### Arguments
+
+- **expression**: Integer expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `bit_or`
+
+Computes the bitwise OR of all non-null input values.
+
+```sql
+bit_or(expression)
+```
+
+###### Arguments
+
+- **expression**: Integer expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `bit_xor`
+
+Computes the bitwise exclusive OR of all non-null input values.
+
+```sql
+bit_xor(expression)
+```
+
+###### Arguments
+
+- **expression**: Integer expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `bool_and`
+
+Returns true if all non-null input values are true, otherwise false.
+
+```sql
+bool_and(expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT bool_and(column_name) FROM table_name;
++----------------------------+
+| bool_and(column_name) |
++----------------------------+
+| true |
++----------------------------+
+```
+
+##### `bool_or`
+
+Returns true if all non-null input values are true, otherwise false.
+
+```sql
+bool_and(expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT bool_and(column_name) FROM table_name;
++----------------------------+
+| bool_and(column_name) |
++----------------------------+
+| true |
++----------------------------+
+```
+
+##### `count`
+
+Returns the number of non-null values in the specified column. To include null values in the total count, use `count(*)`.
+
+```sql
+count(expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT count(column_name) FROM table_name;
++-----------------------+
+| count(column_name) |
++-----------------------+
+| 100 |
++-----------------------+
+
+> SELECT count(*) FROM table_name;
++------------------+
+| count(*) |
++------------------+
+| 120 |
++------------------+
+```
+
+##### `first_value`
+
+Returns the first element in an aggregation group according to the requested ordering. If no ordering is given, returns an arbitrary element from the group.
+
+```sql
+first_value(expression [ORDER BY expression])
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT first_value(column_name ORDER BY other_column) FROM table_name;
++-----------------------------------------------+
+| first_value(column_name ORDER BY other_column)|
++-----------------------------------------------+
+| first_element |
++-----------------------------------------------+
+```
+
+##### `grouping`
+
+Returns 1 if the data is aggregated across the specified column, or 0 if it is not aggregated in the result set.
+
+```sql
+grouping(expression)
+```
+
+###### Arguments
+
+- **expression**: Expression to evaluate whether data is aggregated across the specified column. Can be a constant, column, or function.
+
+###### Example
+
+```sql
+> SELECT column_name, GROUPING(column_name) AS group_column
+ FROM table_name
+ GROUP BY GROUPING SETS ((column_name), ());
++-------------+-------------+
+| column_name | group_column |
++-------------+-------------+
+| value1 | 0 |
+| value2 | 0 |
+| NULL | 1 |
++-------------+-------------+
+```
+
+##### `last_value`
+
+Returns the last element in an aggregation group according to the requested ordering. If no ordering is given, returns an arbitrary element from the group.
+
+```sql
+last_value(expression [ORDER BY expression])
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT last_value(column_name ORDER BY other_column) FROM table_name;
++-----------------------------------------------+
+| last_value(column_name ORDER BY other_column) |
++-----------------------------------------------+
+| last_element |
++-----------------------------------------------+
+```
+
+##### `max`
+
+Returns the maximum value in the specified column.
+
+```sql
+max(expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT max(column_name) FROM table_name;
++----------------------+
+| max(column_name) |
++----------------------+
+| 150 |
++----------------------+
+```
+
+##### `mean`
+
+_Alias of [avg](#avg)._
+
+##### `median`
+
+Returns the median value in the specified column.
+
+```sql
+median(expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT median(column_name) FROM table_name;
++----------------------+
+| median(column_name) |
++----------------------+
+| 45.5 |
++----------------------+
+```
+
+##### `min`
+
+Returns the minimum value in the specified column.
+
+```sql
+min(expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT min(column_name) FROM table_name;
++----------------------+
+| min(column_name) |
++----------------------+
+| 12 |
++----------------------+
+```
+
+##### `string_agg`
+
+Concatenates the values of string expressions and places separator values between them. If ordering is required, strings are concatenated in the specified order. This aggregation function can only mix DISTINCT and ORDER BY if the ordering expression is exactly the same as the first argument expression.
+
+```sql
+string_agg([DISTINCT] expression, delimiter [ORDER BY expression])
+```
+
+###### Arguments
+
+- **expression**: The string expression to concatenate. Can be a column or any valid string expression.
+- **delimiter**: A literal string used as a separator between the concatenated values.
+
+###### Example
+
+```sql
+> SELECT string_agg(name, ', ') AS names_list
+ FROM employee;
++--------------------------+
+| names_list |
++--------------------------+
+| Alice, Bob, Bob, Charlie |
++--------------------------+
+> SELECT string_agg(name, ', ' ORDER BY name DESC) AS names_list
+ FROM employee;
++--------------------------+
+| names_list |
++--------------------------+
+| Charlie, Bob, Bob, Alice |
++--------------------------+
+> SELECT string_agg(DISTINCT name, ', ' ORDER BY name DESC) AS names_list
+ FROM employee;
++--------------------------+
+| names_list |
++--------------------------+
+| Charlie, Bob, Alice |
++--------------------------+
+```
+
+##### `sum`
+
+Returns the sum of all values in the specified column.
+
+```sql
+sum(expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT sum(column_name) FROM table_name;
++-----------------------+
+| sum(column_name) |
++-----------------------+
+| 12345 |
++-----------------------+
+```
+
+##### `var`
+
+Returns the statistical sample variance of a set of numbers.
+
+```sql
+var(expression)
+```
+
+###### Arguments
+
+- **expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Aliases
+
+- var_sample
+- var_samp
+
+##### `var_pop`
+
+Returns the statistical population variance of a set of numbers.
+
+```sql
+var_pop(expression)
+```
+
+###### Arguments
+
+- **expression**: Numeric expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Aliases
+
+- var_population
+
+##### `var_population`
+
+_Alias of [var_pop](#var_pop)._
+
+##### `var_samp`
+
+_Alias of [var](#var)._
+
+##### `var_sample`
+
+_Alias of [var](#var)._
+
+### Statistical Functions
+
+- [corr](#corr)
+- [covar](#covar)
+- [covar_pop](#covar_pop)
+- [covar_samp](#covar_samp)
+- [nth_value](#nth_value)
+- [regr_avgx](#regr_avgx)
+- [regr_avgy](#regr_avgy)
+- [regr_count](#regr_count)
+- [regr_intercept](#regr_intercept)
+- [regr_r2](#regr_r2)
+- [regr_slope](#regr_slope)
+- [regr_sxx](#regr_sxx)
+- [regr_sxy](#regr_sxy)
+- [regr_syy](#regr_syy)
+- [stddev](#stddev)
+- [stddev_pop](#stddev_pop)
+- [stddev_samp](#stddev_samp)
+
+##### `corr`
+
+Returns the coefficient of correlation between two numeric values.
+
+```sql
+corr(expression1, expression2)
+```
+
+###### Arguments
+
+- **expression1**: First expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression2**: Second expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT corr(column1, column2) FROM table_name;
++--------------------------------+
+| corr(column1, column2) |
++--------------------------------+
+| 0.85 |
++--------------------------------+
+```
+
+##### `covar`
+
+_Alias of [covar_samp](#covar_samp)._
+
+##### `covar_pop`
+
+Returns the sample covariance of a set of number pairs.
+
+```sql
+covar_samp(expression1, expression2)
+```
+
+###### Arguments
+
+- **expression1**: First expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression2**: Second expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT covar_samp(column1, column2) FROM table_name;
++-----------------------------------+
+| covar_samp(column1, column2) |
++-----------------------------------+
+| 8.25 |
++-----------------------------------+
+```
+
+##### `covar_samp`
+
+Returns the sample covariance of a set of number pairs.
+
+```sql
+covar_samp(expression1, expression2)
+```
+
+###### Arguments
+
+- **expression1**: First expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression2**: Second expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT covar_samp(column1, column2) FROM table_name;
++-----------------------------------+
+| covar_samp(column1, column2) |
++-----------------------------------+
+| 8.25 |
++-----------------------------------+
+```
+
+###### Aliases
+
+- covar
+
+##### `nth_value`
+
+Returns the nth value in a group of values.
+
+```sql
+nth_value(expression, n ORDER BY expression)
+```
+
+###### Arguments
+
+- **expression**: The column or expression to retrieve the nth value from.
+- **n**: The position (nth) of the value to retrieve, based on the ordering.
+
+###### Example
+
+```sql
+> SELECT dept_id, salary, NTH_VALUE(salary, 2) OVER (PARTITION BY dept_id ORDER BY salary ASC) AS second_salary_by_dept
+ FROM employee;
++---------+--------+-------------------------+
+| dept_id | salary | second_salary_by_dept |
++---------+--------+-------------------------+
+| 1 | 30000 | NULL |
+| 1 | 40000 | 40000 |
+| 1 | 50000 | 40000 |
+| 2 | 35000 | NULL |
+| 2 | 45000 | 45000 |
++---------+--------+-------------------------+
+```
+
+##### `regr_avgx`
+
+Computes the average of the independent variable (input) expression_x for the non-null paired data points.
+
+```sql
+regr_avgx(expression_y, expression_x)
+```
+
+###### Arguments
+
+- **expression_y**: Dependent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression_x**: Independent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `regr_avgy`
+
+Computes the average of the dependent variable (output) expression_y for the non-null paired data points.
+
+```sql
+regr_avgy(expression_y, expression_x)
+```
+
+###### Arguments
+
+- **expression_y**: Dependent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression_x**: Independent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `regr_count`
+
+Counts the number of non-null paired data points.
+
+```sql
+regr_count(expression_y, expression_x)
+```
+
+###### Arguments
+
+- **expression_y**: Dependent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression_x**: Independent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `regr_intercept`
+
+Computes the y-intercept of the linear regression line. For the equation (y = kx + b), this function returns b.
+
+```sql
+regr_intercept(expression_y, expression_x)
+```
+
+###### Arguments
+
+- **expression_y**: Dependent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression_x**: Independent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `regr_r2`
+
+Computes the square of the correlation coefficient between the independent and dependent variables.
+
+```sql
+regr_r2(expression_y, expression_x)
+```
+
+###### Arguments
+
+- **expression_y**: Dependent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression_x**: Independent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `regr_slope`
+
+Returns the slope of the linear regression line for non-null pairs in aggregate columns. Given input column Y and X: regr_slope(Y, X) returns the slope (k in Y = k\*X + b) using minimal RSS fitting.
+
+```sql
+regr_slope(expression_y, expression_x)
+```
+
+###### Arguments
+
+- **expression_y**: Dependent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression_x**: Independent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `regr_sxx`
+
+Computes the sum of squares of the independent variable.
+
+```sql
+regr_sxx(expression_y, expression_x)
+```
+
+###### Arguments
+
+- **expression_y**: Dependent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression_x**: Independent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `regr_sxy`
+
+Computes the sum of products of paired data points.
+
+```sql
+regr_sxy(expression_y, expression_x)
+```
+
+###### Arguments
+
+- **expression_y**: Dependent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression_x**: Independent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `regr_syy`
+
+Computes the sum of squares of the dependent variable.
+
+```sql
+regr_syy(expression_y, expression_x)
+```
+
+###### Arguments
+
+- **expression_y**: Dependent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **expression_x**: Independent variable expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+##### `stddev`
+
+Returns the standard deviation of a set of numbers.
+
+```sql
+stddev(expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT stddev(column_name) FROM table_name;
++----------------------+
+| stddev(column_name) |
++----------------------+
+| 12.34 |
++----------------------+
+```
+
+###### Aliases
+
+- stddev_samp
+
+##### `stddev_pop`
+
+Returns the population standard deviation of a set of numbers.
+
+```sql
+stddev_pop(expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT stddev_pop(column_name) FROM table_name;
++--------------------------+
+| stddev_pop(column_name) |
++--------------------------+
+| 10.56 |
++--------------------------+
+```
+
+##### `stddev_samp`
+
+_Alias of [stddev](#stddev)._
+
+### Approximate Functions
+
+- [approx_distinct](#approx_distinct)
+- [approx_median](#approx_median)
+- [approx_percentile_cont](#approx_percentile_cont)
+- [approx_percentile_cont_with_weight](#approx_percentile_cont_with_weight)
+
+##### `approx_distinct`
+
+Returns the approximate number of distinct input values calculated using the HyperLogLog algorithm.
+
+```sql
+approx_distinct(expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT approx_distinct(column_name) FROM table_name;
++-----------------------------------+
+| approx_distinct(column_name) |
++-----------------------------------+
+| 42 |
++-----------------------------------+
+```
+
+##### `approx_median`
+
+Returns the approximate median (50th percentile) of input values. It is an alias of `approx_percentile_cont(0.5) WITHIN GROUP (ORDER BY x)`.
+
+```sql
+approx_median(expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+
+###### Example
+
+```sql
+> SELECT approx_median(column_name) FROM table_name;
++-----------------------------------+
+| approx_median(column_name) |
++-----------------------------------+
+| 23.5 |
++-----------------------------------+
+```
+
+##### `approx_percentile_cont`
+
+Returns the approximate percentile of input values using the t-digest algorithm.
+
+```sql
+approx_percentile_cont(percentile, centroids) WITHIN GROUP (ORDER BY expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **percentile**: Percentile to compute. Must be a float value between 0 and 1 (inclusive).
+- **centroids**: Number of centroids to use in the t-digest algorithm. _Default is 100_. A higher number results in more accurate approximation but requires more memory.
+
+###### Example
+
+```sql
+> SELECT approx_percentile_cont(0.75, 100) WITHIN GROUP (ORDER BY column_name) FROM table_name;
++-----------------------------------------------------------------------+
+| approx_percentile_cont(0.75, 100) WITHIN GROUP (ORDER BY column_name) |
++-----------------------------------------------------------------------+
+| 65.0 |
++-----------------------------------------------------------------------+
+```
+
+##### `approx_percentile_cont_with_weight`
+
+Returns the weighted approximate percentile of input values using the t-digest algorithm.
+
+```sql
+approx_percentile_cont_with_weight(weight, percentile) WITHIN GROUP (ORDER BY expression)
+```
+
+###### Arguments
+
+- **expression**: The expression to operate on. Can be a constant, column, or function, and any combination of operators.
+- **weight**: Expression to use as weight. Can be a constant, column, or function, and any combination of arithmetic operators.
+- **percentile**: Percentile to compute. Must be a float value between 0 and 1 (inclusive).
+
+###### Example
+
+```sql
+> SELECT approx_percentile_cont_with_weight(weight_column, 0.90) WITHIN GROUP (ORDER BY column_name) FROM table_name;
++---------------------------------------------------------------------------------------------+
+| approx_percentile_cont_with_weight(weight_column, 0.90) WITHIN GROUP (ORDER BY column_name) |
++---------------------------------------------------------------------------------------------+
+| 78.5 |
++---------------------------------------------------------------------------------------------+
+```
+
+
+
+
+## Window Functions
+
+A _window function_ performs a calculation across a set of table rows that are somehow related to the current row.
+This is comparable to the type of calculation that can be done with an aggregate function.
+However, window functions do not cause rows to become grouped into a single output row like non-window aggregate calls would.
+Instead, the rows retain their separate identities. Behind the scenes, the window function is able to access more than just the current row of the query result
+
+Here is an example that shows how to compare each employee's salary with the average salary in his or her department:
+
+```sql
+SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsalary;
+
++-----------+-------+--------+-------------------+
+| depname | empno | salary | avg |
++-----------+-------+--------+-------------------+
+| personnel | 2 | 3900 | 3700.0 |
+| personnel | 5 | 3500 | 3700.0 |
+| develop | 8 | 6000 | 5020.0 |
+| develop | 10 | 5200 | 5020.0 |
+| develop | 11 | 5200 | 5020.0 |
+| develop | 9 | 4500 | 5020.0 |
+| develop | 7 | 4200 | 5020.0 |
+| sales | 1 | 5000 | 4866.666666666667 |
+| sales | 4 | 4800 | 4866.666666666667 |
+| sales | 3 | 4800 | 4866.666666666667 |
++-----------+-------+--------+-------------------+
+```
+
+A window function call always contains an OVER clause directly following the window function's name and argument(s). This is what syntactically distinguishes it from a normal function or non-window aggregate. The OVER clause determines exactly how the rows of the query are split up for processing by the window function. The PARTITION BY clause within OVER divides the rows into groups, or partitions, that share the same values of the PARTITION BY expression(s). For each row, the window function is computed across the rows that fall into the same partition as the current row. The previous example showed how to count the average of a column per partition.
+
+You can also control the order in which rows are processed by window functions using ORDER BY within OVER. (The window ORDER BY does not even have to match the order in which the rows are output.) Here is an example:
+
+```sql
+SELECT depname, empno, salary,
+ rank() OVER (PARTITION BY depname ORDER BY salary DESC)
+FROM empsalary;
+
++-----------+-------+--------+--------+
+| depname | empno | salary | rank |
++-----------+-------+--------+--------+
+| personnel | 2 | 3900 | 1 |
+| develop | 8 | 6000 | 1 |
+| develop | 10 | 5200 | 2 |
+| develop | 11 | 5200 | 2 |
+| develop | 9 | 4500 | 4 |
+| develop | 7 | 4200 | 5 |
+| sales | 1 | 5000 | 1 |
+| sales | 4 | 4800 | 2 |
+| personnel | 5 | 3500 | 2 |
+| sales | 3 | 4800 | 2 |
++-----------+-------+--------+--------+
+```
+
+There is another important concept associated with window functions: for each row, there is a set of rows within its partition called its window frame. Some window functions act only on the rows of the window frame, rather than of the whole partition. Here is an example of using window frames in queries:
+
+```sql
+SELECT depname, empno, salary,
+ avg(salary) OVER(ORDER BY salary ASC ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS avg,
+ min(salary) OVER(ORDER BY empno ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cum_min
+FROM empsalary
+ORDER BY empno ASC;
+
++-----------+-------+--------+--------------------+---------+
+| depname | empno | salary | avg | cum_min |
++-----------+-------+--------+--------------------+---------+
+| sales | 1 | 5000 | 5000.0 | 5000 |
+| personnel | 2 | 3900 | 3866.6666666666665 | 3900 |
+| sales | 3 | 4800 | 4700.0 | 3900 |
+| sales | 4 | 4800 | 4866.666666666667 | 3900 |
+| personnel | 5 | 3500 | 3700.0 | 3500 |
+| develop | 7 | 4200 | 4200.0 | 3500 |
+| develop | 8 | 6000 | 5600.0 | 3500 |
+| develop | 9 | 4500 | 4500.0 | 3500 |
+| develop | 10 | 5200 | 5133.333333333333 | 3500 |
+| develop | 11 | 5200 | 5466.666666666667 | 3500 |
++-----------+-------+--------+--------------------+---------+
+```
+
+When a query involves multiple window functions, it is possible to write out each one with a separate OVER clause, but this is duplicative and error-prone if the same windowing behavior is wanted for several functions. Instead, each windowing behavior can be named in a WINDOW clause and then referenced in OVER. For example:
+
+```sql
+SELECT sum(salary) OVER w, avg(salary) OVER w
+FROM empsalary
+WINDOW w AS (PARTITION BY depname ORDER BY salary DESC);
+```
+
+### Syntax
+
+The syntax for the OVER-clause is
+
+```sql
+function([expr])
+ OVER(
+ [PARTITION BY expr[, …]]
+ [ORDER BY expr [ ASC | DESC ][, …]]
+ [ frame_clause ]
+ )
+```
+
+where **frame_clause** is one of:
+
+```sql
+ { RANGE | ROWS | GROUPS } frame_start
+ { RANGE | ROWS | GROUPS } BETWEEN frame_start AND frame_end
+```
+
+and **frame_start** and **frame_end** can be one of
+
+```sql
+UNBOUNDED PRECEDING
+offset PRECEDING
+CURRENT ROW
+offset FOLLOWING
+UNBOUNDED FOLLOWING
+```
+
+where **offset** is an non-negative integer.
+
+RANGE and GROUPS modes require an ORDER BY clause (with RANGE the ORDER BY must specify exactly one column).
+
+### Aggregate functions
+
+All [aggregate functions](#aggregate-functions) can be used as window functions.
+
+### Ranking Functions
+
+- [cume_dist](#cume_dist)
+- [dense_rank](#dense_rank)
+- [ntile](#ntile)
+- [percent_rank](#percent_rank)
+- [rank](#rank)
+- [row_number](#row_number)
+
+##### `cume_dist`
+
+Relative rank of the current row: (number of rows preceding or peer with the current row) / (total rows).
+
+```sql
+cume_dist()
+```
+
+###### Example
+
+```sql
+ --Example usage of the cume_dist window function:
+ SELECT salary,
+ cume_dist() OVER (ORDER BY salary) AS cume_dist
+ FROM employees;
+```
+
+```sql
++--------+-----------+
+| salary | cume_dist |
++--------+-----------+
+| 30000 | 0.33 |
+| 50000 | 0.67 |
+| 70000 | 1.00 |
++--------+-----------+
+```
+
+##### `dense_rank`
+
+Returns the rank of the current row without gaps. This function ranks rows in a dense manner, meaning consecutive ranks are assigned even for identical values.
+
+```sql
+dense_rank()
+```
+
+##### `ntile`
+
+Integer ranging from 1 to the argument value, dividing the partition as equally as possible
+
+```sql
+ntile(expression)
+```
+
+###### Arguments
+
+- **expression**: An integer describing the number groups the partition should be split into
+
+##### `percent_rank`
+
+Returns the percentage rank of the current row within its partition. The value ranges from 0 to 1 and is computed as `(rank - 1) / (total_rows - 1)`.
+
+```sql
+percent_rank()
+```
+
+##### `rank`
+
+Returns the rank of the current row within its partition, allowing gaps between ranks. This function provides a ranking similar to `row_number`, but skips ranks for identical values.
+
+```sql
+rank()
+```
+
+##### `row_number`
+
+Number of the current row within its partition, counting from 1.
+
+```sql
+row_number()
+```
+
+### Analytical Functions
+
+- [first_value](#first_value)
+- [lag](#lag)
+- [last_value](#last_value)
+- [lead](#lead)
+- [nth_value](#nth_value)
+
+##### `first_value`
+
+Returns value evaluated at the row that is the first row of the window frame.
+
+```sql
+first_value(expression)
+```
+
+###### Arguments
+
+- **expression**: Expression to operate on
+
+##### `lag`
+
+Returns value evaluated at the row that is offset rows before the current row within the partition; if there is no such row, instead return default (which must be of the same type as value).
+
+```sql
+lag(expression, offset, default)
+```
+
+###### Arguments
+
+- **expression**: Expression to operate on
+- **offset**: Integer. Specifies how many rows back the value of expression should be retrieved. Defaults to 1.
+- **default**: The default value if the offset is not within the partition. Must be of the same type as expression.
+
+##### `last_value`
+
+Returns value evaluated at the row that is the last row of the window frame.
+
+```sql
+last_value(expression)
+```
+
+###### Arguments
+
+- **expression**: Expression to operate on
+
+##### `lead`
+
+Returns value evaluated at the row that is offset rows after the current row within the partition; if there is no such row, instead return default (which must be of the same type as value).
+
+```sql
+lead(expression, offset, default)
+```
+
+###### Arguments
+
+- **expression**: Expression to operate on
+- **offset**: Integer. Specifies how many rows forward the value of expression should be retrieved. Defaults to 1.
+- **default**: The default value if the offset is not within the partition. Must be of the same type as expression.
+
+##### `nth_value`
+
+Returns the value evaluated at the nth row of the window frame (counting from 1). Returns NULL if no such row exists.
+
+```sql
+nth_value(expression, n)
+```
+
+###### Arguments
+
+- **expression**: The column from which to retrieve the nth value.
+- **n**: Integer. Specifies the row number (starting from 1) in the window frame.
+
+###### Example
+
+```sql
+-- Sample employees table:
+CREATE TABLE employees (id INT, salary INT);
+INSERT INTO employees (id, salary) VALUES
+(1, 30000),
+(2, 40000),
+(3, 50000),
+(4, 60000),
+(5, 70000);
+
+-- Example usage of nth_value:
+SELECT nth_value(salary, 2) OVER (
+ ORDER BY salary
+ ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
+) AS nth_value
+FROM employees;
+```
+
+```text
++-----------+
+| nth_value |
++-----------+
+| 40000 |
+| 40000 |
+| 40000 |
+| 40000 |
+| 40000 |
++-----------+
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/geo.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/geo.md
new file mode 100644
index 0000000000..780c7d05d9
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/geo.md
@@ -0,0 +1,444 @@
+---
+keywords: [地理函数, 空间关系, SQL 查询, 数据库地理, 地理空间]
+description: 列出了 GreptimeDB 中的所有地理空间相关函数,包括函数的定义、使用方法和相关的 SQL 查询示例。
+---
+
+import TOCInline from '@theme/TOCInline';
+
+# 地理函数
+
+这个页面列出了 GreptimeDB 中的所有地理空间相关函数。当您启用了
+`common-function/geo` 特性(默认为开启状态)时,这些函数才会生效。
+
+
+
+## Geo 数据类型函数
+
+地理相关数据类型转换。
+
+### `wkt_point_from_latlng`
+
+将纬度、经度转换成 WKT 点。
+
+```sql
+SELECT wkt_point_from_latlng(37.76938, -122.3889) AS point;
+```
+
+## Geohash
+
+了解 [更多关于 geohash 编码](https://en.wikipedia.org/wiki/Geohash)。
+
+### `geohash`
+
+从纬度、经度和分辨率获取 geohash 编码的字符串。
+
+```sql
+SELECT geohash(37.76938, -122.3889, 11);
+```
+
+### `geohash_neighbours`
+
+给定坐标和分辨率获取所有 geohash 邻接点。
+
+请注意,此函数返回一个字符串数组,并且仅在我们的 HTTP 查询 API 和 Postgres 通道上生效。
+
+```sql
+SELECT geohash_neighbours(37.76938, -122.3889, 11);
+```
+
+## H3
+
+H3 地理坐标编码算法。[了解更多](https://h3geo.org/)。
+
+### `h3_latlng_to_cell`
+
+将坐标(纬度,经度)编码为指定分辨率下的 h3 索引,并返回该单元格的 UInt64 表示。
+
+```sql
+SELECT h3_latlng_to_cell(37.76938, -122.3889, 1);
+```
+
+### `h3_latlng_to_cell_string`
+
+类似于 `h3_latlng_to_cell` ,但返回字符串编码格式。
+
+```sql
+h3_latlng_to_cell_string(37.76938, -122.3889, 1);
+```
+
+### `h3_cell_to_string`
+
+将单元格索引(UInt64)转换为其字符串表示形式。
+
+```sql
+SELECT h3_cell_to_string(h3_latlng_to_cell(37.76938, -122.3889, 8));
+```
+
+### `h3_string_to_cell`
+
+将十六进制编码的单元 ID 转换为其 UInt64 形式。
+
+```sql
+h3_string_to_cell(h3_latlng_to_cell_string(37.76938, -122.3889, 8::UInt64));
+```
+
+### `h3_cell_center_latlng`
+
+返回单元中心的纬度和经度。
+
+请注意,此函数返回一个浮点数数组,并且仅在我们的 HTTP 查询 API 和 Postgres 通道上有效。
+
+```sql
+SELECT h3_cell_center_latlng(h3_latlng_to_cell(37.76938, -122.3889, 8));
+```
+
+### `h3_cell_resolution`
+
+给定单元格的返回分辨率。
+
+```sql
+SELECT h3_cell_resolution(h3_latlng_to_cell(37.76938, -122.3889, 8));
+```
+
+### `h3_cell_base`
+
+返回给定单元的 Base 单元。
+
+```sql
+SELECT h3_cell_base(h3_latlng_to_cell(37.76938, -122.3889, 8));
+```
+
+### `h3_cell_is_pentagon`
+
+如果单元格是五边形,则返回 true。
+
+```sql
+SELECT h3_cell_is_pentagon(h3_latlng_to_cell(37.76938, -122.3889, 8));
+```
+
+### `h3_cell_parent`
+
+返回给定分辨率下单元的父单元。
+
+```sql
+h3_cell_parent(h3_latlng_to_cell(37.76938, -122.3889, 8), 6);
+```
+
+### `h3_cell_to_children`
+
+根据给定的分辨率返回子单元格。
+
+请注意,此函数返回一个 UInt64 数组,并且仅在我们的 HTTP 查询 API 和 Postgres 通道上生效。
+
+```sql
+h3_cell_to_children(h3_latlng_to_cell(37.76938, -122.3889, 8), 10);
+```
+
+### `h3_cell_to_children_size`
+
+根据给定的分辨率,返回单元格中的子单元数量。
+
+
+```sql
+h3_cell_to_children_size(h3_latlng_to_cell(37.76938, -122.3889, 8), 10);
+```
+
+### `h3_cell_to_child_pos`
+
+根据给定分辨率,返回单元在其父单元的位置。位置是单元在所有子单元中的索引。
+
+```sql
+h3_cell_to_child_pos(h3_latlng_to_cell(37.76938, -122.3889, 8), 6)
+```
+
+### `h3_child_pos_to_cell`
+
+在给定分辨率下,返回父单元中给定位置的单元。
+
+参数:
+
+- 位置
+- 单元索引
+- 分辨率
+
+```sql
+h3_child_pos_to_cell(25, h3_latlng_to_cell(37.76938, -122.3889, 8), 11);
+```
+
+### `h3_cells_contains`
+
+测试输入的单元集合是否包含指定的单元,或其父单元。
+
+参数:
+
+- 单元集合:可以是 int64/uint64/string 数组,或逗号分割的字符串单元 ID
+- 单元索引
+
+```sql
+SELECT
+ h3_cells_contains('86283470fffffff,862834777ffffff, 862834757ffffff, 86283471fffffff, 862834707ffffff', '8b283470d112fff') AS R00,
+ h3_cells_contains(['86283470fffffff', '862834777ffffff', '862834757ffffff', '86283471fffffff', '862834707ffffff'], '8b283470d112fff') AS R11,
+ h3_cells_contains([604189641255419903, 604189643000250367, 604189642463379455, 604189641523855359, 604189641121202175], 604189641792290815) AS R21;
+```
+
+### `h3_grid_disk`
+
+返回给定单元格的 k 个距离对应的单元格。
+
+请注意,此函数返回一个 UInt64 数组,并且仅能在我们的 HTTP 查询 API 和 Postgres 通道上工作。
+
+```sql
+h3_grid_disk(h3_latlng_to_cell(37.76938, -122.3889, 8), 3);
+```
+
+### `h3_grid_disk_distances`
+
+返回给定单元格范围内所有距离为 *k* 的单元格。
+
+请注意,此函数返回一个 UInt64 数组,并且仅适用于我们的 HTTP 查询 API 和 Postgres 通道。
+
+```sql
+h3_grid_disk_distance(h3_latlng_to_cell(37.76938, -122.3889, 8), 3);
+```
+
+### `h3_grid_distance`
+
+返回两单元的距离。
+
+```sql
+SELECT
+ h3_grid_distance(cell1, cell2) AS distance,
+FROM
+ (
+ SELECT
+ h3_latlng_to_cell(37.76938, -122.3889, 8) AS cell1,
+ h3_latlng_to_cell(39.634, -104.999, 8) AS cell2
+ );
+```
+
+### `h3_grid_path_cells`
+
+此函数可在两个单元格之间返回路径单元格。请注意,如果两个单元格相距很远,该函数可能会失败。
+
+```sql
+SELECT
+ h3_grid_path_cells(cell1, cell2) AS path_cells,
+FROM
+ (
+ SELECT
+ h3_latlng_to_cell(37.76938, -122.3889, 8) AS cell1,
+ h3_latlng_to_cell(39.634, -104.999, 8) AS cell2
+ );
+```
+
+### `h3_distance_sphere_km`
+
+返回两个单元中心的大圆距离,单位:千米
+
+```sql
+SELECT
+ round(h3_distance_sphere_km(cell1, cell2), 5) AS sphere_distance
+FROM
+ (
+ SELECT
+ h3_string_to_cell('86283082fffffff') AS cell1,
+ h3_string_to_cell('86283470fffffff') AS cell2
+ );
+
+```
+
+### `h3_distance_degree`
+
+返回两个单元中心的欧式距离,单位:度
+
+```sql
+SELECT
+ round(h3_distance_degree(cell1, cell2), 14) AS euclidean_distance
+FROM
+ (
+ SELECT
+ h3_string_to_cell('86283082fffffff') AS cell1,
+ h3_string_to_cell('86283470fffffff') AS cell2
+ );
+```
+
+## S2
+
+了解[更多关于 S2 编码的信息](http://s2geometry.io/).
+
+### `s2_latlng_to_cell`
+
+给定坐标对应的 s2 单元索引。
+
+```sql
+SELECT s2_latlng_to_cell(37.76938, -122.3889);
+```
+
+### `s2_cell_to_token`
+
+给定单元格的字符串表示形式。
+
+```sql
+SELECT s2_cell_to_token(s2_latlng_to_cell(37.76938, -122.3889));
+```
+
+### `s2_cell_level`
+
+返回给定单元格的级别。
+
+```sql
+SELECT s2_cell_level(s2_latlng_to_cell(37.76938, -122.3889));
+```
+
+### `s2_cell_parent`
+
+返回给定单元格位于特定级别的父单元。
+
+```sql
+SELECT s2_cell_parent(s2_latlng_to_cell(37.76938, -122.3889), 3);
+```
+
+## 编码
+
+### `json_encode_path`
+
+将纬度、经度按时间戳排序并编码为一个 JSON 数组。
+
+参数:
+
+- 纬度
+- 经度
+- 时间戳
+
+返回一个字符串类型的 JSON 数组。请注意,结果坐标中的顺序为 [经度,纬度],以符合 GeoJSON 规范。
+
+```sql
+SELECT json_encode_path(lat, lon, ts);
+```
+
+示例输出:
+
+```json
+[[-122.3888,37.77001],[-122.3839,37.76928],[-122.3889,37.76938],[-122.382,37.7693]]
+```
+
+## 空间关系
+
+### `st_contains`
+
+测试两个空间对象是否为包含关系。
+
+参数:WKT 编码的地理对象。
+
+```sql
+SELECT
+ st_contains(polygon1, p1),
+ st_contains(polygon2, p1),
+FROM
+ (
+ SELECT
+ wkt_point_from_latlng(37.383287, -122.01325) AS p1,
+ 'POLYGON ((-122.031661 37.428252, -122.139829 37.387072, -122.135365 37.361971, -122.057759 37.332222, -121.987707 37.328946, -121.943754 37.333041, -121.919373 37.349145, -121.945814 37.376705, -121.975689 37.417345, -121.998696 37.409164, -122.031661 37.428252))' AS polygon1,
+ 'POLYGON ((-121.491698 38.653343, -121.582353 38.556757, -121.469721 38.449287, -121.315883 38.541721, -121.491698 38.653343))' AS polygon2,
+ );
+
+```
+
+### `st_within`
+
+测试两个空间对象是否为被包含关系。
+
+参数:WKT 编码的地理对象。
+
+```sql
+SELECT
+ st_within(p1, polygon1),
+ st_within(p1, polygon2),
+ ROM
+ (
+ SELECT
+ wkt_point_from_latlng(37.383287, -122.01325) AS p1,
+ 'POLYGON ((-122.031661 37.428252, -122.139829 37.387072, -122.135365 37.361971, -122.057759 37.332222, -121.987707 37.328946, -121.943754 37.333041, -121.919373 37.349145, -121.945814 37.376705, -121.975689 37.417345, -121.998696 37.409164, -122.031661 37.428252))' AS polygon1,
+ 'POLYGON ((-121.491698 38.653343, -121.582353 38.556757, -121.469721 38.449287, -121.315883 38.541721, -121.491698 38.653343))' AS polygon2,
+ );
+
+```
+
+
+### `st_intersects`
+
+测试两个空间对象是否为重叠关系。
+
+参数:WKT 编码的地理对象。
+
+```sql
+SELECT
+ st_intersects(polygon1, polygon2),
+ st_intersects(polygon1, polygon3),
+FROM
+ (
+ SELECT
+ 'POLYGON ((-122.031661 37.428252, -122.139829 37.387072, -122.135365 37.361971, -122.057759 37.332222, -121.987707 37.328946, -121.943754 37.333041, -121.919373 37.349145, -121.945814 37.376705, -121.975689 37.417345, -121.998696 37.409164, -122.031661 37.428252))' AS polygon1,
+ 'POLYGON ((-121.491698 38.653343, -121.582353 38.556757, -121.469721 38.449287, -121.315883 38.541721, -121.491698 38.653343))' AS polygon2,
+ 'POLYGON ((-122.089628 37.450332, -122.20535 37.378342, -122.093062 37.36088, -122.044301 37.372886, -122.089628 37.450332))' AS polygon3,
+ );
+
+```
+
+
+## 空间测量
+
+### `st_distance`
+
+返回两个对象的在 WGS84 坐标系下的欧式距离,单位:度。
+
+参数:WKT 编码的地理对象。
+
+```sql
+SELECT
+ st_distance(p1, p2) AS euclidean_dist,
+ st_distance(p1, polygon1) AS euclidean_dist_pp,
+FROM
+ (
+ SELECT
+ wkt_point_from_latlng(37.76938, -122.3889) AS p1,
+ wkt_point_from_latlng(38.5216, -121.4247) AS p2,
+ 'POLYGON ((-121.491698 38.653343, -121.582353 38.556757, -121.469721 38.449287, -121.315883 38.541721, -121.491698 38.653343))' AS polygon1,
+ );
+```
+
+### `st_distance_sphere_m`
+
+返回两点的大圆距离,单位:米。
+
+参数:WKT 编码的地理对象。
+
+```sql
+SELECT
+ st_distance_sphere_m(p1, p2) AS sphere_dist_m,
+FROM
+ (
+ SELECT
+ wkt_point_from_latlng(37.76938, -122.3889) AS p1,
+ wkt_point_from_latlng(38.5216, -121.4247) AS p2,
+ );
+
+```
+
+### `st_area`
+
+返回地理对象的面积。
+
+参数:WKT 编码的地理对象。
+
+```sql
+SELECT
+ st_area(p1) as area_point,
+ st_area(polygon1) as area_polygon,
+FROM
+ (
+ SELECT
+ wkt_point_from_latlng(37.76938, -122.3889) AS p1,
+ 'POLYGON ((-121.491698 38.653343, -121.582353 38.556757, -121.469721 38.449287, -121.315883 38.541721, -121.491698 38.653343))' AS polygon1,
+ );
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/ip.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/ip.md
new file mode 100644
index 0000000000..0d557755cc
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/ip.md
@@ -0,0 +1,257 @@
+---
+keywords: ["IP", "IPv4", "IPv6", "CIDR", "地址", "网络", "范围", "转换", "操作", "SQL", "函数"]
+description: 关于 IP 地址操作、字符串/数字格式转换、CIDR 表示法以及 IPv4 和 IPv6 范围检查的 SQL 函数文档。
+---
+
+import TOCInline from '@theme/TOCInline';
+
+# IP 函数
+
+
+
+本文档介绍了可用于 IP 地址操作和比较的函数。
+
+### `ipv4_to_cidr(ip_string [, subnet_mask])`
+
+**描述:**
+
+将 IPv4 地址字符串转换为 CIDR 表示法。如果提供了 `subnet_mask` 参数(UInt8 类型,取值范围 0-32),则使用指定的子网掩码。否则,函数会根据输入字符串末尾的零或提供的八位字节数来自动检测子网(例如,'192.168' 表示 /16,'192' 表示 /8)。生成的 CIDR 表示法中的 IP 地址会根据子网掩码将主机位清零。
+
+**参数:**
+
+* `ip_string`: String - IPv4 地址字符串(例如,'192.168.1.1','10.0.0.0','172.16')。不完整的地址将用零补全。
+* `subnet_mask` (可选): UInt8 - 期望的子网掩码长度(例如,24, 16, 8)。
+
+**返回类型:**
+
+String - CIDR 表示法中的 IPv4 地址(例如,'192.168.1.0/24')。若输入无效,则返回 NULL。
+
+**示例:**
+
+```sql
+-- 自动检测子网
+SELECT ipv4_to_cidr('192.168.1.0');
+-- 输出: '192.168.1.0/24'
+
+SELECT ipv4_to_cidr('172.16');
+-- 输出: '172.16.0.0/16'
+
+-- 指定子网掩码
+SELECT ipv4_to_cidr('192.168.1.1', 24);
+-- 输出: '192.168.1.0/24'
+
+SELECT ipv4_to_cidr('10.0.0.1', 16);
+-- 输出: '10.0.0.0/16'
+```
+
+### `ipv6_to_cidr(ip_string [, subnet_mask])`
+
+**描述:**
+
+将 IPv6 地址字符串转换为 CIDR 表示法。如果提供了 `subnet_mask` 参数(UInt8 类型,取值范围 0-128),则使用指定的子网掩码。否则,函数会尝试根据地址末尾的零段或常见前缀(如 `fe80::` 代表 /16 或 `2001:db8::` 代表 /32)来自动检测子网。生成的 CIDR 表示法中的 IP 地址会根据子网掩码将主机位清零。
+
+**参数:**
+
+* `ip_string`: String - IPv6 地址字符串(例如,'2001:db8::1','fe80::')。不完整的地址在可能的情况下会被补全(例如,'2001:db8' 变为 '2001:db8::')。
+* `subnet_mask` (可选): UInt8 - 期望的子网掩码长度(例如,48, 64, 128)。
+
+**返回类型:**
+
+String - CIDR 表示法中的 IPv6 地址(例如,'2001:db8::/32')。若输入无效,则返回 NULL。
+
+**示例:**
+
+```sql
+-- 自动检测子网
+SELECT ipv6_to_cidr('2001:db8::');
+-- 输出: '2001:db8::/32'
+
+SELECT ipv6_to_cidr('fe80::1');
+-- 输出: 'fe80::/16'
+
+SELECT ipv6_to_cidr('::1');
+-- 输出: '::1/128'
+
+-- 指定子网掩码
+SELECT ipv6_to_cidr('2001:db8::', 48);
+-- 输出: '2001:db8::/48'
+
+SELECT ipv6_to_cidr('fe80::1', 10);
+-- 输出: 'fe80::/10'
+```
+
+### `ipv4_num_to_string(ip_number)`
+
+**描述:**
+
+将 UInt32 类型的数字转换为标准的 A.B.C.D 格式的 IPv4 地址字符串。该数字被视为大端字节序(Big-Endian)的 IPv4 地址。
+
+**参数:**
+
+* `ip_number`: UInt32 - IPv4 地址的数字形式。
+
+**返回类型:**
+
+String - 点分十进制表示法中的 IPv4 地址(例如,'192.168.0.1')。
+
+**示例:**
+
+```sql
+SELECT ipv4_num_to_string(3232235521); -- 0xC0A80001
+-- 输出: '192.168.0.1'
+
+SELECT ipv4_num_to_string(167772161); -- 0x0A000001
+-- 输出: '10.0.0.1'
+
+SELECT ipv4_num_to_string(0);
+-- 输出: '0.0.0.0'
+```
+
+### `ipv4_string_to_num(ip_string)`
+
+**描述:**
+
+将 A.B.C.D 格式的 IPv4 地址字符串转换为其对应的 UInt32 数字(大端序)。
+
+**参数:**
+
+* `ip_string`: String - 点分十进制表示法中的 IPv4 地址。
+
+**返回类型:**
+
+UInt32 - IPv4 地址的数字表示。若输入格式无效,则返回 NULL 或抛出错误。
+
+**示例:**
+
+```sql
+SELECT ipv4_string_to_num('192.168.0.1');
+-- 输出: 3232235521
+
+SELECT ipv4_string_to_num('10.0.0.1');
+-- 输出: 167772161
+
+SELECT ipv4_string_to_num('0.0.0.0');
+-- 输出: 0
+```
+
+### `ipv6_num_to_string(hex_string)`
+
+**描述:**
+
+将 32 个字符长的十六进制字符串(代表 IPv6 地址)转换为其标准格式的字符串表示(例如,'2001:db8::1')。能正确处理 IPv4 映射的 IPv6 地址(例如,'::ffff:192.168.0.1')。十六进制字符的大小写不敏感。
+
+**参数:**
+
+* `hex_string`: String - 代表 IPv6 地址 16 个字节的 32 位十六进制字符串。
+
+**返回类型:**
+
+String - 标准格式的 IPv6 地址字符串。若输入不是有效的 32 位十六进制字符串,则返回 NULL 或抛出错误。
+
+**示例:**
+
+```sql
+SELECT ipv6_num_to_string('20010db8000000000000000000000001');
+-- 输出: '2001:db8::1'
+
+SELECT ipv6_num_to_string('00000000000000000000ffffc0a80001');
+-- 输出: '::ffff:192.168.0.1'
+```
+
+### `ipv6_string_to_num(ip_string)`
+
+**描述:**
+
+将标准格式的 IPv6 地址字符串或点分十进制格式的 IPv4 地址字符串转换为其 16 字节的二进制表示。如果输入是 IPv4 地址字符串,它会先被内部转换为 IPv6 映射的等价形式(例如,'192.168.0.1' 内部变为 '::ffff:192.168.0.1'),然后再转换为二进制表示。
+
+**参数:**
+
+* `ip_string`: String - IPv6 或 IPv4 地址字符串。
+
+**返回类型:**
+
+Binary - IPv6 地址的 16 字节二进制数据。若输入格式无效,则返回 NULL 或抛出错误。
+
+**示例:**
+
+```sql
+-- IPv6 输入
+SELECT ipv6_string_to_num('2001:db8::1');
+-- 输出: 2001:db8::1 的二进制表示
+
+-- IPv4 输入 (映射到 IPv6)
+SELECT ipv6_string_to_num('192.168.0.1');
+-- 输出: ::ffff:192.168.0.1 的二进制表示
+
+-- IPv4 映射的 IPv6 输入
+SELECT ipv6_string_to_num('::ffff:192.168.0.1');
+-- 输出: ::ffff:192.168.0.1 的二进制表示
+```
+
+### `ipv4_in_range(ip_string, cidr_string)`
+
+**描述:**
+
+检查给定的 IPv4 地址字符串是否落在指定的 CIDR 范围字符串之内。
+
+**参数:**
+
+* `ip_string`: String - 待检查的 IPv4 地址(例如,'192.168.1.5')。
+* `cidr_string`: String - 用于检查的 CIDR 范围(例如,'192.168.1.0/24')。
+
+**返回类型:**
+
+Boolean - 如果 IP 地址在指定范围内,则返回 `true`,否则返回 `false`。若输入无效,则返回 NULL 或抛出错误。
+
+**示例:**
+
+```sql
+SELECT ipv4_in_range('192.168.1.5', '192.168.1.0/24');
+-- 输出: true
+
+SELECT ipv4_in_range('192.168.2.1', '192.168.1.0/24');
+-- 输出: false
+
+SELECT ipv4_in_range('10.0.0.1', '10.0.0.0/8');
+-- 输出: true
+
+SELECT ipv4_in_range('8.8.8.8', '0.0.0.0/0'); -- /0 匹配所有地址
+-- 输出: true
+
+SELECT ipv4_in_range('192.168.1.1', '192.168.1.1/32'); -- /32 表示精确匹配单个地址
+-- 输出: true
+```
+
+### `ipv6_in_range(ip_string, cidr_string)`
+
+**描述:**
+
+检查给定的 IPv6 地址字符串是否落在指定的 CIDR 范围字符串之内。
+
+**参数:**
+
+* `ip_string`: String - 待检查的 IPv6 地址(例如,'2001:db8::1')。
+* `cidr_string`: String - 用于检查的 CIDR 范围(例如,'2001:db8::/32')。
+
+**返回类型:**
+
+Boolean - 如果 IP 地址在指定范围内,则返回 `true`,否则返回 `false`。若输入无效,则返回 NULL 或抛出错误。
+
+**示例:**
+
+```sql
+SELECT ipv6_in_range('2001:db8::1', '2001:db8::/32');
+-- 输出: true
+
+SELECT ipv6_in_range('2001:db8:1::', '2001:db8::/32');
+-- 输出: true
+
+SELECT ipv6_in_range('2001:db9::1', '2001:db8::/32');
+-- 输出: false
+
+SELECT ipv6_in_range('::1', '::1/128');
+-- 输出: true
+
+SELECT ipv6_in_range('fe80::1', 'fe80::/16');
+-- 输出: true
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/json.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/json.md
new file mode 100644
index 0000000000..e9baee1794
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/json.md
@@ -0,0 +1,128 @@
+---
+keywords: [JSON函数, 数据转换, SQL 查询, 数据库 JSON, JSON 操作]
+description: 列出了 GreptimeDB 中的所有 JSON 函数,包括函数的定义、使用方法和相关的 SQL 查询示例。
+---
+
+# JSON 函数(试验功能)
+
+:::warning
+JSON 类型目前仍处于实验阶段,在未来的版本中可能会有所调整。
+:::
+
+本页面列出了 GreptimeDB 中所有 JSON 类型相关的函数。
+
+## 转换
+
+JSON 类型与其他类型的值之间的转换。
+
+* `parse_json(string)` 尝试将字符串解析为 JSON 类型。非法的 JSON 字符串将返回错误。
+* `json_to_string(json)` 将 JSON 类型的值转换为字符串。
+
+```sql
+SELECT json_to_string(parse_json('{"a": 1, "b": 2}'));
+
++----------------------------------------------------------+
+| json_to_string(parse_json(Utf8("{\"a\": 1, \"b\": 2}"))) |
++----------------------------------------------------------+
+| {"a":1,"b":2} |
++----------------------------------------------------------+
+```
+
+## 提取
+
+通过给定的路径和给定的数据类型,从 JSON 中提取值。
+
+* `json_get_bool(json, path)` 按照路径 `path` 从 JSON 中获取布尔值。
+* `json_get_int(json, path)` 按照路径 `path` 从 JSON 中获取整数值。布尔值将被转换为整数。
+* `json_get_float(json, path)` 按照路径 `path` 从 JSON 中获取浮点数值。布尔值、整数值将被转换为浮点数。
+* `json_get_string(json, path)` 按照路径 `path` 从 JSON 中获取字符串。所有类型的 JSON 值都将被转换为字符串,包括数组、对象和 null。
+
+`path` 是一个用于从 JSON 值中选择和提取元素的字符串。`path` 中支持的操作符有:
+
+| 操作符 | 描述 | 示例 |
+| ------------------------ | ----------------------------------------- | ------------------ |
+| `$` | 根元素 | `$` |
+| `@` | 过滤表达式中的当前元素 | `$.event?(@ == 1)` |
+| `.*` | 选择对象中的所有元素 | `$.*` |
+| `.` | 选择对象中匹配名称的元素 | `$.event` |
+| `:` | `.` 的别名 | `$:event` |
+| `[""]` | `.` 的别名 | `$["event"]` |
+| `[*]` | 选择数组中的所有元素 | `$[*]` |
+| `[, ..]` | 选择数组中基于 0 的第 `n` 个元素 | `$[1, 2]` |
+| `[last - , ..]` | 选择数组中最后一个元素之前的第 `n` 个元素 | `$[0, last - 1]` |
+| `[ to , ..]` | 选择数组中某个范围内的所有元素 | `$[1 to last - 2]` |
+| `?()` | 选择所有匹配过滤表达式的元素 | `$?(@.price < 10)` |
+
+如果 `path` 是无效的,函数将返回 `NULL`。
+
+```sql
+SELECT json_get_int(parse_json('{"a": {"c": 3}, "b": 2}'), 'a.c');
+
++-----------------------------------------------------------------------+
+| json_get_int(parse_json(Utf8("{"a": {"c": 3}, "b": 2}")),Utf8("a.c")) |
++-----------------------------------------------------------------------+
+| 3 |
++-----------------------------------------------------------------------+
+```
+
+## 验证
+
+检查 JSON 值的类型。
+
+* `json_is_null(json)` 检查 JSON 中的值是否为 `NULL`。
+* `json_is_bool(json)` 检查 JSON 中的值是否为布尔值。
+* `json_is_int(json)` 检查 JSON 中的值是否为整数。
+* `json_is_float(json)` 检查 JSON 中的值是否为浮点数。
+* `json_is_string(json)` 检查 JSON 中的值是否为字符串。
+* `json_is_array(json)` 检查 JSON 中的值是否为数组。
+* `json_is_object(json)` 检查 JSON 中的值是否为对象。
+
+```sql
+SELECT json_is_array(parse_json('[1, 2, 3]'));
+
++----------------------------------------------+
+| json_is_array(parse_json(Utf8("[1, 2, 3]"))) |
++----------------------------------------------+
+| 1 |
++----------------------------------------------+
+
+SELECT json_is_object(parse_json('1'));
+
++---------------------------------------+
+| json_is_object(parse_json(Utf8("1"))) |
++---------------------------------------+
+| 0 |
++---------------------------------------+
+```
+
+* `json_path_exists(json, path)` 检查 JSON 中是否存在指定的路径。
+
+如果 `path` 是无效的,函数将返回错误。
+
+如果 `path` 或 `json` 是 `NULL`,函数将返回 `NULL`。
+
+```sql
+SELECT json_path_exists(parse_json('{"a": 1, "b": 2}'), 'a');
+
++------------------------------------------------------------------+
+| json_path_exists(parse_json(Utf8("{"a": 1, "b": 2}")),Utf8("a")) |
++------------------------------------------------------------------+
+| 1 |
++------------------------------------------------------------------+
+
+SELECT json_path_exists(parse_json('{"a": 1, "b": 2}'), 'c.d');
+
++--------------------------------------------------------------------+
+| json_path_exists(parse_json(Utf8("{"a": 1, "b": 2}")),Utf8("c.d")) |
++--------------------------------------------------------------------+
+| 0 |
++--------------------------------------------------------------------+
+
+SELECT json_path_exists(parse_json('{"a": 1, "b": 2}'), NULL);
+
++-------------------------------------------------------------+
+| json_path_exists(parse_json(Utf8("{"a": 1, "b": 2}")),NULL) |
++-------------------------------------------------------------+
+| NULL |
++-------------------------------------------------------------+
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/overview.md
new file mode 100644
index 0000000000..0bef5dbde9
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/overview.md
@@ -0,0 +1,284 @@
+---
+keywords: [函数概述, Datafusion 函数, GreptimeDB 函数, SQL 查询, 数据库函数]
+description: 提供了 GreptimeDB 中函数的概述,包括函数的分类、定义和使用方法。
+---
+
+import TOCInline from '@theme/TOCInline';
+
+# 函数
+
+
+
+
+
+## Datafusion 函数
+
+由于 GreptimeDB 的查询引擎是基于 Apache Arrow DataFusion 构建的,GreptimeDB 继承了 DataFusion 中所有内置的函数。这些函数包括:
+
+* **聚合函数**: 如 `COUNT`、`SUM`、`MIN`、`MAX` 等。详细列表请参阅 [聚合函数](./df-functions.md#aggregate-functions)
+* **标量函数**: 如 `ABS`、`COS`、`FLOOR` 等。详细列表请参阅 [标量函数](./df-functions.md#scalar-functions)
+* **窗口函数**: 对相关的一组行记录执行计算。详细列表请参阅 [窗口函数](./df-functions.md#window-functions)
+
+要查看所有 DataFusion 函数,请参阅 [DataFusion 函数](df-functions.md)。
+
+### `arrow_cast`
+
+`arrow_cast` 函数来自 DataFusion 的 [`arrow_cast`](./df-functions.md#arrow-cast)。其用法如下:
+
+```sql
+arrow_cast(expression, datatype)
+```
+
+其中 `datatype` 可以是此 [列表](https://arrow.apache.org/datafusion/user-guide/sql/data_types.html) 中的任何有效 Arrow 数据类型。四种时间戳类型是:
+
+- Timestamp(Second, None)
+- Timestamp(Millisecond, None)
+- Timestamp(Microsecond, None)
+- Timestamp(Nanosecond, None)
+
+(注意 `None` 表示时间戳不考虑时区)
+
+## GreptimeDB 函数
+
+### 字符串函数
+
+DataFusion [字符串函数](./df-functions.md#string-functions)。
+
+GreptimeDB 提供:
+* `matches_term(expression, term)` 用于全文检索。阅读[查询日志](/user-guide/logs/fulltext-search.md)文档获取更多详情。
+* `regexp_extract(str, regexp)` 提取字符串中与正则表达式匹配的第一个子串。如果没有找到匹配项则返回 `NULL`。
+
+#### regexp_extract
+
+提取字符串中与[正则表达式](https://docs.rs/regex/latest/regex/#syntax)匹配的第一个子串。如果没有找到匹配项则返回 `NULL`。
+
+```sql
+regexp_extract(str, regexp)
+```
+
+**参数:**
+
+- **str**: 要操作的字符串表达式。可以是常量、列或函数,以及运算符的任意组合。
+- **regexp**: 要匹配的正则表达式。可以是常量、列或函数。
+
+**关于转义的说明:**
+
+GreptimeDB 在 MySQL 和 PostgreSQL 兼容模式下的正则表达式转义行为有所不同:
+- **MySQL 模式**:转义序列需要使用双反斜杠(例如 `\\d`、`\\s`)
+- **PostgreSQL 模式**:默认情况下单反斜杠即可(例如 `\d`、`\s`),或者使用 `E''` 前缀以与 MySQL 保持一致(例如 `E'\\d'`)
+
+**示例:**
+
+```sql
+SELECT regexp_extract('version 1.2.3', '\d+\.\d+\.\d+');
+-- 返回: 1.2.3
+
+SELECT regexp_extract('Phone: 123-456-7890', '\d{3}-\d{3}-\d{4}');
+-- 返回: 123-456-7890
+
+SELECT regexp_extract('no match here', '\d+\.\d+\.\d+');
+-- 返回: NULL
+```
+
+### 数学函数
+
+DataFusion [数学函数](./df-functions.md#math-functions)。GreptimeDB 额外提供:
+* `clamp(value, lower, upper)` 将给定值限制在上下界之间:
+```sql
+SELECT CLAMP(10, 0, 1);
+
++------------------------------------+
+| clamp(Int64(10),Int64(0),Int64(1)) |
++------------------------------------+
+| 1 |
++------------------------------------+
+```
+
+```sql
+SELECT CLAMP(0.5, 0, 1);
+
++---------------------------------------+
+| clamp(Float64(0.5),Int64(0),Int64(1)) |
++---------------------------------------+
+| 0.5 |
++---------------------------------------+
+```
+
+* `mod(x, y)` 获取一个数除以另一个数的余数:
+```sql
+SELECT mod(18, 4);
+
++-------------------------+
+| mod(Int64(18),Int64(4)) |
++-------------------------+
+| 2 |
++-------------------------+
+```
+
+### 日期和时间函数
+
+DataFusion [时间和日期函数](./df-functions.md#time-and-date-functions)。GreptimeDB 额外提供:
+
+* [date_add](#data_add)
+* [date_sub](#data_sub)
+* [date_format](#date_format)
+* [to_unixtime](#to_unixtime)
+* [timezone](#timezone)
+
+#### date_add
+
+* `date_add(expression, interval)` 向 Timestamp、Date 或 DateTime 添加一个间隔值:
+
+```sql
+SELECT date_add('2023-12-06'::DATE, '3 month 5 day');
+```
+
+```
++----------------------------------------------------+
+| date_add(Utf8("2023-12-06"),Utf8("3 month 5 day")) |
++----------------------------------------------------+
+| 2024-03-11 |
++----------------------------------------------------+
+```
+
+
+#### date_sub
+
+* `date_sub(expression, interval)` 从 Timestamp、Date 或 DateTime 减去一个间隔值:
+
+```sql
+SELECT date_sub('2023-12-06 07:39:46.222'::TIMESTAMP_MS, '5 day'::INTERVAL);
+```
+
+```
++-----------------------------------------------------------------------------------------------------------------------------------------+
+| date_sub(arrow_cast(Utf8("2023-12-06 07:39:46.222"),Utf8("Timestamp(Millisecond, None)")),IntervalMonthDayNano("92233720368547758080")) |
++-----------------------------------------------------------------------------------------------------------------------------------------+
+| 2023-12-01 07:39:46.222000 |
++-----------------------------------------------------------------------------------------------------------------------------------------+
+```
+
+
+#### date_format
+
+* `date_format(expression, fmt)` 将 Timestamp、Date 或 DateTime 格式化:
+
+支持 `Date32`、`Date64` 和所有 `Timestamp` 类型。
+
+```sql
+SELECT date_format('2023-12-06 07:39:46.222'::TIMESTAMP, '%Y-%m-%d %H:%M:%S:%3f');
+```
+
+```
++-----------------------------------------------------------------------------------------------------------------------------+
+| date_format(arrow_cast(Utf8("2023-12-06 07:39:46.222"),Utf8("Timestamp(Millisecond, None)")),Utf8("%Y-%m-%d %H:%M:%S:%3f")) |
++-----------------------------------------------------------------------------------------------------------------------------+
+| 2023-12-06 07:39:46:222 |
++-----------------------------------------------------------------------------------------------------------------------------+
+```
+
+支持的格式化符号请参阅 [chrono::format::strftime](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) 模块。
+
+#### to_unixtime
+
+* `to_unixtime(expression)` 将表达式转换为 Unix 时间戳(秒)。参数可以是整数(毫秒 Unix 时间戳)、Timestamp、Date、DateTime 或字符串类型。如果参数是字符串类型,函数将首先尝试将其转换为 DateTime、Timestamp 或 Date。
+
+```sql
+select to_unixtime('2023-03-01T06:35:02Z');
+```
+
+```
++-------------------------------------------+
+| to_unixtime(Utf8("2023-03-01T06:35:02Z")) |
++-------------------------------------------+
+| 1677652502 |
++-------------------------------------------+
+```
+
+```sql
+select to_unixtime('2023-03-01'::date);
+```
+
+```
++---------------------------------+
+| to_unixtime(Utf8("2023-03-01")) |
++---------------------------------+
+| 1677628800 |
++---------------------------------+
+```
+
+#### timezone
+
+* `timezone()` 查询当前会话时区:
+
+```sql
+select timezone();
+```
+
+```
++------------+
+| timezone() |
++------------+
+| UTC |
++------------+
+```
+
+### 系统函数
+
+* `isnull(expression)` 检查表达式是否为 `NULL`:
+```sql
+ SELECT isnull(1);
+
+ +------------------+
+| isnull(Int64(1)) |
++------------------+
+| 0 |
++------------------+
+```
+
+```sql
+SELECT isnull(NULL);
+
++--------------+
+| isnull(NULL) |
++--------------+
+| 1 |
++--------------+
+```
+
+* `build()` 查询 GreptimeDB 构建信息。
+* `version()` 查询 GreptimeDB 版本信息。
+* `database()` 查询当前会话数据库:
+
+```sql
+select database();
+
++------------+
+| database() |
++------------+
+| public |
++------------+
+```
+
+### 管理函数
+
+GreptimeDB 提供了 `ADMIN` 语句来执行管理函数,请阅读 [ADMIN](/reference/sql/admin.md) 文档。
+
+### JSON 函数
+
+[了解 GreptimeDB 中 JSON 相关的函数](./json.md)。
+
+### 地理函数
+
+[了解 GreptimeDB 中轨迹、地理编码相关的地理函数](./geo.md)。
+
+### 向量函数
+
+[了解 GreptimeDB 中向量相关的函数](./vector.md)。
+
+### 近似函数
+
+GreptimeDB 支持一些近似函数用于数据分析,例如近似去重计数(hll)、近似分位数(uddsketch)等。[了解 GreptimeDB 中近似函数](./approximate.md)。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/vector.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/vector.md
new file mode 100644
index 0000000000..b5a9553c66
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/functions/vector.md
@@ -0,0 +1,470 @@
+---
+keywords: [向量函数, 距离计算, 向量运算, SQL 查询, 数据库向量]
+description: 列出了 GreptimeDB 中的所有向量函数,包括函数的定义、使用方法和相关的 SQL 查询示例。
+---
+
+# 向量函数
+
+本页面列出了 GreptimeDB 中所有支持的向量相关函数。向量函数主要用于处理向量运算,比如基础运算、距离计算、转换函数等。
+
+## 基础运算
+
+### `vec_scalar_add`
+
+向量与标量的加法运算。将向量中的每个元素与标量相加,返回新的向量。
+
+示例:
+
+```sql
+SELECT vec_to_string(vec_scalar_add(2.0, parse_vec('[1.0, 2.0, 3.0]')));
+```
+
+```sql
++------------------------------------------------------------------------------+
+| vec_to_string(vec_scalar_add(Float64(2),parse_vec(Utf8("[1.0, 2.0, 3.0]")))) |
++------------------------------------------------------------------------------+
+| [3,4,5] |
++------------------------------------------------------------------------------+
+```
+
+```sql
+SELECT vec_to_string(vec_scalar_add(2.0, '[1.0, 2.0, 3.0]')); -- 隐式转换字符串为向量
+```
+
+```sql
++-------------------------------------------------------------------+
+| vec_to_string(vec_scalar_add(Float64(2),Utf8("[1.0, 2.0, 3.0]"))) |
++-------------------------------------------------------------------+
+| [3,4,5] |
++-------------------------------------------------------------------+
+```
+
+```sql
+SELECT vec_to_string(vec_scalar_add(-2.0, parse_vec('[1.0, 2.0, 3.0]'))); -- 减法运算
+```
+
+```sql
++-------------------------------------------------------------------------------+
+| vec_to_string(vec_scalar_add(Float64(-2),parse_vec(Utf8("[1.0, 2.0, 3.0]")))) |
++-------------------------------------------------------------------------------+
+| [-1,0,1] |
++-------------------------------------------------------------------------------+
+```
+
+### `vec_scalar_mul`
+
+向量与标量的乘法运算。将向量中的每个元素与标量相乘,返回新的向量。
+
+示例:
+
+```sql
+SELECT vec_to_string(vec_scalar_mul(2.0, parse_vec('[1.0, 2.0, 3.0]')));
+```
+
+```sql
++------------------------------------------------------------------------------+
+| vec_to_string(vec_scalar_mul(Float64(2),parse_vec(Utf8("[1.0, 2.0, 3.0]")))) |
++------------------------------------------------------------------------------+
+| [2,4,6] |
++------------------------------------------------------------------------------+
+```
+
+```sql
+SELECT vec_to_string(vec_scalar_mul(2.0, '[1.0, 2.0, 3.0]')); -- 隐式转换字符串为向量
+```
+
+```sql
++------------------------------------------------------------------------------+
+| vec_to_string(vec_scalar_mul(Float64(2),parse_vec(Utf8("[1.0, 2.0, 3.0]")))) |
++------------------------------------------------------------------------------+
+| [2,4,6] |
++------------------------------------------------------------------------------+
+```
+
+```sql
+SELECT vec_to_string(vec_scalar_mul(1.0/2.0, parse_vec('[1.0, 2.0, 3.0]'))); -- 除法运算
+```
+
+```sql
++-------------------------------------------------------------------------------------------+
+| vec_to_string(vec_scalar_mul(Float64(1) / Float64(2),parse_vec(Utf8("[1.0, 2.0, 3.0]")))) |
++-------------------------------------------------------------------------------------------+
+| [0.5,1,1.5] |
++-------------------------------------------------------------------------------------------+
+```
+
+### `vec_add`
+
+向量之间的加法运算。将两个向量的对应元素相加,返回新的向量。
+
+示例:
+
+```sql
+SELECT vec_to_string(vec_add(parse_vec('[1.0, 2.0, 3.0]'), parse_vec('[2.0, 1.0, 4.0]')));
+```
+
+```sql
++-----------------------------------------------------------------------------------------------+
+| vec_to_string(vec_add(parse_vec(Utf8("[1.0, 2.0, 3.0]")),parse_vec(Utf8("[2.0, 1.0, 4.0]")))) |
++-----------------------------------------------------------------------------------------------+
+| [3,3,7] |
++-----------------------------------------------------------------------------------------------+
+```
+
+```sql
+SELECT vec_to_string(vec_add('[1.0, 2.0, 3.0]', '[2.0, 1.0, 4.0]')); -- 隐式转换字符串为向量
+```
+
+```sql
++-------------------------------------------------------------------------+
+| vec_to_string(vec_add(Utf8("[1.0, 2.0, 3.0]"),Utf8("[2.0, 1.0, 4.0]"))) |
++-------------------------------------------------------------------------+
+| [3,3,7] |
++-------------------------------------------------------------------------+
+```
+
+### `vec_sub`
+
+向量之间的减法运算。将两个向量的对应元素相减,返回新的向量。
+
+示例:
+
+```sql
+SELECT vec_to_string(vec_sub(parse_vec('[1.0, 2.0, 3.0]'), parse_vec('[2.0, 1.0, 4.0]')));
+```
+
+```sql
++-----------------------------------------------------------------------------------------------+
+| vec_to_string(vec_sub(parse_vec(Utf8("[1.0, 2.0, 3.0]")),parse_vec(Utf8("[2.0, 1.0, 4.0]")))) |
++-----------------------------------------------------------------------------------------------+
+| [-1,1,-1] |
++-----------------------------------------------------------------------------------------------+
+```
+
+```sql
+SELECT vec_to_string(vec_sub('[1.0, 2.0, 3.0]', '[2.0, 1.0, 4.0]')); -- 隐式转换字符串为向量
+```
+
+```sql
++-------------------------------------------------------------------------+
+| vec_to_string(vec_sub(Utf8("[1.0, 2.0, 3.0]"),Utf8("[2.0, 1.0, 4.0]"))) |
++-------------------------------------------------------------------------+
+| [-1,1,-1] |
++-------------------------------------------------------------------------+
+```
+
+### `vec_mul`
+
+向量之间的乘法运算。将两个向量的对应元素相乘,返回新的向量。
+
+示例:
+
+```sql
+SELECT vec_to_string(vec_mul(parse_vec('[1.0, 2.0, 3.0]'), parse_vec('[2.0, 1.0, 4.0]')));
+```
+
+```sql
++-----------------------------------------------------------------------------------------------+
+| vec_to_string(vec_mul(parse_vec(Utf8("[1.0, 2.0, 3.0]")),parse_vec(Utf8("[2.0, 1.0, 4.0]")))) |
++-----------------------------------------------------------------------------------------------+
+| [2,2,12] |
++-----------------------------------------------------------------------------------------------+
+```
+
+```sql
+SELECT vec_to_string(vec_mul('[1.0, 2.0, 3.0]', '[2.0, 1.0, 4.0]')); -- 隐式转换字符串为向量
+```
+
+```sql
++-------------------------------------------------------------------------+
+| vec_to_string(vec_mul(Utf8("[1.0, 2.0, 3.0]"),Utf8("[2.0, 1.0, 4.0]"))) |
++-------------------------------------------------------------------------+
+| [2,2,12] |
++-------------------------------------------------------------------------+
+```
+
+### `vec_div`
+
+向量之间的除法运算。将两个向量的对应元素相除,返回新的向量。
+
+示例:
+
+```sql
+SELECT vec_to_string(vec_div(parse_vec('[1.0, 2.0, 3.0]'), parse_vec('[2.0, 1.0, 4.0]')));
+```
+
+```sql
++-----------------------------------------------------------------------------------------------+
+| vec_to_string(vec_div(parse_vec(Utf8("[1.0, 2.0, 3.0]")),parse_vec(Utf8("[2.0, 1.0, 4.0]")))) |
++-----------------------------------------------------------------------------------------------+
+| [0.5,2,0.75] |
++-----------------------------------------------------------------------------------------------+
+```
+
+```sql
+SELECT vec_to_string(vec_div('[1.0, 2.0, 3.0]', '[2.0, 1.0, 4.0]')); -- 隐式转换字符串为向量
+```
+
+```sql
++-------------------------------------------------------------------------+
+| vec_to_string(vec_div(Utf8("[1.0, 2.0, 3.0]"),Utf8("[2.0, 1.0, 4.0]"))) |
++-------------------------------------------------------------------------+
+| [0.5,2,0.75] |
++-------------------------------------------------------------------------+
+```
+
+### `vec_elem_sum`
+
+向量中所有元素求和,返回一个标量。
+
+示例:
+
+```sql
+SELECT vec_elem_sum(parse_vec('[1.0, 2.0, 3.0]'));
+```
+
+```sql
++--------------------------------------------------+
+| vec_elem_sum(parse_vec(Utf8("[1.0, 2.0, 3.0]"))) |
++--------------------------------------------------+
+| 6 |
++--------------------------------------------------+
+```
+
+```sql
+SELECT vec_elem_sum('[1.0, 2.0, 3.0]'); -- 隐式转换字符串为向量
+```
+
+```sql
++---------------------------------------+
+| vec_elem_sum(Utf8("[1.0, 2.0, 3.0]")) |
++---------------------------------------+
+| 6 |
++---------------------------------------+
+```
+
+### `vec_elem_product`
+
+向量中所有元素求积,返回一个标量。
+
+示例:
+
+```sql
+SELECT vec_elem_product(parse_vec('[1.0, 2.0, 3.0]'));
+```
+
+```sql
++------------------------------------------------------+
+| vec_elem_product(parse_vec(Utf8("[1.0, 2.0, 3.0]"))) |
++------------------------------------------------------+
+| 6 |
++------------------------------------------------------+
+```
+
+```sql
+SELECT vec_elem_product('[1.0, 2.0, 3.0]'); -- 隐式转换字符串为向量
+```
+
+```sql
++-------------------------------------------+
+| vec_elem_product(Utf8("[1.0, 2.0, 3.0]")) |
++-------------------------------------------+
+| 6 |
++-------------------------------------------+
+```
+
+### `vec_norm`
+
+归一化向量。将向量中的每个元素除以向量的 L2 范数,返回新的向量。
+
+等价于 `vec_scalar_mul(1.0 / sqrt(vec_elem_sum(vec_mul(vec, vec))), vec)`。
+
+示例:
+
+```sql
+SELECT vec_to_string(vec_norm(parse_vec('[1.0, 2.0, 3.0]')));
+```
+
+```sql
++-------------------------------------------------------------+
+| vec_to_string(vec_norm(parse_vec(Utf8("[1.0, 2.0, 3.0]")))) |
++-------------------------------------------------------------+
+| [0.26726124,0.5345225,0.8017837] |
++-------------------------------------------------------------+
+
+-- 等价于
+-- SELECT vec_to_string(vec_scalar_mul(1.0 / sqrt(vec_elem_sum(vec_mul(vec, vec))), vec))
+-- FROM (SELECT '[1.0, 2.0, 3.0]' AS vec);
+-- +--------------------------------------------------------------------------------------+
+-- | vec_to_string(vec_scalar_mul(Float64(1) / sqrt(vec_elem_sum(vec_mul(vec,vec))),vec)) |
+-- +--------------------------------------------------------------------------------------+
+-- | [0.26726124,0.5345225,0.8017837] |
+-- +--------------------------------------------------------------------------------------+
+```
+
+```sql
+SELECT vec_to_string(vec_norm('[1.0, 2.0, 3.0]')); -- 隐式转换字符串为向量
+```
+
+```sql
++--------------------------------------------------+
+| vec_to_string(vec_norm(Utf8("[1.0, 2.0, 3.0]"))) |
++--------------------------------------------------+
+| [0.26726124,0.5345225,0.8017837] |
++--------------------------------------------------+
+```
+
+## 聚合函数
+
+### `vec_sum`
+
+将向量列中的所有向量按元素相加,返回一个新的向量。
+
+示例:
+
+```sql
+CREATE TABLE vectors (
+ ts TIMESTAMP TIME INDEX,
+ vec_col VECTOR(3),
+);
+
+INSERT INTO vectors (ts, vec_col) VALUES ('2024-11-18 00:00:01', '[1.0, 2.0, 3.0]');
+INSERT INTO vectors (ts, vec_col) VALUES ('2024-11-18 00:00:02', '[2.0, 1.0, 4.0]');
+INSERT INTO vectors (ts, vec_col) VALUES ('2024-11-18 00:00:03', '[3.0, 3.0, 3.0]');
+
+SELECT vec_to_string(vec_sum(vec_col)) FROM vectors;
+```
+
+```sql
++-----------------------------------------+
+| vec_to_string(vec_sum(vectors.vec_col)) |
++-----------------------------------------+
+| [6,6,10] |
++-----------------------------------------+
+```
+
+### `vec_product`
+
+将向量列中的所有向量按元素相乘,返回一个新的向量。
+
+示例:
+
+```sql
+CREATE TABLE vectors (
+ ts TIMESTAMP TIME INDEX,
+ vec_col VECTOR(3),
+);
+
+INSERT INTO vectors (ts, vec_col) VALUES ('2024-11-18 00:00:01', '[1.0, 2.0, 3.0]');
+INSERT INTO vectors (ts, vec_col) VALUES ('2024-11-18 00:00:02', '[2.0, 1.0, 4.0]');
+INSERT INTO vectors (ts, vec_col) VALUES ('2024-11-18 00:00:03', '[3.0, 3.0, 3.0]');
+
+SELECT vec_to_string(vec_product(vec_col)) FROM vectors;
+```
+
+```sql
++---------------------------------------------+
+| vec_to_string(vec_product(vectors.vec_col)) |
++---------------------------------------------+
+| [6,6,36] |
++---------------------------------------------+
+```
+
+## 距离计算
+
+GreptimeDB 提供了以下常用的距离计算函数:
+
+* `vec_l2sq_distance(vec1, vec2)`:计算两个向量之间的 L2 距离的平方。
+* `vec_cos_distance(vec1, vec2)`:计算两个向量之间的余弦距离。
+* `vec_dot_product(vec1, vec2)`:计算两个向量之间的点积。
+
+这些函数接受向量值作为参数。你可以通过 `parse_vec` 函数将字符串转变为向量值,例如 `parse_vec('[1.0, 2.0, 3.0]')`。同时,字符串格式的向量(例如 `[1.0, 2.0, 3.0]`)也可以直接使用,它们会被自动转换。无论采用哪种方式,向量的维度必须保持一致。
+
+### `vec_l2sq_distance`
+
+计算两个向量之间的平方欧几里得距离(L2 距离的平方)。L2 距离是几何空间中两个点之间的直线距离,此函数返回其平方值以提高计算效率。
+
+示例:
+
+```sql
+SELECT vec_l2sq_distance(parse_vec('[1.0, 2.0, 3.0]'), parse_vec('[2.0, 1.0, 4.0]'));
+```
+
+或者
+
+```sql
+SELECT vec_l2sq_distance('[1.0, 2.0, 3.0]', '[2.0, 1.0, 4.0]');
+```
+
+说明:
+* 参数为两个维度一致的向量。
+* 返回值类型为 `Float32` 标量。
+
+### `vec_cos_distance`
+
+计算两个向量之间的余弦距离。余弦距离是两个向量之间的夹角余弦值,用于衡量向量之间的相似度。
+
+示例:
+
+```sql
+SELECT vec_cos_distance(parse_vec('[1.0, 2.0, 3.0]'), parse_vec('[2.0, 1.0, 4.0]'));
+```
+
+或者
+
+```sql
+SELECT vec_cos_distance('[1.0, 2.0, 3.0]', '[2.0, 1.0, 4.0]');
+```
+
+说明:
+* 参数为两个维度一致的向量。
+* 返回值类型为 `Float32` 标量。
+
+### `vec_dot_product`
+
+计算两个向量之间的点积。点积是两个向量对应元素的乘积之和,常用于度量两个向量的相似性或用于机器学习的线性变换中。
+
+示例:
+
+```sql
+SELECT vec_dot_product(parse_vec('[1.0, 2.0, 3.0]'), parse_vec('[2.0, 1.0, 4.0]'));
+```
+
+或者
+
+```sql
+SELECT vec_dot_product('[1.0, 2.0, 3.0]', '[2.0, 1.0, 4.0]');
+```
+
+说明:
+* 参数为两个维度一致的向量。
+* 返回值类型为 `Float32` 标量。
+
+## 转换函数
+
+在处理数据库中的向量数据时,GreptimeDB 提供了方便的函数,用于在字符串和向量值之间进行转换。
+
+### `parse_vec`
+
+将字符串转换为向量值。字符串必须以方括号 `[]` 包围,并且包含 `Float32` 类型的元素,元素之间用逗号分隔。
+
+示例:
+
+```sql
+CREATE TABLE vectors (
+ ts TIMESTAMP,
+ vec_col VECTOR(3)
+);
+
+INSERT INTO vectors (ts, vec_col) VALUES ('2024-11-18 00:00:01', parse_vec('[1.0, 2.0, 3.0]'));
+```
+
+### `vec_to_string`
+
+将向量值转换为字符串。转换后的字符串格式为 `[, , ...]`。
+
+示例:
+
+```sql
+SELECT vec_to_string(vec_col) FROM vectors;
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/greptime-private/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/greptime-private/overview.md
new file mode 100644
index 0000000000..d5b672f55d
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/greptime-private/overview.md
@@ -0,0 +1,15 @@
+---
+keywords: [系统表, greptime private, pipelines, 慢查询]
+description: greptime_private 数据库中系统表的概述。
+---
+
+# Greptime Private
+
+GreptimeDB 将一些重要的内部信息以系统表的形式存储在 `greptime_private` 数据库中。与普通表类似,系统表也会持久化存储。你可以通过系统表获取系统配置和统计信息。
+
+## 表
+
+| 表名 | 描述 |
+| ----------------------------------- | -------------------------------------------------------- |
+| [`slow_queries`](./slow_queries.md) | 包含 GreptimeDB 的慢查询信息,包括查询语句、执行时间等。 |
+| [`pipelines`](./pipelines.md) | 包含 GreptimeDB 的 Pipeline 信息。 |
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/greptime-private/pipelines.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/greptime-private/pipelines.md
new file mode 100644
index 0000000000..3e6f973109
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/greptime-private/pipelines.md
@@ -0,0 +1,39 @@
+---
+keywords: [pipelines, greptime private]
+description: greptime_private 数据库中 pipelines 表。
+---
+
+# pipelines
+
+`pipelines` 表包含 GreptimeDB 的 Pipeline 信息。
+
+```sql
+USE greptime_private;
+
+SELECT * FROM pipelines;
+```
+
+输出如下:
+
+```sql
++----------------+--------+--------------+----------------------------------------------------------------------------------------------------------------------------------+----------------------------+
+| name | schema | content_type | pipeline | created_at |
++----------------+--------+--------------+----------------------------------------------------------------------------------------------------------------------------------+----------------------------+
+| nginx_pipeline | | yaml | transform: | 2025-07-03 07:23:15.227539 |
+ - fields:
+ - response_size
+ type: int32
+ - fields:
+ - timestamp
+ type: time
+ index: timestamp
++----------------+--------+--------------+----------------------------------------------------------------------------------------------------------------------------------+----------------------------+
+```
+
+- `name`: pipeline 名称;
+- `schema`: 已废弃。如果你在 `v0.15` 之后创建 pipeline,这个字段会是一个空字符串。
+- `content_type`: pipeline 的类型;
+- `pipeline`: pipeline 的具体内容;
+- `created_at`: pipeline 的创建时间;
+
+更多详情可参考 [管理 Pipelines](/user-guide/logs/manage-pipelines.md) 文档。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/greptime-private/slow_queries.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/greptime-private/slow_queries.md
new file mode 100644
index 0000000000..7e50b47db7
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/greptime-private/slow_queries.md
@@ -0,0 +1,37 @@
+---
+keywords: [慢查询, greptime private]
+description: greptime_private 数据库中的慢查询表。
+---
+
+# slow_queries
+
+`slow_queries` 表包含 GreptimeDB 的慢查询信息:
+
+```sql
+USE greptime_private;
+
+SELECT * FROM slow_queries;
+```
+
+输出如下:
+
+```sql
++------+-----------+---------------------------------------------+-----------+----------------------------+--------------+-------------+---------------------+---------------------+
+| cost | threshold | query | is_promql | timestamp | promql_range | promql_step | promql_start | promql_end |
++------+-----------+---------------------------------------------+-----------+----------------------------+--------------+-------------+---------------------+---------------------+
+| 2 | 0 | irate(process_cpu_seconds_total[1h]) | 1 | 2025-05-14 13:59:36.368575 | 86400000 | 3600000 | 2024-11-24 00:00:00 | 2024-11-25 00:00:00 |
+| 22 | 0 | SELECT * FROM greptime_private.slow_queries | 0 | 2025-05-14 13:59:44.844201 | 0 | 0 | 1970-01-01 00:00:00 | 1970-01-01 00:00:00 |
++------+-----------+---------------------------------------------+-----------+----------------------------+--------------+-------------+---------------------+---------------------+
+```
+
+- `cost`:查询的耗时(毫秒)。
+- `threshold`:查询的阈值(毫秒)。
+- `query`:查询语句,可以是 SQL 或 PromQL。
+- `is_promql`:是否为 PromQL 查询。
+- `timestamp`:查询的时间戳。
+- `promql_range`:查询的范围,仅在 is_promql 为 true 时使用。
+- `promql_step`:查询的步长,仅在 is_promql 为 true 时使用。
+- `promql_start`:查询的起始时间,仅在 is_promql 为 true 时使用。
+- `promql_end`:查询的结束时间,仅在 is_promql 为 true 时使用。
+
+更多详情可参考 [慢查询](/user-guide/deployments-administration/monitoring/slow-query.md) 文档。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/group_by.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/group_by.md
new file mode 100644
index 0000000000..c7b5cfc0f1
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/group_by.md
@@ -0,0 +1,73 @@
+---
+keywords: [SQL GROUP BY 子句, 数据分组, 聚合函数, 数据汇总, SQL 示例]
+description: GROUP BY 语句用于对具有相同值的行进行分组,通常与聚合函数一起使用。
+---
+
+# GROUP BY
+
+SQL 中的 `GROUP BY` 语句用于对具有一个或多个列中的相同值的行进行分组。
+该子句通常与聚合函数(如 `COUNT`、`SUM`、`AVG` 等)一起使用,以生成汇总报表。
+
+## Syntax
+
+`GROUP BY` 的基本语法如下:
+
+```sql
+SELECT column1, column2, ..., aggregate_function(column_name)
+FROM table_name
+GROUP BY column1, column2, ...;
+```
+
+`GROUP BY` 语句根据子句中指定的列对结果集进行分组。
+聚合函数应用于具有相同值的组。
+
+## 示例
+
+假设有如下名为 `system_metrics` 的表:
+
+```sql
++-------+-------+----------+-------------+-----------+---------------------+
+| host | idc | cpu_util | memory_util | disk_util | ts |
++-------+-------+----------+-------------+-----------+---------------------+
+| host1 | idc_a | 11.8 | 10.3 | 10.3 | 2022-11-03 03:39:57 |
+| host1 | idc_b | 50 | 66.7 | 40.6 | 2022-11-03 03:39:57 |
+| host1 | idc_c | 50.1 | 66.8 | 40.8 | 2022-11-03 03:39:57 |
+| host1 | idc_e | NULL | 66.7 | 40.6 | 2022-11-03 03:39:57 |
+| host2 | idc_a | 80.1 | 70.3 | 90 | 2022-11-03 03:39:57 |
++-------+-------+----------+-------------+-----------+---------------------+
+```
+
+### 根据 Tags 聚合
+
+要获取每个 `idc` 中的 memory_util 平均值,可以使用以下 SQL:
+
+```sql
+SELECT idc, AVG(memory_util)
+FROM system_metrics
+GROUP BY idc;
+```
+
+结果如下:
+
+```sql
++-------+---------------------------------+
+| idc | AVG(system_metrics.memory_util) |
++-------+---------------------------------+
+| idc_b | 66.7 |
+| idc_c | 66.8 |
+| idc_e | 66.7 |
+| idc_a | 40.3 |
++-------+---------------------------------+
+```
+
+### 根据 Time Interval 聚合
+
+要获取 memory_util 的日均值,SQL 如下:
+
+```sql
+SELECT date_trunc('day', ts) as dt, avg(memory_util)
+FROM system_metrics
+GROUP BY dt
+```
+
+请参考 [date_trunc](./functions/overview.md#date_trunc) 获取更多信息。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/having.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/having.md
new file mode 100644
index 0000000000..c23aa5d6d5
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/having.md
@@ -0,0 +1,39 @@
+---
+
+keywords: [SQL HAVING 子句, 数据检索, 过滤聚合函数行]
+description: 描述 SQL 中的 HAVING 子句,该子句用于过滤聚合函数的行。
+---
+
+# HAVING
+
+`HAVING` 子句允许你过滤分组(聚合)结果——它的作用类似于 `WHERE`,但是在分组发生之后才起作用。 `HAVING` 子句被添加到 SQL 中,是因为 `WHERE` 子句不能与聚合函数一起使用。
+
+## 例子
+
+查找平均 CPU 利用率超过 80% 的日期窗口:
+```sql
+SELECT
+ date_trunc('day', ts) AS day,
+ AVG(cpu_util) AS avg_cpu_util
+FROM
+ system_metrics
+GROUP BY
+ day
+HAVING
+ avg_cpu_util > 80;
+```
+
+查找错误日志数量大于 100 的小时窗口:
+```sql
+SELECT
+ DATE_TRUNC('hour', log_time) AS hour,
+ COUNT(*) AS error_count
+FROM
+ application_logs
+WHERE
+ log_level = 'ERROR'
+GROUP BY
+ hour
+HAVING
+ error_count > 100;
+```
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/build-info.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/build-info.md
new file mode 100644
index 0000000000..e889ab537d
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/build-info.md
@@ -0,0 +1,32 @@
+---
+keywords: [BUILD_INFO 表, 构建信息, 版本信息, SQL查询, 数据库构建]
+description: 提供了 GreptimeDB 构建信息的相关内容,包括版本信息、构建时间和相关的 SQL 查询示例。
+---
+
+# BUILD_INFO
+
+`BUILD_INFO` 表提供了系统的构建信息:
+
+```sql
+USE INFORMATION_SCHEMA;
+
+SELECT * FROM BUILD_INFO;
+```
+
+结果如下:
+
+```sql
++------------+------------------------------------------+------------------+-----------+-------------+
+| git_branch | git_commit | git_commit_short | git_clean | pkg_version |
++------------+------------------------------------------+------------------+-----------+-------------+
+| | c595a56ac89bef78b19a76aa60d8c6bcac7354a5 | c595a56a | true | 0.9.0 |
++------------+------------------------------------------+------------------+-----------+-------------+
+```
+
+结果中的列:
+
+* `branch`:构建的 git 分支名称。
+* `git_commit`:提交构建的 `commit`。
+* `git_commit_short`:提交构建的 `commit` 缩写。
+* `git_clean`:如果构建源目录包含了所有提交的更改,则为 `true`。
+* `pkg_version`:GreptimeDB 版本。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/character-sets.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/character-sets.md
new file mode 100644
index 0000000000..779d06d616
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/character-sets.md
@@ -0,0 +1,31 @@
+---
+keywords: [CHARACTER_SETS 表, 字符集, SQL 查询, 数据库字符集, 字符集信息]
+description: 介绍了 GreptimeDB 中的字符集,包括字符集的定义、使用方法和相关的 SQL 查询示例。
+---
+
+# CHARACTER_SETS
+
+`CHARACTER_SETS` 提供了 GreptimeDB 支持的可用字符集。
+
+```sql
+USE INFORMATION_SCHEMA;
+
+SELECT * FROM CHARACTER_SETS;
+```
+
+结果如下:
+
+```sql
++--------------------+----------------------+---------------+--------+
+| character_set_name | default_collate_name | description | maxlen |
++--------------------+----------------------+---------------+--------+
+| utf8 | utf8_bin | UTF-8 Unicode | 4 |
++--------------------+----------------------+---------------+--------+
+```
+
+结果中的列:
+
+* `character_set_name`:字符集的名称。
+* `default_collate_name`:字符集的默认排序规则名称。
+* `description`:字符集的描述。
+* `MAXLEN`:存储一个字符所需的最大字节数。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/cluster-info.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/cluster-info.md
new file mode 100644
index 0000000000..4beb13cdf1
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/cluster-info.md
@@ -0,0 +1,88 @@
+---
+keywords: [CLUSTER_INFO 表, 集群信息, 节点信息, SQL查询, 数据库集群]
+description: 提供了 GreptimeDB 集群信息的相关内容,包括集群状态、节点信息和相关的 SQL 查询示例。
+---
+
+# CLUSTER_INFO
+
+`CLUSTER_INFO` 表提供了集群的节点拓扑信息。
+
+
+```sql
+USE INFORMATION_SCHEMA;
+
+DESC TABLE CLUSTER_INFO;
+```
+
+输出如下:
+
+```sql
++-----------------------+----------------------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++-----------------------+----------------------+------+------+---------+---------------+
+| peer_id | Int64 | | NO | | FIELD |
+| peer_type | String | | NO | | FIELD |
+| peer_addr | String | | YES | | FIELD |
+| peer_hostname | String | | YES | | FIELD |
+| total_cpu_millicores | Int64 | | NO | | FIELD |
+| total_memory_bytes | Int64 | | NO | | FIELD |
+| cpu_usage_millicores | Int64 | | NO | | FIELD |
+| memory_usage_bytes | Int64 | | NO | | FIELD |
+| version | String | | NO | | FIELD |
+| git_commit | String | | NO | | FIELD |
+| start_time | TimestampMillisecond | | YES | | FIELD |
+| uptime | String | | YES | | FIELD |
+| active_time | String | | YES | | FIELD |
+| node_status | String | | YES | | FIELD |
++-----------------------+----------------------+------+------+---------+---------------+
+```
+
+
+每个列的含义:
+
+* `peer_id`: 节点的服务器 ID。对于 standalone 来讲,该字段总是为 `0`,对于集群模式下的 frontend 该字段总为 `-1`。因为在这两种情况下,该字段没有实际含义。
+* `peer_type`: 节点类型,分布式集群里可能是 `METASRV`、`FRONTEND` 或者 `DATANODE`。单机模式显示为 `STANDALONE`。
+* `peer_addr`: 节点的 gRPC 服务地址。对于单机部署,该字段总为空。
+* `peer_hostname`: 节点的主机名。
+* `total_cpu_millicores`: 节点的总 CPU 毫核数。
+* `total_memory_bytes`: 节点的总内存字节数。
+* `cpu_usage_millicores`: 节点的 CPU 使用毫核数。此功能仅在容器化环境 (cgroup v2) 中有效。
+* `memory_usage_bytes`: 节点的内存使用字节数。此功能仅在容器化环境 (cgroup v2) 中有效。
+* `version`: 节点的版本号,形如 `0.7.2` 的字符串。
+* `git_commit`: 节点编译的 git 版本号。
+* `start_time`: 节点的启动时间。
+* `uptime`: 节点的持续运行时间,形如 `24h 10m 59s 150ms` 的字符串。
+* `active_time`: 距离节点上一次活跃(也就是发送心跳请求)过去的时间,形如 `24h 10m 59s 150ms` 的字符串。单机模式下该字段总为空。
+* `node_status`: 节点的状态信息。
+
+尝试查询下这张表:
+
+```sql
+SELECT * FROM CLUSTER_INFO;
+```
+
+一个单机模式的样例输出:
+
+```sql
++---------+------------+-----------+---------------+----------------------+--------------------+----------------------+--------------------+---------+-----------+----------------------------+--------+-------------+-------------+
+| peer_id | peer_type | peer_addr | peer_hostname | total_cpu_millicores | total_memory_bytes | cpu_usage_millicores | memory_usage_bytes | version | git_commit| start_time | uptime | active_time | node_status |
++---------+------------+-----------+---------------+----------------------+--------------------+----------------------+--------------------+---------+-----------+----------------------------+--------+-------------+-------------+
+| 0 | STANDALONE | | | 16000 | 17179869184 | 0 | 0 | 0.7.2 | 86ab3d9 | 2024-04-30T06:40:02.074 | 18ms | | NULL |
++---------+------------+-----------+---------------+----------------------+--------------------+----------------------+--------------------+---------+-----------+----------------------------+--------+-------------+-------------+
+```
+
+另一个输出来自一个分布式集群,它有三个 Datanode、一个 Frontend 和一个 Metasrv:
+
+```sql
++---------+-----------+----------------+-------------------------------------+----------------------+--------------------+----------------------+--------------------+---------+-----------+----------------------------+----------+-------------+-------------------------------------------------------------------+
+| peer_id | peer_type | peer_addr | peer_hostname | total_cpu_millicores | total_memory_bytes | cpu_usage_millicores | memory_usage_bytes | version | git_commit| start_time | uptime | active_time | node_status |
++---------+-----------+----------------+-------------------------------------+----------------------+--------------------+----------------------+--------------------+---------+-----------+----------------------------+----------+-------------+-------------------------------------------------------------------+
+| 1 | DATANODE | 127.0.0.1:4101 | mycluster-datanode-0 | 1000 | 1073741824 | 1 | 34570240 | 0.7.2 | 86ab3d9 | 2024-04-30T06:40:04.791 | 4s 478ms | 1s 467ms | {"workloads":["hybrid"],"leader_regions":46,"follower_regions":0} |
+| 2 | DATANODE | 127.0.0.1:4102 | mycluster-datanode-1 | 1000 | 1073741824 | 1 | 38170624 | 0.7.2 | 86ab3d9 | 2024-04-30T06:40:06.098 | 3s 171ms | 162ms | {"workloads":["hybrid"],"leader_regions":46,"follower_regions":0} |
+| 3 | DATANODE | 127.0.0.1:4103 | mycluster-datanode-2 | 1000 | 1073741824 | 1 | 37085184 | 0.7.2 | 86ab3d9 | 2024-04-30T06:40:07.425 | 1s 844ms | 1s 839ms | {"workloads":["hybrid"],"leader_regions":46,"follower_regions":0} |
+| -1 | FRONTEND | 127.0.0.1:4001 | mycluster-frontend-6c5d4bcf78-m7jtx | 1000 | 1073741824 | 1 | 45465600 | 0.7.2 | 86ab3d9 | 2024-04-30T06:40:08.815 | 454ms | 47ms | NULL |
+| 0 | METASRV | 127.0.0.1:3002 | mycluster-meta-54bd44bd94-g8dzm | 1000 | 1073741824 | 0 | 28368896 | unknown | unknown | | | | {"is_leader":true} |
++---------+-----------+----------------+-------------------------------------+----------------------+--------------------+----------------------+--------------------+---------+-----------+----------------------------+----------+-------------+-------------------------------------------------------------------+
+```
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/collation-character-set-applicability.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/collation-character-set-applicability.md
new file mode 100644
index 0000000000..40254eaf5f
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/collation-character-set-applicability.md
@@ -0,0 +1,29 @@
+---
+keywords: [COLLATION_CHARACTER_SET_APPLICABILITY 表, 排序规则, 字符集, SQL 查询, 数据库适用性]
+description: 介绍了 GreptimeDB 中排序规则与字符集的适用性,包括如何在 SQL 查询中使用这些规则和字符集。
+---
+
+# COLLATION_CHARACTER_SET_APPLICABILITY
+
+`COLLATION_CHARACTER_SET_APPLICABILITY` 表示了每个排序规则适用的字符集。
+
+```sql
+USE INFORMATION_SCHEMA;
+
+SELECT * FROM COLLATION_CHARACTER_SET_APPLICABILITY;
+```
+
+结果如下:
+
+```sql
++----------------+--------------------+
+| collation_name | character_set_name |
++----------------+--------------------+
+| utf8_bin | utf8 |
++----------------+--------------------+
+```
+
+结果中的列:
+
+* `collation_name`:排序规则名称。
+* `character_set_name`:与排序规则关联的字符集名称。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/collations.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/collations.md
new file mode 100644
index 0000000000..8b68d4ae67
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/collations.md
@@ -0,0 +1,33 @@
+---
+keywords: [COLLATIONS 表, 排序规则, 字符集, SQL 查询, 数据库排序]
+description: 介绍了 GreptimeDB 中字符集的排序规则,包括排序规则的定义、使用方法和相关的 SQL 查询示例。
+---
+
+# COLLATIONS
+
+`COLLATIONS` 提供了每个字符集的排序规则信息。
+
+```sql
+USE INFORMATION_SCHEMA;
+
+SELECT * FROM COLLATIONS;
+```
+
+结果如下:
+
+```sql
++----------------+--------------------+------+------------+-------------+---------+
+| collation_name | character_set_name | id | is_default | is_compiled | sortlen |
++----------------+--------------------+------+------------+-------------+---------+
+| utf8_bin | utf8 | 1 | Yes | Yes | 1 |
++----------------+--------------------+------+------------+-------------+---------+
+```
+
+表中有这些列:
+
+* `collation_name`:排序规则名称。
+* `character_set_name`:字符集名称。
+* `id`:排序规则 ID。
+* `is_default`:是否为字符集的默认排序规则。
+* `is_compiled`:字符集是否已编译到系统中。
+* `sortlen`:以字符集表示的字符串排序所需的最小内存量。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/columns.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/columns.md
new file mode 100644
index 0000000000..0b2f1f0bb2
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/columns.md
@@ -0,0 +1,181 @@
+---
+keywords: [COLUMNS 表, 列信息, SQL查询, 数据库列, 表结构]
+description: COLUMNS 表提供关于表中每列的详细信息。
+---
+
+# COLUMNS
+
+`COLUMNS` 提供了关于表中每列的详细信息。
+
+```sql
+USE INFORMATION_SCHEMA;
+DESC COLUMNS;
+```
+
+结果如下:
+
+```sql
++--------------------------+--------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++--------------------------+--------+------+------+---------+---------------+
+| table_catalog | String | | NO | | FIELD |
+| table_schema | String | | NO | | FIELD |
+| table_name | String | | NO | | FIELD |
+| column_name | String | | NO | | FIELD |
+| ordinal_position | Int64 | | NO | | FIELD |
+| character_maximum_length | Int64 | | YES | | FIELD |
+| character_octet_length | Int64 | | YES | | FIELD |
+| numeric_precision | Int64 | | YES | | FIELD |
+| numeric_scale | Int64 | | YES | | FIELD |
+| datetime_precision | Int64 | | YES | | FIELD |
+| character_set_name | String | | YES | | FIELD |
+| collation_name | String | | YES | | FIELD |
+| column_key | String | | NO | | FIELD |
+| extra | String | | NO | | FIELD |
+| privileges | String | | NO | | FIELD |
+| generation_expression | String | | NO | | FIELD |
+| greptime_data_type | String | | NO | | FIELD |
+| data_type | String | | NO | | FIELD |
+| semantic_type | String | | NO | | FIELD |
+| column_default | String | | YES | | FIELD |
+| is_nullable | String | | NO | | FIELD |
+| column_type | String | | NO | | FIELD |
+| column_comment | String | | YES | | FIELD |
+| srs_id | Int64 | | YES | | FIELD |
++--------------------------+--------+------+------+---------+---------------+
+24 rows in set (0.00 sec)
+```
+
+创建表 `public.t1` 并查询其在 `COLUMNS` 中的信息:
+
+```sql
+CREATE TABLE public.t1 (h STRING, v FLOAT64, ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP() TIME INDEX, PRIMARY KEY(h));
+SELECT * FROM COLUMNS WHERE table_schema='public' AND TABLE_NAME='t1'\G
+```
+
+结果如下:
+
+```sql
+*************************** 1. row ***************************
+ table_catalog: greptime
+ table_schema: public
+ table_name: t1
+ column_name: h
+ ordinal_position: 1
+character_maximum_length: 2147483647
+ character_octet_length: 2147483647
+ numeric_precision: NULL
+ numeric_scale: NULL
+ datetime_precision: NULL
+ character_set_name: utf8
+ collation_name: utf8_bin
+ column_key: PRI
+ extra:
+ privileges: select,insert
+ generation_expression:
+ greptime_data_type: String
+ data_type: string
+ semantic_type: TAG
+ column_default: NULL
+ is_nullable: Yes
+ column_type: string
+ column_comment: NULL
+ srs_id: NULL
+*************************** 2. row ***************************
+ table_catalog: greptime
+ table_schema: public
+ table_name: t1
+ column_name: v
+ ordinal_position: 2
+character_maximum_length: NULL
+ character_octet_length: NULL
+ numeric_precision: 22
+ numeric_scale: NULL
+ datetime_precision: NULL
+ character_set_name: NULL
+ collation_name: NULL
+ column_key:
+ extra:
+ privileges: select,insert
+ generation_expression:
+ greptime_data_type: Float64
+ data_type: double
+ semantic_type: FIELD
+ column_default: NULL
+ is_nullable: Yes
+ column_type: double
+ column_comment: NULL
+ srs_id: NULL
+*************************** 3. row ***************************
+ table_catalog: greptime
+ table_schema: public
+ table_name: t1
+ column_name: ts
+ ordinal_position: 3
+character_maximum_length: NULL
+ character_octet_length: NULL
+ numeric_precision: NULL
+ numeric_scale: NULL
+ datetime_precision: 3
+ character_set_name: NULL
+ collation_name: NULL
+ column_key: TIME INDEX
+ extra:
+ privileges: select,insert
+ generation_expression:
+ greptime_data_type: TimestampMillisecond
+ data_type: timestamp(3)
+ semantic_type: TIMESTAMP
+ column_default: current_timestamp()
+ is_nullable: No
+ column_type: timestamp(3)
+ column_comment: NULL
+ srs_id: NULL
+3 rows in set (0.03 sec)
+```
+
+`COLUMNS` 表中列的描述如下:
+
+- `table_catalog`:列所属的目录的名称。在 OSS 项目中该值始终为 `greptime`。
+- `table_schema`:包含列的表所属的数据库的名称。
+- `table_name`:包含列的表的名称。
+- `column_name`:列的名称。
+- `ordinal_position`:列在表中的位置。
+- `character_maximum_length`:对于字符串列,以字符为单位的最大长度。
+- `character_octet_length`:对于字符串列,以字节为单位的最大长度。
+- `numeric_precision`:对于数值数据类型,列的精度。
+- `numeric_scale`:对于数值数据类型,列的标度。
+- `datetime_precision`:对于日期时间数据类型,列的小数秒精度。
+- `character_set_name`:字符串列的字符集的名称。
+- `collation_name`:字符串列的排序规则的名称。
+- `column_key`:列的键类型。可以是以下之一:`PRI`、`TIME INDEX` 或空字符串。
+- `extra`:关于列的附加信息。
+- `privileges`:当前用户对该列的权限。
+- `generation_expression`:对于生成的列,此值显示用于计算列值的表达式。对于非生成的列,该值为空。
+- `greptime_data_type`:列的 GreptimeDB [数据类型](/reference/sql/data-types.md)。
+- `data_type`:列中的数据类型。
+- `semantic_type`:列的类型。可以是以下之一:`TAG`、`FIELD` 或 `TIMESTAMP`。
+- `column_default`:列的默认值。如果默认值被明确设定为 `NULL`,或者列定义中不包含 `default` 子句,则该值为 `NULL`。
+- `is_nullable`:列是否可为空。如果列可以存储空值,则该值为 `YES`;否则,为 `NO`。
+- `column_type`:列的数据类型。与 `DATA_TYPE` 列相同。
+- `column_comment`:列定义中包含的注释。
+- `srs_id`:列的空间参考系统(SRS)的 ID。
+
+相应的 `SHOW` 语句如下:
+
+```sql
+SHOW COLUMNS FROM t1 FROM public;
+```
+
+结果如下:
+
+```sql
++-------+--------------+------+------------+---------------------+-------+----------------------+
+| Field | Type | Null | Key | Default | Extra | Greptime_type |
++-------+--------------+------+------------+---------------------+-------+----------------------+
+| h | string | Yes | PRI | NULL | | String |
+| ts | timestamp(3) | No | TIME INDEX | current_timestamp() | | TimestampMillisecond |
+| v | double | Yes | | NULL | | Float64 |
++-------+--------------+------+------------+---------------------+-------+----------------------+
+3 rows in set (0.01 sec)
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/engines.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/engines.md
new file mode 100644
index 0000000000..382a006642
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/engines.md
@@ -0,0 +1,51 @@
+---
+keywords: [存储引擎信息, ENGINES 表, 支持级别, 默认存储引擎, 事务支持]
+description: ENGINES 表提供关于存储引擎的信息,检查 GreptimeDB 是否支持某个存储引擎或查看默认的存储引擎。
+---
+
+# ENGINES
+
+`ENGINES`表提供了关于存储引擎的信息。当你需要检查 GreptimeDB 是否支持某个存储引擎或者查看默认的存储引擎时,该表非常有用。
+
+`ENGINES`表包含以下列:
+
+* `engine`:存储引擎名称。
+* `support`:存储引擎的支持级别:
+
+|值 | 含义|
+| --- | --- |
+| `YES` | 支持且在使用中 |
+| `DEFAULT` | 支持且在使用中,且是默认的存储引擎 |
+| `NO` | 不支持 |
+| `DISABLED` | 支持但已被禁用 |
+
+
+* `comment`:存储引擎的简要描述。
+* `transactions`:存储引擎是否支持事务。
+* `xa`:存储引擎是否支持 XA 事务。
+* `savepoints`:存储引擎是否支持保存点。
+
+例如:
+
+```sql
+SELECT * from INFORMATION_SCHEMA.ENGINES\G
+```
+
+结果如下:
+
+```sql
+*************************** 1. row ***************************
+ engine: mito
+ support: DEFAULT
+ comment: Storage engine for time-series data
+transactions: NO
+ xa: NO
+ savepoints: NO
+*************************** 2. row ***************************
+ engine: metric
+ support: YES
+ comment: Storage engine for observability scenarios, which is adept at handling a large number of small tables, making it particularly suitable for cloud-native monitoring
+transactions: NO
+ xa: NO
+ savepoints: NO
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/flows.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/flows.md
new file mode 100644
index 0000000000..0fecad7244
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/flows.md
@@ -0,0 +1,40 @@
+---
+keywords: [Flow 任务信息, FLOWS 表, 任务定义, 过期时间, 源表 id]
+description: FLOWS 表提供 Flow 任务的相关信息。
+---
+
+# FLOWS
+`Flows` 表提供了 Flow 任务的相关信息。
+
+```sql
+DESC TABLE INFORMATION_SCHEMA.FLOWS;
+```
+
+```sql
+ Column | Type | Key | Null | Default | Semantic Type
+------------------+--------+-----+------+---------+---------------
+ flow_name | String | | NO | | FIELD
+ flow_id | UInt32 | | NO | | FIELD
+ table_catalog | String | | NO | | FIELD
+ flow_definition | String | | NO | | FIELD
+ comment | String | | YES | | FIELD
+ expire_after | Int64 | | YES | | FIELD
+ source_table_ids | String | | YES | | FIELD
+ sink_table_name | String | | NO | | FIELD
+ flownode_ids | String | | YES | | FIELD
+ options | String | | YES | | FIELD
+(10 rows)
+```
+
+表中的列:
+
+* `flow_name`: Flow 任务的名称。
+* `flow_id`: Flow 任务的 id。
+* `table_catalog`: 该 Flow 所属的目录,命名为 `table_catalog` 以保持与 `INFORMATION_SCHEMA` 标准一致。
+* `flow_definition`: Flow 任务的定义,是用于创建 Flow 任务的 SQL 语句。
+* `comment`: Flow 任务的注释。
+* `expire_after`: Flow 任务的过期时间。
+* `source_table_ids`: Flow 任务的源表 id。
+* `sink_table_name`: Flow 任务的目标表名称。
+* `flownode_ids`: Flow 任务使用的 flownode id。
+* `options`: Flow 任务的其他额外选项。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/key-column-usage.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/key-column-usage.md
new file mode 100644
index 0000000000..ccb594c517
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/key-column-usage.md
@@ -0,0 +1,88 @@
+---
+keywords: [键约束, KEY_COLUMN_USAGE 表, 时间索引键, 外键约束, 列位置]
+description: KEY_COLUMN_USAGE 表描述列的键约束,例如时间索引键的约束。
+---
+
+# KEY_COLUMN_USAGE
+
+`KEY_COLUMN_USAGE` 表描述列的键约束,例如时间索引键的约束。
+
+```sql
+USE INFORMATION_SCHEMA;
+DESC KEY_COLUMN_USAGE;
+```
+
+结果如下:
+
+```sql
++-------------------------------+--------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++-------------------------------+--------+------+------+---------+---------------+
+| constraint_catalog | String | | NO | | FIELD |
+| constraint_schema | String | | NO | | FIELD |
+| constraint_name | String | | NO | | FIELD |
+| table_catalog | String | | NO | | FIELD |
+| real_table_catalog | String | | NO | | FIELD |
+| table_schema | String | | NO | | FIELD |
+| table_name | String | | NO | | FIELD |
+| column_name | String | | NO | | FIELD |
+| ordinal_position | UInt32 | | NO | | FIELD |
+| position_in_unique_constraint | UInt32 | | YES | | FIELD |
+| referenced_table_schema | String | | YES | | FIELD |
+| referenced_table_name | String | | YES | | FIELD |
+| referenced_column_name | String | | YES | | FIELD |
++-------------------------------+--------+------+------+---------+---------------+
+```
+
+```sql
+SELECT * FROM key_column_usage WHERE table_schema='public' and table_name='monitor'\G
+```
+
+```sql
+*************************** 1. row ***************************
+ constraint_catalog: def
+ constraint_schema: public
+ constraint_name: TIME INDEX
+ table_catalog: def
+ real_table_catalog: greptime
+ table_schema: public
+ table_name: monitor
+ column_name: ts
+ ordinal_position: 1
+position_in_unique_constraint: NULL
+ referenced_table_schema: NULL
+ referenced_table_name: NULL
+ referenced_column_name: NULL
+*************************** 2. row ***************************
+ constraint_catalog: def
+ constraint_schema: public
+ constraint_name: PRIMARY
+ table_catalog: def
+ real_table_catalog: greptime
+ table_schema: public
+ table_name: monitor
+ column_name: host
+ ordinal_position: 1
+position_in_unique_constraint: NULL
+ referenced_table_schema: NULL
+ referenced_table_name: NULL
+ referenced_column_name: NULL
+2 rows in set (0.02 sec)
+```
+
+`KEY_COLUMN_USAGE` 表中列的描述如下:
+
+- `constraint_catalog`:约束所属的目录名称。该值始终为 `def`。
+- `constraint_schema`:约束所属的数据库名称。
+- `constraint_name`:约束的名称。
+- `table_catalog`:表所属目录的名称。该值始终为 `def`。
+- `real_table_catalog`:表所属目录的真实名称。该值始终为 `greptime`。
+- `table_schema`:表所属的数据库名称。
+- `table_name`:具有约束的表的名称。
+- `column_name`:具有约束的列的名称。
+- `ordinal_position`:列在约束中的位置,而不是在表中的位置。位置编号从 `1` 开始。
+- `position_in_unique_constraint`:唯一约束和主键约束为空。对于外键约束,此列是引用表键的位置。
+- `referenced_table_schema`:约束引用的数据库名称。目前在 GreptimeDB 中,除外键约束外,所有约束中此列的值均为 `NULL`。
+- `referenced_table_name`:约束引用的表名称。目前在 GreptimeDB 中,除外键约束外,所有约束中此列的值均为 `NULL`。
+- `referenced_column_name`:约束引用的列名称。目前在 GreptimeDB 中,除外键约束外,所有约束中此列的值均为 `NULL`。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/overview.md
new file mode 100644
index 0000000000..1adf0395b7
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/overview.md
@@ -0,0 +1,66 @@
+---
+keywords: [系统元数据, INFORMATION_SCHEMA, MySQL 兼容性, 自定义表, 集群信息]
+description: INFORMATION_SCHEMA 提供对系统元数据的访问,例如数据库或表的名称、列的数据类型等。
+---
+
+# INFORMATION_SCHEMA
+
+`INFORMATION_SCHEMA` 提供了对系统元数据的访问,例如数据库或表的名称、列的数据类型等。GreptimeDB 还提供了一些自定义的 `INFORMATION_SCHEMA` 表,用于查询有关 GreptimeDB 系统本身、集群信息和运行时指标等元数据。很多 `INFORMATION_SCHEMA` 表都有对应的 `SHOW` 命令,查询 `INFORMATION_SCHEMA` 的好处是可以在表之间进行连接。
+
+`INFORMATION_SCHEMA` 依然有很多工作要做,请跟踪 `INFORMATION_SCHEMA` 的 [issue](https://github.com/GreptimeTeam/greptimedb/issues/2931)。
+
+## MySQL 兼容性
+
+|表名 | 描述|
+| --- | --- |
+| [`CHARACTER_SETS`](./character-sets.md) | 提供了可用字符集的信息。 |
+| `CHECK_CONSTRAINTS`| 未实现。返回零行。 |
+| [`COLLATIONS`](./collations.md) | 提供了服务器支持的排序规则列表。 |
+| [`COLLATION_CHARACTER_SET_APPLICABILITY`](./collation-character-set-applicability.md) | 解释了哪些排序规则适用于哪些字符集。 |
+| [`COLUMNS`](./columns.md) | 提供了所有表的列列表。 |
+| `COLUMN_PRIVILEGES` | 未实现。返回零行。 |
+| `COLUMN_STATISTICS` | 不支持。 |
+| [`ENGINES`](./engines.md) | 提供了支持的存储引擎列表。 |
+| `EVENTS` | 未实现。返回零行。 |
+| `FILES` | 未实现。返回零行。 |
+| `GLOBAL_STATUS` | 未实现。返回零行。 |
+| `GLOBAL_VARIABLES` | 不支持。 |
+| [`KEY_COLUMN_USAGE`](./key-column-usage.md) | 描述了列的关键约束,例如主键和时间索引约束。 |
+| `OPTIMIZER_TRACE` | 未实现。返回零行。 |
+| `PARAMETERS` | 未实现。返回零行。 |
+| [`PARTITIONS`](./partitions.md) | 提供了表分区的列表。 |
+| `PLUGINS` | 不支持。|
+| `PROCESSLIST` | 不支持,请使用 `PROCESS_LIST` 表 |
+| `PROFILING` | 未实现。返回零行。 |
+| `REFERENTIAL_CONSTRAINTS` | 未实现。返回零行。 |
+| `ROUTINES` | 未实现。返回零行。 |
+| [`SCHEMATA`](./schemata.md) | 提供了类似于 `SHOW DATABASES` 的信息。 |
+| `SCHEMA_PRIVILEGES` | 未实现。返回零行。 |
+| `SESSION_STATUS` | 未实现。返回零行。 |
+| `SESSION_VARIABLES` | 不支持。 |
+| `STATISTICS` | 不支持。 |
+| [`TABLES`](./tables.md) | 提供了当前用户可见的表列表。类似于 `SHOW TABLES`。 |
+| `TABLESPACES` | 不支持。 |
+| `TABLE_PRIVILEGES` | 未实现。返回零行。 |
+| `TRIGGERS` | 未实现。返回零行。 |
+| `USER_ATTRIBUTES` | 不支持。 |
+| `USER_PRIVILEGES` | 不支持。|
+| `VARIABLES_INFO` | 不支持。 |
+| [`VIEWS`](./views.md)| 提供了当前用户可见的视图(View)列表及相关信息。 |
+| [`TABLE_CONSTRAINTS`](./table-constraints.md) | 提供了主键、唯一索引和外键的信息。 |
+
+## GreptimeDB 提供的表
+
+|表名 | 描述|
+| --- | --- |
+| [`BUILD_INFO`](./build-info.md) | 提供了系统构建的信息。 |
+| [`REGION_PEERS`](./region-peers.md) | 提供了表的 Region 存储的详细信息。 |
+| [`REGION_STATISTICS`](./region-statistics.md) | 提供 Region 的详细统计信息,例如行数等。 |
+| [`RUNTIME_METRICS`](./runtime-metrics.md)| 提供了系统运行时指标。|
+| [`CLUSTER_INFO`](./cluster-info.md)| 提供了集群的节点拓扑信息。|
+| [`FLOWS`](./flows.md) | 提供 Flow 相关信息。|
+| [`PROCEDURE_INFO`](./procedure-info.md) | 提供 Procedure 相关信息。|
+| [`PROCESS_LIST`](./process-list.md) | 提供集群内正在执行的查询信息|
+| [`SSTS_INDEX_META`](./ssts-index-meta.md) | 提供 SST 索引元数据,包括倒排索引、全文索引和布隆过滤器。|
+| [`SSTS_MANIFEST`](./ssts-manifest.md) | 提供从 manifest 获取的 SST 文件信息,包括文件路径、大小、时间范围和行数。|
+| [`SSTS_STORAGE`](./ssts-storage.md) | 提供从存储层获取的 SST 文件信息,用于验证和调试。|
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/partitions.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/partitions.md
new file mode 100644
index 0000000000..16a9f68eb8
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/partitions.md
@@ -0,0 +1,164 @@
+---
+keywords: [分区表信息, PARTITIONS 表, 分区方法, 分区表达式, Region Id]
+description: PARTITIONS 表提供关于分区表的信息。
+---
+
+# PARTITIONS
+
+`PARTITIONS` 表提供了关于分区表的信息。
+
+```sql
+USE INFORMATION_SCHEMA;
+DESC PARTITIONS;
+```
+
+结果如下:
+
+```sql
++-------------------------------+----------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++-------------------------------+----------+------+------+---------+---------------+
+| table_catalog | String | | NO | | FIELD |
+| table_schema | String | | NO | | FIELD |
+| table_name | String | | NO | | FIELD |
+| partition_name | String | | NO | | FIELD |
+| subpartition_name | String | | YES | | FIELD |
+| partition_ordinal_position | Int64 | | YES | | FIELD |
+| subpartition_ordinal_position | Int64 | | YES | | FIELD |
+| partition_method | String | | YES | | FIELD |
+| subpartition_method | String | | YES | | FIELD |
+| partition_expression | String | | YES | | FIELD |
+| subpartition_expression | String | | YES | | FIELD |
+| partition_description | String | | YES | | FIELD |
+| table_rows | Int64 | | YES | | FIELD |
+| avg_row_length | Int64 | | YES | | FIELD |
+| data_length | Int64 | | YES | | FIELD |
+| max_data_length | Int64 | | YES | | FIELD |
+| index_length | Int64 | | YES | | FIELD |
+| data_free | Int64 | | YES | | FIELD |
+| create_time | TimestampSecond | | YES | | FIELD |
+| update_time | TimestampSecond | | YES | | FIELD |
+| check_time | TimestampSecond | | YES | | FIELD |
+| checksum | Int64 | | YES | | FIELD |
+| partition_comment | String | | YES | | FIELD |
+| nodegroup | String | | YES | | FIELD |
+| tablespace_name | String | | YES | | FIELD |
+| greptime_partition_id | UInt64 | | YES | | FIELD |
++-------------------------------+----------+------+------+---------+---------------+
+26 rows in set (0.01 sec)
+```
+
+主要列包括:
+* `table_catalog`:表所属目录的名称。该值始终为 `def`。
+* `table_schema`:表所属的 schema(数据库)的名称。
+* `table_name`:包含分区(region)的表的名称。
+* `partition_name`:分区(region)的名称。
+* `partition_ordinal_position`:所有分区按照定义的顺序进行索引,1 是分配给第一个分区的编号。
+* `partition_method`:该值始终为 `RANGE`,GreptimeDB 仅支持范围分区。
+* `partition_expression`:该分区的表达式。
+* `create_time`:分区创建的时间。
+* `greptime_partition_id`:GreptimeDB 扩展字段,也就是 Region Id。
+
+创建一张分区表并查询:
+
+```sql
+CREATE TABLE public.test_p (
+ a INT PRIMARY KEY,
+ b STRING,
+ ts TIMESTAMP TIME INDEX,
+)
+PARTITION ON COLUMNS (a) (
+ a < 10,
+ a >= 10 AND a < 20,
+ a >= 20
+);
+
+-- 查询表的分区信息
+SELECT * FROM PARTITIONS WHERE table_schema='public' AND table_name='test_p'\G
+```
+
+示例输出如下:
+
+```sql
+*************************** 1. row ***************************
+ table_catalog: greptime
+ table_schema: public
+ table_name: test_p
+ partition_name: p0
+ subpartition_name: NULL
+ partition_ordinal_position: 1
+subpartition_ordinal_position: NULL
+ partition_method: RANGE
+ subpartition_method: NULL
+ partition_expression: (a) VALUES LESS THAN (PartitionExpr { lhs: Column("a"), op: Lt, rhs: Value(Int32(10)) })
+ subpartition_expression: NULL
+ partition_description: NULL
+ table_rows: NULL
+ avg_row_length: NULL
+ data_length: NULL
+ max_data_length: NULL
+ index_length: NULL
+ data_free: NULL
+ create_time: 2024-04-01 10:49:49.468000
+ update_time: NULL
+ check_time: NULL
+ checksum: NULL
+ partition_comment: NULL
+ nodegroup: NULL
+ tablespace_name: NULL
+ greptime_partition_id: 4453881085952
+*************************** 2. row ***************************
+ table_catalog: greptime
+ table_schema: public
+ table_name: test_p
+ partition_name: p1
+ subpartition_name: NULL
+ partition_ordinal_position: 2
+subpartition_ordinal_position: NULL
+ partition_method: RANGE
+ subpartition_method: NULL
+ partition_expression: (a) VALUES LESS THAN (PartitionExpr { lhs: Column("a"), op: GtEq, rhs: Value(Int32(20)) })
+ subpartition_expression: NULL
+ partition_description: NULL
+ table_rows: NULL
+ avg_row_length: NULL
+ data_length: NULL
+ max_data_length: NULL
+ index_length: NULL
+ data_free: NULL
+ create_time: 2024-04-01 10:49:49.468000
+ update_time: NULL
+ check_time: NULL
+ checksum: NULL
+ partition_comment: NULL
+ nodegroup: NULL
+ tablespace_name: NULL
+ greptime_partition_id: 4453881085954
+*************************** 3. row ***************************
+ table_catalog: greptime
+ table_schema: public
+ table_name: test_p
+ partition_name: p2
+ subpartition_name: NULL
+ partition_ordinal_position: 3
+subpartition_ordinal_position: NULL
+ partition_method: RANGE
+ subpartition_method: NULL
+ partition_expression: (a) VALUES LESS THAN (PartitionExpr { lhs: Expr(PartitionExpr { lhs: Column("a"), op: Gt, rhs: Value(Int32(10)) }), op: And, rhs: Expr(PartitionExpr { lhs: Column("a"), op: Lt, rhs: Value(Int32(20)) }) })
+ subpartition_expression: NULL
+ partition_description: NULL
+ table_rows: NULL
+ avg_row_length: NULL
+ data_length: NULL
+ max_data_length: NULL
+ index_length: NULL
+ data_free: NULL
+ create_time: 2024-04-01 10:49:49.468000
+ update_time: NULL
+ check_time: NULL
+ checksum: NULL
+ partition_comment: NULL
+ nodegroup: NULL
+ tablespace_name: NULL
+ greptime_partition_id: 4453881085953
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/procedure-info.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/procedure-info.md
new file mode 100644
index 0000000000..484589fa3f
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/procedure-info.md
@@ -0,0 +1,37 @@
+---
+keywords: [Procedure 信息, PROCEDURE_INFO表, Procedure 类型, 时间戳, 锁定键]
+description: PROCEDURE_INFO 表提供各种 Procedure 的详细信息。
+---
+
+# PROCEDURE_INFO
+
+`PROCEDURE_INFO` 表提供了各种 Procedure 的详细信息。
+:::tip NOTE
+该表在 [GreptimeCloud](https://greptime.cloud/) 中不可用。
+:::
+
+```sql
+DESC TABLE INFORMATION_SCHEMA.PROCEDURE_INFO;
+```
+
+```sql
++----------------+----------------------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++----------------+----------------------+------+------+---------+---------------+
+| procedure_id | String | | NO | | FIELD |
+| procedure_type | String | | NO | | FIELD |
+| start_time | TimestampMillisecond | | YES | | FIELD |
+| end_time | TimestampMillisecond | | YES | | FIELD |
+| status | String | | NO | | FIELD |
+| lock_keys | String | | YES | | FIELD |
++----------------+----------------------+------+------+---------+---------------+
+```
+
+`PROCEDURE_INFO` 表中的字段描述如下:
+
+- `procedure_id`: Procedure 的 ID。
+- `procedure_type`: Procedure 的类型。
+- `start_time`: Procedure 开始的时间戳。
+- `end_time`: Procedure 结束的时间戳。
+- `status`: Procedure 当前的状态。
+- `lock_keys`: Procedure 锁定的键。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/process-list.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/process-list.md
new file mode 100644
index 0000000000..b022213728
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/process-list.md
@@ -0,0 +1,66 @@
+---
+keywords: [查询, process_list, processlist, 查询管理]
+description: 提供当前正在运行的查询列表的内部表。
+---
+
+# PROCESS_LIST
+
+`PROCESS_LIST` 表提供了 GreptimeDB 集群中所有正在运行的查询的视图。
+
+:::tip NOTE
+`PROCESS_LIST`表特意选择了一个与 MySQL 的 `PROCESSLIST` 不同的名称,因为它们的列并不相通。
+:::
+
+```sql
+USE INFORMATION_SCHEMA;
+DESC PROCESS_LIST;
+```
+
+输出如下:
+
+```sql
++-----------------+----------------------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++-----------------+----------------------+------+------+---------+---------------+
+| id | String | | NO | | FIELD |
+| catalog | String | | NO | | FIELD |
+| schemas | String | | NO | | FIELD |
+| query | String | | NO | | FIELD |
+| client | String | | NO | | FIELD |
+| frontend | String | | NO | | FIELD |
+| start_timestamp | TimestampMillisecond | | NO | | FIELD |
+| elapsed_time | DurationMillisecond | | NO | | FIELD |
++-----------------+----------------------+------+------+---------+---------------+
+```
+
+`PROCESS_LIST` 表中的字段描述如下:
+
+- `id`: 查询的 ID。
+- `catalog`: 查询的 catalog 名称。
+- `schemas`: 客户端发出查询时所处的 schema 名称。
+- `query`: 查询语句。
+- `client`: 客户端信息,包括客户端地址和使用的协议。
+- `frontend`: 查询正在运行的 frontend 实例。
+- `start_timestamp`: 查询的开始时间戳。
+- `elapsed_time`: 查询已运行多长时间。
+
+:::tip NOTE
+你还可以使用 `SHOW [FULL] PROCESSLIST` 语句作为直接查询 `INFORMATION_SCHEMA.PROCESS_LIST` 表的替代方法。
+:::
+
+
+# 终止一个查询
+
+当从 `PROCESS_LIST` 表中识别到正在运行的查询时,你可以使用 `KILL ` 语句终止该查询,其中 `` 是 `PROCESS_LIST` 表中的 `id` 字段。
+
+```sql
+mysql> select * from process_list;
++-----------------------+----------+--------------------+----------------------------+------------------------+---------------------+----------------------------+-----------------+
+| id | catalog | schemas | query | client | frontend | start_timestamp | elapsed_time |
++-----------------------+----------+--------------------+----------------------------+------------------------+---------------------+----------------------------+-----------------+
+| 112.40.36.208/7 | greptime | public | SELECT * FROM some_very_large_table | mysql[127.0.0.1:34692] | 112.40.36.208:4001 | 2025-06-30 07:04:11.118000 | 00:00:12.002000 |
++-----------------------+----------+--------------------+----------------------------+------------------------+---------------------+----------------------------+-----------------+
+
+KILL '112.40.36.208/7';
+Query OK, 1 row affected (0.00 sec)
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/region-peers.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/region-peers.md
new file mode 100644
index 0000000000..699d60f3bd
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/region-peers.md
@@ -0,0 +1,50 @@
+---
+keywords: [Region 节点信息, REGION_PEERS 表, 节点状态, leader, learner]
+description: REGION_PEERS 表显示 GreptimeDB 中单个 Region 节点的详细信息,例如它是 learner 还是 leader。
+---
+
+# REGION_PEERS
+
+`REGION_PEERS` 表显示了 GreptimeDB 中单个 Region 节点的详细信息,例如它是 learner 还是 leader。
+
+:::tip 注意
+该表在 [GreptimeCloud](https://greptime.cloud/) 中不可用。
+:::
+
+```sql
+USE INFORMATION_SCHEMA;
+DESC REGION_PEERS;
+```
+
+结果如下:
+
+```sql
++--------------+--------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++---------------+--------+------+------+---------+---------------+
+| table_catalog | String | | NO | | FIELD |
+| table_schema | String | | NO | | FIELD |
+| table_name | String | | NO | | FIELD |
+| region_id | UInt64 | | NO | | FIELD |
+| peer_id | UInt64 | | YES | | FIELD |
+| peer_addr | String | | YES | | FIELD |
+| is_leader | String | | YES | | FIELD |
+| status | String | | YES | | FIELD |
+| down_seconds | Int64 | | YES | | FIELD |
++---------------+--------+------+------+---------+---------------+
+6 rows in set (0.00 sec)
+```
+
+`REGION_PEERS` 表中的字段描述如下:
+
+- `table_catalog`:表所属的目录。
+- `table_schema`:表所属的数据库。
+- `table_name`:表的名称。
+- `region_id`:Region 的 ID。
+- `peer_id`:Region peer 的 ID。
+- `peer_addr`:peer 的地址。
+- `is_leader`:peer 是否为 leader。
+- `status`:peer 的状态,`ALIVE` 或 `DOWNGRADED`。
+ - `ALIVE`:peer 在线。
+ - `DOWNGRADED`:Region peer 不可用(例如,已崩溃、网络断开),或者计划将 Region peer 迁移到另一个 peer。
+- `down_seconds`:离线时长,单位为秒。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/region-statistics.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/region-statistics.md
new file mode 100644
index 0000000000..7c4790d926
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/region-statistics.md
@@ -0,0 +1,71 @@
+---
+keywords: [Region 统计信息, REGION_STATISTICS 表, 总行数, 磁盘大小, 近似值]
+description: REGION_STATISTICS 表提供关于某个 Region 统计信息的详细数据,包括总行数、磁盘大小等。
+---
+
+# REGION_STATISTICS
+
+`REGION_STATISTICS` 表提供了关于某个 Region 统计信息的详细数据,包括总行数、磁盘大小等。这些统计信息都是近似值。
+
+:::tip NOTE
+此表在 [GreptimeCloud](https://greptime.cloud/) 中不可用。
+:::
+
+```sql
+USE INFORMATION_SCHEMA;
+DESC REGION_STATISTICS;
+```
+
+输出如下:
+
+```sql
++--------------------------+--------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++--------------------------+--------+------+------+---------+---------------+
+| region_id | UInt64 | | NO | | FIELD |
+| table_id | UInt32 | | NO | | FIELD |
+| region_number | UInt32 | | NO | | FIELD |
+| region_rows | UInt64 | | YES | | FIELD |
+| written_bytes_since_open | UInt64 | | YES | | FIELD |
+| disk_size | UInt64 | | YES | | FIELD |
+| memtable_size | UInt64 | | YES | | FIELD |
+| manifest_size | UInt64 | | YES | | FIELD |
+| sst_size | UInt64 | | YES | | FIELD |
+| sst_num | UInt64 | | YES | | FIELD |
+| index_size | UInt64 | | YES | | FIELD |
+| engine | String | | YES | | FIELD |
+| region_role | String | | YES | | FIELD |
++--------------------------+--------+------+------+---------+---------------+
+```
+
+`REGION_STATISTICS` 表中的字段描述如下:
+
+- `region_id`: Region 的 ID。
+- `table_id`: 表的 ID。
+- `region_number`: Region 在表中的编号。
+- `region_rows`: Region 中的记录行数。
+- `written_bytes_since_open`: Region 自打开以来写入的字节数。
+- `disk_size`: Region 中数据文件的总大小,包括数据、索引及元信息等。
+- `memtable_size`: Region 中内存 memtables 的总大小。
+- `manifest_size`: Region 中元信息 manifest 文件的总大小。
+- `sst_num`: Region 中 SST 文件的总数量。
+- `sst_size`: Region 中 SST 文件的总大小。
+- `index_size`: Region 中索引文件的总大小。
+- `engine`: Region 的引擎类型,可以是 `mito` 或 `metric`。
+- `region_role`: Region 的角色,可以是 `Leader` 或 `Follower`。
+
+获取某张表的 Region 统计信息如下:
+
+```sql
+SELECT r.* FROM REGION_STATISTICS r LEFT JOIN TABLES t on r.table_id = t.table_id \
+WHERE t.table_name = 'system_metrics';
+```
+
+输出:
+```sql
++---------------+----------+---------------+-------------+--------------------------+-----------+---------------+---------------+----------+---------+------------+--------+-------------+
+| region_id | table_id | region_number | region_rows | written_bytes_since_open | disk_size | memtable_size | manifest_size | sst_size | sst_num | index_size | engine | region_role |
++---------------+----------+---------------+-------------+--------------------------+-----------+---------------+---------------+----------+---------+------------+--------+-------------+
+| 4398046511104 | 1024 | 0 | 8 | 0 | 4922 | 0 | 1338 | 3249 | 1 | 335 | mito | Leader |
++---------------+----------+---------------+-------------+--------------------------+-----------+---------------+---------------+----------+---------+------------+--------+-------------+
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/runtime-metrics.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/runtime-metrics.md
new file mode 100644
index 0000000000..de74a3f02b
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/runtime-metrics.md
@@ -0,0 +1,58 @@
+---
+keywords: [运行时指标, RUNTIME_METRICS 表, 系统指标, 集群指标, HTTP 端点]
+description: RUNTIME_METRICS 表提供系统运行时指标,包括集群中 `/metrics` HTTP 端点输出的所有指标。
+---
+
+# RUNTIME_METRICS
+
+`RUNTIME_METRICS`表提供系统运行时指标。它包括集群中`/metrics` HTTP 端点输出的所有指标。
+
+```sql
+USE INFORMATION_SCHEMA;
+
+SELECT * FROM RUNTIME_METRICS;
+```
+
+结果如下:
+
+```sql
++------------------------------------------------------+------------------------+--------------------------------------------------------+---------+-----------+----------------------------+
+| metric_name | value | labels | node | node_type | timestamp |
++------------------------------------------------------+------------------------+--------------------------------------------------------+---------+-----------+----------------------------+
+| greptime_app_version | 1 | short_version=0.7.1, version=greptimedb-main-92a8e86 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_catalog_catalog_count | 1 | | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_catalog_schema_count | 2 | | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_bucket | 1 | le=0.005 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_bucket | 1 | le=0.01 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_bucket | 1 | le=0.025 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_bucket | 1 | le=0.05 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_bucket | 1 | le=0.1 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_bucket | 1 | le=0.25 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_bucket | 1 | le=0.5 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_bucket | 1 | le=1 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_bucket | 1 | le=2.5 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_bucket | 1 | le=5 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_bucket | 1 | le=10 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_bucket | 1 | le=+Inf | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_sum | 0.000290333 | | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_count | 1 | | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_catalog_counter | 1 | | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_schema_bucket | 3 | le=0.005 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_schema_bucket | 3 | le=0.01 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_schema_bucket | 3 | le=0.025 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_schema_bucket | 3 | le=0.05 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_schema_bucket | 3 | le=0.1 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_schema_bucket | 3 | le=0.25 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+| greptime_meta_create_schema_bucket | 3 | le=0.5 | unknown | unknown | 2024-03-27 22:43:12.898000 |
+
+...
+```
+
+结果中的列:
+
+* `metric_name`:指标名称。
+* `value`:指标值。
+* `labels`:指标标签和值,用`,`分隔。
+* `node:` 指标来自哪个节点
+* `node_type`:节点类型,如`datanode`、`frontend`等。
+* `timestamp`:指标时间戳
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/schemata.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/schemata.md
new file mode 100644
index 0000000000..a2aaf6d0e3
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/schemata.md
@@ -0,0 +1,52 @@
+---
+keywords: [数据库信息, SCHEMATA 表, SHOW DATABASES, 字段描述, 数据库目录]
+description: SCHEMATA 表提供数据库的相关信息及其字段描述。
+---
+
+# SCHEMATA
+
+`SCHEMATA` 表提供数据库的相关信息。表数据等同于 `SHOW DATABASES` 语句的结果。
+
+```sql
+USE INFORMATION_SCHEMA;
+DESC SCHEMATA;
+```
+
+结果如下:
+
+```sql
++----------------------------+--------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++----------------------------+--------+------+------+---------+---------------+
+| catalog_name | String | | NO | | FIELD |
+| schema_name | String | | NO | | FIELD |
+| default_character_set_name | String | | NO | | FIELD |
+| default_collation_name | String | | NO | | FIELD |
+| sql_path | String | | YES | | FIELD |
+| options | String | | YES | | FIELD |
++----------------------------+--------+------+------+---------+---------------+
+```
+
+```sql
+SELECT * FROM SCHEMATA;
+```
+
+```sql
++--------------+--------------------+----------------------------+------------------------+----------+-------------+
+| catalog_name | schema_name | default_character_set_name | default_collation_name | sql_path | options |
++--------------+--------------------+----------------------------+------------------------+----------+-------------+
+| greptime | greptime_private | utf8 | utf8_bin | NULL | |
+| greptime | information_schema | utf8 | utf8_bin | NULL | |
+| greptime | public | utf8 | utf8_bin | NULL | |
+| greptime | test | utf8 | utf8_bin | NULL | ttl='7days' |
++--------------+--------------------+----------------------------+------------------------+----------+-------------+
+```
+
+`SCHEMATA` 表中的字段描述如下:
+
+- `catalog_name`:数据库所属的目录。
+- `schema_name`:数据库的名称。
+- `default_character_set_name`:数据库的默认字符集。
+- `default_collation_name`:数据库的默认排序规则。
+- `sql_path`:该项的值始终为 `NULL`。
+- `options`: GreptimeDB 扩展字段,数据库的配置参数。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/ssts-index-meta.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/ssts-index-meta.md
new file mode 100644
index 0000000000..d63ba80ea6
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/ssts-index-meta.md
@@ -0,0 +1,124 @@
+---
+keywords: [SST 索引元数据, Puffin 索引, 倒排索引, 全文索引, 布隆过滤器, 索引元数据]
+description: 提供对 SST(排序字符串表)索引元数据的访问,包括以 Puffin 格式存储的倒排索引、全文索引和布隆过滤器的信息。
+---
+
+# SSTS_INDEX_META
+
+`SSTS_INDEX_META` 表提供对从清单中收集的 SST(排序字符串表)索引元数据的访问。该表显示 Puffin 索引元数据的信息,包括倒排索引、全文索引和布隆过滤器。
+
+:::tip 注意
+此表在 [GreptimeCloud](https://greptime.cloud/) 上不可用。
+:::
+
+```sql
+USE INFORMATION_SCHEMA;
+DESC SSTS_INDEX_META;
+```
+
+输出如下:
+
+```sql
++-----------------+--------+-----+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++-----------------+--------+-----+------+---------+---------------+
+| table_dir | String | | NO | | FIELD |
+| index_file_path | String | | NO | | FIELD |
+| region_id | UInt64 | | NO | | FIELD |
+| table_id | UInt32 | | NO | | FIELD |
+| region_number | UInt32 | | NO | | FIELD |
+| region_group | UInt8 | | NO | | FIELD |
+| region_sequence | UInt32 | | NO | | FIELD |
+| file_id | String | | NO | | FIELD |
+| index_file_size | UInt64 | | YES | | FIELD |
+| index_type | String | | NO | | FIELD |
+| target_type | String | | NO | | FIELD |
+| target_key | String | | NO | | FIELD |
+| target_json | String | | NO | | FIELD |
+| blob_size | UInt64 | | NO | | FIELD |
+| meta_json | String | | YES | | FIELD |
+| node_id | UInt64 | | YES | | FIELD |
++-----------------+--------+-----+------+---------+---------------+
+```
+
+`SSTS_INDEX_META` 表中的字段描述如下:
+
+- `table_dir`:表的目录路径。
+- `index_file_path`:Puffin 索引文件的完整路径。
+- `region_id`:Region 的 ID。
+- `table_id`:表的 ID。
+- `region_number`:表中的 Region 编号。
+- `region_group`:Region 的组标识符。
+- `region_sequence`:Region 的序列号。
+- `file_id`:索引文件的唯一标识符(UUID)。
+- `index_file_size`:索引文件的大小(字节)。
+- `index_type`:索引的类型。可能的值包括:
+ - `inverted`:用于快速词条查找的倒排索引
+ - `fulltext_bloom`:全文索引和布隆过滤器的组合索引
+ - `bloom_filter`:用于快速成员测试的布隆过滤器
+- `target_type`:被索引目标的类型。通常是 `column`,表示基于列的索引。
+- `target_key`:标识目标的键(例如,列 ID)。
+- `target_json`:目标配置的 JSON 表示,例如 `{"column":0}`。
+- `blob_size`:blob 数据的大小(字节)。
+- `meta_json`:包含索引特定信息的 JSON 元数据,例如:
+ - 对于倒排索引:FST 大小、位图类型、段行数等
+ - 对于布隆过滤器:布隆过滤器大小、行数、段数
+ - 对于全文索引:分析器类型、大小写敏感设置
+- `node_id`:索引所在数据节点的 ID。
+
+## 示例
+
+查询所有索引元数据:
+
+```sql
+SELECT * FROM INFORMATION_SCHEMA.SSTS_INDEX_META;
+```
+
+通过与 `TABLES` 表连接查询特定表的索引元数据:
+
+```sql
+SELECT s.*
+FROM INFORMATION_SCHEMA.SSTS_INDEX_META s
+JOIN INFORMATION_SCHEMA.TABLES t ON s.table_id = t.table_id
+WHERE t.table_name = 'my_table';
+```
+
+仅查询倒排索引元数据:
+
+```sql
+SELECT table_dir, index_file_path, index_type, target_json, meta_json
+FROM INFORMATION_SCHEMA.SSTS_INDEX_META
+WHERE index_type = 'inverted';
+```
+
+按索引类型分组查询索引元数据:
+
+```sql
+SELECT index_type, COUNT(*) as count, SUM(index_file_size) as total_size
+FROM INFORMATION_SCHEMA.SSTS_INDEX_META
+GROUP BY index_type;
+```
+
+输出样例:
+
+```sql
+mysql> SELECT * FROM INFORMATION_SCHEMA.SSTS_INDEX_META LIMIT 1\G;
+*************************** 1. row ***************************
+ table_dir: data/greptime/public/1814/
+index_file_path: data/greptime/public/1814/1814_0000000000/data/index/aba4af59-1247-4bfb-a20b-69242cdd9374.puffin
+ region_id: 7791070674944
+ table_id: 1814
+ region_number: 0
+ region_group: 0
+region_sequence: 0
+ file_id: aba4af59-1247-4bfb-a20b-69242cdd9374
+index_file_size: 838
+ index_type: bloom_filter
+ target_type: column
+ target_key: 2147483652
+ target_json: {"column":2147483652}
+ blob_size: 688
+ meta_json: {"bloom":{"bloom_filter_size":640,"row_count":2242,"rows_per_segment":1024,"segment_count":3}}
+ node_id: 0
+1 row in set (0.02 sec)
+```
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/ssts-manifest.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/ssts-manifest.md
new file mode 100644
index 0000000000..53dadebada
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/ssts-manifest.md
@@ -0,0 +1,139 @@
+---
+keywords: [SST manifest, SST 文件, region 文件, 文件元数据, 表数据文件]
+description: 提供从 manifest 中获取的 SST(排序字符串表)文件信息,包括文件路径、大小、时间范围和行数。
+---
+
+# SSTS_MANIFEST
+
+`SSTS_MANIFEST` 表提供从清单中收集的 SST(排序字符串表)文件信息。此表显示每个 SST 文件的详细信息,包括文件路径、大小、级别、时间范围和行数。
+
+:::tip 注意
+此表在 [GreptimeCloud](https://greptime.cloud/) 上不可用。
+:::
+
+```sql
+USE INFORMATION_SCHEMA;
+DESC SSTS_MANIFEST;
+```
+
+输出如下:
+
+```sql
++------------------+---------------------+-----+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++------------------+---------------------+-----+------+---------+---------------+
+| table_dir | String | | NO | | FIELD |
+| region_id | UInt64 | | NO | | FIELD |
+| table_id | UInt32 | | NO | | FIELD |
+| region_number | UInt32 | | NO | | FIELD |
+| region_group | UInt8 | | NO | | FIELD |
+| region_sequence | UInt32 | | NO | | FIELD |
+| file_id | String | | NO | | FIELD |
+| level | UInt8 | | NO | | FIELD |
+| file_path | String | | NO | | FIELD |
+| file_size | UInt64 | | NO | | FIELD |
+| index_file_path | String | | YES | | FIELD |
+| index_file_size | UInt64 | | YES | | FIELD |
+| num_rows | UInt64 | | NO | | FIELD |
+| num_row_groups | UInt64 | | NO | | FIELD |
+| min_ts | TimestampNanosecond | | YES | | FIELD |
+| max_ts | TimestampNanosecond | | YES | | FIELD |
+| sequence | UInt64 | | YES | | FIELD |
+| origin_region_id | UInt64 | | NO | | FIELD |
+| node_id | UInt64 | | YES | | FIELD |
+| visible | Boolean | | NO | | FIELD |
++------------------+---------------------+-----+------+---------+---------------+
+```
+
+`SSTS_MANIFEST` 表中的字段描述如下:
+
+- `table_dir`:表的目录路径。
+- `region_id`:引用该文件的 Region ID。
+- `table_id`:表的 ID。
+- `region_number`:表中的 Region 编号。
+- `region_group`:Region 的组标识符。
+- `region_sequence`:Region 的序列号。
+- `file_id`:SST 文件的唯一标识符(UUID)。
+- `level`:LSM 树中的 SST 级别(0 表示未压缩,1 表示已压缩)。
+- `file_path`:对象存储中 SST 文件的完整路径。
+- `file_size`:SST 文件的大小(字节)。
+- `index_file_path`:对象存储中索引文件的完整路径(如果存在)。
+- `index_file_size`:索引文件的大小(字节,如果存在)。
+- `num_rows`:SST 文件中的行数。
+- `num_row_groups`:SST 文件中的行组数。
+- `min_ts`:SST 文件中的最小时间戳。
+- `max_ts`:SST 文件中的最大时间戳。
+- `sequence`:与此文件关联的序列号。
+- `origin_region_id`:创建该文件的 Region ID。
+- `node_id`:文件所在的数据节点 ID。
+- `visible`:该文件在当前版本中是否可见。
+
+## 示例
+
+查询清单中的所有 SST 文件:
+
+```sql
+SELECT * FROM INFORMATION_SCHEMA.SSTS_MANIFEST;
+```
+
+通过与 `TABLES` 表连接查询特定表的 SST 文件:
+
+```sql
+SELECT s.*
+FROM INFORMATION_SCHEMA.SSTS_MANIFEST s
+JOIN INFORMATION_SCHEMA.TABLES t ON s.table_id = t.table_id
+WHERE t.table_name = 'my_table';
+```
+
+仅查询已压缩的 SST 文件(级别 1):
+
+```sql
+SELECT file_path, file_size, num_rows, level
+FROM INFORMATION_SCHEMA.SSTS_MANIFEST
+WHERE level = 1;
+```
+
+查询 SST 文件及其时间范围:
+
+```sql
+SELECT table_id, file_path, num_rows, min_ts, max_ts
+FROM INFORMATION_SCHEMA.SSTS_MANIFEST
+ORDER BY table_id, min_ts;
+```
+
+计算每个表的 SST 文件总大小:
+
+```sql
+SELECT table_id, COUNT(*) as sst_count, SUM(file_size) as total_size
+FROM INFORMATION_SCHEMA.SSTS_MANIFEST
+GROUP BY table_id;
+```
+
+
+输出样例:
+
+```sql
+mysql> SELECT * FROM INFORMATION_SCHEMA.SSTS_MANIFEST LIMIT 1\G;
+*************************** 1. row ***************************
+ table_dir: data/greptime/public/1024/
+ region_id: 4398046511104
+ table_id: 1024
+ region_number: 0
+ region_group: 0
+ region_sequence: 0
+ file_id: 01234567-89ab-cdef-0123-456789abcdef
+ level: 0
+ file_path: data/greptime/public/1024/4398046511104_0/01234567-89ab-cdef-0123-456789abcdef.parquet
+ file_size: 1234
+ index_file_path: data/greptime/public/1024/4398046511104_0/index/01234567-89ab-cdef-0123-456789abcdef.puffin
+ index_file_size: 256
+ num_rows: 100
+ num_row_groups: 1
+ min_ts: 2025-01-01 00:00:00.000000000
+ max_ts: 2025-01-01 00:01:00.000000000
+ sequence: 1
+origin_region_id: 4398046511104
+ node_id: 0
+ visible: true
+1 row in set (0.02 sec)
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/ssts-storage.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/ssts-storage.md
new file mode 100644
index 0000000000..2fe29286fa
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/ssts-storage.md
@@ -0,0 +1,104 @@
+---
+keywords: [SST storage, SST 文件, 文件列表, 存储层, 对象存储]
+description: 提供从存储层直接获取的 SST(排序字符串表)文件信息,包括文件路径、大小和最后修改时间戳。
+---
+
+# SSTS_STORAGE
+
+`SSTS_STORAGE` 表提供直接从存储层列出的 SST(排序字符串表)文件信息。此表显示来自对象存储的原始文件元数据,可能包括尚未反映在清单中的文件或已孤立的文件。
+
+:::tip 注意
+此表在 [GreptimeCloud](https://greptime.cloud/) 上不可用。
+:::
+
+```sql
+USE INFORMATION_SCHEMA;
+DESC SSTS_STORAGE;
+```
+
+输出如下:
+
+```sql
++------------------+----------------------+-----+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++------------------+----------------------+-----+------+---------+---------------+
+| file_path | String | | NO | | FIELD |
+| file_size | UInt64 | | YES | | FIELD |
+| last_modified_ms | TimestampMillisecond | | YES | | FIELD |
+| node_id | UInt64 | | YES | | FIELD |
++------------------+----------------------+-----+------+---------+---------------+
+```
+
+`SSTS_STORAGE` 表中的字段描述如下:
+
+- `file_path`:对象存储中文件的完整路径。
+- `file_size`:文件的大小(字节,如果存储中可用)。
+- `last_modified_ms`:最后修改时间(毫秒,如果存储中可用)。
+- `node_id`:文件所在的数据节点 ID。
+
+## 使用场景
+
+`SSTS_STORAGE` 表适用于:
+
+- **存储验证**:将存储中的文件与清单进行比较,以检测孤立文件或不一致性。
+- **存储调试**:识别存在于存储中但可能未在清单中正确跟踪的文件。
+- **清理操作**:查找并删除不再被引用的孤立 SST 文件。
+- **存储审计**:获取存储层中所有 SST 文件的完整视图。
+
+## 示例
+
+查询存储中的所有 SST 文件:
+
+```sql
+SELECT * FROM INFORMATION_SCHEMA.SSTS_STORAGE;
+```
+
+查找存储中但不在清单中的文件(潜在的孤立文件):
+
+```sql
+SELECT s.file_path, s.file_size, s.last_modified_ms
+FROM INFORMATION_SCHEMA.SSTS_STORAGE s
+LEFT JOIN INFORMATION_SCHEMA.SSTS_MANIFEST m ON s.file_path = m.file_path
+WHERE m.file_path IS NULL;
+```
+
+查找存储中最大的 SST 文件:
+
+```sql
+SELECT file_path, file_size
+FROM INFORMATION_SCHEMA.SSTS_STORAGE
+WHERE file_size IS NOT NULL
+ORDER BY file_size DESC
+LIMIT 10;
+```
+
+计算 SST 文件的总存储使用量:
+
+```sql
+SELECT COUNT(*) as file_count, SUM(file_size) as total_size
+FROM INFORMATION_SCHEMA.SSTS_STORAGE
+WHERE file_size IS NOT NULL;
+```
+
+
+输出样例:
+
+```sql
+mysql> SELECT * FROM INFORMATION_SCHEMA.SSTS_STORAGE LIMIT 1\G;
+*************************** 1. row ***************************
+ file_path: data/greptime/public/1024/4398046511104_0/01234567-89ab-cdef-0123-456789abcdef.parquet
+ file_size: 1234
+last_modified_ms: 2025-01-01 00:00:00.000
+ node_id: 0
+1 row in set (0.02 sec)
+```
+
+## 与 SSTS_MANIFEST 的区别
+
+| 方面 | SSTS_MANIFEST | SSTS_STORAGE |
+|------|---------------|--------------|
+| **数据源** | 清单元数据 | 直接从存储层 |
+| **信息** | 详细的 SST 元数据(行数、时间范围等) | 仅基本文件元数据 |
+| **文件覆盖** | 仅清单中跟踪的文件 | 存储中的所有文件 |
+| **使用场景** | 查询 SST 元数据进行分析 | 验证存储、查找孤立文件 |
+| **性能** | 快速(从清单读取) | 较慢(扫描存储) |
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/table-constraints.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/table-constraints.md
new file mode 100644
index 0000000000..f549079056
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/table-constraints.md
@@ -0,0 +1,60 @@
+---
+keywords: [表约束, TABLE_CONSTRAINTS 表, SQL 约束, 数据库约束, 约束类型, 约束描述]
+description: TABLE_CONSTRAINTS 表描述了哪些表具有约束及相关信息。
+---
+
+# TABLE_CONSTRAINTS
+
+`TABLE_CONSTRAINTS` 表描述了哪些表具有约束(constraint)以及相关信息。
+
+```sql
+DESC INFORMATION_SCHEMA.table_constraints;
+```
+
+```sql
++--------------------+--------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++--------------------+--------+------+------+---------+---------------+
+| constraint_catalog | String | | NO | | FIELD |
+| constraint_schema | String | | NO | | FIELD |
+| constraint_name | String | | NO | | FIELD |
+| table_schema | String | | NO | | FIELD |
+| table_name | String | | NO | | FIELD |
+| constraint_type | String | | NO | | FIELD |
+| enforced | String | | NO | | FIELD |
++--------------------+--------+------+------+---------+---------------+
+```
+
+表中的列:
+
+* `CONSTRAINT_CATALOG`: 约束所属 catalog 的名称。此值始终为 `def`。
+* `CONSTRAINT_SCHEMA`: 约束所属数据库的名称。
+* `CONSTRAINT_NAME`: 约束的名称,可以是 `TIME INDEX` 或 `PRIMARY`。
+* `TABLE_NAME`: 表的名称。
+* `CONSTRAINT_TYPE`: 约束的类型。值可以是 `TIME INDEX` 或 `PRIMARY KEY`。`TIME INDEX` 和 `PRIMARY KEY` 信息类似于 `SHOW INDEX` 语句的执行结果。
+* `enforced`: 不支持 `CHECK` 约束,此值始终为 `YES`。
+
+```sql
+select * from INFORMATION_SCHEMA.table_constraints WHERE table_name = 'monitor'\G;
+```
+
+输出结果:
+
+```sql
+*************************** 1. row ***************************
+constraint_catalog: def
+ constraint_schema: public
+ constraint_name: TIME INDEX
+ table_schema: public
+ table_name: monitor
+ constraint_type: TIME INDEX
+ enforced: YES
+*************************** 2. row ***************************
+constraint_catalog: def
+ constraint_schema: public
+ constraint_name: PRIMARY
+ table_schema: public
+ table_name: monitor
+ constraint_type: PRIMARY KEY
+ enforced: YES
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/tables.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/tables.md
new file mode 100644
index 0000000000..e5242b9fba
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/tables.md
@@ -0,0 +1,114 @@
+---
+keywords: [表信息, TABLES 表, SQL 表, 数据库表, 表字段, 表描述]
+description: TABLES 表提供数据库中表的信息及其字段描述。
+---
+
+# TABLES
+
+`TABLES` 表提供数据库中表的信息:
+
+```sql
+USE INFORMATION_SCHEMA;
+DESC TABLES;
+```
+
+结果如下:
+
+```sql
++------------------+----------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++------------------+----------+------+------+---------+---------------+
+| table_catalog | String | | NO | | FIELD |
+| table_schema | String | | NO | | FIELD |
+| table_name | String | | NO | | FIELD |
+| table_type | String | | NO | | FIELD |
+| table_id | UInt32 | | YES | | FIELD |
+| data_length | UInt64 | | YES | | FIELD |
+| max_data_length | UInt64 | | YES | | FIELD |
+| index_length | UInt64 | | YES | | FIELD |
+| max_index_length | UInt64 | | YES | | FIELD |
+| avg_row_length | UInt64 | | YES | | FIELD |
+| engine | String | | YES | | FIELD |
+| version | UInt64 | | YES | | FIELD |
+| row_format | String | | YES | | FIELD |
+| table_rows | UInt64 | | YES | | FIELD |
+| data_free | UInt64 | | YES | | FIELD |
+| auto_increment | UInt64 | | YES | | FIELD |
+| create_time | TimestampSecond | | YES | | FIELD |
+| update_time | TimestampSecond | | YES | | FIELD |
+| check_time | TimestampSecond | | YES | | FIELD |
+| table_collation | String | | YES | | FIELD |
+| checksum | UInt64 | | YES | | FIELD |
+| create_options | String | | YES | | FIELD |
+| table_comment | String | | YES | | FIELD |
+| temporary | String | | YES | | FIELD |
++------------------+----------+------+------+---------+---------------+
+```
+
+```sql
+SELECT * FROM tables WHERE table_schema='public' AND table_name='monitor'\G
+```
+
+```sql
+*************************** 1. row ***************************
+ table_catalog: greptime
+ table_schema: public
+ table_name: monitor
+ table_type: BASE TABLE
+ table_id: 1054
+ data_length: 0
+ max_data_length: 0
+ index_length: 0
+max_index_length: 0
+ avg_row_length: 0
+ engine: mito
+ version: 11
+ row_format: Fixed
+ table_rows: 0
+ data_free: 0
+ auto_increment: 0
+ create_time: 2024-07-24 22:06:18.085000
+ update_time: NULL
+ check_time: NULL
+ table_collation: NULL
+ checksum: 0
+ create_options:
+ table_comment: NULL
+ temporary: N
+1 row in set (0.01 sec)
+```
+
+
+下方的语句是等价的:
+
+```sql
+SELECT table_name FROM INFORMATION_SCHEMA.TABLES
+ WHERE table_schema = ''
+ [AND table_name LIKE 'monitor']
+
+SHOW TABLES
+ FROM db_name
+ [LIKE 'monitor']
+```
+
+`TABLES` 表的字段描述如下:
+
+- `table_catalog`:表所属的目录。该值始终为 `greptime`。
+- `table_schema`:表所属的数据库。
+- `table_name`:表的名称。
+- `table_type`:表的类型。
+ - `BASE TABLE`:基础表
+ - `TEMPORARY`:临时结果集
+ - `VIEW`:视图表
+- `table_id`:表 ID。
+- `data_length`: 表大小,即表中 SST 文件的总长度(以字节为单位),近似值。
+- `index_length`: 表索引大小,即表中索引文件的总长度(以字节为单位),近似值。
+- `table_rows`: 表中总的记录行数,近似值。
+- `avg_row_length`: 表中记录的平均大小(以字节为单位),近似值。
+- `engine`:该表使用的存储引擎。
+- `version`: 版本。固定值为 `11`。
+- `create_time`: 表创建的时间戳。
+- `table_comment`: 表的注释。
+- 其他列如 `table_rows`, `row_format` 等不支持,仅用于兼容 MySQL。GreptimeDB 未来可能会支持其中的一些列。
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/views.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/views.md
new file mode 100644
index 0000000000..7789bbd64e
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/information-schema/views.md
@@ -0,0 +1,42 @@
+---
+keywords: [视图, VIEWS 表, SQL 视图, 数据库视图, 视图定义, 视图字段]
+description: VIEWS 表提供当前用户可见的视图列表及其字段描述。
+---
+
+# VIEWS
+
+`VIEWS` 表提供了当前用户可见的视图(View)列表。
+
+```sql
+DESC TABLE INFORMATION_SCHEMA.VIEWS;
+```
+
+```sql
++----------------------+---------+------+------+---------+---------------+
+| Column | Type | Key | Null | Default | Semantic Type |
++----------------------+---------+------+------+---------+---------------+
+| table_catalog | String | | NO | | FIELD |
+| table_schema | String | | NO | | FIELD |
+| table_name | String | | NO | | FIELD |
+| view_definition | String | | NO | | FIELD |
+| check_option | String | | YES | | FIELD |
+| is_updatable | Boolean | | YES | | FIELD |
+| definer | String | | YES | | FIELD |
+| security_type | String | | YES | | FIELD |
+| character_set_client | String | | YES | | FIELD |
+| collation_connection | String | | YES | | FIELD |
++----------------------+---------+------+------+---------+---------------+
+```
+
+表中的列:
+
+* `table_catalog`: 视图所属 catalog 的名称。
+* `table_schema`: 视图所属数据库的名称。
+* `table_name`: 视图名称。
+* `view_definition`: 视图的定义,即创建视图时的 `SELECT` 语句。
+* `check_option`: 不支持,始终为 `NULL`。
+* `is_updatable`: 视图是否可以进行 `UPDATE/INSERT/DELETE` 操作,始终为 `NO`。
+* `definer`: 创建视图的用户的名称。
+* `security_type`: 不支持,始终为 `NULL`。
+* `character_set_client`: 创建视图时 `character_set_client` 会话变量的值,始终为 `utf8`。
+* `collation_connection`: 创建视图时 `collation_connection` 会话变量的值,始终为 `utf8_bin`。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/insert.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/insert.md
new file mode 100644
index 0000000000..243e0bbfb4
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/insert.md
@@ -0,0 +1,134 @@
+---
+keywords: [SQL INSERT 语句, 插入数据, 多条记录插入, 默认值插入, 二进制数据插入, 特殊数值插入]
+description: INSERT 用于将一条或多条记录插入到 GreptimeDB 中的表中,支持指定列名和使用默认值。
+---
+
+# INSERT
+
+`INSERT` 用于将一条或多条记录插入到 GreptimeDB 中的表中。
+
+## `INSERT INTO` Statement
+
+### Syntax
+
+`INSERT INTO` 语法如下:
+
+```sql
+INSERT INTO table_name (column1, column2, column3, ...)
+VALUES (value1, value2, value3, ...);
+```
+
+在上述语法中,`table_name` 是要插入数据的表名,`column1`、`column2`、`column3` 等是表中的列名。
+如果你想要插入数据到指定的列中,可以在 `INSERT INTO` 语句中指定列名。
+如果你不指定列名,数据将会插入到表中的所有列中。
+
+`VALUES` 关键字后面跟着的是一个值列表,这个值列表的顺序必须和 `INSERT INTO` 语句中的列顺序一致。
+
+VALUES 值支持以下数据类型:
+
+- `DEFAULT` 关键字指定该列的默认值。
+这在你不想在插入记录时显式指定某些列的值时非常有用。
+它允许使用表 schema 中定义的列默认值来替代需要显示指定的值。
+如果该列没有定义默认值,将会使用数据库的默认值(通常是 NULL)。
+- 使用十六进制字面值插入二进制字面值。
+- 使用 `{Value}::{Type}` 语法将特殊的数值 `Infinity`、`-Infinity` 和 `NaN` 转换为指定的数值类型。
+
+### 示例
+
+#### 插入数据
+
+使用 `INSERT INTO` 语句将一条记录插入到名为 `system_metrics` 的表中:
+
+```sql
+INSERT INTO system_metrics (host, idc, cpu_util, memory_util, disk_util, ts)
+VALUES
+ ("host1", "idc_b", 50.0, 66.7, 40.6, 1667446797462);
+```
+
+上述语句将一条记录插入到 `system_metrics` 表中,该记录的 host 为 "host1",idc 为 "idc_b",cpu_util 为 50.0,memory_util 为 66.7,
+
+你还可以使用 `INSERT INTO` 语句一次向表中插入多条记录,例如向 `system_metrics` 表中插入多条记录:
+
+```sql
+INSERT INTO system_metrics (host, idc, cpu_util, memory_util, disk_util, ts)
+VALUES
+ ("host1", "idc_a", 11.8, 10.3, 10.3, 1667446797460),
+ ("host2", "idc_a", 80.1, 70.3, 90.0, 1667446797461),
+ ("host1", "idc_c", 50.1, 66.8, 40.8, 1667446797463);
+```
+
+此语句将三条记录插入到 `system_metrics` 表中,每列都有指定的值。
+
+#### 使用默认值插入数据
+
+下面的 SQL 语句使用 `DEFAULT` 关键字为 `cpu_util` 列插入默认值:
+
+```sql
+INSERT INTO system_metrics (host, idc, cpu_util, memory_util, disk_util, ts)
+VALUES ("host1", "idc_a", DEFAULT, 10.3, 10.3, 1667446797460);
+```
+
+#### 插入二进制数据
+
+当我们想要插入二进制数据时,其列的数据类型为 `blob` 或 `bytea`:
+
+```sql
+CREATE TABLE test(b BLOB, ts TIMESTAMP TIME INDEX);
+```
+
+推荐使用预编译语句,例如 JDBC:
+
+```java
+ PreparedStatement pstmt = conn.prepareStatement("insert into test values(?,?)");
+ pstmt.setBytes(1, "hello".getBytes());
+ pstmt.setInt(2, 1687867163);
+ pstmt.addBatch();
+ ......
+ pstmt.executeBatch();
+```
+
+如果我们想要插入字面值的二进制数据,可以使用十六进制字面值:
+
+```sql
+INSERT INTO test VALUES(X'9fad5e9eefdfb449', 1687867163);
+-- or --
+INSERT INTO test VALUES(0x9fad5e9eefdfb449', 1687867163);
+```
+
+#### 插入特殊数字值
+
+使用 `{Value}::{Type}` 将特殊的数值 `Infinity`、`-Infinity` 和 `NaN` 转换为指定的数值类型:
+
+```sql
+INSERT INTO system_metrics (host, idc, cpu_util, memory_util, disk_util, ts)
+VALUES ("host1", "idc_a", 66.6, 'NaN'::double, 'Infinity'::double, 1667446797460);
+```
+
+## `INSERT INTO SELECT` Statement
+
+`INSERT INTO SELECT` 语句用于将一张表中的数据复制到另一张表中。
+
+### Syntax
+
+`INSERT INTO SELECT` 的语法如下:
+
+```sql
+INSERT INTO table2 (column1, column2, ...)
+SELECT column1, column2, ...
+FROM table1;
+```
+
+在上述语法中,`table1` 是你想要从中复制数据的源表,`table2` 是你想要将数据插入的目标表。
+`table1` 和 `table2` 需要有用于复制数据的拥有同样名称和数据类型的列。
+`SELECT` 语句从源表中选择要插入的列。
+如果在`INSERT INTO`语句中没有指定列名,那么数据将被插入到目标表的所有列中。
+
+当你想要从一个表中复制数据到另一个表时,`INSERT INTO SELECT` 语句非常有用。例如归档或备份数据时,比起备份整个数据库并恢复,这种方式更加高效。
+
+### 示例
+
+```sql
+INSERT INTO system_metrics2 (host, idc, cpu_util, memory_util, disk_util, ts)
+SELECT host, idc, cpu_util, memory_util, disk_util, ts
+FROM system_metrics;
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/join.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/join.md
new file mode 100644
index 0000000000..457c540ac6
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/join.md
@@ -0,0 +1,40 @@
+---
+keywords: [SQL JOIN 子句, 表连接, INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, SQL 示例]
+description: JOIN 用于组合两个或多个表中基于相关列的行,支持 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN。
+---
+
+# JOIN
+
+`JOIN` 用于组合两个或多个表中基于相关列的行。
+它允许你从多个表中提取数据,并将其呈现为单个结果集。
+
+JOIN 语法有以下类型:
+
+- INNER JOIN:仅返回两个表中具有匹配值的行。
+- LEFT JOIN:返回左表中的所有行和右表中的匹配行。
+- RIGHT JOIN:返回右表中的所有行和左表中的匹配行。
+- FULL OUTER JOIN:返回两个表中的所有行。
+
+## 示例
+
+下面是使用 JOIN 子句的一些示例:
+
+```sql
+-- Select all rows from the system_metrics table and idc_info table where the idc_id matches
+SELECT a.*
+FROM system_metrics a
+JOIN idc_info b
+ON a.idc = b.idc_id;
+
+-- Select all rows from the idc_info table and system_metrics table where the idc_id matches, and include null values for idc_info without any matching system_metrics
+SELECT a.*
+FROM idc_info a
+LEFT JOIN system_metrics b
+ON a.idc_id = b.idc;
+
+-- Select all rows from the system_metrics table and idc_info table where the idc_id matches, and include null values for idc_info without any matching system_metrics
+SELECT b.*
+FROM system_metrics a
+RIGHT JOIN idc_info b
+ON a.idc = b.idc_id;
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/limit.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/limit.md
new file mode 100644
index 0000000000..9b48d03258
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/limit.md
@@ -0,0 +1,86 @@
+---
+keywords: [SQL LIMIT 子句, 查询行数限制, SQL 性能优化, 数据库查询优化, SQL 示例]
+description: 介绍了 `LIMIT` 子句的用法,通过示例展示了如何限制查询返回的行数。
+---
+
+# LIMIT
+
+`LIMIT` 用于限制查询返回的行数。当处理大数据集时该子句特别有用,因为它通过减少需要处理的数据量来提高查询性能。
+
+## Syntax
+
+`LIMIT` 的基本语法如下:
+
+```sql
+SELECT column1, column2, ...
+FROM table_name
+LIMIT number_of_rows;
+```
+
+`number_of_rows` 参数用于指定要返回的最大行数。如果该参数的值为负数,则不返回任何行。
+
+## 示例
+
+假如我们有一个名为 `system_metrics` 的表:
+
+```sql
++-------+-------+----------+-------------+-----------+---------------------+
+| host | idc | cpu_util | memory_util | disk_util | ts |
++-------+-------+----------+-------------+-----------+---------------------+
+| host1 | idc_a | 11.8 | 10.3 | 10.3 | 2022-11-03 03:39:57 |
+| host1 | idc_b | 50 | 66.7 | 40.6 | 2022-11-03 03:39:57 |
+| host1 | idc_c | 50.1 | 66.8 | 40.8 | 2022-11-03 03:39:57 |
+| host1 | idc_e | NULL | 66.7 | 40.6 | 2022-11-03 03:39:57 |
+| host2 | idc_a | 80.1 | 70.3 | 90 | 2022-11-03 03:39:57 |
++-------+-------+----------+-------------+-----------+---------------------+
+```
+
+使用 `LIMIT` 获取 `memory_util` 列中的前 3 个值:
+
+```sql
+SELECT host, idc, memory_util
+FROM system_metrics
+ORDER BY memory_util DESC
+LIMIT 3;
+```
+
+结果为:
+
+```sql
++-------+-------+-------------+
+| host | idc | memory_util |
++-------+-------+-------------+
+| host2 | idc_a | 70.3 |
+| host1 | idc_c | 66.8 |
+| host1 | idc_b | 66.7 |
++-------+-------+-------------+
+```
+
+`LIMIT n, m` 允许在跳过前 n 行后从结果中选择 m 行,等价于`LIMIT m OFFSET n` 语法。
+
+```sql
+SELECT host, idc, memory_util
+FROM system_metrics
+ORDER BY memory_util DESC
+LIMIT 2 OFFSET 1;
+```
+
+或
+
+```sql
+SELECT host, idc, memory_util
+FROM system_metrics
+ORDER BY memory_util DESC
+LIMIT 1, 2;
+```
+
+结果如下:
+
+```sql
++-------+-------+-------------+
+| host | idc | memory_util |
++-------+-------+-------------+
+| host1 | idc_c | 66.8 |
+| host1 | idc_b | 66.7 |
++-------+-------+-------------+
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/offset.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/offset.md
new file mode 100644
index 0000000000..b302b70cba
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/offset.md
@@ -0,0 +1,46 @@
+---
+
+keywords: [SQL OFFSET 子句, 数据检索, 跳过行]
+description: 描述 SQL 中的 OFFSET 子句,该子句指定在开始从查询返回行之前要跳过的行数。
+---
+
+# OFFSET
+
+`OFFSET` 子句指定在开始从查询返回行之前要跳过的行数。它通常与 LIMIT 结合使用,用于对大型结果集进行分页。
+
+例如:
+```sql
+SELECT *
+FROM system_metrics
+ORDER BY cpu_util DESC
+LIMIT 10
+OFFSET 10;
+```
+
+它从 `system_metrics` 表中选择按降序 `cpu_util` 排序的第 11 到 20 行的所有列。
+
+虽然将 `OFFSET` 和 `LIMIT` 与 `ORDER BY` 子句结合使用可以实现分页,但这种方法效率不高。我们建议记录每页返回的最后一条记录的时间索引(时间戳),并使用该值来过滤和限制后续页面的数据。这种方法提供了更好的分页性能。
+
+## 使用时间戳的高效分页
+假设您的 `system_metrics` 表有一个作为时间索引(时间戳)的 `ts` 列。您可以使用上一页最后一条记录的时间戳来高效地获取下一页。
+
+第一页(最新的 10 条记录):
+```sql
+SELECT *
+FROM system_metrics
+ORDER BY ts DESC
+LIMIT 10;
+```
+
+第二页(使用上一页的最后一个时间戳),如果第一页的最后一条记录的 `ts` 值为 `'2024-07-01 16:03:00'`,您可以这样获取下一页:
+
+```sql
+SELECT *
+FROM system_metrics
+WHERE ts < '2024-07-01 16:03:00'
+ORDER BY ts DESC
+LIMIT 10;
+```
+
+每次查询后,记录最后一行的 `ts` 值并将其用于下一个查询的过滤器。
+这种方法消除了扫描和跳过行(如使用 OFFSET)的需要,从而使分页效率更高,尤其是在大型表中。
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/order_by.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/order_by.md
new file mode 100644
index 0000000000..f7b06609a6
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/order_by.md
@@ -0,0 +1,78 @@
+---
+keywords: [ORDER BY 语法, 数据排序, 升序排序, 降序排序, SQL 示例]
+description: 介绍了 `ORDER BY` 语法的基本用法,通过示例展示了如何对数据进行升序或降序排序。
+---
+
+# ORDER BY
+
+`ORDER BY` 语法用于根据 `SELECT` 语句中的一个或多个列对数据进行升序或降序排序。
+
+# Syntax
+
+`ORDER BY` 的基本语法如下:
+
+```sql
+SELECT column1, column2, ...
+FROM table_name
+ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...;
+```
+
+`ORDER BY` 可以用于一个或多个列。ASC 关键字用于升序排序(默认),DESC 关键字用于降序排序。
+
+# 示例
+
+假如我们有一个名为 `system_metrics` 的表:
+
+```sql
++-------+-------+----------+-------------+-----------+---------------------+
+| host | idc | cpu_util | memory_util | disk_util | ts |
++-------+-------+----------+-------------+-----------+---------------------+
+| host1 | idc_a | 11.8 | 10.3 | 10.3 | 2022-11-03 03:39:57 |
+| host1 | idc_b | 50 | 66.7 | 40.6 | 2022-11-03 03:39:57 |
+| host1 | idc_c | 50.1 | 66.8 | 40.8 | 2022-11-03 03:39:57 |
+| host1 | idc_e | NULL | 66.7 | 40.6 | 2022-11-03 03:39:57 |
+| host2 | idc_a | 80.1 | 70.3 | 90 | 2022-11-03 03:39:57 |
++-------+-------+----------+-------------+-----------+---------------------+
+```
+
+要根据 `memory_util` 列对数据进行升序排序,可以使用以下 SQL 语句:
+
+```sql
+SELECT * FROM system_metrics
+ORDER BY memory_util ASC;
+```
+
+结果为:
+
+```sql
++-------+-------+----------+-------------+-----------+---------------------+
+| host | idc | cpu_util | memory_util | disk_util | ts |
++-------+-------+----------+-------------+-----------+---------------------+
+| host1 | idc_a | 11.8 | 10.3 | 10.3 | 2022-11-03 03:39:57 |
+| host1 | idc_b | 50 | 66.7 | 40.6 | 2022-11-03 03:39:57 |
+| host1 | idc_e | NULL | 66.7 | 40.6 | 2022-11-03 03:39:57 |
+| host1 | idc_c | 50.1 | 66.8 | 40.8 | 2022-11-03 03:39:57 |
+| host2 | idc_a | 80.1 | 70.3 | 90 | 2022-11-03 03:39:57 |
++-------+-------+----------+-------------+-----------+---------------------+
+```
+
+要根据 `disk_util` 列对数据进行降序排序,可以使用以下 SQL 语句:
+
+```sql
+SELECT * FROM system_metrics
+ORDER BY disk_util DESC;
+```
+
+结果为:
+
+```sql
++-------+-------+----------+-------------+-----------+---------------------+
+| host | idc | cpu_util | memory_util | disk_util | ts |
++-------+-------+----------+-------------+-----------+---------------------+
+| host2 | idc_a | 80.1 | 70.3 | 90 | 2022-11-03 03:39:57 |
+| host1 | idc_c | 50.1 | 66.8 | 40.8 | 2022-11-03 03:39:57 |
+| host1 | idc_b | 50 | 66.7 | 40.6 | 2022-11-03 03:39:57 |
+| host1 | idc_e | NULL | 66.7 | 40.6 | 2022-11-03 03:39:57 |
+| host1 | idc_a | 11.8 | 10.3 | 10.3 | 2022-11-03 03:39:57 |
++-------+-------+----------+-------------+-----------+---------------------+
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/overview.md
new file mode 100644
index 0000000000..f5ae4ee38d
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/overview.md
@@ -0,0 +1,51 @@
+---
+keywords: [SQL 语法, SQL 示例]
+description: GreptimeDB SQL 语句.
+---
+
+# SQL
+
+## 数据类型
+
+* [数据类型](data-types.md)
+
+## 语句和子句
+
+* [ADMIN](./admin.md)
+* [ALTER](./alter.md)
+* [ANSI Compatibility](./compatibility.md)
+* [CASE](./case.md)
+* [CAST](./cast.md)
+* [COPY](./copy.md)
+* [CREATE](./create.md)
+* [DELETE](./delete.md)
+* [DESCRIBE TABLE](./describe_table.md)
+* [DISTINCT](./distinct.md)
+* [DROP](./drop.md)
+* [EXPLAIN](./explain.md)
+* [GROUP BY](./group_by.md)
+* [HAVING](./having.md)
+* [INSERT](./insert.md)
+* [JOIN](./join.md)
+* [LIMIT](./limit.md)
+* [OFFSET](./offset.md)
+* [ORDER BY](./order_by.md)
+* [RANGE](./range.md)
+* [REPLACE](./replace.md)
+* [SELECT](./select.md)
+* [SHOW](./show.md)
+* [TQL](./tql.md)
+* [TRUNCATE](./truncate.md)
+* [WHERE](./where.md)
+* [WITH](./with.md)
+
+## 函数
+* [Functions](./functions/overview.md)
+
+## 系统表
+
+* [INFORMATION_SCHEMA](./information-schema/overview.md)
+
+## Greptime Private 内的系统表
+
+* [Greptime Private](./greptime-private/overview.md)
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/range.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/range.md
new file mode 100644
index 0000000000..728648c0a1
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/range.md
@@ -0,0 +1,729 @@
+---
+keywords: [Range 查询, 时间范围查询, 聚合查询, SQL 示例, FILL 选项]
+description: 介绍了 Range 查询的语法和用法,包括 `FILL`、`TO` 和 `BY` 选项的详细说明和示例。
+---
+
+# RANGE QUERY
+
+查询并聚合一个给定长度的时间范围的数据是时序数据常见的一种查询模式,例如 `PromQL` 中的 `Range selector`。而 GreptimeDB 在 SQL 中支持了 Range 查询,用于将时序数据汇总为时间块,并在时间块上进行数据的聚合。Range 查询作为 `SELECT` 语句的一部分,可与 SQL 灵活结合,从而在 SQL 中提供更强大的时序数据查询能力。
+
+## Syntax
+
+Range query 使用 `Time Index` 列作为聚合的时间线。
+一个合法的 Range 查询语法结构如下所示:
+
+```sql
+SELECT
+ AGGR_FUNCTION(column1, column2,..) RANGE INTERVAL [FILL FILL_OPTION],
+ ...
+FROM table_name
+ [ WHERE ]
+ALIGN INTERVAL [ TO TO_OPTION ] [BY (columna, columnb,..)] [FILL FILL_OPTION]
+ [ ORDER BY ]
+[ LIMIT ];
+
+INTERVAL := TIME_INTERVAL | ( INTERVAL expr )
+```
+
+- 关键字 `ALIGN`,必选字段,后接参数 `INTERVAL` ,`ALIGN` 指明了 Range 查询的步长。
+ - 子关键字 `TO` ,可选字段,指定 Range 查询对齐到的时间点,合法的 `TO_OPTION` 参数见[TO Option](#to-选项) 。
+ - 子关键字 `BY` ,可选字段,后接参数 `(columna, columnb,..)` ,描述了聚合键。详情请见[BY OPTION](#by-选项)。
+- 参数 `INTERVAL` ,主要用于给出一段时间长度,有两种参数形式:
+ - 基于 `PromQL Time Durations` 格式的字符串(例如:`3h`、`1h30m`)。访问 [Prometheus 文档](https://prometheus.io/docs/prometheus/latest/querying/basics/#float-literals-and-time-durations) 获取该格式更详细的说明。
+ - `Interval` 类型,使用 `Interval` 类型需要携带括号,(例如:`('1 year 3 hours 20 minutes'::INTERVAL)`)。访问 [Interval](./data-types.md#interval-type) 获取该格式更详细的说明。
+- `AGGR_FUNCTION(column1, column2,..) RANGE INTERVAL [FILL FILL_OPTION]` 称为一个 Range 表达式。
+ - `AGGR_FUNCTION(column1, column2,..)` 是一个聚合函数,代表需要聚合的表达式。
+ - 关键字 `RANGE`,必选字段,后接参数 `INTERVAL` 指定了每次数据聚合的时间范围,
+ - 关键字 `FILL`,可选字段,详情请见 [`FILL` Option](#fill-选项)。
+ - Range 表达式可与其他运算结合,实现更复杂的查询。具体见[嵌套使用 Range 表达式](#嵌套使用-range-表达式) 。
+- 关键字 `FILL`,可以跟在一个 Range 表达式后,详情请见[FILL Option](#fill-选项) 。
+
+
+## `FILL` 选项
+
+`FILL` 选项指定了在某个聚合的时间片上没有数据,或者聚合字段的值为空时的数据填充方法。
+
+它可以跟在一个 Range 表达式后,作为这个 Range 表达式的数据填充方法;也可以放在 `ALIGN` 后面作为所有未指定 `FILL` 选项的 Range 表达式的填充方法。
+
+例如,在下面的 SQL 代码中,
+`max(val) RANGE '10s'` 范围表达式使用 `FILL` 选项 `LINEAR`,而 `min(val) RANGE '10s'` 没有指定 `FILL` 选项,它将使用在 `ALIGN`关键字之后指定的选项`PREV`。
+
+```sql
+SELECT
+ ts,
+ host,
+ min(val) RANGE '10s',
+ max(val) RANGE '10s' FILL LINEAR
+FROM host_cpu
+ALIGN '5s' BY (host) FILL PREV;
+```
+`FILL` 有以下几种选项:
+
+| FILL | 描述 |
+| :------: | :------------------------------------------------------------------------------------------------------------: |
+| `NULL` | 直接使用 `NULL` 填充 |
+| `PREV` | 使用前一个点的数据填充 |
+| `LINEAR` | 使用线性插值法填充数据,如果一个整数类型使用 `LINEAR` 填充,则该列的变量类型会在计算的时候被隐式转换为浮点类型 |
+| `X` | 填充一个常量,该常量的数据类型必须和 Range 表达式的变量类型一致 |
+
+以下面这张表为例
+
+```sql
+DROP TABLE IF EXISTS host_val;
+CREATE TABLE host_val (
+ ts TIMESTAMP TIME INDEX,
+ host STRING,
+ val DOUBLE,
+ PRIMARY KEY (host)
+);
+
+INSERT INTO host_val VALUES
+ ('1970-01-01 00:00:00', 'host1', 0),
+ ('1970-01-01 00:00:15', 'host1', 6),
+ ('1970-01-01 00:00:00', 'host2', 6),
+ ('1970-01-01 00:00:15', 'host2', 12);
+```
+
+```sql
++---------------------+-------+------+
+| ts | host | val |
++---------------------+-------+------+
+| 1970-01-01 00:00:00 | host1 | 0 |
+| 1970-01-01 00:00:15 | host1 | 6 |
+| 1970-01-01 00:00:00 | host2 | 6 |
+| 1970-01-01 00:00:15 | host2 | 12 |
++---------------------+-------+------+
+```
+
+不同 `FILL` 选项的结果如下:
+
+
+
+
+
+```sql
+SELECT ts, host, min(val) RANGE '5s' FROM host_val ALIGN '5s';
+```
+
+```sql
++---------------------+-------+----------------------------+
+| ts | host | min(host_val.val) RANGE 5s |
++---------------------+-------+----------------------------+
+| 1970-01-01 00:00:00 | host1 | 0 |
+| 1970-01-01 00:00:15 | host1 | 6 |
+| 1970-01-01 00:00:00 | host2 | 6 |
+| 1970-01-01 00:00:15 | host2 | 12 |
++---------------------+-------+----------------------------+
+```
+
+
+
+
+
+```sql
+SELECT ts, host, min(val) RANGE '5s' FILL NULL FROM host_val ALIGN '5s';
+```
+
+```sql
++---------------------+-------+--------------------------------------+
+| ts | host | min(host_val.val) RANGE 5s FILL NULL |
++---------------------+-------+--------------------------------------+
+| 1970-01-01 00:00:00 | host2 | 6 |
+| 1970-01-01 00:00:05 | host2 | NULL |
+| 1970-01-01 00:00:10 | host2 | NULL |
+| 1970-01-01 00:00:15 | host2 | 12 |
+| 1970-01-01 00:00:00 | host1 | 0 |
+| 1970-01-01 00:00:05 | host1 | NULL |
+| 1970-01-01 00:00:10 | host1 | NULL |
+| 1970-01-01 00:00:15 | host1 | 6 |
++---------------------+-------+--------------------------------------+
+
+```
+
+
+
+
+
+```sql
+SELECT ts, host, min(val) RANGE '5s' FILL PREV FROM host_val ALIGN '5s';
+```
+
+```sql
++---------------------+-------+--------------------------------------+
+| ts | host | min(host_val.val) RANGE 5s FILL PREV |
++---------------------+-------+--------------------------------------+
+| 1970-01-01 00:00:00 | host1 | 0 |
+| 1970-01-01 00:00:05 | host1 | 0 |
+| 1970-01-01 00:00:10 | host1 | 0 |
+| 1970-01-01 00:00:15 | host1 | 6 |
+| 1970-01-01 00:00:00 | host2 | 6 |
+| 1970-01-01 00:00:05 | host2 | 6 |
+| 1970-01-01 00:00:10 | host2 | 6 |
+| 1970-01-01 00:00:15 | host2 | 12 |
++---------------------+-------+--------------------------------------+
+```
+
+
+
+
+
+```sql
+SELECT ts, host, min(val) RANGE '5s' FILL LINEAR FROM host_val ALIGN '5s';
+```
+
+```sql
++---------------------+-------+----------------------------------------+
+| ts | host | min(host_val.val) RANGE 5s FILL LINEAR |
++---------------------+-------+----------------------------------------+
+| 1970-01-01 00:00:00 | host2 | 6 |
+| 1970-01-01 00:00:05 | host2 | 8 |
+| 1970-01-01 00:00:10 | host2 | 10 |
+| 1970-01-01 00:00:15 | host2 | 12 |
+| 1970-01-01 00:00:00 | host1 | 0 |
+| 1970-01-01 00:00:05 | host1 | 2 |
+| 1970-01-01 00:00:10 | host1 | 4 |
+| 1970-01-01 00:00:15 | host1 | 6 |
++---------------------+-------+----------------------------------------+
+```
+
+
+
+
+
+```sql [FILL Constant Value 6.0]
+SELECT ts, host, min(val) RANGE '5s' FILL 6 FROM host_val ALIGN '5s';
+```
+
+```sql
++---------------------+-------+-----------------------------------+
+| ts | host | min(host_val.val) RANGE 5s FILL 6 |
++---------------------+-------+-----------------------------------+
+| 1970-01-01 00:00:00 | host2 | 6 |
+| 1970-01-01 00:00:05 | host2 | 6 |
+| 1970-01-01 00:00:10 | host2 | 6 |
+| 1970-01-01 00:00:15 | host2 | 12 |
+| 1970-01-01 00:00:00 | host1 | 0 |
+| 1970-01-01 00:00:05 | host1 | 6 |
+| 1970-01-01 00:00:10 | host1 | 6 |
+| 1970-01-01 00:00:15 | host1 | 6 |
++---------------------+-------+-----------------------------------+
+```
+
+
+
+
+
+注意,如果存在多个 Range 表达式,只对其中的一个表达式使用了 FILL 方法的话,为了保持 SQL 输出行数的统一,其他 Range 表达式会被使用 FILL NULL 方法来填充缺失的时间片段。
+所以下面两句 SQL 在输出上是等价的:
+
+```sql
+SELECT
+ ts,
+ host,
+ min(val) RANGE '10s',
+ max(val) RANGE '10s' FILL LINEAR
+FROM host_val
+ALIGN '5s';
+```
+
+```sql
+SELECT
+ ts,
+ host,
+ min(val) RANGE '10s' FILL NULL,
+ max(val) RANGE '10s' FILL LINEAR
+FROM host_val
+ALIGN '5s';
+```
+
+上述 SQL 的结果如下:
+
+```sql
++---------------------+-------+---------------------------------------+-----------------------------------------+
+| ts | host | min(host_val.val) RANGE 10s FILL NULL | max(host_val.val) RANGE 10s FILL LINEAR |
++---------------------+-------+---------------------------------------+-----------------------------------------+
+| 1969-12-31 23:59:55 | host1 | 0 | 0 |
+| 1970-01-01 00:00:00 | host1 | 0 | 0 |
+| 1970-01-01 00:00:05 | host1 | NULL | 2.9999999999999996 |
+| 1970-01-01 00:00:10 | host1 | 6 | 6 |
+| 1970-01-01 00:00:15 | host1 | 6 | 6 |
+| 1969-12-31 23:59:55 | host2 | 6 | 6 |
+| 1970-01-01 00:00:00 | host2 | 6 | 6 |
+| 1970-01-01 00:00:05 | host2 | NULL | 9 |
+| 1970-01-01 00:00:10 | host2 | 12 | 12 |
+| 1970-01-01 00:00:15 | host2 | 12 | 12 |
++---------------------+-------+---------------------------------------+-----------------------------------------+
+```
+
+## `TO` 选项
+
+`TO` 选项的值用于组确定范围查询的初始时间点。
+`TO` 选项、`RANGE` 选项和 `ALIGN INTERVAL` 共同决定了范围查询的时间窗口。
+请参考[时间范围窗口](/user-guide/query-data/sql.md#时间范围窗口)。
+
+`TO` 选项的默认值为当前查询客户端的时区。如果想要设置时区,请参考 [MySQL 客户端](/user-guide/protocols/mysql.md#时区) 或 [PostgreSQL 客户端](/user-guide/protocols/postgresql.md#时区)文档中的时区设置。其他可用的 `TO` 选项有:
+
+| TO | 描述 |
+| :---------: | :----------------------------------------------------------------: |
+| `NOW` | 对齐到当前查询时间 |
+| `Timestamp` | 对齐到一个用户指定的时间戳上,支持时间戳格式 `RFC3339` / `ISO8601` |
+
+假设我们有一个名为 `host_val` 的表有下面这些数据:
+
+```sql
+DROP TABLE IF EXISTS host_val;
+CREATE TABLE host_val (
+ ts TIMESTAMP TIME INDEX,
+ host STRING,
+ val DOUBLE,
+ PRIMARY KEY (host)
+);
+
+INSERT INTO host_val VALUES
+ ('2023-01-01 23:00:00', 'host1', 0),
+ ('2023-01-02 01:00:00', 'host1', 1),
+ ('2023-01-01 23:00:00', 'host2', 2),
+ ('2023-01-02 01:00:00', 'host2', 3);
+```
+
+```sql
++---------------------+-------+------+
+| ts | host | val |
++---------------------+-------+------+
+| 2023-01-01 23:00:00 | host1 | 0 |
+| 2023-01-02 01:00:00 | host1 | 1 |
+| 2023-01-01 23:00:00 | host2 | 2 |
+| 2023-01-02 01:00:00 | host2 | 3 |
++---------------------+-------+------+
+```
+
+对不同的 `TO` 选项的查询结果如下:
+
+
+
+
+
+```sql
+-- 使用 mysql 协议查询数据库时区,当前处于 UTC 时区
+SELECT @@time_zone;
+```
+
+```sql
++-------------+
+| @@time_zone |
++-------------+
+| UTC |
++-------------+
+```
+
+```sql
+-- 如果没有指定 `TO` 选项
+-- 会使用当前查询指定的时区作为初始的对齐时间
+SELECT ts, host, min(val) RANGE '1d' FROM host_val ALIGN '1d';
+```
+
+```sql
++---------------------+-------+----------------------------+
+| ts | host | min(host_val.val) RANGE 1d |
++---------------------+-------+----------------------------+
+| 2023-01-01 00:00:00 | host1 | 0 |
+| 2023-01-02 00:00:00 | host1 | 1 |
+| 2023-01-01 00:00:00 | host2 | 2 |
+| 2023-01-02 00:00:00 | host2 | 3 |
++---------------------+-------+----------------------------+
+```
+
+
+
+
+
+```sql
+-- 如果你想要将查询范围的初始时间对齐到当前时间,
+-- 可以使用 `NOW` 关键字。
+-- 假如当前的时间为 `2023-01-02T09:16:40.503000`。
+SELECT ts, host, min(val) RANGE '1d' FROM host_val ALIGN '1d' TO NOW;
+```
+
+```sql
++----------------------------+-------+----------------------------+
+| ts | host | min(host_val.val) RANGE 1d |
++----------------------------+-------+----------------------------+
+| 2023-01-01 09:54:55.456000 | host1 | 0 |
+| 2023-01-01 09:54:55.456000 | host2 | 2 |
++----------------------------+-------+----------------------------+
+
+```
+
+
+
+
+
+```sql
+-- 如果你想要将查询范围的初始时间对其到特定的时间戳,
+-- 例如北京时间 2023 年 12 月 1 日,
+-- 你可以将 `TO` 选项的值设定为特定的时间戳 '2023-01-01T00:00:00+08:00'。
+SELECT ts, host, min(val) RANGE '1d' FROM host_val ALIGN '1d' TO '2023-01-01T00:00:00+08:00';
+```
+
+```sql
++---------------------+-------+----------------------------+
+| ts | host | min(host_val.val) RANGE 1d |
++---------------------+-------+----------------------------+
+| 2023-01-01 16:00:00 | host1 | 0 |
+| 2023-01-01 16:00:00 | host2 | 2 |
++---------------------+-------+----------------------------+
+```
+
+
+
+
+
+如果要查询特定时间范围内的数据,也可以使用 `TO` 关键字指定时间戳达到目的。
+例如,要查询 `val` 在 `00:45` 和 `06:45` 之间的每日最小值,
+你可以使用 `2023-01-01T00:45:00` 作为 `TO` 选项以及指定 `6h` 的查询范围。
+
+```sql
+SELECT ts, host, min(val) RANGE '6h' FROM host_val ALIGN '1d' TO '2023-01-01T00:45:00';
+```
+
+```sql
++---------------------+-------+----------------------------+
+| ts | host | min(host_val.val) RANGE 6h |
++---------------------+-------+----------------------------+
+| 2023-01-02 00:45:00 | host2 | 3 |
+| 2023-01-02 00:45:00 | host1 | 1 |
++---------------------+-------+----------------------------+
+```
+
+## `BY` 选项
+
+`BY` 选项描述聚合键。如果不指定该字段,则默认使用表的主键作为聚合键。如果表没有指定主键,则不能省略 `BY` 关键字。
+
+假设我们有一个名为 `host_val` 的表有以下数据:
+
+```sql
+DROP TABLE IF EXISTS host_val;
+CREATE TABLE host_val (
+ ts TIMESTAMP TIME INDEX,
+ host STRING,
+ val DOUBLE,
+ PRIMARY KEY (host)
+);
+
+INSERT INTO host_val VALUES
+ ('2023-01-01 23:00:00', 'host1', 0),
+ ('2023-01-02 01:00:00', 'host1', 1),
+ ('2023-01-01 23:00:00', 'host2', 2),
+ ('2023-01-02 01:00:00', 'host2', 3);
+```
+
+```sql
++---------------------+-------+------+
+| ts | host | val |
++---------------------+-------+------+
+| 2023-01-01 23:00:00 | host1 | 0 |
+| 2023-01-02 01:00:00 | host1 | 1 |
+| 2023-01-01 23:00:00 | host2 | 2 |
+| 2023-01-02 01:00:00 | host2 | 3 |
++---------------------+-------+------+
+```
+
+下面的 SQL 使用 `host` 作为聚合键:
+
+```sql
+SELECT
+ ts,
+ host,
+ min(val) RANGE '10s'
+FROM host_val ALIGN '5s' BY (host);
+```
+
+```sql
++---------------------+-------+-----------------------------+
+| ts | host | min(host_val.val) RANGE 10s |
++---------------------+-------+-----------------------------+
+| 2023-01-01 22:59:55 | host1 | 0 |
+| 2023-01-01 23:00:00 | host1 | 0 |
+| 2023-01-02 00:59:55 | host1 | 1 |
+| 2023-01-02 01:00:00 | host1 | 1 |
+| 2023-01-01 22:59:55 | host2 | 2 |
+| 2023-01-01 23:00:00 | host2 | 2 |
+| 2023-01-02 00:59:55 | host2 | 3 |
+| 2023-01-02 01:00:00 | host2 | 3 |
++---------------------+-------+-----------------------------+
+```
+
+你还可以使用 `BY` 关键字
+
+你还可以使用 `BY` 关键字声明其他列作为数据聚合的依据。比如下面这个 RANGE 查询,使用 `host` 列的字符串长度 `length(host)` 作为数据聚合的依据。
+
+```sql
+SELECT
+ ts,
+ length(host),
+ min(val) RANGE '10s'
+FROM host_val ALIGN '5s' BY (length(host));
+```
+
+得到的结果如下:
+
+```sql
++---------------------+---------------------------------+-----------------------------+
+| ts | character_length(host_val.host) | min(host_val.val) RANGE 10s |
++---------------------+---------------------------------+-----------------------------+
+| 2023-01-01 22:59:55 | 5 | 0 |
+| 2023-01-01 23:00:00 | 5 | 0 |
+| 2023-01-02 00:59:55 | 5 | 1 |
+| 2023-01-02 01:00:00 | 5 | 1 |
++---------------------+---------------------------------+-----------------------------+
+```
+
+你也可以显式通过 `BY ()` 声明不需要使用聚合键,将所有数据全部聚合到一个 group 里。**但如果直接将 `BY` 关键字省略,则代表着使用数据表的主键来作为数据的聚合键。**
+
+```sql
+SELECT
+ ts,
+ min(val) RANGE '10s'
+FROM host_val ALIGN '5s' BY ();
+```
+
+得到的结果如下:
+
+```sql
++---------------------+-----------------------------+
+| ts | min(host_val.val) RANGE 10s |
++---------------------+-----------------------------+
+| 2023-01-01 22:59:55 | 0 |
+| 2023-01-01 23:00:00 | 0 |
+| 2023-01-02 00:59:55 | 1 |
+| 2023-01-02 01:00:00 | 1 |
++---------------------+-----------------------------+
+```
+
+## 聚合函数中的 `ORDER BY` 选项
+
+Range 查询支持在聚合函数 `first_value` 和 `last_value` 中使用 `order by` 表达式,默认情况下,聚合函数使用时间索引列升序排列数据。
+
+以该数据表为例:
+
+```sql
+DROP TABLE IF EXISTS host_val;
+CREATE TABLE host_val (
+ ts TIMESTAMP TIME INDEX,
+ host STRING,
+ val DOUBLE,
+ addon DOUBLE,
+ PRIMARY KEY (host)
+);
+
+INSERT INTO host_val VALUES
+ ('1970-01-01 00:00:00', 'host1', 0, 3),
+ ('1970-01-01 00:00:01', 'host1', 1, 2),
+ ('1970-01-01 00:00:02', 'host1', 2, 1);
+```
+
+```sql
++---------------------+-------+------+-------+
+| ts | host | val | addon |
++---------------------+-------+------+-------+
+| 1970-01-01 00:00:00 | host1 | 0 | 3 |
+| 1970-01-01 00:00:01 | host1 | 1 | 2 |
+| 1970-01-01 00:00:02 | host1 | 2 | 1 |
++---------------------+-------+------+-------+
+```
+
+如果不指定 `order by` 表达式,默认使用时间索引 `ts` 列升序排列。
+以下两个 SQL 是等价的:
+
+```sql
+SELECT ts, first_value(val) RANGE '5s', last_value(val) RANGE '5s' FROM host_val ALIGN '5s';
+```
+
+```sql
+SELECT ts, first_value(val order by ts ASC) RANGE '5s', last_value(val order by ts ASC) RANGE '5s' FROM host_val ALIGN '5s';
+```
+
+查询后得到
+
+```sql
++---------------------+------------------------------------+-----------------------------------+
+| ts | first_value(host_val.val) RANGE 5s | last_value(host_val.val) RANGE 5s |
++---------------------+------------------------------------+-----------------------------------+
+| 1970-01-01 00:00:00 | 0 | 2 |
++---------------------+------------------------------------+-----------------------------------+
+```
+
+也可以自定义排序规则,比如使用 `addon` 排序:
+
+```sql
+SELECT ts, first_value(val ORDER BY addon ASC) RANGE '5s', last_value(val ORDER BY addon ASC) RANGE '5s' FROM host_val ALIGN '5s';
+```
+
+查询后得到
+
+```sql
++---------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------+
+| ts | first_value(host_val.val) ORDER BY [host_val.addon ASC NULLS LAST] RANGE 5s | last_value(host_val.val) ORDER BY [host_val.addon ASC NULLS LAST] RANGE 5s |
++---------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------+
+| 1970-01-01 00:00:00 | 2 | 0 |
++---------------------+-----------------------------------------------------------------------------+----------------------------------------------------------------------------+
+```
+
+## 嵌套使用 Range 表达式
+
+Range 表达式支持灵活的嵌套,可以将 Range 表达式结合各种运算,提供更强大的查询能力。
+
+以下面这张表为例:
+
+```sql
+DROP TABLE IF EXISTS host_val;
+CREATE TABLE host_val (
+ ts TIMESTAMP TIME INDEX,
+ host STRING,
+ val DOUBLE,
+ PRIMARY KEY (host)
+);
+
+INSERT INTO host_val VALUES
+ ('2023-01-01 08:00:00', 'host1', 1.1),
+ ('2023-01-01 08:00:05', 'host1', 2.2),
+ ('2023-01-01 08:00:00', 'host2', 3.3),
+ ('2023-01-01 08:00:05', 'host2', 4.4);
+```
+
+```sql
++---------------------+-------+------+
+| ts | host | val |
++---------------------+-------+------+
+| 2023-01-01 08:00:00 | host1 | 1.1 |
+| 2023-01-01 08:00:05 | host1 | 2.2 |
+| 2023-01-01 08:00:00 | host2 | 3.3 |
+| 2023-01-01 08:00:05 | host2 | 4.4 |
++---------------------+-------+------+
+```
+
+1. 聚合函数内部和外部都支持计算:
+
+```sql
+SELECT ts, host, 2.0 * min(val * 2.0) RANGE '10s' FROM host_val ALIGN '5s';
+```
+
+运行后得到
+
+```sql
++---------------------+-------+-------------------------------------------------------+
+| ts | host | Float64(2) * min(host_val.val * Float64(2)) RANGE 10s |
++---------------------+-------+-------------------------------------------------------+
+| 2023-01-01 07:59:55 | host1 | 4.4 |
+| 2023-01-01 08:00:00 | host1 | 4.4 |
+| 2023-01-01 08:00:05 | host1 | 8.8 |
+| 2023-01-01 07:59:55 | host2 | 13.2 |
+| 2023-01-01 08:00:00 | host2 | 13.2 |
+| 2023-01-01 08:00:05 | host2 | 17.6 |
++---------------------+-------+-------------------------------------------------------+
+```
+
+
+2. 聚合函数内部和外部都支持使用 Scalar 函数:
+ - `min(round(val)) RANGE '10s'` 表示对每个值先使用 `round` 函数四舍五入后再进行聚合
+ - `round(min(val) RANGE '10s')` 表示对每个聚合完成的结果使用 `round` 函数四舍五入
+
+```sql
+SELECT ts, host, min(round(val)) RANGE '10s' FROM host_val ALIGN '5s';
+```
+运行后得到
+
+```sql
++---------------------+-------+------------------------------------+
+| ts | host | min(round(host_val.val)) RANGE 10s |
++---------------------+-------+------------------------------------+
+| 2023-01-01 07:59:55 | host1 | 1 |
+| 2023-01-01 08:00:00 | host1 | 1 |
+| 2023-01-01 08:00:05 | host1 | 2 |
+| 2023-01-01 07:59:55 | host2 | 3 |
+| 2023-01-01 08:00:00 | host2 | 3 |
+| 2023-01-01 08:00:05 | host2 | 4 |
++---------------------+-------+------------------------------------+
+```
+
+
+```sql
+SELECT ts, host, round(min(val) RANGE '10s') FROM host_val ALIGN '5s';
+```
+
+运行后得到
+
+```sql
++---------------------+-------+------------------------------------+
+| ts | host | round(min(host_val.val) RANGE 10s) |
++---------------------+-------+------------------------------------+
+| 2023-01-01 07:59:55 | host2 | 3 |
+| 2023-01-01 08:00:00 | host2 | 3 |
+| 2023-01-01 08:00:05 | host2 | 4 |
+| 2023-01-01 07:59:55 | host1 | 1 |
+| 2023-01-01 08:00:00 | host1 | 1 |
+| 2023-01-01 08:00:05 | host1 | 2 |
++---------------------+-------+------------------------------------+
+```
+
+3. 多个 Range 表达式也可以相互计算,并且 Range 表达式支持分配律,下面两个表达式都是合法且等价的:
+
+```sql
+SELECT ts, host, max(val) RANGE '10s' - min(val) RANGE '10s' FROM host_val ALIGN '5s';
+```
+
+```sql
+SELECT ts, host, (max(val) - min(val)) RANGE '10s' FROM host_val ALIGN '5s';
+```
+
+运行后得到
+
+```sql
++---------------------+-------+-----------------------------------------------------------+
+| ts | host | max(host_val.val) RANGE 10s - min(host_val.val) RANGE 10s |
++---------------------+-------+-----------------------------------------------------------+
+| 2023-01-01 07:59:55 | host2 | 0 |
+| 2023-01-01 08:00:00 | host2 | 1.1000000000000005 |
+| 2023-01-01 08:00:05 | host2 | 0 |
+| 2023-01-01 07:59:55 | host1 | 0 |
+| 2023-01-01 08:00:00 | host1 | 1.1 |
+| 2023-01-01 08:00:05 | host1 | 0 |
++---------------------+-------+-----------------------------------------------------------+
+```
+
+但注意,Range 表达式修饰的范围是位于 `RANGE` 关键字的前一个表达式,下面的 Range 查询是不合法的,因为 `RANGE` 关键字修饰的是表达式 `2.0`,并不是表达式 `min(val * 2.0) * 2.0`
+
+```sql
+SELECT ts, host, min(val * 2.0) * 2.0 RANGE '10s' FROM host_val ALIGN '5s';
+
+ERROR 1815 (HY000): sql parser error: Can't use the RANGE keyword in Expr 2.0 without function
+```
+
+可以为表达式加上括号,`RANGE` 关键字会自动应用到括号中包含的所有聚合函数:
+
+```sql
+SELECT ts, host, (min(val * 2.0) * 2.0) RANGE '10s' FROM host_val ALIGN '5s';
+```
+
+运行后得到:
+
+```sql
++---------------------+-------+-------------------------------------------------------+
+| ts | host | min(host_val.val * Float64(2)) RANGE 10s * Float64(2) |
++---------------------+-------+-------------------------------------------------------+
+| 2023-01-01 07:59:55 | host2 | 13.2 |
+| 2023-01-01 08:00:00 | host2 | 13.2 |
+| 2023-01-01 08:00:05 | host2 | 17.6 |
+| 2023-01-01 07:59:55 | host1 | 4.4 |
+| 2023-01-01 08:00:00 | host1 | 4.4 |
+| 2023-01-01 08:00:05 | host1 | 8.8 |
++---------------------+-------+-------------------------------------------------------+
+```
+
+Range 表达式不允许嵌套,嵌套的 Range 查询是不合法的:
+
+```sql
+SELECT ts, host, max(min(val) RANGE '10s') RANGE '10s' FROM host_cpu ALIGN '5s';
+
+ERROR 1815 (HY000): Range Query: Nest Range Query is not allowed
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/replace.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/replace.md
new file mode 100644
index 0000000000..31ca919e83
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/replace.md
@@ -0,0 +1,39 @@
+---
+keywords: [SQL REPLACE 语句, SQL 语法, SQL 示例, 插入记录, SQL 数据操作]
+description: 描述在 GreptimeDB 中使用 SQL REPLACE 语句向表中添加记录的方法,包括语法和插入单条及多条记录的示例。
+---
+
+# REPLACE
+
+`REPLACE` 语句用于向表中插入新记录。在 GreptimeDB 中,这个语句与 `INSERT` 语句完全相同。更多详情请参考 [`INSERT`](/reference/sql/insert.md)。
+
+## `REPLACE INTO` 语句
+
+### 语法
+
+REPLACE INTO 语句的语法如下:
+
+```sql
+REPLACE INTO table_name (column1, column2, column3, ...)
+VALUES (value1, value2, value3, ...);
+```
+
+### 示例
+
+以下是使用 `REPLACE INTO` 语句向名为 `system_metrics` 的表中插入一条记录的示例:
+
+```sql
+REPLACE INTO system_metrics (host, idc, cpu_util, memory_util, disk_util, ts)
+VALUES
+ ("host1", "idc_b", 50.0, 66.7, 40.6, 1667446797462);
+```
+
+以下是使用 `REPLACE INTO` 语句向 `system_metrics` 表中插入多条记录的示例:
+
+```sql
+REPLACE INTO system_metrics (host, idc, cpu_util, memory_util, disk_util, ts)
+VALUES
+ ("host1", "idc_a", 11.8, 10.3, 10.3, 1667446797460),
+ ("host2", "idc_a", 80.1, 70.3, 90.0, 1667446797461),
+ ("host1", "idc_c", 50.1, 66.8, 40.8, 1667446797463);
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/select.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/select.md
new file mode 100644
index 0000000000..c98d19f0f9
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/select.md
@@ -0,0 +1,205 @@
+---
+keywords: [SELECT 语句, SQL 查询, WHERE 子句, LIMIT 子句, JOIN 子句, GROUP BY 子句]
+description: 介绍了 `SELECT` 语句的基本语法和用法,包括 `WHERE`、`LIMIT`、`JOIN` 和 `GROUP BY` 子句的示例。
+---
+
+# SELECT
+
+`SELECT` 语句是 SQL 和 GreptimeDB 中数据检索的基础。它允许你从一个或多个表中提取特定的列或表达式:
+
+## Basic Syntax
+
+`SELECT` 的基本语法如下:
+
+```sql
+SELECT column1, column2, ...
+FROM table_name
+[WHERE condition]
+[GROUP BY column]
+[HAVING condition]
+[ORDER BY column]
+[LIMIT number] [OFFSET number]
+```
+
+column1, column2 是要从中获取数据的列的名称,table_name 是要从中获取数据的表的名称。
+
+该语句从 `FROM` 子句中指定的表中选择列。如果要从表中选择所有列,可以使用星号(*)通配符字符,而不是列出单个列名。
+
+```sql
+SELECT *
+FROM table_name;
+```
+
+## 条件过滤 (WHERE 子句)
+
+`WHERE` 子句用于根据指定条件过滤 `SELECT` 语句的结果,其语法如下:
+
+```sql
+SELECT column1, column2, ..., columnN
+FROM table_name
+WHERE condition;
+```
+
+其中 `condition` 是一个表达式,它的值为 `true` 或 `false`。只有满足条件的行才会包含在结果集中。
+
+支持的比较运算包括:
+* 逻辑运算符:`AND`、`OR`、`NOT`
+* 比较运算符:`=`、`!=`、`>`、`<`、`>=`、`<=`
+* 模式匹配:`LIKE`、`IN`、`BETWEEN`
+
+```sql
+-- 从 system_metrics 表中选择所有 idc 为 'idc0' 的行
+SELECT *
+FROM system_metrics
+WHERE idc = 'idc0';
+
+-- 从 system_metrics 表中选择所有 idc 为 'idc0' 或 'idc0' 的行
+SELECT *
+FROM system_metrics
+WHERE idc IN ('idc0', 'idc1');
+
+-- 从 system_metrics 表中选择所有idc为'idc0'或'idc0'且CPU利用率大于60%的行
+SELECT *
+FROM system_metrics
+WHERE idc IN ('idc0', 'idc1') AND cpu_util > 0.6;
+```
+
+请参考 [WHERE](where.md) 获取更多信息。
+
+## 排序结果(ORDER BY 子句)
+
+`ORDER BY` 子句用于根据 SELECT 语句中的一个或多个列,以升序或降序对数据进行排序。
+
+例如:
+
+```sql
+-- 按 cpu_util 升序排序结果
+SELECT *
+FROM system_metrics ORDER BY cpu_util ASC;
+
+-- 按 cpu_util 降序排序结果
+SELECT *
+FROM system_metrics ORDER BY cpu_util DESC;
+```
+
+更多信息请参阅 [ORDER](order_by.md)。
+
+## 限制结果(LIMIT 子句)
+
+`LIMIT` 用于限制查询返回的行数。当处理大数据集时该子句特别有用,因为它通过减少需要处理的数据量来提高查询性能。
+
+```sql
+SELECT column1, column2, ...
+FROM table_name
+LIMIT number_of_rows;
+```
+
+这里 `number_of_rows` 参数用于指定要返回的最大行数。
+
+```sql
+-- 从 system_metrics 表中选择 CPU 使用率最高的 10 行。
+SELECT *
+FROM system_metrics
+ORDER BY cpu_util DESC
+LIMIT 10;
+```
+
+
+## 分页结果 (LIMIT 和 OFFSET)
+
+`OFFSET` 子句指定在开始返回查询结果行之前要跳过多少行。它通常与 `LIMIT` 一起使用,用于对大型结果集进行分页。
+
+例如:
+```sql
+SELECT *
+FROM system_metrics
+ORDER BY cpu_util DESC
+LIMIT 10
+OFFSET 10;
+```
+
+它从 `system_metrics` 表中选择按 `cpu_util` 降序排列的第 11 行到第 20 行的所有列。
+
+虽然将 `OFFSET` 和 `LIMIT` 与 `ORDER BY` 子句结合使用可以实现分页,但这种方法效率不高。 我们建议记录每页返回的最后一条记录的时间索引(时间戳),并使用此值来过滤和限制后续页面的数据。 请参阅 [OFFSET](offset.md) 以获取更多信息。
+
+## 连接表(JOIN)
+
+`JOIN` 用于组合两个或多个表中基于相关列的行,使用 `JOIN` 的语法如下:
+
+```sql
+SELECT column1, column2, ...
+FROM table1
+JOIN table2
+ON table1.column = table2.column;
+```
+
+table1 和 table2 是要连接的表的名称,column 是两个表之间的相关列,请参考[JOIN](join.md) 获取更多信息。
+
+## 分组和聚合 (GROUP BY 和聚合函数)
+
+使用 `GROUP BY` 可以根据一个或多个列对数据进行分组,并在这些组内执行诸如计数或求平均值之类的计算,其基本语法如下:
+
+```sql
+SELECT column1, column2, ..., aggregate_function(column)
+FROM table_name
+GROUP BY column1, column2, ...;
+```
+
+常见支持的聚合函数:
+* COUNT
+* SUM
+* AVG
+* MAX
+* MIN
+
+更多函数,请参阅 [聚合函数](/reference/sql/functions/df-functions.md#aggregate-functions) 和 [窗口函数](/reference/sql/functions/df-functions.md#window-functions)。
+
+示例:
+```sql
+-- 查询每个 idc 的 idc 总数
+SELECT idc, COUNT(host) as host_num
+FROM system_metrics
+GROUP BY idc;
+
+-- 查询每个 idc 的平均 cpu 利用率
+SELECT idc, AVG(cpu_util) as cpu_avg
+FROM system_metrics
+GROUP BY idc;
+```
+
+请参考 [GROUP BY](group_by.md) 获取更多信息。
+
+## 过滤分组 (HAVING 子句)
+
+`HAVING` 子句允许您过滤分组(聚合)后的结果——它的作用类似于 `WHERE`,但发生在分组之后。
+
+示例:
+```sql
+SELECT
+ DATE_TRUNC('day', event_time) AS log_date,
+ COUNT(*) AS error_count
+FROM application_logs
+WHERE log_level = 'ERROR'
+GROUP BY log_date
+HAVING error_count > 10;
+```
+
+解释如下:
+* 按日期分组日志,并统计日志级别为 `'ERROR'` 的事件数量。
+* 仅返回错误数量超过 10 的日期。
+
+请参考 [HAVING](having.md) 获取更多信息。
+
+## RANGE 查询示例
+
+```sql
+SELECT
+ ts,
+ host,
+ min(cpu) RANGE '10s',
+ max(cpu) RANGE '10s' FILL LINEAR
+FROM host_cpu
+ALIGN '5s' BY (host) FILL PREV;
+```
+
+请参考 [RANGE QUERY](range.md) 获取更多信息。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/show.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/show.md
new file mode 100644
index 0000000000..f6a88a9a8a
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/show.md
@@ -0,0 +1,447 @@
+---
+keywords: [SHOW 关键字, 数据库信息, 表信息, SQL 示例, SHOW DATABASES]
+description: 介绍了 `SHOW` 关键字的各种用法,包括展示数据库、表、视图和索引等信息的语法和示例。
+---
+
+# SHOW
+
+`SHOW` 关键字提供数据库和表信息。
+
+## SHOW DATABASES
+
+展示所有数据库:
+
+```sql
+SHOW [FULL] DATABASES;
+```
+
+```sql
++---------+
+| Schemas |
++---------+
+| public |
++---------+
+1 row in set (0.01 sec)
+```
+
+展示名称符合 `LIKE` 模式的数据库:
+
+```sql
+SHOW DATABASES LIKE 'p%';
+```
+
+根据 `where` 表达式展示数据库:
+
+```sql
+SHOW DATABASES WHERE Schemas='test_public_schema';
+```
+
+展示所有数据库,包括它们的选项:
+
+```sql
+CREATE DATABASE test WITH(ttl='7d');
+SHOW FULL DATABASES;
+```
+
+```sql
++--------------------+-------------+
+| Database | Options |
++--------------------+-------------+
+| greptime_private | |
+| information_schema | |
+| public | |
+| test | ttl='7days' |
++--------------------+-------------+
+```
+
+## SHOW CREATE DATABASE
+
+展示创建指定数据库的 `CREATE DATABASE` 语句:
+
+```sql
+SHOW CREATE DATABASE test;
+```
+
+```sql
++----------+------------------------------------------------------------+
+| Database | Create Database |
++----------+------------------------------------------------------------+
+| test | CREATE DATABASE IF NOT EXISTS test
+WITH(
+ ttl = '7days'
+) |
++----------+------------------------------------------------------------+
+1 row in set (0.01 sec)
+```
+
+## SHOW TABLES
+
+展示所有表:
+
+```sql
+SHOW TABLES;
+```
+
+```sql
++---------+
+| Tables |
++---------+
+| numbers |
+| scripts |
++---------+
+2 rows in set (0.00 sec)
+```
+
+展示 `test` 数据库中的所有表:
+
+```sql
+SHOW TABLES FROM test;
+```
+
+展示名称符合 `LIKE` 模式的表:
+
+```sql
+SHOW TABLES like '%prometheus%';
+```
+
+根据 `where` 表达式展示表:
+
+```sql
+SHOW TABLES FROM test WHERE Tables='numbers';
+```
+
+## SHOW FULL TABLES
+
+```sql
+SHOW FULL TABLES [IN | FROM] [DATABASE] [LIKE pattern] [WHERE query]
+```
+
+将会展示指定数据库(或者默认 `public`)中所有的表及其类型:
+
+```sql
+SHOW FULL TABLES;
+```
+
+```sql
++---------+------------+
+| Tables | Table_type |
++---------+------------+
+| monitor | BASE TABLE |
+| numbers | TEMPORARY |
++---------+------------+
+2 rows in set (0.00 sec)
+```
+
+* `Tables`: 表的名称
+* `Table_type`: 表的类型,例如 `BASE_TABLE`, `TEMPORARY` 和 `VIEW` 等等。
+
+同样也支持 `like` 和 `where` 查询:
+
+```sql
+SHOW FULL TABLES FROM public like '%mo%';
+```
+
+```sql
++---------+------------+
+| Tables | Table_type |
++---------+------------+
+| monitor | BASE TABLE |
++---------+------------+
+1 row in set (0.01 sec)
+```
+
+```sql
+SHOW FULL TABLES WHERE Table_type='BASE TABLE';
+```
+
+```sql
++---------+------------+
+| Tables | Table_type |
++---------+------------+
+| monitor | BASE TABLE |
++---------+------------+
+1 row in set (0.01 sec)
+```
+
+## SHOW CREATE TABLE
+
+展示创建指定表的 `CREATE TABLE` 语句:
+
+```sql
+SHOW CREATE TABLE [table]
+```
+
+例如:
+
+```sql
+SHOW CREATE TABLE system_metrics;
+```
+
+```sql
++----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Table | Create Table |
++----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| system_metrics | CREATE TABLE IF NOT EXISTS `system_metrics` (
+ `host` STRING NULL,
+ `idc` STRING NULL,
+ `cpu_util` DOUBLE NULL,
+ `memory_util` DOUBLE NULL,
+ `disk_util` DOUBLE NULL,
+ `ts` TIMESTAMP(3) NOT NULL DEFAULT current_timestamp(),
+ TIME INDEX (`ts`),
+ PRIMARY KEY (`host`, `idc`)
+)
+
+ENGINE=mito
+WITH(
+ regions = 1
+) |
++----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+```
+
+* `Table`: 表的名称
+* `Create Table`: 用于创建该表的 SQL
+
+## SHOW CREATE FLOW
+
+展示创建指定 Flow 任务的 `CREATE FLOW` 语句。
+
+比如:
+
+```sql
+public=> SHOW CREATE FLOW filter_numbers;
+```
+
+```sql
+ Flow | Create Flow
+----------------+-------------------------------------------------------
+ filter_numbers | CREATE OR REPLACE FLOW IF NOT EXISTS filter_numbers +
+ | SINK TO out_num_cnt +
+ | AS SELECT number FROM numbers_input WHERE number > 10
+(1 row)
+```
+
+## SHOW FLOWS
+
+展示当前所有 Flow 任务:
+
+```sql
+public=> SHOW FLOWS;
+```
+
+```sql
+ Flows
+----------------
+ filter_numbers
+(1 row)
+```
+
+同样也支持 `LIKE` 表达式:
+```sql
+public=> show flows like "filter%";
+```
+
+```sql
+ Flows
+----------------
+ filter_numbers
+(1 row)
+```
+
+## SHOW CREATE VIEW
+
+用于显示视图(View)的定义:
+
+```sql
+SHOW CREATE VIEW cpu_monitor;
+```
+
+```
++-------------+--------------------------------------------------------------+
+| View | Create View |
++-------------+--------------------------------------------------------------+
+| cpu_monitor | CREATE VIEW cpu_monitor AS SELECT cpu, host, ts FROM monitor |
++-------------+--------------------------------------------------------------+
+```
+
+## SHOW VIEWS
+
+列出所有视图:
+
+```sql
+SHOW VIEWS;
+```
+
+```sql
++----------------+
+| Views |
++----------------+
+| cpu_monitor |
+| memory_monitor |
++----------------+
+```
+
+当然,它也支持 `LIKE` 查询:
+
+```sql
+SHOW VIEWS LIKE 'cpu%';
+```
+
+```sql
++-------------+
+| Views |
++-------------+
+| cpu_monitor |
++-------------+
+```
+
+以及 `WHERE` 条件:
+
+```sql
+SHOW VIEWS WHERE Views = 'memory_monitor';
+```
+
+```sql
++----------------+
+| Views |
++----------------+
+| memory_monitor |
++----------------+
+```
+
+## SHOW PROCESSLIST
+列出当前所有正在执行的查询列表,本质上是 `SELECT id, catalog, query, elapsed_time FROM INFORMATION_SCHEMA.PROCESS_LIST` 的别名:
+
+```sql
+SHOW PROCESSLIST;
+```
+
+输出如下:
+```
++-----------------------+----------+------------------+-----------------+
+| Id | Catalog | Query | Elapsed Time |
++-----------------------+----------+------------------+-----------------+
+| 192.168.50.164:4001/0 | greptime | SHOW PROCESSLIST | 00:00:00.002000 |
++-----------------------+----------+------------------+-----------------+
+1 row in set (0.00 sec)
+```
+
+同时可以指定 `FULL` 参数用于输出 `INFORMATION_SCHEMA.PROCESS_LIST` 表的所有列:
+```sql
+SHOW FULL PROCESSLIST;
+```
+
+输出如下:
+```sql
++-----------------------+----------+--------------------+------------------------+---------------------+----------------------------+-----------------+-----------------------+
+| Id | Catalog | Schema | Client | Frontend | Start Time | Elapsed Time | Query |
++-----------------------+----------+--------------------+------------------------+---------------------+----------------------------+-----------------+-----------------------+
+| 192.168.50.164:4001/0 | greptime | information_schema | mysql[127.0.0.1:34692] | 192.168.50.164:4001 | 2025-06-30 07:17:46.423000 | 00:00:00.003000 | SHOW FULL PROCESSLIST |
++-----------------------+----------+--------------------+------------------------+---------------------+----------------------------+-----------------+-----------------------+
+```
+
+## SHOW TRIGGERS
+
+请参考 [Trigger 语法](/reference/sql/trigger-syntax.md#show-triggers)文档。
+
+## SHOW CREATE TRIGGER
+
+请参考 [Trigger 语法](/reference/sql/trigger-syntax.md#show-create-trigger)文档。
+
+## SHOW 语句的扩展
+
+与 MySQL 类似,一些 `SHOW` 语句的扩展伴随着 [`INFORMATION_SCHEMA`](/reference/sql/information-schema/overview.md) 的实现,它们还接受 `WHERE` 子句,提供了在指定显示的行时更大的灵活性。
+
+GreptimeDB 为 MySQL 兼容性实现了这些扩展的一部分,这对于像 [Navicat for MySQL](https://www.navicat.com/en/products/navicat-for-mysql) 或 [dbeaver](https://dbeaver.io/) 这样的工具连接 GreptimeDB 非常有用。
+
+```sql
+SHOW CHARACTER SET;
+```
+
+输出类似于 `INFORMATION_SCHEMA.CHARACTER_SETS` 表:
+
+```sql
++---------+---------------+-------------------+--------+
+| Charset | Description | Default collation | Maxlen |
++---------+---------------+-------------------+--------+
+| utf8 | UTF-8 Unicode | utf8_bin | 4 |
++---------+---------------+-------------------+--------+
+```
+
+使用 `SHOW COLLATION` 来查看 `INFORMATION_SCHEMA.COLLATIONS` 表。
+
+```sql
+SHOW INDEX FROM monitor;
+```
+
+列出表中的所有索引:
+
+```sql
++---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+----------------------------+---------+---------------+---------+------------+
+| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
++---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+----------------------------+---------+---------------+---------+------------+
+| monitor | 1 | PRIMARY | 1 | host | A | NULL | NULL | NULL | YES | greptime-inverted-index-v1 | | | YES | NULL |
+| monitor | 1 | TIME INDEX | 1 | ts | A | NULL | NULL | NULL | NO | greptime-inverted-index-v1 | | | YES | NULL |
++---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+----------------------------+---------+---------------+---------+------------+
+```
+
+这是 `INFORMATION_SCHEMA.TABLE_CONSTRAINTS` 的扩展。
+
+列出表中的所有列:
+
+```sql
+SHOW COLUMNS FROM monitor;
+```
+
+输出类似于 `INFORMATION_SCHEMA.COLUMNS`:
+
+```sql
++--------+--------------+------+------------+---------------------+-------+----------------------+
+| Field | Type | Null | Key | Default | Extra | Greptime_type |
++--------+--------------+------+------------+---------------------+-------+----------------------+
+| cpu | double | Yes | | 0 | | Float64 |
+| host | string | Yes | PRI | NULL | | String |
+| memory | double | Yes | | NULL | | Float64 |
+| ts | timestamp(3) | No | TIME INDEX | current_timestamp() | | TimestampMillisecond |
++--------+--------------+------+------------+---------------------+-------+----------------------+
+```
+
+所有这些 `SHOW` 扩展都接受 `WHERE` 子句:
+
+```sql
+SHOW COLUMNS FROM monitor WHERE Field = 'cpu';
+```
+
+```sql
++-------+--------+------+------+---------+-------+---------------+
+| Field | Type | Null | Key | Default | Extra | Greptime_type |
++-------+--------+------+------+---------+-------+---------------+
+| cpu | double | Yes | | 0 | | Float64 |
++-------+--------+------+------+---------+-------+---------------+
+```
+
+列出表中的所有 Region:
+
+```sql
+SHOW REGION FROM monitor;
+```
+
+```sql
++----------------+---------------+------+--------+
+| Table | Region | Peer | Leader |
++----------------+---------------+------+--------+
+| monitor | 4398046511104 | 0 | Yes |
++----------------+---------------+------+--------+
+```
+
+这是 `INFORMATION_SCHEMA.REGION_PEERS` 的扩展,并且支持 `WHERE` 子句。
+
+语法是:
+```sql
+SHOW REGION FROM [table] [IN database] [WHERE where]
+```
+
+其他 `SHOW` 扩展语句:
+* `SHOW STATUS` 和 `SHOW VARIABLES` 不支持,仅返回空结果。
+* `SHOW TABLE STATUS` 是 `INFORMATION_SCHEMA.TABLES` 的扩展。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/tql.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/tql.md
new file mode 100644
index 0000000000..c5c25161b2
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/tql.md
@@ -0,0 +1,185 @@
+---
+keywords: [TQL 关键字, EVAL, EXPLAIN, ANALYZE, 时间序列查询]
+description: 介绍了 `TQL` 关键字及其在 GreptimeDB 中的用法,包括 `EVAL`、`EXPLAIN` 和 `ANALYZE` 的语法和示例。
+---
+
+# TQL
+
+`TQL` 关键字在 SQL 中执行 TQL 语言。TQL 是 Telemetry Query Language 的缩写,是 GreptimeDB 中对 Prometheus 的 [PromQL](https://prometheus.io/docs/prometheus/latest/querying/basics/) 的扩展。
+
+## EVAL
+
+### Syntax
+
+```sql
+TQL [EVAL | EVALUATE] (start, end, step, [lookback]) expr [AS alias]
+```
+
+`start`, `end` 和 `step` 是查询参数,就像 [Prometheus Query API](https://prometheus.io/docs/prometheus/latest/querying/api/) 一样:
+
+- `start`: ``: 查询的起始时间戳,范围中包含该值。
+- `end`: ``: 查询的截止时间戳,范围中包含该值。
+- `step`: ``: 查询分辨率步长,采用 `duration` 格式或浮点秒数。
+- `lookback`: ``: 查询评估的最大过去持续时间,默认 5 分钟,可选参数。
+
+`expr` 是 TQL (PromQL) 的查询字符串。
+
+可选的 `AS alias` 子句允许你为结果中的值列指定自定义名称。这对以下场景很有用:
+- 为查询结果提供有意义的名称
+- 在 SQL 查询中使用 TQL 结果(例如 CTE、JOIN)
+- 提高复杂查询的可读性
+
+**注意**:值别名目前仅支持单值列结果。
+
+### 示例
+
+返回过去 5 分钟内 `http_requests_total` 指标的所有时间序列的每秒值:
+
+```sql
+TQL EVAL (1677057993, 1677058993, '1m')
+ rate(prometheus_http_requests_total{job="prometheus"}[5m]);
+```
+
+其查询结果和 SQL 查询结果类似。
+
+使用值别名为结果提供自定义名称:
+
+```sql
+TQL EVAL (0, 30, '10s') http_requests_total AS requests;
+```
+
+这将返回值列名为 `requests` 而不是默认字段名的结果。
+
+值别名与聚合:
+
+```sql
+TQL EVAL (0, 10, '5s') count by (k) (test) AS count_value;
+```
+
+此查询按 `k` 分组计数值,并将结果列命名为 `count_value`。
+
+`start` 和 `end` 还可以是可以被求值为常量的时间表达式,例如查询过去 3 个小时:
+
+```sql
+TQL EVAL (now() - interval '3' hours, now(), '1m')
+ sum by (namespace, pod) (
+ increase(kube_pod_container_status_restarts_total[10m:30s])
+ );
+```
+
+查询过去一天的数据:
+```sql
+TQL EVAL (
+ date_trunc('day', now() - interval '1' day),
+ date_trunc('day', now()),
+ '1m'
+)
+ sum by (namespace) (
+ rate(http_requests_total[5m:30s])
+ );
+```
+
+### 在 CTE 中使用 TQL
+
+TQL `EVAL` 可以在公共表表达式(CTE)中使用,以便将 PromQL 风格的查询与 SQL 处理相结合。有关详细示例和使用指南,请参阅[在 CTE 中使用 TQL](/user-guide/query-data/cte.md#在-cte-中使用-tql)。
+
+## EXPLAIN
+
+`EXPLAIN` 展示特定 PromQL 查询的逻辑计划和执行计划,其语法如下:
+
+```
+TQL EXPLAIN [VERBOSE] [FORMAT format] [(start, end, step, [lookback])] expr [AS alias];
+```
+
+例如,我们可以使用下方示例解释 PromQL `sum by (instance) (rate(node_disk_written_bytes_total[2m])) > 50`:
+
+```
+TQL EXPLAIN sum by (instance) (rate(node_disk_written_bytes_total[2m])) > 50;
+```
+
+注意该查询实际上没有被执行,所以 `(start, end, step, [lookback])` 不是必需的,但你仍然可以像在 `TQL EVAL` 中一样提供这些参数:
+
+```
+TQL EXPLAIN (0, 100, '10s') sum by (instance) (rate(node_disk_written_bytes_total[2m])) > 50;
+```
+
+你也可以在 EXPLAIN 中使用值别名:
+
+```
+TQL EXPLAIN (0, 10, '5s') test AS series;
+```
+
+结果如下:
+
+```txt
++---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| plan_type | plan |
++---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| logical_plan | Sort: node_disk_written_bytes_total.instance ASC NULLS LAST, node_disk_written_bytes_total.ts ASC NULLS LAST
+ Filter: SUM(prom_rate(ts_range,field,ts)) > Float64(50)
+ Aggregate: groupBy=[[node_disk_written_bytes_total.instance, node_disk_written_bytes_total.ts]], aggr=[[SUM(prom_rate(ts_range,field,ts))]]
+ Projection: node_disk_written_bytes_total.ts, prom_rate(ts_range, field, node_disk_written_bytes_total.ts) AS prom_rate(ts_range,field,ts), node_disk_written_bytes_total.instance
+ Filter: prom_rate(ts_range, field, node_disk_written_bytes_total.ts) IS NOT NULL
+ Projection: node_disk_written_bytes_total.ts, node_disk_written_bytes_total.instance, field, ts_range
+ PromRangeManipulate: req range=[0..0], interval=[300000], eval range=[120000], time index=[ts], values=["field"]
+ PromSeriesNormalize: offset=[0], time index=[ts], filter NaN: [true]
+ PromSeriesDivide: tags=["instance"]
+ Sort: node_disk_written_bytes_total.instance DESC NULLS LAST, node_disk_written_bytes_total.ts DESC NULLS LAST
+ TableScan: node_disk_written_bytes_total projection=[ts, instance, field], partial_filters=[ts >= TimestampMillisecond(-420000, None), ts <= TimestampMillisecond(300000, None)] |
+| physical_plan | SortPreservingMergeExec: [instance@0 ASC NULLS LAST,ts@1 ASC NULLS LAST]
+ SortExec: expr=[instance@0 ASC NULLS LAST,ts@1 ASC NULLS LAST]
+ CoalesceBatchesExec: target_batch_size=8192
+ FilterExec: SUM(prom_rate(ts_range,field,ts))@2 > 50
+ AggregateExec: mode=FinalPartitioned, gby=[instance@0 as instance, ts@1 as ts], aggr=[SUM(prom_rate(ts_range,field,ts))]
+ CoalesceBatchesExec: target_batch_size=8192
+ RepartitionExec: partitioning=Hash([Column { name: "instance", index: 0 }, Column { name: "ts", index: 1 }], 32), input_partitions=32
+ AggregateExec: mode=Partial, gby=[instance@2 as instance, ts@0 as ts], aggr=[SUM(prom_rate(ts_range,field,ts))]
+ ProjectionExec: expr=[ts@0 as ts, prom_rate(ts_range@3, field@2, ts@0) as prom_rate(ts_range,field,ts), instance@1 as instance]
+ CoalesceBatchesExec: target_batch_size=8192
+ FilterExec: prom_rate(ts_range@3, field@2, ts@0) IS NOT NULL
+ ProjectionExec: expr=[ts@0 as ts, instance@1 as instance, field@2 as field, ts_range@3 as ts_range]
+ PromInstantManipulateExec: req range=[0..0], interval=[300000], eval range=[120000], time index=[ts]
+ PromSeriesNormalizeExec: offset=[0], time index=[ts], filter NaN: [true]
+ PromSeriesDivideExec: tags=["instance"]
+ RepartitionExec: partitioning=RoundRobinBatch(32), input_partitions=1
+ ExecutionPlan(PlaceHolder)
+ |
++---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+```
+
+## ANALYZE
+
+TQL 同样支持 `ANALYZE` 关键词来分析给定 PromQL 查询的执行,其语法如下:
+
+```
+TQL ANALYZE [VERBOSE] [FORMAT format] (start, end, step, [lookback]) expr [AS alias];
+```
+
+例如:
+
+```
+TQL ANALYZE (0, 10, '5s') test;
+```
+
+得到结果:
+
+```
++-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| plan_type | plan |
++-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Plan with Metrics | CoalescePartitionsExec, metrics=[output_rows=0, elapsed_compute=14.99µs]
+ PromInstantManipulateExec: range=[0..10000], lookback=[300000], interval=[5000], time index=[j], metrics=[output_rows=0, elapsed_compute=1.08µs]
+ PromSeriesNormalizeExec: offset=[0], time index=[j], filter NaN: [false], metrics=[output_rows=0, elapsed_compute=1.11µs]
+ PromSeriesDivideExec: tags=["k"], metrics=[output_rows=0, elapsed_compute=1.3µs]
+ RepartitionExec: partitioning=RoundRobinBatch(32), input_partitions=32, metrics=[send_time=32ns, repart_time=32ns, fetch_time=11.578016ms]
+ RepartitionExec: partitioning=RoundRobinBatch(32), input_partitions=1, metrics=[send_time=1ns, repart_time=1ns, fetch_time=21.07µs]
+ ExecutionPlan(PlaceHolder), metrics=[]
+ |
++-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+```
+
+使用 `TQL ANALYZE VERBOSE` 可以拿到查询执行时更详细的信息.
+
+```
+TQL ANALYZE VERBOSE (0, 10, '5s') test;
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/trigger-syntax.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/trigger-syntax.md
new file mode 100644
index 0000000000..9d7b3d2d65
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/trigger-syntax.md
@@ -0,0 +1,178 @@
+---
+keywords: [Trigger, 触发器, 告警, GreptimeDB 企业版, 语法]
+description: 本文档系统描述了 GreptimeDB Trigger 的完整语法规范。
+---
+
+# Trigger 语法
+
+:::tip 注意
+
+本功能仅在 GreptimeDB 企业版中可用。
+
+:::
+
+## CREATE TRIGGER
+
+创建 Trigger 的语法:
+
+```sql
+CREATE TRIGGER [IF NOT EXISTS]
+ ON () EVERY
+ [LABELS (=, ...)]
+ [ANNOTATIONS (=, ...)]
+ NOTIFY (
+ WEBHOOK URL '' [WITH (=, ...)],
+ WEBHOOK URL '' [WITH (=, ...)]
+ );
+```
+
+- Trigger name:Trigger 在 catalog 级别的唯一标识符。
+- IF NOT EXISTS:阻止 Trigger 已经存在时的报错。
+
+### On 子句
+
+#### Query expression
+
+指定的 SQL 查询会被定期执行。若查询结果非空,则触发通知;若查询结果包含多行,则
+每一行都会触发一条独立通知。
+
+此外,Trigger 会从查询结果中提取 labels 与 annotations,并与 `LABELS` 和 `ANNOTATIONS`
+子句中指定的键值对一起附加到通知消息中。
+
+提取规则如下:
+
+- 若列名(或别名)以 `label_` 开头,则将该列提取到 LABELS 中,键名为去掉 `label_`
+ 前缀后的列名(或别名)。
+- 其余所有列均提取到 ANNOTATIONS 中,键名即为列名(或别名)。
+
+例如,查询表达式如下:
+
+```sql
+SELECT collect as label_collector, host as label_host, val
+ FROM host_load1
+ WHERE val > 10 and ts >= now() - '1 minutes'::INTERVAL
+```
+
+假设查询结果非空,且如下所示:
+
+| label_collector | label_host | val |
+|------------------|------------|-----|
+| collector1 | host1 | 12 |
+| collector2 | host2 | 15 |
+
+这将产生两条通知。
+
+第一条通知的 labels 与 annotations 如下:
+- Labels:
+ - collector: collector1
+ - host: host1
+ - 以及 `LABELS` 子句中定义的 labels
+- Annotations:
+ - val: 12
+ - 以及 `ANNOTATIONS` 子句中定义的 annotations
+
+第二条通知的 labels 与 annotations 如下:
+- Labels:
+ - collector: collector2
+ - host: host2
+ - 以及 `LABELS` 子句中定义的 labels
+- Annotations:
+ - val: 15
+ - 以及 `ANNOTATIONS` 子句中定义的 annotations
+
+#### Interval expression
+
+指定查询的执行间隔。它表示查询的执行频率。例如,`INTERVAL '1 minute'`、
+`INTERVAL '1 hour'` 等。
+
+- INTERVAL 表达式中**禁止**使用 `years` 和 `months`。月和年的时长是可变的,取决于具体的月份或年份,因此不适合用来定义固定的间隔。
+- 最小间隔为 1 秒。任何小于 1 秒的间隔都会被自动向上取整为 1 秒。
+
+有关 INTERVA L表达式的更多语法细节,请参见 [interval-type](/reference/sql/data-types.md#interval-type)。
+
+### Labels 和 Annotations 子句
+
+LABELS 和 ANNOTATIONS 子句用于在 Trigger 发送的通知消息中附加静态的键值对,以提
+供有关该 Trigger 的额外上下文或元数据。
+
+- LABELS:可用于 Alertmanager 的路由、分组与抑制规则等。
+- ANNOTATIONS:通常用于存放供人类阅读的描述信息。
+
+### Notify 子句
+
+NOTIFY 子句允许指定一个或多个通知通道。目前,GreptimeDB 支持以下通道类型:
+
+#### Webhook
+
+当 Trigger 触发时,Webhook 通道会向指定的 URL 发送 HTTP 请求。请求的 payload
+与 [Prometheus Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/)
+兼容,因此我们可以复用 Alertmanager 的分组、抑制、静默和路由功能,而无需任何
+额外的胶水代码。
+
+可选的 WITH 子句允许指定额外的参数:
+
+- timeout:HTTP 请求的超时时间,例如 `timeout='1m'`。
+
+## SHOW TRIGGERS
+
+列出所有的 Triggers:
+
+```sql
+SHOW TRIGGERS;
+```
+
+当然,它也支持 `LIKE` 查询:
+
+```sql
+SHOW TRIGGERS LIKE '';
+```
+
+例如:
+
+```sql
+SHOW TRIGGERS LIKE 'load%';
+```
+
+以及 `WHERE` 条件:
+
+```sql
+SHOW TRIGGERS WHERE ;
+```
+
+例如:
+
+```sql
+SHOW TRIGGERS WHERE name = 'load1_monitor';
+```
+
+## SHOW CREATE TRIGGER
+
+用于显示 TRIGGER 的定义:
+
+```sql
+SHOW CREATE TRIGGER ;
+```
+
+例如:
+
+```sql
+SHOW CREATE TRIGGER load1_monitor;
+```
+
+## DROP TRIGGER
+
+请使用以下 `DROP TRIGGER` 语句删除 Trigger:
+
+```sql
+DROP TRIGGER [IF EXISTS] ;
+```
+
+For example:
+
+```sql
+DROP TRIGGER IF EXISTS load1_monitor;
+```
+
+## 示例
+
+请参考企业版用户指南中的 [Trigger](/enterprise/trigger.md) 文档。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/truncate.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/truncate.md
new file mode 100644
index 0000000000..3429db8d1c
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/truncate.md
@@ -0,0 +1,16 @@
+---
+keywords: [TRUNCATE TABLE, SQL 删除, 高效删除, 数据库操作, SQL 示例]
+description: 介绍了 `TRUNCATE TABLE` 语句的用法,用于高效地删除表中的所有数据。
+---
+
+# TRUNCATE
+
+`TRUNCATE TABLE table` 语句用于删除表中的所有数据。它比 `DELETE FROM table` 高效得多。
+
+```sql
+TRUNCATE TABLE monitor;
+```
+
+```sql
+Query OK, 0 rows affected (0.02 sec)
+```
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/where.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/where.md
new file mode 100644
index 0000000000..0293da10e7
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/where.md
@@ -0,0 +1,78 @@
+---
+keywords: [WHERE 子句, SQL 过滤, 逻辑运算符, 数字比较, 列表查找]
+description: 介绍了 `WHERE` 子句的用法,包括逻辑运算符、数字比较和列表查找的示例。
+---
+
+# WHERE
+
+`WHERE` 子句允许通过指定条件过滤数据。
+
+## Syntax
+
+```sql
+SELECT *
+FROM table_name
+WHERE condition;
+```
+
+如果有 `WHERE` 子句,则它必须为布尔类型的表达式,这通常是带有比较和逻辑运算符的表达式。此表达式计算结果为 false 的行将会从进一步的转换或结果中排除。
+
+## 示例
+
+### 逻辑运算符
+
+支持 `AND`、`OR` 作为逻辑运算符,并可以使用括号()组合条件。
+
+```sql
+SELECT * FROM system_metrics
+WHERE idc = 'idc0' AND (host = 'host1' OR host = 'host2');
+```
+
+### 数字
+
+支持 `=`, `!=`, `>`, `>=`, `<`, `<=` 作为比较运算符。
+
+```sql
+SELECT * FROM system_metrics WHERE cpu_util = 20.0;
+SELECT * FROM system_metrics WHERE cpu_util != 20.0;
+SELECT * FROM system_metrics WHERE cpu_util > 20.0;
+SELECT * FROM system_metrics WHERE cpu_util >= 20.0;
+SELECT * FROM system_metrics WHERE cpu_util < 20.0;
+SELECT * FROM system_metrics WHERE cpu_util <= 20.0;
+```
+
+### List 查找
+
+List 子元素的匹配或不匹配。
+
+### List 匹配
+
+```sql
+SELECT * FROM system_metrics WHERE idc IN ('idc_a', 'idc_b');
+```
+
+### List 不匹配
+
+```sql
+SELECT * FROM system_metrics WHERE idc NOT IN ('idc_a', 'idc_b');
+```
+
+### 字符串
+
+对于字符串列,我们可以使用 `LIKE` 运算符在列中搜索指定的模式。 有两个通配符经常与 LIKE 运算符一起使用:
+* 百分号 `%` 代表零个、一个或多个字符
+* 下划线 `_` 代表单个字符
+
+选择 `host` 列以字母 "a" 开头的所有记录:
+```sql
+SELECT * FROM system_metrics WHERE host LIKE 'a%';
+```
+
+从 `go_info` 表中选择 instance 列匹配模式 `'localhost:____'` 的所有记录,这意味着 `'localhost:'` 后面跟着恰好四个字符:
+
+```sql
+SELECT * FROM go_info
+WHERE instance LIKE 'localhost:____';
+```
+
+有关在日志中搜索关键字,请阅读[查询日志](/user-guide/logs/fulltext-search.md)。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/with.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/with.md
new file mode 100644
index 0000000000..8a77d795cb
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/sql/with.md
@@ -0,0 +1,89 @@
+---
+keywords: [公共表表达式, CTE, SQL 查询, WITH 关键字, SQL 示例]
+description: 介绍了如何使用 `WITH` 关键字定义公共表表达式(CTE),包括基本语法和示例。
+---
+
+# WITH
+
+使用 `WITH` 来指定一个公共表表达式(CTE)。
+
+## 什么是公共表表达式(CTE)?
+
+公共表表达式(CTE)是一个可以在 `SELECT`、`INSERT`、`UPDATE` 或 `DELETE` 语句中引用的临时结果集。CTE 有助于将复杂的查询分解成更易读的部分,并且可以在同一个查询中多次引用。
+
+## CTE 的基本语法
+
+CTE 通常使用 `WITH` 关键字定义。基本语法如下:
+
+```sql
+WITH cte_name [(column1, column2, ...)] AS (
+ QUERY
+)
+SELECT ...
+FROM cte_name;
+```
+
+## 示例
+
+### 非递归 CTE
+
+```sql
+WITH cte AS (SELECT number FROM numbers LIMIT 2) SELECT * FROM cte t1, cte t2;
+```
+
+```sql
++--------+--------+
+| number | number |
++--------+--------+
+| 0 | 0 |
+| 0 | 1 |
+| 1 | 0 |
+| 1 | 1 |
++--------+--------+
+```
+
+如果 CTE 名称后面有一个括起来的名称列表,这些名称就是 CTE 的列名,可以在查询里使用:
+
+```sql
+WITH cte (col1, col2) AS
+(
+ SELECT 1, 2
+ UNION ALL
+ SELECT 3, 4
+)
+SELECT col1, col2 FROM cte;
+```
+
+列表中的名称数量必须与结果集中的列数相同。
+
+```sql
++------+------+
+| col1 | col2 |
++------+------+
+| 1 | 2 |
+| 3 | 4 |
++------+------+
+```
+
+联合查询两个 CTE:
+
+```sql
+WITH
+ cte1 AS (SELECT number AS a FROM NUMBERS LIMIT 2),
+ cte2 AS (SELECT number AS b FROM NUMBERS LIMIT 2)
+SELECT * FROM cte1 JOIN cte2
+ON cte1.a = cte2.b;
+```
+
+```sql
++------+------+
+| a | b |
++------+------+
+| 1 | 1 |
+| 0 | 0 |
++------+------+
+```
+
+### 递归 CTE
+
+递归 CTE 目前尚未实现。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/telemetry.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/telemetry.md
new file mode 100644
index 0000000000..cc6a42bdc8
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/telemetry.md
@@ -0,0 +1,66 @@
+---
+keywords: [指标收集, 数据收集, 隐私保护, 配置管理, 禁用指标, 操作系统, 机器架构, 集群信息]
+description: 介绍 GreptimeDB 的指标收集功能,包括收集的数据类型、如何禁用指标收集等内容。
+---
+
+# 指标收集
+
+为了提升我们的服务,GreptimeDB 会收集一些数据,包括 GreptimeDB 版本、节点数量、使用的操作系统、环境架构以及类似的技术细节等信息。但是我们尊重您的隐私,并确保不收集任何特定于用户的数据,其中包括数据库名称、表名称、查询内容等。
+
+你的体验和隐私是我们的首要任务。你可以根据自己的喜好轻松管理此指标收集,通过配置选择启用或禁用它。
+
+## 将会收集哪些数据
+
+详细的数据信息可能会随着时间的推移而发生变化,这些更改(如果有)将在发行说明中公布。
+
+启用指标收集后,GreptimeDB 将每半小时收集一次以下信息:
+
+- GreptimeDB 版本
+- GreptimeDB 的构建 git 哈希
+- 运行 GreptimeDB 的设备的操作系统(Linux、macOS 等)
+- GreptimeDB 运行的机器架构(x86_64、arm64 等)
+- GreptimeDB 运行模式(独立、分布式)
+- 随机生成的安装 ID
+- GreptimeDB 集群中的 datanode 数量
+- 系统运行时间,非精确数字,仅为 `hours`、`weeks` 等时间范围,并且不带数字
+
+数据示例:
+```json
+{
+ "os": "linux",
+ "version": "0.15.1",
+ "arch": "aarch64",
+ "mode": "Standalone",
+ "git_commit": "00d759e828f5e148ec18141904e20cb1cb7577b0",
+ "nodes": 1,
+ "uuid": "43717682-baa8-41e0-b126-67b797b66606",
+ "uptime": "hours"
+}
+```
+
+## 如何禁用指标收集
+
+从 GreptimeDB v0.4.0 开始,指标收集将默认启用。你可以通过更改配置来禁用它。
+
+### 独立模式
+
+将独立配置文件中的 `enable_telemetry` 设置为 `false`:
+
+```toml
+# Whether to enable greptimedb telemetry, true by default.
+enable_telemetry = false
+```
+
+或者在启动时通过环境变量 `GREPTIMEDB_STANDALONE__ENABLE_TELEMETRY=false` 进行配置。
+
+### 分布式模式
+
+将 metasrv 配置文件中的 `enable_telemetry` 设置为 `false`:
+
+```toml
+# metasrv config file
+# Whether to enable greptimedb telemetry, true by default.
+enable_telemetry = false
+```
+
+或者在启动时设置环境变量 `GREPTIMEDB_METASRV__ENABLE_TELEMETRY=false`。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/time-durations.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/time-durations.md
new file mode 100644
index 0000000000..d9ba4ab119
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/reference/time-durations.md
@@ -0,0 +1,51 @@
+---
+keywords: [时间范围, 时间跨度, 时间单位]
+description: 了解 GreptimeDB 中时间范围对象的表示方法,包括支持的时间单位和示例。
+---
+
+# 时间范围对象
+
+GreptimeDB 使用时间范围对象来表示各种上下文中的时间跨度,
+包括 SQL 查询、配置文件和 API 请求。
+有关如何使用时间范围对象的信息,
+请参阅:
+- [ALTER](/reference/sql/alter.md) 语句中的 TTL 选项和 TWCS compaction 策略的时间窗口设置。
+- [CREATE](/reference/sql/create.md) 语句中的 TTL 选项。
+
+时间范围对象表示为由连接的时间跨度组成的字符串,
+每个时间跨度由一个十进制数字序列和一个单位后缀表示。
+这些后缀不区分大小写,并且支持单数和复数形式。例如,`1hour 12min 5s`。
+
+每个时间跨度由一个整数和一个后缀组成。支持的后缀有:
+
+- `nsec`, `ns`: 纳秒
+- `usec`, `us`: 微秒
+- `msec`, `ms`: 毫秒
+- `seconds`, `second`, `sec`, `s`: 秒
+- `minutes`, `minute`, `min`, `m`: 分钟
+- `hours`, `hour`, `hr`, `h`: 小时
+- `days`, `day`, `d`: 天
+- `weeks`, `week`, `w`: 周
+- `months`, `month`, `M`: 定义为 30.44 天
+- `years`, `year`, `y`: 定义为 365.25 天
+
+在十进制整数后附加上述单位之一,表示等值的秒数。
+例如:
+
+- `1s`: 等效于 1 秒
+- `2m`: 等效于 120 秒
+- `1ms`: 等效于 0.001 秒
+- `2h`: 等效于 7200 秒
+
+以下写法无效:
+
+- `0xABm`: 不支持十六进制数字
+- `1.5h`: 不支持浮点数
+- `+Infd`: 不支持 `±Inf` 或 `NaN` 值
+
+以下是一些有效的时间范围示例:
+
+- `1h`: 一小时
+- `1h30m`, `1h 30m`: 一小时三十分钟
+- `1h30m10s`, `1h 30m 10s`: 一小时三十分钟十秒
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/tutorials/k8s-metrics-monitor.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/tutorials/k8s-metrics-monitor.md
new file mode 100644
index 0000000000..7f61e542fc
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/tutorials/k8s-metrics-monitor.md
@@ -0,0 +1,328 @@
+---
+keywords: [Kubernetes, Prometheus, 监控, 指标, 可观测性, GreptimeDB, Prometheus Operator, Grafana]
+description: 使用 Prometheus 监控 Kubernetes 指标的指南,以 GreptimeDB 作为存储后端,包括架构概览、安装和使用 Grafana 进行可视化。
+---
+
+# 使用 Prometheus 和 GreptimeDB 监控 Kubernetes 指标
+
+本指南演示如何建立一个完整的 Kubernetes 监控解决方案,
+该方案使用 Prometheus 收集指标,
+使用 GreptimeDB 作为长期存储后端。
+
+## 什么是 Kubernetes 监控
+
+Kubernetes 监控指的是从 Kubernetes 集群中收集、分析和处理指标和日志。
+它是检查容器化应用程序和基础设施的健康状况、性能和资源利用率的关键。
+
+Kubernetes 主要监控以下信息:
+
+- **资源指标**:节点、Pod 和容器的 CPU、内存、磁盘和网络使用情况
+- **集群健康**:集群组件如 kube-apiserver、etcd 和 controller-manager 的状态
+- **应用程序指标**:在集群中运行的应用程序指标
+- **事件和日志**:用于故障诊断的 Kubernetes 事件和容器日志
+
+有效的监控可以帮助你:
+- 在问题影响用户之前检测和诊断问题
+- 优化资源利用率并降低成本
+- 基于历史趋势进行容量规划
+- 确保 SLA 合规性
+- 排查性能瓶颈
+
+## 架构概览
+
+监控架构由以下组件组成:
+
+
+
+**组件:**
+
+- **kube-state-metrics**:导出关于 Kubernetes 对象(部署、Pod、服务等)的集群级指标
+- **Node Exporter**:从每个 Kubernetes 节点导出硬件和操作系统级指标
+- **Prometheus Operator**:使用 Kubernetes 自定义资源自动化 Prometheus 部署和配置
+- **GreptimeDB**:Prometheus 指标的长期存储后端,具有高压缩率和查询性能
+- **Grafana**:为存储在 GreptimeDB 中的指标提供仪表板和可视化
+
+## 前提条件
+
+在开始之前,确保你拥有:
+
+- 一个运行中的 Kubernetes 集群(版本 >= 1.18)
+- 已配置 `kubectl` 以访问你的集群
+- 已安装 [Helm](https://helm.sh/docs/intro/install/) v3.0.0 或更高版本
+- 足够的集群资源(至少 2 个 CPU 核心和 4GB 可用内存)
+
+## 安装 GreptimeDB
+
+GreptimeDB 被作为 Prometheus 指标的长期存储后端,
+请参考[部署 GreptimeDB 集群](/user-guide/deployments-administration/deploy-on-kubernetes/deploy-greptimedb-cluster.md)文档了解如何部署。
+
+### 验证 GreptimeDB 的部署
+
+部署 GreptimeDB 后,验证集群是否正常运行中。
+在本指南中,我们假设 GreptimeDB 集群部署在 `greptime-cluster` 命名空间,名称为 `greptimedb`。
+
+```bash
+kubectl -n greptime-cluster get greptimedbclusters.greptime.io greptimedb
+```
+
+```bash
+NAME FRONTEND DATANODE META FLOWNODE PHASE VERSION AGE
+greptimedb 1 2 1 1 Running v0.17.2 33s
+```
+
+检查 Pod 状态:
+
+```bash
+kubectl get pods -n greptime-cluster
+```
+
+```bash
+NAME READY STATUS RESTARTS AGE
+greptimedb-datanode-0 1/1 Running 0 71s
+greptimedb-datanode-1 1/1 Running 0 97s
+greptimedb-flownode-0 1/1 Running 0 64s
+greptimedb-frontend-8bf9f558c-7wdmk 1/1 Running 0 90s
+greptimedb-meta-fc4ddb78b-nv944 1/1 Running 0 87s
+```
+
+### 访问 GreptimeDB
+
+可以将 frontend 服务的端口转发到本地来连接 GreptimeDB。
+GreptimeDB 支持多种协议,其中 MySQL 协议默认使用端口 `4002`。
+
+```bash
+kubectl port-forward -n greptime-cluster svc/greptimedb-frontend 4002:4002
+```
+
+使用 MySQL 客户端连接 GreptimeDB:
+
+```bash
+mysql -h 127.0.0.1 -P 4002
+```
+
+### 存储分区
+
+为了提高查询性能并降低存储成本,
+GreptimeDB 会基于 Prometheus 指标标签自动创建列,并将指标存储在物理表中,默认使用的物理表名为 `greptime_physical_table`。
+在上方我们部署了具有[多个 datanode 节点](#验证-greptimedb-的部署)的 GreptimeDB 集群,
+你可以对表进行分区将数据分布到各个 datanode 节点上,以获得更好的可扩展性和性能。
+
+在此 Kubernetes 监控场景中,
+可以使用 `namespace` 标签作为分区键。
+例如,对于 `kube-public`、`kube-system`、`monitoring`、`default`、`greptime-cluster` 和 `etcd-cluster` 等命名空间,
+你可以基于命名空间的首字母创建分区方案:
+
+```sql
+CREATE TABLE greptime_physical_table (
+ greptime_value DOUBLE NULL,
+ namespace STRING PRIMARY KEY,
+ greptime_timestamp TIMESTAMP TIME INDEX,
+)
+PARTITION ON COLUMNS (namespace) (
+ namespace < 'f',
+ namespace >= 'f' AND namespace < 'g',
+ namespace >= 'g' AND namespace < 'k',
+ namespace >= 'k'
+)
+ENGINE = metric
+WITH (
+ "physical_metric_table" = ""
+);
+```
+
+有关 Prometheus 指标存储和查询性能优化的更多信息,
+请参阅[使用 metric engine 提高效率](/user-guide/ingest-data/for-observability/prometheus.md#通过使用-metric-engine-提高效率)指南。
+
+### GreptimeDB 中的 Prometheus URL
+
+GreptimeDB 在 HTTP 上下文 `/v1/prometheus/` 下提供了[兼容 Prometheus 的 API](/user-guide/query-data/promql.md#prometheus-http-api),
+使其能够与现有的 Prometheus 工作流程无缝集成。
+
+你需要 GreptimeDB 服务地址来配置 Prometheus。
+由于 GreptimeDB 在 Kubernetes 集群内运行,所以使用内部集群地址。
+
+GreptimeDB frontend 服务地址遵循以下模式:
+```
+-frontend..svc.cluster.local:
+```
+
+在本指南中:
+- GreptimeDB 集群名称:`greptimedb`
+- 命名空间:`greptime-cluster`
+- Frontend 端口:`4000`
+
+因此服务地址为:
+
+```bash
+greptimedb-frontend.greptime-cluster.svc.cluster.local:4000
+```
+
+Prometheus 的完整 [Remote Write URL](/user-guide/ingest-data/for-observability/prometheus.md#remote-write-configuration) 为:
+
+```bash
+http://greptimedb-frontend.greptime-cluster.svc.cluster.local:4000/v1/prometheus/write
+```
+
+此 URL 包含:
+- **服务端点**:`greptimedb-frontend.greptime-cluster.svc.cluster.local:4000`
+- **API 路径**:`/v1/prometheus/write`
+
+## 安装 Prometheus
+
+现在 GreptimeDB 正常运行中,
+我们将安装 Prometheus 收集指标并将其发送到 GreptimeDB。
+
+### 添加 Prometheus Community Helm 仓库
+
+```bash
+helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
+helm repo update
+```
+
+### 安装 kube-prometheus-stack
+
+[`kube-prometheus-stack`](https://github.com/prometheus-operator/kube-prometheus) 是一个综合的监控解决方案,包括
+Prometheus、Grafana、kube-state-metrics 和 node-exporter 组件。
+此 stack 自动发现和监控所有 Kubernetes 命名空间,
+收集来自集群组件、节点和工作负载的指标。
+
+在此部署中,
+我们将配置 Prometheus 使用 GreptimeDB 作为 Remote Write 目标长期存储指标数据,
+并配置 Grafana 的默认 Prometheus 数据源使用 GreptimeDB。
+
+创建一个 `kube-prometheus-values.yaml` 文件,包含以下配置:
+
+```yaml
+# 配置 Prometheus 远程写入到 GreptimeDB
+prometheus:
+ prometheusSpec:
+ remoteWrite:
+ - url: http://greptimedb-frontend.greptime-cluster.svc.cluster.local:4000/v1/prometheus/write
+
+# 配置 Grafana 使用 GreptimeDB 作为默认 Prometheus 数据源
+grafana:
+ datasources:
+ datasources.yaml:
+ apiVersion: 1
+ datasources:
+ - name: Prometheus
+ type: prometheus
+ url: http://greptimedb-frontend.greptime-cluster.svc.cluster.local:4000/v1/prometheus
+ access: proxy
+ editable: true
+```
+
+此配置文件为以下用途指定了[GreptimeDB 服务地址](#greptimedb-中的-prometheus-url):
+
+- **Prometheus Remote Write**:将收集的指标发送到 GreptimeDB 进行长期存储
+- **Grafana 数据源**:将 GreptimeDB 配置为仪表板查询的默认 Prometheus 数据源
+
+使用 Helm 和自定义配置文件安装 `kube-prometheus-stack`:
+
+```bash
+helm install kube-prometheus prometheus-community/kube-prometheus-stack \
+ --namespace monitoring \
+ --create-namespace \
+ --values kube-prometheus-values.yaml
+```
+
+### 验证安装
+
+检查所有 Prometheus 组件是否正在运行:
+
+```bash
+kubectl get pods -n monitoring
+```
+
+```bash
+NAME READY STATUS RESTARTS AGE
+alertmanager-kube-prometheus-kube-prome-alertmanager-0 2/2 Running 0 60s
+kube-prometheus-grafana-78ccf96696-sghx4 3/3 Running 0 78s
+kube-prometheus-kube-prome-operator-775fdbfd75-w88n7 1/1 Running 0 78s
+kube-prometheus-kube-state-metrics-5bd5747f46-d2sxs 1/1 Running 0 78s
+kube-prometheus-prometheus-node-exporter-ts9nn 1/1 Running 0 78s
+prometheus-kube-prometheus-kube-prome-prometheus-0 2/2 Running 0 60s
+```
+
+### 验证监控状态
+
+使用 [MySQL protocol](#访问-greptimedb) 查询 GreptimeDB,验证 Prometheus 指标是否已写入。
+
+```sql
+SHOW TABLES;
+```
+
+你应该能看到为各种 Prometheus 指标创建的表名。
+
+```sql
++---------------------------------------------------------------------------------+
+| Tables |
++---------------------------------------------------------------------------------+
+| :node_memory_MemAvailable_bytes:sum |
+| ALERTS |
+| ALERTS_FOR_STATE |
+| aggregator_discovery_aggregation_count_total |
+| aggregator_unavailable_apiservice |
+| alertmanager_alerts |
+| alertmanager_alerts_invalid_total |
+| alertmanager_alerts_received_total |
+| alertmanager_build_info |
+| ...... |
++---------------------------------------------------------------------------------+
+1553 rows in set (0.18 sec)
+```
+
+## 使用 Grafana 进行可视化
+
+Grafana 包含在 kube-prometheus-stack 中,
+并预配置了 Prometheus 作为数据源的仪表盘。
+
+### 访问 Grafana
+
+将 Grafana 服务的端口转发到本地以访问 Web 界面:
+
+```bash
+kubectl port-forward -n monitoring svc/kube-prometheus-grafana 3000:80
+```
+
+### 获取管理员凭证
+
+使用 kubectl 检索登录使用的 admin 密码:
+
+```bash
+kubectl get secret --namespace monitoring kube-prometheus-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
+```
+
+### 登录 Grafana
+
+1. 打开浏览器并导航到 [http://localhost:3000](http://localhost:3000)
+2. 使用以下凭证登录:
+ - **用户名**:`admin`
+ - **密码**:从上一步检索到的密码
+
+### 查看预配置的仪表板
+
+登录后,导航到**仪表板**以探索预配置的 Kubernetes 监控仪表板:
+
+- **Kubernetes / Compute Resources / Cluster**:集群范围的资源利用率概览
+- **Kubernetes / Compute Resources / Namespace (Pods)**:按命名空间分解的资源使用情况
+- **Kubernetes / Compute Resources / Node (Pods)**:节点级资源监控
+- **Node Exporter / Nodes**:详细的节点硬件和操作系统指标
+
+
+
+## 总结
+
+你现在部署了完整的 Kubernetes 监控解决方案,
+使用 Prometheus 收集指标,使用 GreptimeDB 提供高效的长期存储。
+该解决方案使你能够:
+
+- 实时监控集群和应用程序健康状况
+- 存储指标以进行历史分析和容量规划
+- 使用 Grafana 创建丰富的可视化和仪表板
+- 使用 PromQL 和 SQL 查询指标
+
+有关 GreptimeDB 和 Prometheus 集成的更多信息,请参阅:
+
+- [Prometheus 集成](/user-guide/ingest-data/for-observability/prometheus.md)
+- [在 GreptimeDB 中查询数据](/user-guide/query-data/overview.md)
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/architecture.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/architecture.md
new file mode 100644
index 0000000000..d3df2a731a
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/architecture.md
@@ -0,0 +1,32 @@
+---
+keywords: [基础架构, Metasrv, Frontend, Datanodes, 集群, 路由, 监测, 伸缩扩容, 数据存储, 读写请求]
+description: 介绍 GreptimeDB 的基础架构,包括 Metasrv、Frontend 和 Datanodes 三个主要组成部分及其功能。
+---
+
+# 基础架构
+
+
+
+## 组件
+
+为了形成一个强大的数据库集群,并控制其复杂性,GreptimeDB 架构中有三个主要组成部分:Metasrv,Frontend 和 Datanode。
+
+- [**Metasrv**(元数据服务器)](/contributor-guide/metasrv/overview.md) 控制着 GreptimeDB 集群的核心命令。在典型的部署结构中,至少需要三个节点才能建立一个可靠的 Metasrv 小集群。Metasrv 管理着数据库和表的信息,包括数据如何在集群中传递、请求的转发地址等。它还负责监测 `Datanode` 的可用性和性能,以确保路由表的最新状态和有效性。
+
+- [**Frontend**(前端服务)](/contributor-guide/frontend/overview.md) 作为无状态的组件,可以根据需求进行伸缩扩容。它负责接收请求并鉴权,将多种协议转化为 GreptimeDB 集群的内部 gRPC 协议,并根据 Metasrv 中的表的分片路由信息将请求转发到相应的 Datanode。
+
+- [**Datanode**(数据节点)](/contributor-guide/datanode/overview.md) 负责 GreptimeDB 集群中的表的 `region` 数据存储,接收并执行从 Frontend 发来的读写请求,处理查询和写入,并返回对应的结果。
+
+通过灵活的架构设计,以上三个组件既可以是集群分布式部署,也可以合并打包在一个二进制包内,支持本地部署下的单机模式,我们称之为 standalone 模式。
+
+## 组件交互
+
+
+
+- 你可以通过多种协议与数据库交互,例如使用 InfluxDB line Protocol 插入数据,然后使用 SQL 或 PromQL 查询数据。Frontend 是客户端连接和操作数据库的组件,因此在其后面隐藏了 Datanode 和 Metasrv。
+- 假设客户端向 Frontend 实例发送了 HTTP 请求来插入数据。当 Frontend 接收到请求时,它会使用相应的协议解析器解析请求正文,并从 Metasrv 的 catalog 中找到要写入的表。
+- Frontend 依靠推拉结合的策略缓存来自 Metasrv 的元数据,因此它知道应将请求发送到哪个 Datanode,或者更准确地说,应该发送到哪个 Region。如果请求的内容需要存储在不同的 Region 中,则请求可能会被拆分并发送到多个 Region。
+- 当 Datanode 接收到请求时,它将数据写入 Region 中,然后将响应发送回 Frontend。写入 Region 也意味着将数据写入底层的存储引擎中,该引擎最终将数据放置在持久化存储中。
+- 当 Frontend 从目标 Datanode 接收到所有响应时,就会将结果返回给用户。
+
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/data-model.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/data-model.md
new file mode 100644
index 0000000000..c4eabd7a14
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/data-model.md
@@ -0,0 +1,89 @@
+---
+keywords: [数据模型, 表结构, 列类型, 设计考虑, 时序表, Tag 列, Timestamp 列, Field 列, Metric 表, Log 表,链路追踪,GreptimeDB 数据模型]
+description: 介绍 GreptimeDB 的数据模型,包括表的结构、列类型和设计考虑,适用于指标、日志和链路追踪数据。
+---
+
+# 数据模型
+
+## 模型
+
+GreptimeDB 使用时序表来进行数据的组织、压缩和过期管理。数据模型主要基于关系型数据库中的表模型,同时考虑到了指标(metrics)、日志(logs)及链路追踪(traces)数据的特点。
+
+GreptimeDB 中的所有数据都被组织成具有名称的表,每个表中的数据项由三种语义类型的列组成:`Tag`、`Timestamp` 和 `Field`。
+
+- 表名通常与指标、日志的名称相同。
+- `Tag` 列唯一标识时间序列。具有相同 `Tag` 值的行属于同一个时间序列。有些 TSDB 也可能称它们为 label。
+- `Timestamp` 是指标、日志和链路追踪数据库的基础。它表示数据生成的日期和时间。一个表只能有一个具有 `Timestamp` 语义类型的列,也称为时间索引(`Time Index`)列。
+- 其他列是 `Field` 列。字段包含收集的数据指标或日志内容。这些字段通常是数值或字符串,但也可能是其他类型的数据,例如地理位置或时间戳。
+
+表按时间序列对行进行组织,并按 `Timestamp` 对同一时间序列的行进行排序。表还可以根据应用的需求对具有相同 `Tag` 和 `Timestamp` 值的行进行去重。GreptimeDB 按时间序列存储和处理数据。选择正确的表结构对于高效的数据存储和查询至关重要;请参阅[表设计指南](/user-guide/deployments-administration/performance-tuning/design-table.md)了解更多详情。
+
+### 指标
+
+假设我们有一个名为 `system_metrics` 的表,用于监控数据中心中机器的资源使用情况:
+
+```sql
+CREATE TABLE IF NOT EXISTS system_metrics (
+ host STRING,
+ idc STRING,
+ cpu_util DOUBLE,
+ memory_util DOUBLE,
+ disk_util DOUBLE,
+ ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY(host, idc),
+ TIME INDEX(ts)
+);
+```
+
+该表的数据模型如下:
+
+
+
+这与大家熟悉的表模型非常相似。不同之处在于 `TIME INDEX` 约束,它用于将 `ts` 列指定为此表的时间索引列。
+
+- 表名为 `system_metrics`。
+- `PRIMARY KEY` 约束指定了表的 `Tag` 列。`host` 列表示收集的独立机器的主机名,`idc` 列显示机器所在的数据中心。
+- `Timestamp` 列 `ts` 表示收集数据的时间。
+- `Field` 列中的 `cpu_util`、`memory_util`、`disk_util` 列分别表示机器的 CPU 利用率、内存利用率和磁盘利用率。这些列包含实际的数据。
+- 表按 `host`、`idc`、`ts` 对行进行排序和去重。因此,查询 `select count(*) from system_metrics` 需要扫描所有的行做统计。
+
+### 日志
+
+另一个例子是创建一个用于日志(如 Server 访问日志)的表:
+
+```sql
+CREATE TABLE access_logs (
+ access_time TIMESTAMP TIME INDEX,
+ remote_addr STRING,
+ http_status STRING,
+ http_method STRING,
+ http_refer STRING,
+ user_agent STRING,
+ request STRING,
+) with ('append_mode'='true');
+```
+
+- 时间索引列为 `access_time`。
+- 没有 tag 列。
+- `http_status`、`http_method`、`remote_addr`、`http_refer`、`user_agent` 和 `request` 是字段列。
+- 表按 `access_time` 对行进行排序。
+- 这个表是一个用于存储不需要去重的日志的[append-only 表](/reference/sql/create.md#创建-append-only-表)。
+- 查询 append-only 表一般会更快。例如,`select count(*) from access_logs` 可以直接使用统计信息作为结果而不需要考虑重复。
+
+要了解如何指定 `Tag`、`Timestamp` 和 `Field` 列,请参见[表管理](/user-guide/deployments-administration/manage-data/basic-table-operations.md#创建表)和 [CREATE 语句](/reference/sql/create.md)。
+
+### 链路追踪
+
+GreptimeDB 支持通过 OTLP/HTTP 协议直接写入 OpenTelemetry 追踪数据,详细信息请参考 [OLTP 追踪数据模型](/user-guide/ingest-data/for-observability/opentelemetry.md#数据模型-2)。
+
+## 设计考虑
+
+GreptimeDB 基于表进行设计,原因如下:
+
+- 表格模型易于学习,具有广泛的用户群体,我们只需引入时间索引的概念即可实现对指标、日志和链路跟踪的统一处理。
+- Schema 是描述数据特征的元数据,对于用户来说更方便管理和维护。
+- Schema 通过其类型、长度等信息带来了巨大的优化存储和计算的好处,我们可以进行有针对性的优化。
+- 当我们有了表格 Schema 后,自然而然地引入了 SQL,并用它来处理各种表之间的关联分析和聚合查询,为用户抵消了学习和使用成本。
+- 比起 OpenTSDB 和 Prometheus 采用的单值模型,GreptimeDB 使用多值模型使其中一行数据可以具有多列数据。多值模型面向数据源建模,一个指标或者事件可以使用多个 field 表示值。多值模型的优势在于它可以一次性向数据库写入或读取多个值,从而减少传输流量并简化查询。相比之下,单值模型则需要将数据拆分成多个记录。阅读[博客](https://greptime.com/blogs/2024-05-09-prometheus)以获取更多详情。
+
+GreptimeDB 使用 SQL 管理表 Schema。有关更多信息,请参见[表管理](/user-guide/deployments-administration/manage-data/basic-table-operations.md)。但是,我们对 Schema 的定义并不是强制性的,而是倾向于 **Schemaless** 的方式,类似于 MongoDB。有关更多详细信息,请参见[自动生成表结构](../ingest-data/overview.md#自动生成表结构)。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/features-that-you-concern.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/features-that-you-concern.md
new file mode 100644
index 0000000000..07fe7a0565
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/features-that-you-concern.md
@@ -0,0 +1,80 @@
+---
+keywords: [关键特性, 日志处理, 链路追踪,数据更新, 数据删除, TTL 策略, 压缩率, 高基数问题, 持续聚合, 云存储, 性能对比, 灾难恢复, 地理空间索引, JSON 数据,时序数据库特性,可观测性数据库特性]
+description: 介绍 GreptimeDB 的关键特性,并解答用户关心的常见问题,如日志处理、数据更新和删除、TTL 策略等。
+---
+
+# 关键特性
+
+## GreptimeDB 支持处理日志或事件吗?
+
+是的。从 v0.9.0 版本开始,GreptimeDB 将指标、日志和链路追踪视为带有时间戳的上下文“宽”事件(Wide Events),从而统一了指标、日志和链路追踪的处理。它支持使用 SQL、PromQL 和通过连续聚合进行流式处理来分析指标、日志和追踪。
+
+请阅读[日志处理使用指南](/user-guide/logs/overview.md)。
+
+## GreptimeDB 支持更新数据吗?
+
+支持,请参考[更新数据](/user-guide/manage-data/overview.md#更新数据)获取更多信息。
+
+## GreptimeDB 支持删除数据吗?
+
+支持,请参考[删除数据](/user-guide/ingest-data/overview.md#删除数据)获取更多信息。
+
+## 我可以为不同的表或指标设置 TTL 或保留策略吗?
+
+当然。请参考[使用 TTL 策略保留数据](/user-guide/manage-data/overview.md#使用-ttl-策略保留数据)。
+
+## GreptimeDB 的压缩率是多少?
+
+答案是视情况而定。
+
+GreptimeDB 使用列式存储布局,并通过最佳算法压缩指标、日志等可观测数据,并且它会根据列数据的统计和分布选择最合适的压缩算法。GreptimeDB 还将提供可以更紧凑地压缩数据但会失去精度的 Rollup 功能。
+
+因此,GreptimeDB 的数据压缩率可能在 2 倍到几百倍之间,这取决于你的数据特性以及你是否可以接受精度损失。
+
+## GreptimeDB 如何解决高基数问题?
+
+GreptimeDB 通过以下方式解决这个问题:
+
+- **分片**:它将数据和索引分布在不同的 Region 服务器之间。阅读 GreptimeDB 的[架构](./architecture.md)。
+- **智能索引**:它不强制为每个标签创建倒排索引,而是根据标签列的特性和负载类型选择合适的索引类型并自动构建,更多信息可以参考这篇[博客](https://greptime.com/blogs/2022-12-21-storage-engine-design#smart-indexing)。
+- **MPP**: 除了索引之外,查询引擎还会利用向量化执行和分布式并行执行等技术来加速查询。
+
+## GreptimeDB 支持持续聚合或降采样吗?
+
+从 0.8 版本开始,GreptimeDB 添加了一个名为 `Flow` 的新功能,用于持续聚合和降采样等场景。请阅读[用户指南](/user-guide/flow-computation/overview.md)获取更多信息。
+
+## 我可以在云的对象存储中存储数据吗?
+
+可以,GreptimeDB 的数据访问层基于 [OpenDAL](https://github.com/apache/incubator-opendal),它支持大多数类型的对象存储服务。
+数据可以存储在如 AWS S3 或 Azure Blob Storage 等性价比高的云存储服务中,请参考这里的存储[配置指南](/user-guide/deployments-administration/configuration.md#storage-options)。
+
+GreptimeDB 还提供一个完全托管的云服务 [GreptimeCloud](https://greptime.cn/product/cloud) 来帮助您管理云中的数据。
+
+## GreptimeDB 对比其他存储或时序数据库的性能如何?
+
+GreptimeDB 在 [ClickHouse 的 JSONBench 测试中 Cold Run 斩获第一](https://greptime.cn/blogs/2025-03-18-json-benchmark-greptimedb)!
+
+请阅读以下性能报告:
+
+* [GreptimeDB vs. InfluxDB](https://greptime.cn/blogs/2024-08-08-report)
+* [GreptimeDB vs. Grafana Mimir](https://greptime.cn/blogs/2024-08-01-grafana)
+* [GreptimeDB vs. ClickHouse vs. ElasticSearch](https://greptime.cn/blogs/2025-03-07-greptimedb-log-benchmark)
+* [GreptimeDB vs. SQLite](https://greptime.cn/blogs/2024-08-30-sqlite)
+
+## GreptimeDB 有灾难恢复解决方案吗?
+
+有的,请参阅[灾难恢复文档](/user-guide/deployments-administration/disaster-recovery/overview.md)。
+
+## GreptimeDB 有地理空间索引吗?
+
+我们提供 [内置函数](/reference/sql/functions/geo.md) 支持 Geohash, H3 and S2 索
+引。
+
+
+## GreptimeDB 支持 JSON 数据吗?
+
+我们提供 [内置函数](/reference/sql/functions/overview.md#json-functions) 支持访问 JSON 数据类型。
+
+## 更多问题?
+
+有关 GreptimeDB 的更多常见问题解答,包括部署选项、迁移指南、性能对比和最佳实践等,请访问我们的[常见问题页面](/faq-and-others/faq.md)。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/key-concepts.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/key-concepts.md
new file mode 100644
index 0000000000..82dbd5a201
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/key-concepts.md
@@ -0,0 +1,55 @@
+---
+keywords: [核心概念, 数据库, 时序表, 数据类型, 索引, 视图, Flow]
+description: 介绍 GreptimeDB 的核心概念,包括数据库、时序表、数据类型、索引、视图和 Flow 等。
+---
+
+# 核心概念
+
+为了理解 GreptimeDB 如何管理和服务其数据,你需要了解这些 GreptimeDB 的构建模块。
+
+## 数据库
+
+类似于关系型数据库中的数据库,数据库是数据容器的最小单元,数据可以在这个单元中被管理和计算。
+你可以利用数据库来实现数据隔离,形成类似租户的效果。
+
+## Time-Series Table
+
+GreptimeDB 将时序表设计为数据存储的基本单位。
+其类似于传统关系型数据库中的表,但需要一个时间戳列(我们称之为 `TIME INDEX`—— **时间索引**),并且该表持有一组共享一个共同 schema 的数据。
+
+表是行和列的集合:
+
+* 行:表中水平方向的值的集合。
+* 列:表中垂直方向的值的集合,GreptimeDB 将列分为时间索引 Time Index、标签 Tag 和字段 Field。
+
+你使用 SQL `CREATE TABLE` 创建表,或者使用[自动生成表结构](/user-guide/ingest-data/overview.md#自动生成表结构)功能通过输入的数据结构自动创建表。在分布式部署中,一个表可以被分割成多个分区,其位于不同的数据节点上。
+
+关于时序表的数据模型的更多信息,请参考[数据模型](./data-model.md)。
+
+## Table Engine
+
+表引擎(也称为存储引擎)决定了数据在数据库中的存储、管理和处理方式。每种引擎提供不同的功能特性、性能表现和权衡取舍。GreptimeDB 提供了 `mito` 和 `metric` 引擎,有关更多信息,请参阅[表引擎](/reference/about-greptimedb-engines.md)。
+
+## Table Region
+
+分布式表的每个分区被称为一个区域。一个区域可能包含一个连续数据的序列,这取决于分区算法,区域信息由 Metasrv 管理。这对发送写入和查询的用户来说是完全透明的。
+
+## 数据类型
+
+GreptimeDB 中的数据是强类型的,当创建表时,Auto-schema 功能提供了一些灵活性。当表被创建后,同一列的数据必须共享共同的数据类型。
+
+在[数据类型](/reference/sql/data-types.md)中找到所有支持的数据类型。
+
+## 索引
+
+索引是一种性能调优方法,可以加快数据的更快地检索速度。
+GreptimeDB 提供多种类型的[索引](/user-guide/manage-data/data-index.md)来加速查询。
+
+## View
+
+从 SQL 查询结果集派生的虚拟表。它像真实表一样包含行和列,但它本身不存储任何数据。
+每次查询视图时,都会从底层表中动态检索视图中显示的数据。
+
+## Flow
+
+GreptimeDB 中的 Flow 是指[持续聚合](/user-guide/flow-computation/overview.md)过程,该过程根据传入数据持续更新和聚合数据。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/overview.md
new file mode 100644
index 0000000000..a79689f752
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/overview.md
@@ -0,0 +1,23 @@
+---
+keywords: [特点, 优势, 数据模型, 基础架构, 存储位置, 核心概念, 关键特性]
+description: 概述 GreptimeDB 的特点和优势,并提供相关文档链接,帮助用户了解 GreptimeDB 的设计和功能。
+---
+
+# 概念
+
+- [Why GreptimeDB](./why-greptimedb.md):介绍了 GreptimeDB 的特点和优势,包括其对指标、日志和链路追踪数据的统一处理,云原生和灵活架构允许在各种环境中部署,从嵌入式到云平台等。GreptimeDB 还具有成本优势、高性能和开发者友好等特点。
+- [数据模型](./data-model.md):介绍了 GreptimeDB 的数据模型,包括表的模式、索引列等。
+- [基础架构](./architecture.md):获取 GreptimeDB 的云原生架构。
+- [存储位置](./storage-location.md):介绍了 GreptimeDB 的存储位置,包括本地磁盘、HDFS、AWS S3 和阿里云 OSS 等云对象存储。
+- [核心概念](./key-concepts.md):介绍了 GreptimeDB 的核心概念,包括表、时间索引约束、表 Region 和数据类型等。
+- [关键特性](./features-that-you-concern.md): 介绍了 TSDB 用户较为关心的指标(metrics)、日志(logs)和事件(events)数据库的特性。
+- [常见问题](/faq-and-others/faq.md): 全面的 FAQ,涵盖关于 GreptimeDB 能力、部署和使用的常见问题。
+
+## 阅读更多
+
+从我们的博客文章中获取 GreptimeDB 路线图和架构设计:
+
+- [专为实时而生 — GreptimeDB 现已在 GitHub 正式开源](https://greptime.com/blogs/2022-11-15-this-time-for-real)
+- [事件管理革命:监控系统中统一日志和指标](https://greptime.com/blogs/2024-06-25-logs-and-metrics)
+- [GreptimeDB 架构内幕:基于分布式、云原生原则设计,实现时序处理及分析融合](https://greptime.com/blogs/2022-12-08-GreptimeDB-internal-design)
+- [GreptimeDB 存储引擎设计内幕:针对时序场景,检索压缩更智能](https://greptime.com/blogs/2022-12-21-storage-engine-design)
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/storage-location.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/storage-location.md
new file mode 100644
index 0000000000..e116039f80
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/storage-location.md
@@ -0,0 +1,47 @@
+---
+keywords: [存储位置, 本地文件系统, 云存储, AWS S3, Azure Blob Storage, 阿里云 OSS, 存储文件结构]
+description: 介绍 GreptimeDB 支持的存储位置,包括本地文件系统和各种云存储服务,以及存储文件结构。
+---
+
+# 存储位置
+
+GreptimeDB 支持将数据存储在本地文件系统、AWS S3 及其兼容服务(包括 minio、digitalocean space、腾讯云对象存储 (COS)、百度云对象存储 (BOS) 等)、Azure Blob Storage 和阿里云 OSS 中。
+
+## 本地文件结构
+
+GreptimeDB 的存储文件结构包括以下内容:
+
+```cmd
+├── metadata
+ ├── raftlog
+ ├── rewrite
+ └── LOCK
+├── data
+│ ├── greptime
+│ └── public
+├── cache
+├── logs
+├── index_intermediate
+│ └── staging
+└── wal
+ ├── raftlog
+ ├── rewrite
+ └── LOCK
+```
+
+- `metadata`: 内部元数据目录,保存 catalog、数据库以及表的元信息、procedure 状态等内部状态。在集群模式下,此目录不存在,因为所有这些状态(包括区域路由信息)都保存在 `Metasrv` 中。
+- `data`: 存储 GreptimeDB 的实际的时间序列数据和索引文件。如果要自定义此路径,请参阅 [存储选项](/user-guide/deployments-administration/configuration.md#storage-options)。该目录按照 catalog 和 schema 的两级结构组织。
+- `cache`: 内部的数据缓存目录,比如对象存储的本地缓存等。
+- `logs`: GreptimeDB 日志文件目录。
+- `wal`: 预写日志文件目录。
+- `index_intermediate`: 索引构建和查询相关的的临时中间数据目录。
+
+## 云存储
+
+文件结构中的 `data` 目录可以存储在云存储中。请参考[存储选项](/user-guide/deployments-administration/configuration.md#storage-options)了解更多细节。
+
+请注意,仅将 `data` 目录存储在对象存储中不足以确保数据可靠性和灾难恢复,`wal` 和 `metadata` 也需要考虑灾难恢复,更详细地请参阅[灾难恢复文档](/user-guide/deployments-administration/disaster-recovery/overview.md)。
+
+## 多存储引擎支持
+
+GreptimeDB 的另一个强大功能是可以为每张表单独选择存储引擎。例如,您可以将一些表存储在本地磁盘上,将另一些表存储在 Amazon S3 或 Google Cloud Storage 中,请参考 [create table](/reference/sql/create.md#create-table)。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/why-greptimedb.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/why-greptimedb.md
new file mode 100644
index 0000000000..e2896e7b06
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/concepts/why-greptimedb.md
@@ -0,0 +1,99 @@
+---
+keywords: [时序数据库, 可观测性数据库,云原生, 分布式, 高性能, 用户友好, 存算分离, PromQL, SQL, Python,Rust 数据库]
+description: 介绍 GreptimeDB 的特点、设计原则和优势,包括统一指标、日志和链路追踪,云原生架构,高性能和用户友好等。
+---
+
+# 为什么选择 GreptimeDB
+
+GreptimeDB 是一款为云原生环境设计的开源可观测性数据库。我们的核心开发者在构建可观测性平台方面拥有丰富的经验,GreptimeDB 在以下关键领域体现了他们的最佳实践:
+
+## 统一处理可观测数据
+
+GreptimeDB 通过以下方式统一处理指标、日志和链路追踪:
+- 一致的[数据模型](./data-model.md),将所有可观测数据视为带有上下文的时间戳“宽”事件(Wide Events)
+- 原生支持 [SQL](/user-guide/query-data/sql.md) 和 [PromQL](/user-guide/query-data/promql.md) 查询
+- 内置流处理功能 ([Flow](/user-guide/flow-computation/overview.md)),用于实时聚合和分析等
+- 跨不同类型的可观测数据进行无缝关联分析(阅读 [SQL 示例](/getting-started/quick-start.md#指标和日志的关联查询) 了解详细信息)
+
+它用高性能的单一解决方案取代了复杂的传统数据栈。
+
+
+
+## 基于对象存储的成本优势
+
+GreptimeDB 采用云对象存储(如 AWS S3、阿里云 OSS 和 Azure Blob Storage 等)作为存储层,与传统存储方案相比显著降低了成本。通过优化的列式存储和先进的压缩算法,实现了高达 50 倍的成本效率,而按需付费模式的 [GreptimeCloud](https://greptime.com/product/cloud) 确保您只需为实际使用的资源付费。
+
+## 高性能
+
+在性能优化方面,GreptimeDB 运用了多种技术,如 LSM Tree、数据分片和灵活的 WAL 选项(本地磁盘或 Kafka 等分布式服务),以处理大规模可观测数据的写入。
+
+GreptimeDB 使用纯 Rust 编写,具有卓越的性能和可靠性。强大而快速的查询引擎由向量化执行和分布式并行处理(感谢 [Apache DataFusion](https://datafusion.apache.org/))驱动,并结合了丰富的[索引选项](/user-guide/manage-data/data-index.md),例如倒排索引、跳数索引和全文索引等。GreptimeDB将智能索引和大规模并行处理 (MPP) 结合在一起,以提升查询过程中数据剪枝和过滤的效率。
+
+GreptimeDB 在[ClickHouse 的 JSONBench 测试中 Cold Run 斩获第一!](https://greptime.cn/blogs/2025-03-18-json-benchmark-greptimedb),更多报告请参阅[性能测试报告](https://greptime.cn/blogs/2024-09-09-report-summary)。
+
+## 基于 Kubernetes 的弹性扩展
+
+GreptimeDB 从底层就是为 Kubernetes 设计的,基于先进的存储计算分离的架构,实现真正的弹性扩展:
+
+- 存储和计算资源可独立扩展
+- 通过 Kubernetes 实现无限水平扩展
+- 不同工作负载(数据写入、查询、压缩、索引)之间的资源隔离
+- 自动故障转移和高可用性
+
+。
+
+## 灵活架构:从边缘到云端
+
+
+
+GreptimeDB的模块化架构允许不同的组件根据需要独立运行或协同运行。其灵活的设计支持各种部署场景,从边缘设备到云环境,同时仍然使用一致的API进行操作。 例如:
+- Frontend、Datanode 和 Metasrv 可以合并到一个独立的二进制文件中
+- 可以为每个表启用或禁用 WAL 或索引等组件
+
+这种灵活性确保了 GreptimeDB 能够满足从边缘到云的解决方案的部署要求,了解[边云一体化解决方案](https://greptime.cn/carcloud)。
+
+从嵌入式、单机部署到云原生集群,GreptimeDB 可以轻松适应各种环境。
+
+## 易于迁移和使用
+
+### 易于部署和维护
+
+GreptimeDB 通过以下工具简化了部署和维护:
+- [K8s Operator](https://github.com/GreptimeTeam/greptimedb-operator)
+- [命令行工具](https://github.com/GreptimeTeam/gtctl)
+- 内嵌[仪表盘](https://github.com/GreptimeTeam/dashboard)
+
+为了获得更简便的体验,请查看完全托管的 [GreptimeCloud](https://greptime.cn/product/cloud)。
+
+### 易于集成
+
+GreptimeDB 支持多种数据摄入协议,从而实现与现有可观测性技术栈的无缝集成:
+- **数据库协议**:MySQL、PostgreSQL
+- **时序数据协议**:InfluxDB、OpenTSDB、Prometheus RemoteStorage
+- **可观测数据协议**:OpenTelemetry、Loki、ElasticSearch
+- **高性能 gRPC 协议及客户端 SDK**(Java、Go、Erlang 等)
+
+在数据查询方面,GreptimeDB 提供:
+- **SQL**:用于实时查询、复杂分析和数据库管理
+- **PromQL**:原生支持实时指标查询和 Grafana 集成
+
+GreptimeDB 与您的现有可观测性技术栈无缝集成,同时保持高性能和灵活性。
+
+
+
+### 简单的数据模型与自动创建表
+
+GreptimeDB 引入了一种新的数据模型,该模型结合了时序和关系模型:
+- 数据以表格(Table)形式表示,包含行(Row)和列(Column)
+- 指标、日志和链路追踪信息映射到列,时间索引(Time Index)用于时间戳列
+- Schema 是动态创建的,并且在数据写入时会自动添加新列
+
+
+
+然而,我们对 schema 的定义不是强制性的,而是更倾向于 MongoDB 等数据库的无 schema 方法。
+表将在数据写入时动态自动创建,并自动添加新出现的列(Tag 和 Field)。更详细的说明,请阅读[数据模型](./data-model.md)。
+
+要了解更多关于我们的方法和架构,请查看博客文章:
+* [《什么是可观测性 2.0?什么是可观测性 2.0 原生数据库?》](https://greptime.cn/blogs/2025-04-24-observability2.0-greptimedb.html)
+* [《专为实时而生》](https://greptime.cn/blogs/2022-11-16-github)
+* [《GreptimeDB 统一存储架构》](https://greptime.cn/blogs/2024-12-24-observability)
\ No newline at end of file
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/authentication/overview.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/authentication/overview.md
new file mode 100644
index 0000000000..72214650bf
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/authentication/overview.md
@@ -0,0 +1,13 @@
+---
+keywords: [身份验证, 用户 Provider, 静态用户, LDAP 用户, 连接数据库]
+description: GreptimeDB 的身份验证概述,介绍了多种用户 Provider 的实现,包括静态用户 Provider 和 LDAP 用户 Provider。
+---
+
+# 鉴权
+
+当客户端尝试连接到数据库时,将会进行身份验证。GreptimeDB 通过“user provider”进行身份验证。GreptimeDB 中有多种 user
+provider 实现:
+
+- [Static User Provider](./static.md):一个简单的内置 user provider 实现,从静态文件中查找用户。
+- [LDAP User Provider](/enterprise/deployments-administration/authentication.md):**企业版功能**,使用外部 LDAP 服务进行用户身份验证。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/authentication/static.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/authentication/static.md
new file mode 100644
index 0000000000..9427d1d85e
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/authentication/static.md
@@ -0,0 +1,90 @@
+---
+keywords: [静态用户配置, 身份验证, 用户帐户, 配置文件, 固定帐户]
+description: 介绍了 GreptimeDB 的静态用户配置,允许通过配置文件设置固定帐户进行身份验证。
+---
+
+# Static User Provider
+
+GreptimeDB 提供了简单的内置身份验证机制,允许你配置一个固定的帐户以方便使用,或者配置一个帐户文件以支持多个用户帐户。通过传入文件,GreptimeDB 会加载其中的所有用户。
+
+## 单机模式
+
+GreptimeDB 从配置文件中读取用户配置,每行定义一个用户及其密码和可选的权限模式。
+
+### 基本配置
+
+基本格式使用 `=` 作为用户名和密码之间的分隔符:
+
+```
+greptime_user=greptime_pwd
+alice=aaa
+bob=bbb
+```
+
+以这种方式配置的用户默认拥有完整的读写权限。
+
+### 权限模式
+
+你可以选择性地指定权限模式来控制用户的访问级别。格式为:
+
+```
+username:permission_mode=password
+```
+
+可用的权限模式:
+- `rw` 或 `readwrite` - 完整的读写权限(未指定时的默认值)
+- `ro` 或 `readonly` - 只读权限
+- `wo` 或 `writeonly` - 只写权限
+
+混合权限模式的配置示例:
+
+```
+admin=admin_pwd
+alice:readonly=aaa
+bob:writeonly=bbb
+viewer:ro=viewer_pwd
+editor:rw=editor_pwd
+```
+
+在此配置中:
+- `admin` 拥有完整的读写权限(默认)
+- `alice` 拥有只读权限
+- `bob` 拥有只写权限
+- `viewer` 拥有只读权限
+- `editor` 明确设置了读写权限
+
+### 启动服务器
+
+在启动服务端时,需添加 `--user-provider` 参数,并将其设置为 `static_user_provider:file:`(请将 `` 替换为你的用户配置文件路径):
+
+```shell
+./greptime standalone start --user-provider=static_user_provider:file:
+```
+
+用户及其权限将被载入 GreptimeDB 的内存。使用这些用户账户连接至 GreptimeDB 时,系统会严格执行相应的访问权限控制。
+
+:::tip 注意
+`static_user_provider:file` 模式下,文件的内容只会在启动时被加载到数据库中,在数据库运行时修改或追加的内容不会生效。
+:::
+
+### 动态文件重载
+
+如果你需要在不重启服务器的情况下更新用户凭证,可以使用 `watch_file_user_provider` 替代 `static_user_provider:file`。该 provider 会监控凭证文件的变化并自动重新加载:
+
+```shell
+./greptime standalone start --user-provider=watch_file_user_provider:
+```
+
+`watch_file_user_provider`的特点:
+- 使用与 `static_user_provider:file` 相同的文件格式
+- 自动检测文件修改并重新加载凭证
+- 允许在不重启服务器的情况下添加、删除或修改用户
+- 如果文件临时不可用或无效,会保持上次有效的配置
+
+这在需要动态管理用户访问的生产环境中特别有用。
+
+## Kubernetes 集群
+
+你可以在 `values.yaml` 文件中配置鉴权用户。
+更多详情,请参考 [Helm Chart 配置](/user-guide/deployments-administration/deploy-on-kubernetes/common-helm-chart-configurations.md#鉴权配置)。
+
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/capacity-plan.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/capacity-plan.md
new file mode 100644
index 0000000000..c1fc63891a
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/capacity-plan.md
@@ -0,0 +1,71 @@
+---
+keywords: [容量规划, CPU 需求, 内存需求, 存储需求, 数据保留策略, 硬件成本, 资源分配, 性能优化]
+description: 提供 GreptimeDB 的 CPU、内存和存储需求的一般建议,帮助用户根据工作负载进行容量规划。
+---
+
+# 容量规划
+
+本指南提供了关于 GreptimeDB 的 CPU、内存和存储需求的一般建议。
+
+GreptimeDB 具备超轻量级的启动基准,
+这使数据库能以最少的服务器资源启动。
+然而当为生产环境配置服务器容量时,
+以下关键因素需要被考虑:
+
+- 每秒处理的数据点数
+- 每秒查询请求
+- 数据量
+- 数据保留策略
+- 硬件成本
+
+要监控 GreptimeDB 的各种指标,请参阅[监控](/user-guide/deployments-administration/monitoring/overview.md)。
+
+## CPU
+
+一般来说,大量并发查询、处理大量数据或执行其他计算密集型操作的应用需要更多的 CPU 核数。
+
+以下是一些关于 CPU 资源使用的建议,
+但实际使用的 CPU 核数取决于你实际的工作负载。
+
+你可以考虑将 30% 的 CPU 资源用于数据写入,
+剩余 70% 用于查询和分析。
+
+一般推荐 CPU 到内存的比例为 1:4(例如,8 核 32 GB),
+如果你的主要工作负载是数据写入且查询请求较少,
+1:2 的比例(8 核 16 GB)也是可以接受的。
+
+## 内存
+
+一般来说,内存越大,查询速度越快。
+对于基本工作负载,建议至少有 8 GB 的内存,对于更高级的工作负载,建议至少有 32 GB 的内存。
+
+## 存储空间
+
+GreptimeDB 具有高效的数据压缩机制,可将原始数据大小减少到其初始大小的约 1/8 到 1/10。
+这使得 GreptimeDB 以更小的空间存储大量数据。
+
+数据可以存储在本地文件系统或云存储中,例如 AWS S3。
+有关存储选项的更多信息,
+请参阅[存储配置](/user-guide/deployments-administration/configuration.md#存储选项)文档。
+
+由于云存储在存储管理方面的简单性,强烈推荐使用云存储进行数据存储。
+使用云存储时,本地存储空间只需要大约 200GB 用于查询相关的缓存和 Write-Ahead Log (WAL)。
+
+无论你选择云存储还是本地存储,
+建议设置[保留策略](/user-guide/concepts/features-that-you-concern.md#我可以为不同的表或指标设置-ttl-或保留策略吗)以有效管理存储成本。
+
+## 举例
+
+假设你的数据库每秒处理约 200 个简单查询请求(QPS),每秒处理约 300k 数据点的写入请求,使用云存储存储数据。
+
+在这种写入和查询速率下,
+以下是你可能分配资源的示例:
+
+- CPU:8 核
+- 内存:32 GB
+- 存储空间:200 GB
+
+这样的分配旨在优化性能,
+确保数据写入和查询处理的平稳进行,而不会导致系统过载。
+然而,请记住这些只是建议,
+实际需求可能会根据特定的工作负载特征和性能期望而有所不同。
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/configuration.md b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/configuration.md
new file mode 100644
index 0000000000..ca833c8bf8
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/configuration.md
@@ -0,0 +1,778 @@
+---
+keywords: [配置指南, 命令行选项, 配置文件, 环境变量, 协议选项, 存储选项, WAL 选项, 日志选项]
+description: GreptimeDB 的配置指南,介绍了命令行选项、配置文件、环境变量、协议选项、存储选项、WAL 选项、日志选项等详细配置方法。
+---
+
+# 配置 GreptimeDB
+
+GreptimeDB 提供了层次化的配置能力,按照下列优先顺序来生效配置(每个项目都会覆盖下面的项目):
+
+- Greptime 命令行选项
+- 配置文件选项
+- 环境变量
+- 默认值
+
+你只需要设置所需的配置项。
+GreptimeDB 将为未配置的任何设置分配默认值。
+
+## 如何设置配置项
+
+### Greptime 命令行选项
+
+你可以使用命令行参数指定多个配置项。
+例如,以配置的 HTTP 地址启动 GreptimeDB 的独立模式:
+
+```shell
+greptime standalone start --http-addr 127.0.0.1:4000
+```
+
+有关 Greptime 命令行支持的所有选项,请参阅 [GreptimeDB 命令行界面](/reference/command-lines/overview.md)。
+
+### 配置文件选项
+
+你可以在 TOML 文件中指定配置项。
+例如,创建一个名为 `standalone.example.toml` 的配置文件,如下所示:
+
+```toml
+[storage]
+type = "File"
+data_home = "./greptimedb_data/"
+```
+
+然后使用命令行参数 `-c [file_path]` 指定配置文件。
+
+```sh
+greptime [standalone | frontend | datanode | metasrv] start -c config/standalone.example.toml
+```
+
+例如以 standalone 模式启动 GreptimeDB:
+
+```bash
+greptime standalone start -c standalone.example.toml
+```
+
+#### 示例文件
+
+以下是每个 GreptimeDB 组件的示例配置文件,包括所有可用配置项。
+在实际场景中,你只需要配置所需的选项,不需要像示例文件中那样配置所有选项。
+
+- [独立模式](https://github.com/GreptimeTeam/greptimedb/blob/VAR::greptimedbVersion/config/standalone.example.toml)
+- [前端](https://github.com/GreptimeTeam/greptimedb/blob/VAR::greptimedbVersion/config/frontend.example.toml)
+- [数据节点](https://github.com/GreptimeTeam/greptimedb/blob/VAR::greptimedbVersion/config/datanode.example.toml)
+- [流节点](https://github.com/GreptimeTeam/greptimedb/blob/VAR::greptimedbVersion/config/flownode.example.toml)
+- [元服务](https://github.com/GreptimeTeam/greptimedb/blob/VAR::greptimedbVersion/config/metasrv.example.toml)
+
+### Helm 配置
+
+当使用 Helm 在 Kubernetes 上部署 GreptimeDB 时,你可以直接在 Helm `values.yaml` 文件中做相应的设置。
+请参阅 [Helm 配置项文档](/user-guide/deployments-administration/deploy-on-kubernetes/common-helm-chart-configurations.md)了解所有 Helm 支持的配置项。
+
+对于仅在本篇文档中[可用的配置项](#配置项),你可以通过[注入 TOML 配置文件](/user-guide/deployments-administration/deploy-on-kubernetes/common-helm-chart-configurations.md#注入配置文件)来设置配置。
+
+
+### 环境变量
+
+配置文件中的每个项目都可以映射到环境变量。
+例如,使用环境变量设置数据节点的 `data_home` 配置项:
+
+```toml
+# ...
+[storage]
+data_home = "/data/greptimedb"
+# ...
+```
+
+使用以下 shell 命令以以下格式设置环境变量:
+
+```
+export GREPTIMEDB_DATANODE__STORAGE__DATA_HOME=/data/greptimedb
+```
+
+#### 环境变量规则
+
+- 每个环境变量应具有组件前缀,例如:
+
+ - `GREPTIMEDB_FRONTEND`
+ - `GREPTIMEDB_METASRV`
+ - `GREPTIMEDB_DATANODE`
+ - `GREPTIMEDB_STANDALONE`
+
+- 使用**双下划线 `__`**作为分隔符。例如,数据结构 `storage.data_home` 转换为 `STORAGE__DATA_HOME`。
+
+环境变量还接受以逗号 `,` 分隔的列表,例如:
+
+```
+GREPTIMEDB_METASRV__META_CLIENT__METASRV_ADDRS=127.0.0.1:3001,127.0.0.1:3002,127.0.0.1:3003
+```
+
+## 配置项
+
+本节将介绍主要的配置项,请前往 GitHub 查看[所有配置项](https://github.com/GreptimeTeam/greptimedb/blob/VAR::greptimedbVersion/config/config.md)。
+
+### 协议选项
+
+协议选项适用于 `frontend` 和 `standalone` 子命令,它指定了协议服务器地址和其他协议相关的选项。
+
+:::tip 提示
+HTTP 协议配置适用于所有 GreptimeDB 组件:`frontend`、`datanode`、`flownode` 和 `metasrv`。
+:::
+
+下面的示例配置包含了所有协议选项的默认值。
+你可以在配置文件中更改这些值或禁用某些协议。
+例如禁用 OpenTSDB 协议支持,可以将 `enable` 参数设置为 `false`。
+请注意,为了保障数据库的正常工作,无法禁用 HTTP 和 gRPC 协议。
+
+```toml
+[http]
+addr = "127.0.0.1:4000"
+timeout = "30s"
+body_limit = "64MB"
+
+[grpc]
+bind_addr = "127.0.0.1:4001"
+runtime_size = 8
+
+[mysql]
+enable = true
+addr = "127.0.0.1:4002"
+runtime_size = 2
+
+[mysql.tls]
+mode = "disable"
+cert_path = ""
+key_path = ""
+
+[postgres]
+enable = true
+addr = "127.0.0.1:4003"
+runtime_size = 2
+
+[postgres.tls]
+mode = "disable"
+cert_path = ""
+key_path = ""
+
+[opentsdb]
+enable = true
+
+[influxdb]
+enable = true
+
+[prom_store]
+enable = true
+```
+
+下表描述了每个选项的详细信息:
+
+| 选项 | 键 | 类型 | 描述 |
+| ---------- | ------------------ | ------ | ------------------------------------------------------------ |
+| http | | | HTTP 服务器选项 |
+| | addr | 字符串 | 服务器地址,默认为 "127.0.0.1:4000" |
+| | timeout | 字符串 | HTTP 请求超时时间,默认为 "30s" |
+| | body_limit | 字符串 | HTTP 最大体积大小,默认为 "64MB" |
+| | prom_validation_mode | 字符串 | 在 Prometheus Remote Write 协议中中是否检查字符串是否为有效的 UTF-8 字符串。可用选项:`strict`(拒绝任何包含无效 UTF-8 字符串的请求),`lossy`(用 [UTF-8 REPLACEMENT CHARACTER](https://www.unicode.org/versions/Unicode16.0.0/core-spec/chapter-23/#G24272)(即 `�` ) 替换无效字符),`unchecked`(不验证字符串有效性)。 |
+| grpc | | | gRPC 服务器选项 |
+| | bind_addr | 字符串 | gRPC 服务绑定地址,默认为 "127.0.0.1:4001" |
+| | runtime_size | 整数 | 服务器工作线程数量,默认为 8 |
+| | max_connection_age | 字符串 | gRPC 连接在服务端保持的最长时间。参见 ["MAX_CONNECTION_AGE"](https://grpc.io/docs/guides/keepalive/)。默认不设置。示例:"1h" 表示 1 小时,"30m" 表示 30 分钟 |
+| | flight_compression | 字符串 | Frontend 的 Arrow IPC 服务的压缩模式。可用选项:`none`:禁用所有压缩,`transport`:仅启用 gRPC 传输压缩(zstd),`arrow_ipc`:仅启用 Arrow IPC 压缩(lz4),`all`:启用所有压缩。默认值为 `none`。|
+| mysql | | | MySQL 服务器选项 |
+| | enable | 布尔值 | 是否启用 MySQL 协议,默认为 true |
+| | addr | 字符串 | 服务器地址,默认为 "127.0.0.1:4002" |
+| | runtime_size | 整数 | 服务器工作线程数量,默认为 2 |
+| influxdb | | | InfluxDB 协议选项 |
+| | enable | 布尔值 | 是否在 HTTP API 中启用 InfluxDB 协议,默认为 true |
+| opentsdb | | | OpenTSDB 协议选项 |
+| | enable | 布尔值 | 是否启用 OpenTSDB 协议,默认为 true |
+| prom_store | | | Prometheus 远程存储选项 |
+| | enable | 布尔值 | 是否在 HTTP API 中启用 Prometheus 远程读写,默认为 true |
+| | with_metric_engine | 布尔值 | 是否在 Prometheus 远程写入中使用 Metric Engine,默认为 true |
+| postgres | | | PostgresSQL 服务器选项 |
+| | enable | 布尔值 | 是否启用 PostgresSQL 协议,默认为 true |
+| | addr | 字符串 | 服务器地址,默认为 "127.0.0.1:4003" |
+| | runtime_size | 整数 | 服务器工作线程数量,默认为 2 |
+
+对 MySQL,Postgres 和 gRPC 接口,我们支持 TLS 配置
+
+| Option | Key | Type | Description |
+|------------------------------------------|-------------|---------|--------------------------------------------------|
+| `mysql.tls`,`postgres.tls` 或 `grpc.tls` | | | MySQL 或 Postgres 的 TLS 配置 |
+| | `mode` | String | TLS 模式,支持 `disable`, `prefer` and `require` |
+| | `cert_path` | String | TLS 证书文件路径 |
+| | `key_path` | String | TLS 私钥文件路径 |
+| | `watch` | Boolean | 监控文件变化,自动重新加载证书或私钥 |
+
+### 查询选项
+
+`查询`选项在 standalone、datanode 和 frontend 模式下有效,用于控制查询引擎的行为。
+
+下表详细描述了这些选项:
+
+| 选项 | 键 | 类型 | 描述 |
+| ----------- | ------------------ | ------ | -------------------------------------------------------------------- |
+| parallelism | 整数 | `0` | 查询引擎的并行度。默认为 0,表示 CPU 核心数。 |
+
+示例配置:
+
+```toml
+[query]
+parallelism = 0
+```
+
+### 存储选项
+
+`存储`选项在 `datanode` 和 `standalone` 模式下有效,它指定了数据库数据目录和其他存储相关的选项。
+
+GreptimeDB 支持将数据保存在本地文件系统,AWS S3 以及其兼容服务(比如 MinIO、digitalocean space、腾讯 COS、百度对象存储(BOS)等),Azure Blob Storage 和阿里云 OSS。
+
+| 选项 | 键 | 类型 | 描述 |
+| ------- | ----------------- | ------ | --------------------------------------------------- |
+| storage | | | 存储选项 |
+| | type | 字符串 | 存储类型,支持 "File","S3" 和 "Oss" 等。 |
+| File | | | 本地文件存储选项,当 type="File" 时有效 |
+| | data_home | 字符串 | 数据库存储根目录,默认为 "./greptimedb_data" |
+| S3 | | | AWS S3 存储选项,当 type="S3" 时有效 |
+| | name | 字符串 | 存储提供商名字,默认为 `S3` |
+| | bucket | 字符串 | S3 桶名称 |
+| | root | 字符串 | S3 桶中的根路径 |
+| | endpoint | 字符串 | S3 的 API 端点 |
+| | region | 字符串 | S3 区域 |
+| | access_key_id | 字符串 | S3 访问密钥 id |
+| | secret_access_key | 字符串 | S3 秘密访问密钥 |
+| | enable_virtual_host_style | 布尔值 | 使用 virtual-host-style 域名而不是 path-style 域名调用 API,默认为 false |
+| Oss | | | 阿里云 OSS 存储选项,当 type="Oss" 时有效 |
+| | name | 字符串 | 存储提供商名字,默认为 `Oss` |
+| | bucket | 字符串 | OSS 桶名称 |
+| | root | 字符串 | OSS 桶中的根路径 |
+| | endpoint | 字符串 | OSS 的 API 端点 |
+| | access_key_id | 字符串 | OSS 访问密钥 id |
+| | access_key_secret | 字符串 | OSS 秘密访问密钥 |
+| Azblob | | | Azure Blob 存储选项,当 type="Azblob" 时有效 |
+| | name | 字符串 | 存储提供商名字,默认为 `Azblob` |
+| | container | 字符串 | 容器名称 |
+| | root | 字符串 | 容器中的根路径 |
+| | endpoint | 字符串 | Azure Blob 存储的 API 端点 |
+| | account_name | 字符串 | Azure Blob 存储的账户名 |
+| | account_key | 字符串 | 访问密钥 |
+| | sas_token | 字符串 | 共享访问签名 |
+| Gsc | | | Google Cloud Storage 存储选项,当 type="Gsc" 时有效 |
+| | name | 字符串 | 存储提供商名字,默认为 `Gsc` |
+| | root | 字符串 | Gsc 桶中的根路径 |
+| | bucket | 字符串 | Gsc 桶名称 |
+| | scope | 字符串 | Gsc 权限 |
+| | credential_path | 字符串 | Gsc 访问证书 |
+| | endpoint | 字符串 | GSC 的 API 端点 |
+
+文件存储配置范例:
+
+```toml
+[storage]
+type = "File"
+data_home = "./greptimedb_data/"
+```
+
+s3 配置范例:
+
+```toml
+[storage]
+type = "S3"
+bucket = "test_greptimedb"
+root = "/greptimedb"
+access_key_id = ""
+secret_access_key = ""
+```
+
+### 存储服务的 http 客户端
+
+`[storage.http_client]` 设置了向存储服务发送请求的 http 客户端的各种配置。
+
+仅当存储服务类型是“S3”,“Oss”,“Azblob”或“Gcs”时生效。
+
+| Key | 类型 | 默认值 | 含义 |
+|--------------------------|-----|------------|-------------------------------------------------------------|
+| `pool_max_idle_per_host` | 数字 | 1024 | http 连接池中对每个 host 的最大空闲连接数。 |
+| `connect_timeout` | 字符串 | “30s”(30 秒) | http 客户端在进行连接时的超时 |
+| `timeout` | 字符串 | “30s”(30 秒) | 总的 http 请求超时,包括了从建立连接到接收完返回值为止的时间。也可视为一个请求从开始到结束的一个完整的截止时间。 |
+| `pool_idle_timeout` | 字符串 | “90s”(90 秒) | 对空闲连接进行保活( "keep-alive" )的超时。 |
+
+### 存储引擎提供商
+
+`[[storage.providers]]` 用来设置存储引擎的提供商列表。基于这个配置,你可以为每张表指定不同的存储引擎,具体请参考 [create table](/reference/sql/create.md#create-table):
+
+```toml
+# Allows using multiple storages
+[[storage.providers]]
+name = "S3"
+type = "S3"
+bucket = "test_greptimedb"
+root = "/greptimedb"
+access_key_id = ""
+secret_access_key = ""
+
+[[storage.providers]]
+name = "Gcs"
+type = "Gcs"
+bucket = "test_greptimedb"
+root = "/greptimedb"
+credential_path = ""
+```
+
+所有配置的这些存储引擎提供商的 `name` 都可以在创建表时用作 `storage` 选项。
+
+对于同样提供商的存储,比如你希望使用不同 S3 bucket 来作为不同表的存储引擎,你就可以设置不同的 `name`,并在创建表的时候指定 `storage` 选项。
+
+### 对象存储缓存
+
+在使用 AWS S3、阿里云 OSS 或 Azure Blob Storage 等远程存储服务时,查询过程中获取数据通常会很耗时,尤其在公有云环境。为了解决这个问题,GreptimeDB 提供了本地缓存机制来加速重复数据的访问。
+
+从 v0.11 版本开始,GreptimeDB 默认启用远程对象存储的本地文件缓存。读取和写入缓存容量都设置为 `5GiB`。
+
+
+通常你无需专门配置缓存,除非你需要修改缓存的大小
+```toml
+[storage]
+type = "S3"
+bucket = "test_greptimedb"
+root = "/greptimedb"
+access_key_id = ""
+secret_access_key = ""
+cache_capacity = "10GiB"
+# cache_path = "/path/to/cache/home"
+```
+
+`cache_path` 指定存储缓存文件的本地目录,而 `cache_capacity` 则决定缓存目录中允许的最大文件总大小(以字节为单位)。你可以通过将 `cache_path` 设置为空字符串来禁用读取缓存。默认的缓存目录位于 `{data_home}` 目录下。我们建议你不用配置 `cache_path`,因为数据库会自动设置该目录。
+
+
+自 `v0.12` 之后,写入缓存不再是实验性的功能。你可以通过修改 mito 的配置调整缓存的大小
+
+```toml
+[[region_engine]]
+[region_engine.mito]
+
+write_cache_size = "10GiB"
+```
+
+更详细的信息请参阅[性能调优技巧](/user-guide/deployments-administration/performance-tuning/performance-tuning-tips.md)。
+
+
+### WAL 选项
+
+GreptimeDB 支持三种 WAL 存储方式:本地 WAL、Remote WAL 和 Noop WAL。关于它们的对比,请参见 [WAL 概述](/user-guide/deployments-administration/wal/overview.md)。具体配置可参考 [本地 WAL](/user-guide/deployments-administration/wal/local-wal.md)、[Remote WAL](/user-guide/deployments-administration/wal/remote-wal/configuration.md) 和 [Noop WAL](/user-guide/deployments-administration/wal/noop-wal.md) 文档。
+
+
+### Logging 选项
+
+`frontend`、`metasrv`、`datanode` 和 `standalone` 都可以在 `[logging]` 部分配置 log、tracing 相关参数:
+
+```toml
+[logging]
+dir = "./greptimedb_data/logs"
+level = "info"
+enable_otlp_tracing = false
+otlp_endpoint = "localhost:4317"
+append_stdout = true
+[logging.tracing_sample_ratio]
+default_ratio = 1.0
+```
+
+- `dir`: log 输出目录。
+- `level`: log 输出的日志等级,日志等级有 `info`, `debug`, `error`, `warn`,默认等级为 `info`。
+- `enable_otlp_tracing`:是否打开分布式追踪,默认不开启。
+- `otlp_endpoint`:使用基于 gRPC 的 OTLP 协议导出 tracing 的目标端点,默认值为 `localhost:4317`。
+- `append_stdout`:是否将日志打印到 stdout。默认是`true`。
+- `tracing_sample_ratio`:该字段可以配置 tracing 的采样率,如何使用 `tracing_sample_ratio`,请参考 [如何配置 tracing 采样率](/user-guide/deployments-administration/monitoring/tracing.md#指南如何配置-tracing-采样率)。
+
+如何使用分布式追踪,请参考 [Tracing](/user-guide/deployments-administration/monitoring/tracing.md#教程使用-jaeger-追踪-greptimedb-调用链路)
+
+### Region 引擎选项
+
+datanode 和 standalone 在 `[region_engine]` 部分可以配置不同存储引擎的对应参数。目前只可以配置存储引擎 `mito` 的选项。
+
+部分常用的选项如下
+
+```toml
+[[region_engine]]
+[region_engine.mito]
+num_workers = 8
+manifest_checkpoint_distance = 10
+max_background_jobs = 4
+auto_flush_interval = "1h"
+global_write_buffer_size = "1GB"
+global_write_buffer_reject_size = "2GB"
+sst_meta_cache_size = "128MB"
+vector_cache_size = "512MB"
+page_cache_size = "512MB"
+sst_write_buffer_size = "8MB"
+scan_parallelism = 0
+
+[region_engine.mito.index]
+aux_path = ""
+staging_size = "2GB"
+metadata_cache_size = "64MiB"
+content_cache_size = "128MiB"
+content_cache_page_size = "64KiB"
+
+[region_engine.mito.inverted_index]
+create_on_flush = "auto"
+create_on_compaction = "auto"
+apply_on_query = "auto"
+mem_threshold_on_create = "64M"
+intermediate_path = ""
+
+[region_engine.mito.memtable]
+type = "time_series"
+```
+
+此外,`mito` 也提供了一个实验性质的 memtable。该 memtable 主要优化大量时间序列下的写入性能和内存占用。其查询性能可能会不如默认的 `time_series` memtable。
+
+```toml
+[region_engine.mito.memtable]
+type = "partition_tree"
+index_max_keys_per_shard = 8192
+data_freeze_threshold = 32768
+fork_dictionary_bytes = "1GiB"
+```
+
+以下是可供使用的选项
+
+| 键 | 类型 | 默认值 | 描述 |
+| ---------------------------------------- | ------ | ------------- | ---------------------------------------------------------------------------------------------------------------------- |
+| `num_workers` | 整数 | `8` | 写入线程数量 |
+| `manifest_checkpoint_distance` | 整数 | `10` | 每写入 `manifest_checkpoint_distance` 个 manifest 文件创建一次 checkpoint |
+| `max_background_jobs` | 整数 | `4` | 后台线程数量 |
+| `auto_flush_interval` | 字符串 | `1h` | 自动 flush 超过 `auto_flush_interval` 没 flush 的 region |
+| `global_write_buffer_size` | 字符串 | `1GB` | 写入缓冲区大小,默认值为内存总量的 1/8,但不会超过 1GB |
+| `global_write_buffer_reject_size` | 字符串 | `2GB` | 写入缓冲区内数据的大小超过 `global_write_buffer_reject_size` 后拒绝写入请求,默认为 `global_write_buffer_size` 的 2 倍 |
+| `sst_meta_cache_size` | 字符串 | `128MB` | SST 元数据缓存大小。设为 0 可关闭该缓存
默认为内存的 1/32,不超过 128MB |
+| `vector_cache_size` | 字符串 | `512MB` | 内存向量和 arrow array 的缓存大小。设为 0 可关闭该缓存
默认为内存的 1/16,不超过 512MB |
+| `page_cache_size` | 字符串 | `512MB` | SST 数据页的缓存。设为 0 可关闭该缓存
默认为内存的 1/8 |
+| `selector_result_cache_size` | 字符串 | `512MB` | `last_value()` 等时间线检索结果的缓存。设为 0 可关闭该缓存
默认为内存的 1/16,不超过 512MB |
+| `sst_write_buffer_size` | 字符串 | `8MB` | SST 的写缓存大小 |
+| `scan_parallelism` | 整数 | `0` | 扫描并发度 (默认 1/4 CPU 核数)
- `0`: 使用默认值 (1/4 CPU 核数)
- `1`: 单线程扫描
- `n`: 按并行度 n 扫描 |
+| `index` | -- | -- | Mito 引擎中索引的选项。 |
+| `index.aux_path` | 字符串 | `""` | 文件系统中索引的辅助目录路径,用于存储创建索引的中间文件和搜索索引的暂存文件,默认为 `{data_home}/index_intermediate`。为了向后兼容,该目录的默认名称为 `index_intermediate`。此路径包含两个子目录:- `__intm`: 用于存储创建索引时使用的中间文件。- `staging`: 用于存储搜索索引时使用的暂存文件。 |
+| `index.staging_size` | 字符串 | `2GB` | 暂存目录的最大容量。 |
+| `index.metadata_cache_size` | 字符串 | `64MiB` | 索引元数据的缓存大小。 |
+| `index.content_cache_size` | 字符串 | `128MiB` | 索引内容的缓存大小。 |
+| `index.content_cache_page_size` | 字符串 | `64KiB` | 倒排索引内容缓存的页大小。 |
+| `inverted_index.create_on_flush` | 字符串 | `auto` | 是否在 flush 时构建索引
- `auto`: 自动
- `disable`: 从不 |
+| `inverted_index.create_on_compaction` | 字符串 | `auto` | 是否在 compaction 时构建索引
- `auto`: 自动
- `disable`: 从不 |
+| `inverted_index.apply_on_query` | 字符串 | `auto` | 是否在查询时使用索引
- `auto`: 自动
- `disable`: 从不 |
+| `inverted_index.mem_threshold_on_create` | 字符串 | `64M` | 创建索引时如果超过该内存阈值则改为使用外部排序
设置为空会关闭外排,在内存中完成所有排序 |
+| `inverted_index.intermediate_path` | 字符串 | `""` | 存放外排临时文件的路径 (默认 `{data_home}/index_intermediate`). |
+| `memtable.type` | 字符串 | `time_series` | Memtable type.
- `time_series`: time-series memtable
- `partition_tree`: partition tree memtable (实验性功能) |
+| `memtable.index_max_keys_per_shard` | 整数 | `8192` | 一个 shard 内的主键数
只对 `partition_tree` memtable 生效 |
+| `memtable.data_freeze_threshold` | 整数 | `32768` | 一个 shard 内写缓存可容纳的最大行数
只对 `partition_tree` memtable 生效 |
+| `memtable.fork_dictionary_bytes` | 字符串 | `1GiB` | 主键字典的大小
只对 `partition_tree` memtable 生效 |
+
+### 设定 meta client
+
+`meta_client` 选项适用于 `datanode` 和 `frontend` 模块,用于指定 Metasrv 的相关信息。
+
+```toml
+[meta_client]
+metasrv_addrs = ["127.0.0.1:3002"]
+timeout = "3s"
+connect_timeout = "1s"
+ddl_timeout = "10s"
+tcp_nodelay = true
+```
+
+通过 `meta_client` 配置 metasrv 客户端,包括:
+
+- `metasrv_addrs`,Metasrv 地址列表,对应 Metasrv 启动配置的 server address。
+- `timeout`,操作超时时长,默认为 3 秒。
+- `connect_timeout`,连接服务器超时时长,默认为 1 秒。
+- `ddl_timeout`,DDL 执行的超时时间,默认 10 秒。
+- `tcp_nodelay`,接受连接时的 `TCP_NODELAY` 选项,默认为 true。
+
+### 指标监控选项
+
+这些选项用于将系统监控指标保存到 GreptimeDB 本身。
+有关如何使用此功能的说明,请参见 [监控](/user-guide/deployments-administration/monitoring/overview.md) 指南。
+
+```toml
+[export_metrics]
+# Whether to enable export_metrics
+enable=true
+# Export time interval
+write_interval = "30s"
+```
+
+- `enable`: 是否启用导出指标功能,默认为 `false`。
+- `write_interval`: 指标导出时间间隔。
+
+#### `self_import` 方法
+
+如果你使用的是 GreptimeDB 单机版,可以使用 `self_import` 方法将指标导入到自身的数据库中。
+
+```toml
+[export_metrics]
+# Whether to enable export_metrics
+enable=true
+# Export time interval
+write_interval = "30s"
+[export_metrics.self_import]
+db = "information_schema"
+```
+
+- `db`: 默认的数据库为 `information_schema`,你也可以创建另一个数据库来保存系统指标。
+
+#### `remote_write` 方法
+
+`datanode`、`frontend`、`metasrv` 和 `standalone` 支持使用 `remote_write` 方法导出指标。
+它将指标发送到与 [Prometheus Remote-Write protocol](https://prometheus.io/docs/concepts/remote_write_spec/) 兼容的接受端。
+
+```toml
+[export_metrics]
+# Whether to enable export_metrics
+enable=true
+# Export time interval
+write_interval = "30s"
+[export_metrics.remote_write]
+# URL specified by Prometheus Remote-Write protocol
+url = "http://127.0.0.1:4000/v1/prometheus/write?db=information_schema"
+# Some optional HTTP parameters, such as authentication information
+headers = { Authorization = "Basic Z3JlcHRpbWVfdXNlcjpncmVwdGltZV9wd2Q=" }
+```
+
+- `url`: Prometheus Remote-Write 协议指定的 URL。
+- `headers`: 一些可选的 HTTP 参数,比如认证信息。
+
+### 心跳配置
+心跳配置在 `frontend` 和 `datanode` 中可用。
+```toml
+[heartbeat]
+interval = "3s"
+retry_interval = "3s"
+```
+
+| 键 | 类型 | 默认值 | 描述 |
+|----------------------------|-----|------|----------------------------------------------------------|
+| `heartbeat` | -- | -- | -- |
+| `heartbeat.interval` | 字符串 | `3s` | 向 Metasrv 发送心跳信息的时间间隔 |
+| `heartbeat.retry_interval` | 字符串 | `3s` | 向 Metasrv 重试建立心跳连接的时间间隔。(注意在 Datanode 的心跳实现中,这个配置是被忽略的,因为 Datanode 必须在保活机制的租约期内通过心跳完成续租,也就是说其 retry 有特殊策略不允许自定义配置。) |
+
+### 默认时区配置
+
+`default_timezone` 选项适用于 `frontend` 模块和 `standalone` 模式,默认值为 `UTC`。
+它指定了与 GreptimeDB 交互时的客户端默认时区。
+如果在客户端中[指定了时区](/user-guide/timezone.md#在客户端中指定时区),此选项将在该客户端会话中被覆盖。
+
+```toml
+default_timezone = "UTC"
+```
+
+`default_timezone` 的值可以是任何时区名称,例如 `Europe/Berlin` 或 `Asia/Shanghai`。
+有关客户端时区如何影响数据的写入和查询,请参阅[时区](/user-guide/timezone.md#时区对-sql-语句的影响)文档。
+
+### 仅限于 Metasrv 的配置
+
+```toml
+# 工作主目录。
+data_home = "./greptimedb_data"
+# metasrv 存储后端服务器地址,默认为 etcd 实现。
+# 对于 postgres 存储后端,格式为:
+# "password=password dbname=postgres user=postgres host=localhost port=5432"
+# 对于 mysql 存储后端,格式为:
+# "mysql://user:password@ip:port/dbname"
+# 对于 etcd 存储后端,格式为:
+# "127.0.0.1:2379"
+store_addrs = ["127.0.0.1:2379"]
+# 如果不为空,metasrv 将使用此键前缀存储所有数据。
+store_key_prefix = ""
+# metasrv 的存储后端类型。
+# 可选项:
+# - `etcd_store`(默认值)
+# - `memory_store`
+# - `postgres_store`
+# - `mysql_store`
+backend = "etcd_store"
+# 在 RDS 中存储元数据的表名。仅在使用 RDS kvbackend 时生效。
+# **仅当后端为 RDS kvbackend 时使用。**
+meta_table_name = "greptime_metakv"
+## PostgreSQL 选举的咨询锁 ID。仅在使用 PostgreSQL 作为 kvbackend 时生效。
+## 仅当后端为 `postgres_store` 时使用。
+meta_election_lock_id = 1
+# Datanode 选择器类型。
+# - "lease_based" (默认值)
+# - `lease_based`
+# - "load_based"
+# 详情请参阅 "https://docs.greptime.com/contributor-guide/meta/selector"
+selector = "lease_based"
+# 将数据存储在内存中,默认值为 false。
+use_memory_store = false
+# 是否启用 region failover。
+# 该功能仅适用于运行在集群模式下的 GreptimeDB,并且
+# - 使用 Remote WAL
+# - 使用共享存储(例如 s3)。
+enable_region_failover = false
+## 设置启动 region 故障检测的延迟时间。
+## 该延迟有助于避免在所有 Datanode 尚未完全启动时,Metasrv 过早启动 region 故障检测,从而导致不必要的 region failover。
+## 尤其适用于未通过 GreptimeDB Operator 部署的集群,此时可能未正确启用集群维护模式,提前检测可能会引发误判。
+region_failure_detector_initialization_delay = "10m"
+# 是否允许在本地 WAL 上进行 region failover。
+# **此选项不建议设置为 true,
+# 因为这可能会在故障转移期间导致数据丢失。**
+allow_region_failover_on_local_wal = false
+
+## Procedure 选项
+[procedure]
+
+## 最大重试次数
+max_retry_times = 12
+
+## 程序的初始重试延迟
+retry_delay = "500ms"
+
+## 最大运行程序数。
+## 同一时间可以运行的程序最大数量。
+## 如果运行的程序数量超过此限制,程序将被拒绝。
+max_running_procedures = 128
+
+
+# Failure detector 选项
+# GreptimeDB 使用 Phi 累积故障检测器算法来检测数据节点故障。
+[failure_detector]
+
+## 判定节点故障前可接受的最大 φ 值。
+## 较低的值反应更快但会产生更多误报。
+threshold = 8.0
+
+## 心跳间隔的最小标准差。
+## 防止微小变化导致 φ 值激增。在心跳间隔变化很小时防止过度敏感。
+min_std_deviation = "100ms"
+
+## 心跳之间可接受的暂停时长。
+## 在 φ 值上升前为学习到的平均间隔提供额外的宽限期,吸收临时网络故障或GC暂停。
+acceptable_heartbeat_pause = "10000ms"
+
+## Datanode 选项。
+[datanode]
+
+## Datanode 客户端配置。
+[datanode.client]
+
+## 操作超时时间
+timeout = "10s"
+
+## 连接服务器超时时间。
+connect_timeout = "10s"
+
+## 接受连接时的 `TCP_NODELAY` 选项,默认为 true。
+tcp_nodelay = true
+
+[wal]
+# 可用的 WAL 提供者:
+# - `raft_engine`(默认):由于 metasrv 目前仅涉及远程 WAL,因此没有 raft-engine WAL 配置。
+# - `kafka`:在 datanode 中使用 kafka WAL 提供者时,metasrv **必须** 配置 kafka WAL 配置。
+provider = "raft_engine"
+
+# Kafka WAL 配置。
+
+## Kafka 集群的代理端点。
+broker_endpoints = ["127.0.0.1:9092"]
+
+## 自动为 WAL 创建 topics
+## 设置为 `true` 则自动为 WAL 创建 topics
+## 否则,使用名为 `topic_name_prefix_[0..num_topics)` 的 topics
+auto_create_topics = true
+
+## Topic 数量。
+num_topics = 64
+
+## Topic selector 类型。
+## 可用的 selector 类型:
+## - `round_robin`(默认)
+selector_type = "round_robin"
+
+## Kafka topic 通过连接 `topic_name_prefix` 和 `topic_id` 构建。
+topic_name_prefix = "greptimedb_wal_topic"
+
+## 每个分区的预期副本数。
+replication_factor = 1
+
+## 超过此时间创建 topic 的操作将被取消。
+create_topic_timeout = "30s"
+```
+
+| 键 | 类型 | 默认值 | 描述 |
+| --------------------------------------------- | ------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
+| `data_home` | String | `./greptimedb_data/metasrv/` | 工作目录。 |
+| `bind_addr` | String | `127.0.0.1:3002` | Metasrv 的绑定地址。 |
+| `server_addr` | String | `127.0.0.1:3002` | 前端和 datanode 连接到 Metasrv 的通信服务器地址,默认为本地主机的 `127.0.0.1:3002`。 |
+| `store_addrs` | Array | `["127.0.0.1:2379"]` | 元数据服务地址,默认值为 `["127.0.0.1:2379"]`。支持配置多个服务地址,格式为 `["ip1:port1","ip2:port2",...]`。默认使用 Etcd 做为元数据后端。
根据你的存储服务器类型配置地址,例如:
- 使用 `"127.0.0.1:2379"` 连接到 etcd
- 使用 `"password=password dbname=postgres user=postgres host=localhost port=5432"` 连接到 postgres
- 使用 `"mysql://user:password@ip:port/dbname"` 连接到 mysql |
+| `selector` | String | `lease_based` | 创建新表时选择 datanode 的负载均衡策略,详见 [选择器](/contributor-guide/metasrv/selector.md)。 |
+| `use_memory_store` | Boolean | `false` | 仅用于在没有 etcd 集群时的测试,将数据存储在内存中,默认值为 `false`。 |
+| `enable_region_failover` | Bool | `false` | 是否启用 region failover。
该功能仅在以集群模式运行的 GreptimeDB 上可用,并且
- 使用远程 WAL
- 使用共享存储(如 s3)。 |
+| `region_failure_detector_initialization_delay` | String | `10m` | 设置启动 region 故障检测的延迟时间。该延迟有助于避免在所有 Datanode 尚未完全启动时,Metasrv 过早启动 region 故障检测,从而导致不必要的 region failover。尤其适用于未通过 GreptimeDB Operator 部署的集群,此时可能未正确启用集群维护模式,提前检测可能会引发误判。 |
+| `allow_region_failover_on_local_wal` | Bool | false | 是否允许在本地 WAL 上进行 region failover。
**此选项不建议设置为 true,因为这可能会在故障转移期间导致数据丢失。** |
+| `backend` | String | `etcd_store` | 元数据存储类型。
- `etcd_store` (默认)
- `memory_store` (纯内存存储 - 仅用于测试)
- `postgres_store`
- `mysql_store` |
+| `meta_table_name` | String | `greptime_metakv` | 使用 RDS 存储元数据时的表名。**仅在 backend 为 postgre_store 和 mysql_store 时有效。** |
+| `meta_election_lock_id` | Integer | `1` | 用于领导选举的 PostgreSQL 咨询锁 id。**仅在 backend 为 postgre_store 时有效。** |
+| `procedure` | -- | -- | |
+| `procedure.max_retry_times` | 整数 | `12` | Procedure 的最大重试次数。 |
+| `procedure.retry_delay` | 字符串 | `500ms` | Procedure 初始重试延迟,延迟会指数增长。 |
+| `procedure.max_running_procedures` | Integer | `128` | 同一时间可以运行的程序最大数量。如果运行的程序数量超过此限制,程序将被拒绝。 |
+| `failure_detector` | -- | -- | 故障检测选项。 |
+| `failure_detector.threshold` | 浮点数 | `8.0` | 判定节点故障前可接受的最大 φ 值。
较低的值反应更快但会产生更多误报。 |
+| `failure_detector.min_std_deviation` | 字符串 | `100ms` | 心跳间隔的最小标准差。
防止微小变化导致 φ 值激增。在心跳间隔变化很小时防止过度敏感。 |
+| `failure_detector.acceptable_heartbeat_pause` | 字符串 | `10000ms` | 心跳之间可接受的暂停时长。
在 φ 值上升前为学习到的平均间隔提供额外的宽限期,吸收临时网络故障或GC暂停。 |
+| `datanode` | -- | -- | |
+| `datanode.client` | -- | -- | Datanode 客户端选项。 |
+| `datanode.client.timeout` | 字符串 | `10s` | 操作超时。 |
+| `datanode.client.connect_timeout` | 字符串 | `10s` | 连接服务器超时。 |
+| `datanode.client.tcp_nodelay` | 布尔值 | `true` | 接受连接的 `TCP_NODELAY` 选项。 |
+| wal | -- | -- | -- |
+| wal.provider | String | raft_engine | -- |
+| wal.broker_endpoints | Array | -- | Kafka 集群的端点 |
+| `wal.auto_create_topics` | Bool | `true` | 自动为 WAL 创建 topics
设置为 `true` 则自动为 WAL 创建 topics
否则,使用名为 `topic_name_prefix_[0..num_topics)` 的 topics |
+| `wal.auto_prune_interval` | String | `0s` | 定期自动裁剪远程 WAL 的时间间隔
设置为 `0s` 表示禁止自动裁剪 |
+| `wal.trigger_flush_threshold` | Integer | `0` | 自动 WAL 裁剪中触发 region flush 操作的阈值
当满足以下条件时,metasrv 会对 region 发送 flush 请求:
`trigger_flush_threshold` + `prunable_entry_id` < `max_prunable_entry_id`
其中:
- `prunable_entry_id` 是该 region 可裁剪的最大日志条目 ID,在该 ID 之前的日志都不被该 region 使用
- `max_prunable_entry_id` 是使用与该 region 同一 kafka topic 的所有 region 可裁剪的最大日志条目 ID,在该 ID 之前的日志都不再被任一 region 使用
设置为 `0` 以禁止在自动 WAL 裁剪中触发 region flush 操作 |
+| `wal.auto_prune_parallelism` | Integer | `10` | 自动 WAL 裁剪的最大并行任务限制,其中每个任务负责一个 kafka topic 的 WAL 裁剪 |
+| `wal.num_topics` | Integer | `64` | Topic 数量 |
+| wal.selector_type | String | round_robin | topic selector 类型
可用 selector 类型:
- round_robin(默认) |
+| wal.topic_name_prefix | String | greptimedb_wal_topic | 一个 Kafka topic 是通过连接 topic_name_prefix 和 topic_id 构建的 |
+| wal.replication_factor | Integer | 1 | 每个分区的副本数 |
+| wal.create_topic_timeout | String | 30s | 超过该时间后,topic 创建操作将被取消 |
+| `wal.sasl` | String | -- | Kafka 客户端 SASL 配置 |
+| `wal.sasl.type` | String | -- | SASL 机制,可选值:`PLAIN`, `SCRAM-SHA-256`, `SCRAM-SHA-512` |
+| `wal.sasl.username` | String | -- | SASL 鉴权用户名 |
+| `wal.sasl.password` | String | -- | SASL 鉴权密码 |
+| `wal.tls` | String | -- | Kafka 客户端 TLS 配置 |
+| `wal.tls.server_ca_cert_path` | String | -- | 服务器 CA 证书地址 |
+| `wal.tls.client_cert_path` | String | -- | 客户端证书地址(用于启用 mTLS) |
+| `wal.tls.client_key_path` | String | -- | 客户端密钥地址(用于启用 mTLS) |
+
+### 仅限于 `Datanode` 的配置
+
+```toml
+node_id = 42
+[grpc]
+bind_addr = "127.0.0.1:3001"
+server_addr = "127.0.0.1:3001"
+runtime_size = 8
+```
+
+| Key | Type | Description |
+| ---------------- | ------ | ------------------------------------------- |
+| node_id | 整数 | 该 `datanode` 的唯一标识符。 |
+| grpc.bind_addr | 字符串 | gRPC 服务绑定地址,默认为`"127.0.0.1:3001"`。 |
+| grpc.server_addr | 字符串 | 该地址用于来自主机外部的连接和通信。如果留空或未设置,服务器将自动使用主机上第一个网络接口的 IP 地址,其端口号与 `grpc.bind_addr` 中指定的相同。 |
+| grpc.rpc_runtime_size | 整数 | gRPC 服务器工作线程数,默认为 8。 |
+
+### 仅限于 `Frontend` 的配置
+
+```toml
+[datanode]
+[datanode.client]
+connect_timeout = "1s"
+tcp_nodelay = true
+```
+
+| Key | Type | Default | Description |
+|-----------------------------------|------|---------|-------------------------|
+| `datanode` | -- | -- | |
+| `datanode.client` | -- | -- | Datanode 客户端选项。 |
+| `datanode.client.connect_timeout` | 字符串 | `1s` | 连接服务器超时。 |
+| `datanode.client.tcp_nodelay` | 布尔值 | `true` | 接受连接的 `TCP_NODELAY` 选项。 |
diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/deploy-on-kubernetes/_pre_kind_helm.mdx b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/deploy-on-kubernetes/_pre_kind_helm.mdx
new file mode 100644
index 0000000000..138ed3e6d6
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs/version-1.0/user-guide/deployments-administration/deploy-on-kubernetes/_pre_kind_helm.mdx
@@ -0,0 +1,92 @@
+## 前置条件
+
+- [Docker](https://docs.docker.com/get-started/get-docker/) >= v23.0.0
+- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) >= v1.18.0
+- [Helm](https://helm.sh/docs/intro/install/) >= v3.0.0
+- [kind](https://kind.sigs.k8s.io/docs/user/quick-start/) >= v0.20.0
+
+## 创建一个测试 Kubernetes 集群
+
+:::warning
+不建议在生产环境或性能测试中使用 `kind`。如有这类需求建议使用公有云托管的 Kubernetes 服务,如 [Amazon EKS](https://aws.amazon.com/eks/)、[Google GKE](https://cloud.google.com/kubernetes-engine/) 或 [Azure AKS](https://azure.microsoft.com/en-us/services/kubernetes-service/),或者自行搭建生产级 Kubernetes 集群。
+:::
+
+目前有很多方法可以创建一个用于测试的 Kubernetes 集群。在本指南中,我们将使用 [kind](https://kind.sigs.k8s.io/docs/user/quick-start/) 来创建一个本地 Kubernetes 集群。如果你想使用已有的 Kubernetes 集群,可以跳过这一步。
+
+这里是一个使用 `kind` v0.20.0 的示例:
+
+```bash
+kind create cluster
+```
+
+
+