Перейти к основному содержимому

Колоночные БД, Cassandra vs PostreSQL

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

Отличия колоночных БД

В строковой БД данные хранятся построчно:

  • [1, 2024-01-01, Телефон, 500]
  • [2, 2024-01-02, Ноутбук, 1000]
  • [3, 2024-01-03, Планшет, 300]

В колоночной — по столбцам:

  • ID: [1, 2, 3]
  • Дата: [2024-01-01, 2024-01-02, 2024-01-03]
  • Продукт: [Телефон, Ноутбук, Планшет]
  • Цена: [500, 1000, 300]

Чтение: если нужно найти все цены, БД сразу читает столбец "Цена", не проходя по каждой строке.

Особенности

  • Данные одной колонки сохраняются вместе на диске. Каждая колонка хранится отдельно (в строковых — вместе).
  • Хранят все ячейки, которые относятся к колонке, в виде непрерывной записи — это и делает выполнение операций по поиску и доступу быстрее.
  • Агрегированные операции выполняются быстрее, так как считывается меньше данных и не нужно обрабатывать лишние колонки.
  • Оптимизированы для операций агрегации, таких как SUM, AVG, COUNT.
  • Каждая запись в семействе колонок идентифицируется уникальным ключом строки (Row Key).

Когда лучше выбрать?

  • Когда нужно быстро читать большие объемы данных по конкретным столбцам.
  • Когда важна быстрая агрегация данных.
  • Для данных, собранных по времени или другим параметрам, т.к. информация часто анализируется по определенным метрикам (столбцам).
  • Для распределенной обработки данных и масштабируемости.
  • Для OLAP систем при анализе больших объемов данных.

Когда неэффективны

  • Если данные часто обновляются, то колоночные БД могут быть неэффективными, т.к. нужно обновлять каждый столбец отдельно.
  • Могут иметь ограничения при выполнении транзакций, что может усложнять согласование данных в случае ошибок.
  • При выполнении транзакций с большим объемом данных может возникнуть задержка из-за сканирования множества столбцов.

Примеры использования

  • Анализ данных продаж для определения трендов и прогнозов.
  • Хранилище данных для аналитики финансовых транзакций.
  • Мониторинг производительности серверов и сетевого трафика.

Отличия колоночных SQL от NoSQL

SQL:

  • Имеет более строгую схему, таблицы и типы данных фиксированы.
  • Стандартный язык SQL для запросов.
  • Для вертикального масштабирования (увеличение мощности одного сервера).
  • Для аналитических запросов.

NoSQL:

  • Более гибкая схема, можно легко добавлять новые столбцы.
  • Часто собственные языки или API.
  • Легче масштабируется горизонтально (добавление новых серверов).
  • Для больших распределенных систем.

Примеры БД

SQL: Clickhouse, Google BigQuery

NoSQL: Apache Cassandra, Apache HBase

Когда лучше выбирать строковые БД

  • Для транзакционных систем (OLTP): БД, такие как PostgreSQL и MySQL, оптимизированы для быстрого выполнения транзакций, включая вставку, обновление и удаление строк. Подходят для банковских систем или системы обработки заказов.
  • Когда структура данных может часто меняться: в строковых БД каждая запись хранится в виде строки, операции обновления данных более эффективные.
  • Для частого соединения данных из разных таблиц и реляционных операций между таблицами.

Сравнительная таблица Apache Cassandra и PostgreSQL

КритерийApache CassandraPostgreSQL
Тип базы данныхNoSQL (колоночная)SQL (реляционная)
Схема данныхГибкая, схемы можно изменять динамическиСтрогая, схемы должны быть определены заранее
МасштабируемостьГоризонтальная, легко масштабируетсяВертикальная, масштабируется сложнее
ЗапросыCQL (Cassandra Query Language)SQL
КонсистентностьEventual consistency (возможная согласованность)ACID (атомарность, согласованность, изоляция, долговечность)
Поддержка транзакцийОграниченная, не поддерживает ACID полностьюПолная поддержка ACID-транзакций
Области примененияБольшие распределенные системы, аналитикаТрадиционные бизнес-приложения, OLTP, аналитика
Обработка данныхОптимизирована для записи, высокая скорость вставки данныхОптимизирована для сложных запросов и аналитики

Подборка материалов по теме колоночных БД

  1. Колоночные СУБД — принцип действия, преимущества и область применения
  2. Колоночная база данных NoSQL
  3. Колоночные СУБД против строчных, как насчет компромисса?
  4. Колоночные и строковые: виды хранения данных в СУБД
  5. ClickHouse: обзор и сравнение с традиционными БД
  6. Clickhouse: особенности СУБД, ее преимущества и недостатки
  7. Сравнение SQL и NoSQL
  8. Кому нужна Cassandra? Пара слов о преимуществах колоночных БД
  9. ТОП-10 достоинств и 5 главных недостатков Apache Cassandra
  10. MongoDB vs Cassandra
  11. Топ-23 Cassandra Интервью Вопросы и Ответы
  12. Cassandra: масштабируемая база данных «из коробки»
  13. Apache Cassandra и HBase: конкуренты или альтернативы – 10 ключевых сходств и отличий
  14. В чем разница между Cassandra и HBase?
  15. Cassandra vs HBase: что и когда выбирать для NoSQL в Big Data
  16. Битва двух якодзун, или Cassandra vs HBase. Опыт команды Сбербанка

Видео

  1. Что такое CLICKHOUSE и колоночные СУБД
  2. Основы колоночного мышления (в терминах СУБД)
  3. Базы данных. ClickHouse. Колоночные СУБД
  4. Вредные советы ClickHouse
  5. Базы данных: Ключ-значение, Колоночные
  6. Особенности индексов в колоночных БД на примере ClickHouse
  7. Введение в фундаментальные принципы и основы Apache Cassandra

Конференции

  1. Think Java: Выбираем Apache Cassandra в качестве NoSQL хранилища для своего приложения
  2. HighLoad: Cassandra для хранения метаданных: успехи и провалы

Дополнительные подборки:

  1. Основные понятия баз данных
  2. SQL vs NoSQL: отличие реляционных и нереляционных БД
  3. Виды нереляционных БД. Какие бывают NoSQL базы данных
  4. Типы связей в БД. Нормализация
  5. Шпаргалка по выбору правильной СУБД
  6. Памятка по SQL
  7. Денормализация в БД и не только
  8. Хранимые процедуры и пользовательские функции в БД
  9. Масштабирование БД. Партиционирование, шардирование и репликация
  10. Требования ACID: Краткий обзор
  11. Индексы в базах данных: краткий обзор