Колоночные Базы Данных
Наверняка вы знакомы с реляционными базами данных и такими СУБД как 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
Полезные ссылки: