Skip to content

Related blog component #3768

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 23 commits into from
May 23, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions contribute/style-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -376,3 +376,20 @@ logic might fail.
1. Keep version strings in consistent formats for predictable results.

2. Use simplified version parameters in URLs (e.g., `v08` instead of `v0.8.x`).

## Related blog component

Pages can show a "Related blogs" component which displays recent blogs which are
related to the keywords or title of the document.

If you would like to show it on a page, add the following property to the
front matter:

```yaml
---
show_related_blogs: true
---
```

This will show it on the page, assuming there is a matching blog. If there is no
match then it remains hidden.
1 change: 1 addition & 0 deletions docs/about-us/distinctive-features.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ sidebar_label: 'Why is ClickHouse unique?'
sidebar_position: 50
description: 'Understand what makes ClickHouse stand apart from other database management systems'
title: 'Distinctive Features of ClickHouse'
keywords: ['compression', 'secondary-indexes','column-oriented']
---

# Distinctive Features of ClickHouse
Expand Down
5 changes: 3 additions & 2 deletions docs/best-practices/avoid_mutations.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
slug: /best-practices/avoid-mutations
sidebar_position: 10
sidebar_label: 'Avoid Mutations'
title: 'Avoid Mutations'
sidebar_label: 'Avoid mutations'
title: 'Avoid mutations'
description: 'Page describing why to avoid mutations in ClickHouse'
keywords: ['mutations']
---

import Content from '@site/docs/best-practices/_snippets/_avoid_mutations.md';
Expand Down
5 changes: 3 additions & 2 deletions docs/best-practices/avoid_optimize_final.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
slug: /best-practices/avoid-optimize-final
sidebar_position: 10
sidebar_label: 'Avoid Optimize Final'
title: 'Avoid Optimize Final'
description: 'Page describing why to avoid Optimize Final in ClickHouse'
title: 'Avoid OPTIMIZE FINAL'

Check notice on line 5 in docs/best-practices/avoid_optimize_final.md

View workflow job for this annotation

GitHub Actions / vale

ClickHouse.Uppercase

Suggestion: Instead of uppercase for 'FINAL', use lowercase or backticks (`) if possible. Otherwise, ask a Technical Writer to add this word or acronym to the rule's exception list.
description: 'Page describing why you should avoid the OPTIMIZE FINAL clause in ClickHouse'
keywords: ['avoid OPTIMIZE FINAL', 'background merges']
---

import Content from '@site/docs/best-practices/_snippets/_avoid_optimize_final.md';
Expand Down
2 changes: 2 additions & 0 deletions docs/best-practices/choosing_a_primary_key.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ sidebar_position: 10
sidebar_label: 'Choosing a Primary Key'
title: 'Choosing a Primary Key'
description: 'Page describing how to choose a primary key in ClickHouse'
keywords: ['primary key']
show_related_blogs: true
---

import Image from '@theme/IdealImage';
Expand Down
2 changes: 2 additions & 0 deletions docs/best-practices/json_type.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ sidebar_position: 10
sidebar_label: 'Using JSON'
title: 'Use JSON where appropriate'
description: 'Page describing when to use JSON'
keywords: ['JSON']
show_related_blogs: true
---

ClickHouse now offers a native JSON column type designed for semi-structured and dynamic data. It's important to clarify that **this is a column type, not a data format**—you can insert JSON into ClickHouse as a string or via supported formats like [JSONEachRow](/docs/interfaces/formats/JSONEachRow), but that does not imply using the JSON column type. Users should only use the JSON type when the structure of their data is dynamic, not when they simply happen to store JSON.
Expand Down
6 changes: 3 additions & 3 deletions docs/best-practices/minimize_optimize_joins.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
slug: /best-practices/minimize-optimize-joins
sidebar_position: 10
sidebar_label: 'Minimize and Optimize JOINs'
title: 'Minimize and Optimize JOINs'
title: 'Minimize and optimize JOINs'
description: 'Page describing best practices for JOINs'
keywords: ['JOIN', 'Parallel Hash JOIN']
show_related_blogs: true
---

import Image from '@theme/IdealImage';
import joins from '@site/static/images/bestpractices/joins-speed-memory.png';



ClickHouse supports a wide variety of JOIN types and algorithms, and JOIN performance has improved significantly in recent releases. However, JOINs are inherently more expensive than querying from a single, denormalized table. Denormalization shifts computational work from query time to insert or pre-processing time, which often results in significantly lower latency at runtime. For real-time or latency-sensitive analytical queries, **denormalization is strongly recommended**.

In general, denormalize when:
Expand Down
1 change: 1 addition & 0 deletions docs/best-practices/partitioning_keys.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ sidebar_position: 10
sidebar_label: 'Choosing a Partitioning Key'
title: 'Choosing a Partitioning Key'
description: 'Page describing how to choose a partitioning key'
keywords: ['partitioning key']
---

import Image from '@theme/IdealImage';
Expand Down
5 changes: 3 additions & 2 deletions docs/best-practices/select_data_type.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
slug: /best-practices/select-data-types
sidebar_position: 10
sidebar_label: 'Select Data Types'
title: 'Select Data Types'
sidebar_label: 'Selecting data Types'
title: 'Selecting data Types'
description: 'Page describing how to choose data types in ClickHouse'
keywords: ['data types']
---

import NullableColumns from '@site/docs/best-practices/_snippets/_avoid_nullable_columns.md';
Expand Down
6 changes: 4 additions & 2 deletions docs/best-practices/selecting_an_insert_strategy.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
---
slug: /best-practices/selecting-an-insert-strategy
sidebar_position: 10
sidebar_label: 'Selecting an Insert Strategy'
title: 'Selecting an Insert Strategy'
sidebar_label: 'Selecting an insert strategy'
title: 'Selecting an insert strategy'
description: 'Page describing how to choose an insert strategy in ClickHouse'
keywords: ['INSERT', 'asynchronous inserts', 'compression', 'batch inserts']
show_related_blogs: true
---

import Image from '@theme/IdealImage';
Expand Down
2 changes: 2 additions & 0 deletions docs/best-practices/use_materialized_views.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ sidebar_position: 10
sidebar_label: 'Use Materialized Views'
title: 'Use Materialized Views'
description: 'Page describing Materialized Views'
keywords: ['materialized views', 'medallion architecture']
show_related_blogs: true
---

import Image from '@theme/IdealImage';
Expand Down
4 changes: 3 additions & 1 deletion docs/best-practices/using_data_skipping_indices.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
slug: /best-practices/use-data-skipping-indices-where-appropriate
sidebar_position: 10
sidebar_label: 'Data Skipping Indices'
title: 'Use Data Skipping Indices where Appropriate'
title: 'Use data skipping indices where appropriate'
description: 'Page describing how and when to use data skipping indices'
keywords: ['data skipping index', 'skip index']
show_related_blogs: true
---

import Image from '@theme/IdealImage';
Expand Down
3 changes: 2 additions & 1 deletion docs/chdb/guides/querying-pandas.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ title: 'How to query Pandas DataFrames with chDB'
sidebar_label: 'Querying Pandas'
slug: /chdb/guides/pandas
description: 'Learn how to query Pandas DataFrames with chDB'
keywords: ['chdb', 'pandas']
keywords: ['chDB', 'Pandas']
show_related_blogs: true
---

[Pandas](https://pandas.pydata.org/) is a popular library for data manipulation and analysis in Python.
Expand Down
4 changes: 0 additions & 4 deletions docs/cloud/reference/shared-merge-tree.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,3 @@ Most of the time, you should not be using `select_sequential_consistency` or `SY
2. If you write to one replica and read from another, you can use `SYSTEM SYNC REPLICA LIGHTWEIGHT` to force the replica to fetch the metadata from ClickHouse-Keeper.

3. Use `select_sequential_consistency` as a setting as part of your query.

## Related Content {#related-content}

- [ClickHouse Cloud boosts performance with SharedMergeTree and Lightweight Updates](https://clickhouse.com/blog/clickhouse-cloud-boosts-performance-with-sharedmergetree-and-lightweight-updates)
1 change: 1 addition & 0 deletions docs/concepts/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ slug: /concepts
description: 'Landing page for concepts'
pagination_next: null
pagination_prev: null
keywords: ['concepts', 'OLAP', 'fast']
---

In this section of the docs we'll dive into the concepts around what makes ClickHouse so fast and efficient.
Expand Down
1 change: 1 addition & 0 deletions docs/concepts/olap.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ sidebar_label: 'What is OLAP?'
description: 'OLAP stands for Online Analytical Processing. It is a broad term that can be looked at from two perspectives: technical and business.'
title: 'What is OLAP?'
slug: /concepts/olap
keywords: ['OLAP']
---

# What is OLAP?
Expand Down
2 changes: 2 additions & 0 deletions docs/concepts/why-clickhouse-is-so-fast.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ sidebar_label: 'Why is ClickHouse so Fast?'
description: 'It was designed to be fast. Query execution performance has always been a top priority during the development process, but other important characteristics like user-friendliness, scalability, and security were also considered so ClickHouse could become a real production system.'
title: 'Why is ClickHouse so fast?'
slug: /concepts/why-clickhouse-is-so-fast
keywords: ['Architecture', 'VLDB', 'Performance']
show_related_blogs: true
---

# Why is ClickHouse so fast? {#why-clickhouse-is-so-fast}
Expand Down
2 changes: 2 additions & 0 deletions docs/deployment-modes.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ slug: /deployment-modes
sidebar_label: 'Deployment modes'
description: 'ClickHouse offers four deployment options that all use the same powerful database engine, just packaged differently to suit your specific needs.'
title: 'Deployment modes'
keywords: ['Deployment Modes', 'chDB']
show_related_blogs: true
---

import chServer from '@site/static/images/deployment-modes/ch-server.png';
Expand Down
2 changes: 1 addition & 1 deletion docs/faq/general/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
slug: /faq/general/
sidebar_position: 1
sidebar_label: 'General Questions about ClickHouse'
keywords: ['clickhouse', 'faq', 'questions', 'what is']
keywords: ['faq', 'questions', 'what is']
title: 'General Questions About ClickHouse'
description: 'Index page listing general questions about ClickHouse'
---
Expand Down
1 change: 1 addition & 0 deletions docs/faq/general/mapreduce.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ title: 'Why not use something like MapReduce?'
toc_hidden: true
toc_priority: 110
description: 'This page explains why you would use ClickHouse over MapReduce'
keywords: ['MapReduce']
---

# Why Not Use Something Like MapReduce? {#why-not-use-something-like-mapreduce}
Expand Down
1 change: 1 addition & 0 deletions docs/faq/general/ne-tormozit.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ title: 'What does “не тормозит” mean?'
toc_hidden: true
toc_priority: 11
description: 'This page explains what "Не тормозит" means'
keywords: ['Yandex']
---

# What Does "Не тормозит" Mean? {#what-does-ne-tormozit-mean}
Expand Down
1 change: 1 addition & 0 deletions docs/faq/general/olap.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ title: 'What is OLAP?'
toc_hidden: true
toc_priority: 100
description: 'An explainer on what Online Analytical Processing is'
keywords: ['OLAP']
---

# What Is OLAP? {#what-is-olap}
Expand Down
1 change: 1 addition & 0 deletions docs/faq/general/who-is-using-clickhouse.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ title: 'Who is using ClickHouse?'
toc_hidden: true
toc_priority: 9
description: 'Describes who is using ClickHouse'
keywords: ['customer']
---

# Who is using ClickHouse? {#who-is-using-clickhouse}
Expand Down
4 changes: 0 additions & 4 deletions docs/faq/use-cases/time-series.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,4 @@

Second, time-series queries often hit only recent data, like one day or one week old. It makes sense to use servers that have both fast NVMe/SSD drives and high-capacity HDD drives. ClickHouse [TTL](/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-ttl) feature allows to configure keeping fresh hot data on fast drives and gradually move it to slower drives as it ages. Rollup or removal of even older data is also possible if your requirements demand it.

Even though it's against ClickHouse philosophy of storing and processing raw data, you can use [materialized views](../../sql-reference/statements/create/view.md) to fit into even tighter latency or costs requirements.

Check notice on line 19 in docs/faq/use-cases/time-series.md

View workflow job for this annotation

GitHub Actions / vale

ClickHouse.SentenceLength

Suggestion: Improve readability by using fewer than 25 words in this sentence.

## Related Content {#related-content}

- Blog: [Working with time series data in ClickHouse](https://clickhouse.com/blog/working-with-time-series-data-and-functions-ClickHouse)
10 changes: 2 additions & 8 deletions docs/getting-started/example-datasets/github.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ sidebar_label: 'Github Repo'
sidebar_position: 1
slug: /getting-started/example-datasets/github
title: 'Writing Queries in ClickHouse using GitHub Data'
keywords: ['Github']
show_related_blogs: true
---

import Image from '@theme/IdealImage';
Expand Down Expand Up @@ -2457,11 +2459,3 @@ LIMIT 20
```

We welcome exact and improved solutions here.


## Related Content {#related-content}

- Blog: [Git commits and our community](https://clickhouse.com/blog/clickhouse-git-community-commits)
- Blog: [Window and array functions for Git commit sequences](https://clickhouse.com/blog/clickhouse-window-array-functions-git-commits)
- Blog: [Building a Real-time Analytics Apps with ClickHouse and Hex](https://clickhouse.com/blog/building-real-time-applications-with-clickhouse-and-hex-notebook-keeper-engine)
- Blog: [A Story of Open-source GitHub Activity using ClickHouse + Grafana](https://clickhouse.com/blog/introduction-to-clickhouse-and-grafana-webinar)
2 changes: 2 additions & 0 deletions docs/getting-started/example-datasets/stackoverflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ sidebar_label: 'Stack Overflow'
sidebar_position: 1
slug: /getting-started/example-datasets/stackoverflow
title: 'Analyzing Stack Overflow data with ClickHouse'
keywords: ['StackOverflow']
show_related_blogs: true
---

import Image from '@theme/IdealImage';
Expand Down
10 changes: 1 addition & 9 deletions docs/guides/best-practices/sparse-primary-indexes.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ sidebar_position: 1
description: 'In this guide we are going to do a deep dive into ClickHouse indexing.'
title: 'A Practical Introduction to Primary Indexes in ClickHouse'
slug: /guides/best-practices/sparse-primary-indexes
show_related_blogs: true
---

import sparsePrimaryIndexes01 from '@site/static/images/guides/best-practices/sparse-primary-indexes-01.png';
Expand Down Expand Up @@ -156,10 +157,6 @@ ClickHouse client's result output indicates that ClickHouse executed a full tabl

To make this (way) more efficient and (much) faster, we need to use a table with a appropriate primary key. This will allow ClickHouse to automatically (based on the primary key's column(s)) create a sparse primary index which can then be used to significantly speed up the execution of our example query.

### Related content {#related-content}
- Blog: [Super charging your ClickHouse queries](https://clickhouse.com/blog/clickhouse-faster-queries-with-projections-and-primary-indexes)


## ClickHouse Index Design {#clickhouse-index-design}

### An index design for massive data scales {#an-index-design-for-massive-data-scales}
Expand Down Expand Up @@ -1473,11 +1470,6 @@ Therefore the `cl` values are most likely in random order and therefore have a b

For both the efficient filtering on secondary key columns in queries and the compression ratio of a table's column data files it is beneficial to order the columns in a primary key by their cardinality in ascending order.


### Related content {#related-content-1}
- Blog: [Super charging your ClickHouse queries](https://clickhouse.com/blog/clickhouse-faster-queries-with-projections-and-primary-indexes)


## Identifying single rows efficiently {#identifying-single-rows-efficiently}

Although in general it is [not](/knowledgebase/key-value) the best use case for ClickHouse,
Expand Down
11 changes: 6 additions & 5 deletions docs/guides/developer/mutations.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
slug: /guides/developer/mutations
sidebar_label: 'Updating and Deleting Data'
sidebar_position: 1
keywords: ['update', 'delete', 'mutation']
keywords: ['UPDATE', 'DELETE']
title: 'Updating and deleting ClickHouse data'
description: 'Describes how to perform update and delete operations in ClickHouse'
show_related_blogs: false
---

# Updating and Deleting ClickHouse Data
# Updating and deleting ClickHouse data

Although ClickHouse is geared toward high volume analytic workloads, it is possible in some situations to modify or delete existing data. These operations are labeled "mutations" and are executed using the `ALTER TABLE` command. You can also `DELETE` a row using the lightweight
delete capability of ClickHouse.
Expand All @@ -16,7 +17,7 @@ delete capability of ClickHouse.
If you need to perform frequent updates, consider using [deduplication](../developer/deduplication.md) in ClickHouse, which allows you to update and/or delete rows without generating a mutation event.
:::

## Updating Data {#updating-data}
## Updating data {#updating-data}

Use the `ALTER TABLE...UPDATE` command to update rows in a table:

Expand Down Expand Up @@ -56,7 +57,7 @@ ALTER TABLE [<database>.]<table> UPDATE <column> = <expression> WHERE <filter_ex
It is not possible to update columns that are part of the primary or sorting key.
:::

## Deleting Data {#deleting-data}
## Deleting data {#deleting-data}

Use the `ALTER TABLE` command to delete rows:

Expand Down Expand Up @@ -84,7 +85,7 @@ To delete all of the data in a table, it is more efficient to use the command `T

View the [`DELETE` statement](/sql-reference/statements/delete.md) docs page for more details.

## Lightweight Deletes {#lightweight-deletes}
## Lightweight deletes {#lightweight-deletes}

Another option for deleting rows it to use the `DELETE FROM` command, which is referred to as a **lightweight delete**. The deleted rows are marked as deleted immediately and will be automatically filtered out of all subsequent queries, so you do not have to wait for a merging of parts or use the `FINAL` keyword. Cleanup of data happens asynchronously in the background.

Expand Down
6 changes: 1 addition & 5 deletions docs/guides/developer/ttl.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ sidebar_position: 2
keywords: ['ttl', 'time to live', 'clickhouse', 'old', 'data']
description: 'TTL (time-to-live) refers to the capability of having rows or columns moved, deleted, or rolled up after a certain interval of time has passed.'
title: 'Manage Data with TTL (Time-to-live)'
show_related_blogs: true
---

import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge';
Expand Down Expand Up @@ -258,8 +259,3 @@ The response will look like:
│ all_2_2_0 │ hot_disk │
└─────────────┴───────────┘
```


## Related Content {#related-content}

- Blog & Webinar: [Using TTL to Manage Data Lifecycles in ClickHouse](https://clickhouse.com/blog/using-ttl-to-manage-data-lifecycles-in-clickhouse)
3 changes: 2 additions & 1 deletion docs/guides/inserting-data.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
title: 'Inserting ClickHouse data'
description: 'How to insert data into ClickHouse'
keywords: ['insert', 'insert data', 'insert into table']
keywords: ['INSERT', 'Batch Insert']
sidebar_label: 'Inserting ClickHouse data'
slug: /guides/inserting-data
show_related_blogs: true
---

import postgres_inserts from '@site/static/images/guides/postgres-inserts.png';
Expand Down
2 changes: 2 additions & 0 deletions docs/guides/writing-queries.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ sidebar_label: 'Selecting data'
title: 'Selecting ClickHouse Data'
slug: /guides/writing-queries
description: 'Learn about Selecting ClickHouse Data'
keywords: ['SELECT', 'data formats']
show_related_blogs: true
---

ClickHouse is a SQL database, and you query your data by writing the same type of `SELECT` queries you are already familiar with. For example:
Expand Down
Loading