Найти в Дзене

Колоночные Базы Данных

Колоночные Базы Данных

Наверняка вы знакомы с реляционными базами данных и такими СУБД как Postgres, MySQL, MS SQL Server. Эти базы данных отлично решают задачи обработки транзакций, являются OLTP-системами и подчиняются принципам ACID.

Однако реляционные БД не всегда могут работать эффективно для аналитических задач и обработки большого количества аналитических запросов на чтение данных, особенно если мы говорим про большие объемы данных.

Для обработки аналитических запросов существуют OLAP-системы (Online Analytical Processing), к которым также относятся колоночные базы данных.

📍Различия между колоночными и строковыми базами данных

Сходство: данные структурированы и хранятся в виде таблиц с атрибутами (столбцами) и записями (строками), это удобно для восприятия пользователя, которые работает как с обычными таблицами.

Различия:

- Хранение данных. в строковых БД на физических дисках хранятся значения строк рядом друг с другом, в колоночных БД данные записываются в память диска по столбцам

- Опираясь на предыдущее различие, чтение данных в колоночных БД происходит также по столбцам, что в десятки раз ускоряет чтение данных и выполнение запросов к БД.

Пример:

У нас есть таблица из 50 столбцов и 1 млн. записей. При выполнении запроса по 4 столбцам из таблицы в строковой БД запрос будет идти по всем 50 столбцам и по каждой записи внутри таблицы, т.е. перебором всего 1 млн. записей.

В колоночной БД запрос выберет нужные 4 столбца, пробежит по ним и выдаст только те записи в итоге, которые соответствуют запросу.

Преимущества строчных БД (Реляционные БД):

- быстрое выполнение операций записи и обновления данных (INSERT, UPDATE)

- транзакционная целостность и выполнение ACID

- работа с данными на языке SQL

Преимущества колоночных БД (Один из видов Нереляционных БД):

- быстрое выполнение запросов на чтение данных

- более простая масштабируемость БД

- низкие требования к консистентности данных

- распределенные вычисления и распараллеливание запросов (MPP)

- шардирование данных (хранение по частям на разных хостах)

Примеры решений колоночных БД: Clickhouse, Vertica, Apache Cassandra

Полезные ссылки:

🔗Статья про колоночные и строчные СУБД

🔗Статья про Clickhouse

🔗Статья про Vertica

🔗Clickhouse Documentation

🔗Apache Cassandra Documentation