ClickHouse 文档模板体系解析:从参考模板到叙事指南的写作规范
【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse
本文以docs/_templates/目录中的模板文件为核心主体,系统讲解 ClickHouse 官方文档的模板分类、结构骨架与写作规范。读者将掌握函数、服务端配置、引擎、系统表、SQL 语句五类参考模板的逐段用法,以及 Setup Guide 叙事模板的完整章节编排方法,并了解如何与 docs/README.md 中的贡献指南、CI 校验流程配合使用。
模板体系概述:参考模板与叙事模板
ClickHouse 官方文档体系庞大——参考文档涵盖 SQL 函数、数据类型、表引擎、格式与接口,指南类文档覆盖快速入门、使用案例与集成方案。为保证新增内容与既有文档在结构上保持一致,docs/_templates/目录提供了两类模板:
- 参考模板(Reference templates,
.md):以"片段"形式存在,用于粘贴到参考文档页面中并调整标题层级。共五类:- template-function.md — SQL 函数
- template-server-setting.md — 服务端配置项
- template-engine.md — 数据库或表引擎
- template-system-table.md — 系统表
- template-statement.md — SQL 语句
- 叙事模板(Narrative template):只有一份整页模板 template-setup-guide.mdx,用于编写 how-to 与安装部署类指南。
参考模板详解
参考模板对应 ClickHouse 文档中最常见的五种页面类型。每类模板都明确了标题层级(从##开始,因为这类页面通常共享一个# H1总标题)、锚点命名约定、必选与可选小节,以及示例的推荐写法。
函数模板(template-function.md)
template-function.md 适用于在参考文档中新增一个 SQL 函数的说明。其骨架为:
- 函数名标题与锚点:以
## functionName {#functionname-in-lower-case}开头,锚点使用全小写形式,保证 URL 片段稳定可链接。 - 简短描述:一句话说明函数用途。
- Syntax(必选):给出不含
SELECT的函数语法:<function syntax> - Alias(可选):列出函数别名,例如
lower的别名是lcase。 - Arguments(可选):每个参数占一行,格式为
x — Description. Optional. Possible values. Default value. Type. 若存在可选参数需显式标注Optional。 - Parameters(可选):仅用于参数化聚合函数(parametric aggregate functions)的参数说明。
- Returned value(s):列出返回值清单,并给出返回类型链接。
- Example(必选):模板明确要求示例"必须展示用法和/或用例",推荐结构为:
- Input table(可选):
text代码块描述输入表 - Query:
sql title="Query"代码块 - Response:
text title="Response"代码块
- Input table(可选):
- See Also(可选):相关主题链接列表。
函数模板的实际产出效果
将函数模板应用到真实函数上,可以在 string-functions.mdx 中看到模板的完整落地形态。例如lower函数(string-functions.mdx 第 1905 行):
SELECT lower('CLICKHOUSE')┌─lower('CLICKHOUSE')─┐ │ clickhouse │ └─────────────────────┘对应的upper函数(string-functions.mdx 第 3668 行)则展示了别名字段(ucase)、返回类型(String)与"Introduced in: v1.1.0"版本标注等模板要素的组合。这些页面同时说明:模板中##级标题在实际页面中会被替换为###或降级使用,正如 docs/README.md 所注明的"Sometimes you just need to change the level of headers"。
服务端配置模板(template-server-setting.md)
template-server-setting.md 用于新增一个服务端配置项(如max_memory_usage、listen_host等)的说明。骨架为:
- 标题与锚点:
## server_setting_name {#server_setting_name},下划线保持原样(与函数模板的小写连字符锚点不同)。 - 描述:说明该配置的作用。
- Possible value:列出允许的取值范围。
- Default value:给出默认值。
- Settings(可选):当配置段包含多个子设置时,逐项列出
setting_1、setting_2及其取值范围与默认值。 - Example:给出 XML 配置示例:
<server_setting_name> <setting_1> ... </setting_1> <setting_2> ... </setting_2> </server_setting_name>这类 XML 片段与 ClickHouse 真实配置文件(见 tests/config 目录下的示例配置)结构一致,可以直接套用到
config.d/覆盖文件或主配置中。 - Additional Info(可选):模板允许使用任意命名(如Usage)的补充小节。
- See Also(可选)。
引擎模板(template-engine.md)
template-engine.md 用于数据库引擎或表引擎。骨架为:
- 标题与锚点:
# EngineName {#enginename}—— 这是五类模板中唯一以# H1开头的参考模板,因为引擎页面通常是独立页面。 - 简介:说明引擎做什么、与其他引擎的关系。
- Creating a Database / Creating a Table:给出
CREATE DATABASE ...或CREATE TABLE ...的创建语句。 - Engine Parameters:引擎参数说明。
- Query Clauses:仅表引擎需要,说明建表子句。
- Virtual columns(仅表引擎):列出虚拟列及其说明。
- Data Types Support(仅数据库引擎):用两列表格展示引擎原生数据类型与 ClickHouse 数据类型的映射:
| EngineName | ClickHouse | |------------|------------| | NativeDataTypeName | ClickHouseDataTypeName | - Specifics and recommendations:算法、读写过程特性、任务示例、使用建议、数据存储特性。
- Usage Example:推荐包含 Input table / Query / Response 三段式示例。
- See Also。
系统表模板(template-system-table.md)
template-system-table.md 用于system.*系统表的说明。骨架为:
- 标题与锚点:
# system.table_name {#system-tables_table-name},锚点使用system-tables_前缀。 - 描述:一句话说明表的作用。
- Columns:逐列列出
column_name(类型链接)— 描述。与system-tables参考目录(docs/reference/system-tables)下各页面采用的Columns:小节完全对应。 - Example:
sql title="Query"查询示例 +text title="Response"输出示例,模板明确要求"输出不应过长"。 - See Also:相关文章链接及一句话说明。
语句模板(template-statement.md)
template-statement.md 用于 SQL 语句(如SHOW USER、GRANT)的说明。骨架为:
- 标题与锚点:
# Statement name {#statement-name-in-lower-case}。 - 简介:简述语句功能。
- Syntax:给出语句语法。
- 其他必要小节(可选):模板明确说明复杂结构语句的示例可以参考
GRANT、REVOKE、SELECT ... JOIN等语句页面的写法(这些页面位于 docs/reference/statements)。 - See Also(可选)。
叙事模板详解:Setup Guide
template-setup-guide.mdx 是唯一的整页模板,用于 how-to / 安装部署类指南。它与参考模板的本质区别在于:叙事模板描述的是"端到端流程",使用 Mintlify 的 MDX 内置组件(<Steps>、<Tabs>、<Accordion>、<Note>、<Warning>、<Tip>),这些组件无需 import 即可使用。
Frontmatter 规范
模板开头是 YAML frontmatter:
--- title: '{Page title}' sidebarTitle: '{Nav label}' slug: /{path/to/page} description: '{One-sentence summary for search and link previews}' doc_type: 'guide' keywords: ['{keyword}', '{keyword}'] ---关键约定:使用sidebarTitle作为导航标签,因此页面正文不重复# H1(模板注释原文:Frontmatter uses sidebarTitle (no repeated # H1))。description字段用于搜索与链接预览,doc_type: 'guide'标记页面类型。
章节骨架与组件选择
模板固定了章节顺序,并声明"仅当某节确实不适用时才可删除":
- 引言:一到两句话说明指南做什么、读者最终能获得什么结果。
- Before you begin:以列表形式给出前置条件。
- How it works:必须位于步骤之前,用简短的编号序列或段落建立端到端流程心智模型——描述"按顺序会发生什么",而非行为细节(行为细节应放在 FAQ)。
- 任务章节(
## {Task}):每个主要步骤一个章节。深层任务用<Steps>/<Step title="…" id="…">;简单任务用普通编号列表。当某步骤因提供商、操作系统或部署方式不同而有变体时,用<Tabs>/<Tab title="…" id="…">分支。 - Verify:用两列表格给出"操作 → 预期结果"矩阵,让读者快速验证成功。
- Best practices:用
### {#anchor}小标题逐条列出建议——因为读者会通读此节。 - Troubleshooting:按症状组织,每个问题一个
<Accordion title="…">——因为读者是"按需查阅"。 - FAQ:每个问题一个
<Accordion>。 - Next steps:相关指南链接列表。
模板注释还给出了组件选择决策表(来自 docs/README.md 的 Templates 小节):
| 内容形态 | 组件 |
|---|---|
| 带深度(截图、代码、子步骤)的流程 | <Steps>/<Step title="…" id="…">,id使步骤可通过#id深链 |
| 按变体(提供商/OS/部署)区分的步骤 | <Tabs>/<Tab title="…" id="…">,id使变体可深链 |
| 按需查阅的内容(Troubleshooting、FAQ) | 每项一个<Accordion title="…"> |
| 需通读的建议列表(Best practices) | 每项一个### {#anchor}小标题 |
| 扫描比较的矩阵(操作→结果、源→目标映射) | Markdown 表格 |
| 提示框 | <Note>/<Warning>/<Tip> |
同时要求每个##/###必须有唯一的{#anchor},<Step>和<Tab>的锚点通过id属性承载。
与文档贡献流程的衔接
docs/_templates/是 docs/README.md 所描述的 ClickHouse 文档贡献体系的组成部分。文档站点由 Mintlify 构建,英文文档是"事实之源"(source of truth),ar/、es/、fr/、ja/、ko/、pt-BR/、ru/、zh/等语言目录均由 AI 生成翻译,因此新增内容只需编辑英文docs/下的文件,无需修改翻译目录。
使用模板的完整工作流
- 确定页面类型:参考内容(函数/配置/引擎/系统表/语句)选择对应
.md模板;how-to 指南选择 template-setup-guide.mdx。 - 复制模板并填充占位符:模板注释明确说明操作方式——"Copy the relevant template, fill the
{placeholders}, and delete the guidance comments"。即复制模板文件、填充{}占位符、删除注释行。 - 按需调整标题层级:将模板片段粘贴到页面后,按目标页面上下文降低或升高标题层级。
- 本地预览:在
docs/目录下运行mint dev,启动带热重载的本地开发服务器(默认localhost:3000)。 - 提交并开 PR:分支推送到远程后向 master 发起 pull request,维护者审查后合并。
使用模板写作的常见推荐
- 将文本放在最符合预期的位置("When searching for a position for your text, try to place it in the most anticipated place"),并按用途分组相关实体,例如解决同类问题的函数放在一起。
- 避免俚语,使用通用且具体的术语;若多个术语是同义词,需显式说明。
- 为所有功能添加示例:基础示例展示函数独立工作方式,用例示例展示函数如何参与解决具体任务。
- 发布前校对:检查拼写错误、缺失标点与可避免的重复。
模板配套的文档质量校验
模板写出的内容并非直接发布,还需要通过 CI 校验。docs 目录的校验流程由ci/praktika驱动,从仓库根目录运行即可(详见 docs/README.md 的 Run docs CI locally 小节):
python3 -m ci.praktika run "Docs check (Mintlify)" --test "Validate docs.json"Praktika 会拉取配置好的clickhouse/docs-builder镜像并在容器内运行所选检查,无需本地安装依赖。针对模板产出的内容,以下检查尤为相关:
| 检查项 | 命令 | 作用 |
|---|---|---|
| 校验内部链接与锚点 | python3 -m ci.praktika run "Docs check (Mintlify)" --test "Check internal links and anchors" | 离线检查英文文档链接与标题锚点 |
| 校验 docs.json | python3 -m ci.praktika run "Docs check (Mintlify)" --test "Validate docs.json" | 运行mint validate校验 Mintlify 配置与 MDX 内容 |
| 校验 snippet 导入 | python3 -m ci.praktika run "Docs check (Mintlify)" --test "Check snippet imports" | 验证 snippets 导入了所用到的全部自定义 MDX 组件,且未导入自定义Image组件 |
这解释了模板中对{#anchor}锚点唯一性、<Tabs>/<Step>的id属性以及相对链接的严格要求——它们直接对接 CI 的自动化链接与锚点检查,保证新增页面不会产生 404 或失效锚点。
结语
docs/_templates/目录通过五份参考模板与一份叙事模板,将 ClickHouse 海量文档(docs/reference下约 1300 个参考页面、8 种翻译语言)的结构统一为可复制的骨架:参考模板保证函数、配置、引擎、系统表、语句五类页面的信息完整性与检索一致性,叙事模板保证 how-to 指南的流程可操作性与组件规范性。对于希望为 ClickHouse 贡献文档的开发者,正确使用这些模板既能保证内容符合官方标准,也能显著减少被维护者要求修改返工的概率。
【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考