🌍 Привет мир! 👋🏻
🌍 Привет мир! 👋🏻
Давненько не было постов, но так уж получилось, заболел 🤕.., и сил хватало только на работу. Cегодня я подготовил для вас что-то новенькое, поговорим про ClickHouse, а конкретно про такие движки как Distributed и ReplicatedMergeTree и их взаимодействие.
🚀 Мотивация
ReplicatedMergeTree и Distributed эта связка является наиболее популярной и наиболее проверенным решением. Примененяя эти типы при развертывании, вы закроете такие пункты как надежность, производительность и масштабирование.
❓Что такое ClickHouse
Как говорится в официальной документации, это высокопроизводительная колоночная система управления базами данных (СУБД) SQL. Ее особенность заключается в том, что данные хранятся не построчно, как в традиционных реляционных базах данных, а в виде отдельных колонок. Как следствие, существенно повышается скорость выполнения запросов, так как система читает только необходимые колонки.
✏️ Введение
Будет полезно знать базовые понятия которые встречаются повсеместно при чтении документации:
📌 Shard (шард) — это часть данных, расположенная на отдельном сервере или группе серверов. Шарды используются для горизонтального масштабирования: данные делятся на части, и каждая часть хранится отдельно, позволяя параллельно обрабатывать большие объёмы данных.
📌 Replica (реплика) — это точная копия данных которая может лежать на другом сервере. Реплики обеспечивают отказоустойчивость и позволяют повысить производительность чтения данных.
📌 Кластер в ClickHouse — это группа серверов, объединённых вместе для обработки запросов и хранения данных. Кластеры обычно состоят из нескольких шардов и реплик.
🔖 ReplicatedMergeTree
Это версия движка таблиц MergeTree в ClickHouse с поддержкой репликации данных.
При создании таблицы с движком ReplicatedMergeTree необходимо указать путь в ZooKeeper и имя реплики:
💡 Из важного нужно знать:
• Используется ClickHouse Keeper или ZooKeeper для хранения метаданных репликации
• Поддерживается автоматическая синхронизация данных между репликами
• Репликация происходит на уровне отдельных таблиц, а не всего сервера
• Между узлами передаются только сжатые части данных, а не запросы. Слияния обрабатываются на каждой реплике независимо, поэтому снижается нагрузка на сеть.
🔖 Distributed
Это движок таблиц в ClickHouse, который обеспечивает распределенную обработку запросов на нескольких серверах:
Параметры:
-
-
-
-
💡 Из важного нужно знать:
• Не хранит данные, а равномерно распределяет данные и запросы между несколькими нодами.
• Собирает и объединяет результаты с разных серверов
• Перенаправляет INSERT-запросы на соответствующие шарды согласно ключу шардирования
💬 Делитесь своим мнением в комментариях👇! Если вам понравилась статья, не забудьте поставить лайк! 👍
#CLICKHOUSE
Давненько не было постов, но так уж получилось, заболел 🤕.., и сил хватало только на работу. Cегодня я подготовил для вас что-то новенькое, поговорим про ClickHouse, а конкретно про такие движки как Distributed и ReplicatedMergeTree и их взаимодействие.
🚀 Мотивация
ReplicatedMergeTree и Distributed эта связка является наиболее популярной и наиболее проверенным решением. Примененяя эти типы при развертывании, вы закроете такие пункты как надежность, производительность и масштабирование.
❓Что такое ClickHouse
Как говорится в официальной документации, это высокопроизводительная колоночная система управления базами данных (СУБД) SQL. Ее особенность заключается в том, что данные хранятся не построчно, как в традиционных реляционных базах данных, а в виде отдельных колонок. Как следствие, существенно повышается скорость выполнения запросов, так как система читает только необходимые колонки.
✏️ Введение
Будет полезно знать базовые понятия которые встречаются повсеместно при чтении документации:
📌 Shard (шард) — это часть данных, расположенная на отдельном сервере или группе серверов. Шарды используются для горизонтального масштабирования: данные делятся на части, и каждая часть хранится отдельно, позволяя параллельно обрабатывать большие объёмы данных.
📌 Replica (реплика) — это точная копия данных которая может лежать на другом сервере. Реплики обеспечивают отказоустойчивость и позволяют повысить производительность чтения данных.
📌 Кластер в ClickHouse — это группа серверов, объединённых вместе для обработки запросов и хранения данных. Кластеры обычно состоят из нескольких шардов и реплик.
🔖 ReplicatedMergeTree
Это версия движка таблиц MergeTree в ClickHouse с поддержкой репликации данных.
При создании таблицы с движком ReplicatedMergeTree необходимо указать путь в ZooKeeper и имя реплики:
CREATE TABLE my_table (
id UInt64,
date Date,
data String
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/my_table', '{replica}')
PARTITION BY toYYYYMM(date)💡 Из важного нужно знать:
• Используется ClickHouse Keeper или ZooKeeper для хранения метаданных репликации
• Поддерживается автоматическая синхронизация данных между репликами
• Репликация происходит на уровне отдельных таблиц, а не всего сервера
• Между узлами передаются только сжатые части данных, а не запросы. Слияния обрабатываются на каждой реплике независимо, поэтому снижается нагрузка на сеть.
🔖 Distributed
Это движок таблиц в ClickHouse, который обеспечивает распределенную обработку запросов на нескольких серверах:
CREATE TABLE table_distributed AS my_table
ENGINE = Distributed(my_cluster, mess, my_table, rand());Параметры:
-
my_cluster — имя кластера в конфигурации сервера-
mess — имя удаленной базы данных-
my_table — имя удаленной таблицы-
rand() — (опционально) ключ шардирования для распределения данных💡 Из важного нужно знать:
• Не хранит данные, а равномерно распределяет данные и запросы между несколькими нодами.
• Собирает и объединяет результаты с разных серверов
• Перенаправляет INSERT-запросы на соответствующие шарды согласно ключу шардирования
💬 Делитесь своим мнением в комментариях👇! Если вам понравилась статья, не забудьте поставить лайк! 👍
#CLICKHOUSE

Хотите больше таких постов?
Подпишитесь на канал и читайте продолжение в Telegram.