Открыть сервис

Колоночное хранение данных

Колоночное хранение данных — это метод организации и хранения данных в базах данных, при котором данные сгруппированы и записаны на носителе не по строкам (записям), а по столбцам (колонкам, атрибутам). В отличие от традиционного строчного (row-oriented) хранения, где все атрибуты одной записи хранятся последовательно, колоночное хранение размещает значения одного атрибута для всех записей таблицы в одном непрерывном блоке. Этот подход оптимизирован для аналитических нагрузок (OLAP — Online Analytical Processing), где требуется быстрое сканирование и агрегация большого количества записей по ограниченному набору столбцов.

История

Идея колоночного хранения данных возникла в 1970-х годах, но практическое применение стало возможным только с развитием технологий хранения и ростом объёмов данных. Первые исследовательские работы, такие как C-Store (2005 год) Массачусетского технологического института, заложили основы современных колоночных СУБД. Коммерческие реализации начали появляться в середине 2000-х годов. Компания Vertica (основана в 2005 году) коммерциализировала идеи C-Store. В 2008 году компания SAP приобрела компанию Sybase и её колоночную технологию, что привело к созданию SAP HANA. В 2010-е годы колоночное хранение стало стандартом для систем аналитики и больших данных (Big Data). Крупные облачные провайдеры, такие как Amazon Redshift (2012), Google BigQuery (2010) и Snowflake (2012), также используют колоночные форматы. В России колоночные СУБД применяются в крупных банках, телекоммуникационных компаниях и государственных информационных системах для обработки аналитики.

Принцип работы

При строчном хранении (например, в PostgreSQL, MySQL) данные физически записываются так: для каждой строки таблицы последовательно записываются все её столбцы. При колоночном хранении данные группируются по столбцам. Например, для таблицы «Продажи» с колонками «Дата», «Товар», «Цена», «Количество» строчное хранение запишет сначала все поля первой записи, затем все поля второй и так далее. Колоночное хранение запишет сначала все даты, затем все товары, затем все цены и все количества. На физическом уровне каждый столбец хранится в отдельном файле или блоке данных.

Преимущества колоночного хранения

Недостатки колоночного хранения

Классификация колоночных СУБД

Колоночные системы управления базами данных делятся на два основных типа:

Чисто колоночные СУБД

Хранят все данные исключительно в колоночном формате. Примеры:

Гибридные СУБД

Поддерживают как строчное, так и колоночное хранение, позволяя выбирать метод для каждой таблицы или даже для отдельных столбцов. Примеры:

Форматы колоночного хранения

Помимо СУБД, колоночный формат используется в файловых системах для хранения больших объёмов данных (Big Data). Наиболее распространённые форматы:

Применение

Колоночное хранение данных является основой для большинства современных систем аналитики и бизнес-анализа (BI). Основные области применения:

В России колоночное хранение активно применяется в:

Сравнение со строчным хранением

ХарактеристикаСтрочное хранение (row-oriented)Колоночное хранение (column-oriented)
Основное назначениеOLTP (транзакции)OLAP (аналитика)
Скорость вставки/обновленияВысокаяНизкая
Скорость сканирования нескольких столбцовНизкая (читает всю строку)Высокая (читает только нужные столбцы)
Степень сжатияНизкая (разнородные данные в строке)Высокая (однотипные данные в столбце)
Примеры СУБДPostgreSQL, MySQL, Oracle (по умолчанию)ClickHouse, Vertica, Amazon Redshift

Критика и ограничения

Несмотря на преимущества, колоночное хранение не является универсальным решением. Основные критические замечания:

Интересные факты

Источники

  1. Abadi, D. J., Boncz, P. A., Harizopoulos, S., Idreos, S., & Madden, S. (2008). The Design and Implementation of Modern Column-Oriented Database Systems. Foundations and Trends in Databases.
  2. Stonebraker, M., Abadi, D. J., Batkin, A., Chen, X., Cherniack, M., Ferreira, M., ... & Zdonik, S. (2005). C-Store: A Column-oriented DBMS. Proceedings of the 31st International Conference on Very Large Data Bases.
  3. Документация ClickHouse. (2024). Introduction to Column-Oriented Storage. Яндекс.
  4. Apache Parquet. (2024). Parquet Format Specification. Apache Software Foundation.
  5. Plattner, H., & Zeier, A. (2011). In-Memory Data Management: Technology and Applications. Springer.
  6. Chaudhuri, S., & Dayal, U. (1997). An Overview of Data Warehousing and OLAP Technology. ACM SIGMOD Record.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →