Колоночная база данных NoSQL | OTUS

Колоночная база данных NoSQL

Продолжаем разбираться в типах СУБД NoSQL. В этот раз расскажем о колоночной базе данных.

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

Если сравнивать эту базу с хранением данных в строках, как это принято в большинстве реляционных БД, то у хранения в колонках есть свои плюсы. Например, быстрый поиск/доступ и агрегация данных. SQL-базы хранят каждую строку в виде непрерывной записи на диске, то есть различные строки хранятся в различных местах на диске. В случае с колоночной структурой, БД хранят все ячейки, которые относятся к колонке, в виде непрерывной записи — это и делает выполнение операций по поиску и доступу быстрее.

Простой пример: если мы захотим получить список заголовков нескольких миллионов статей, то при использовании SQL-баз это станет весьма трудоёмкой задачей, ведь для извлечения заголовков понадобится проходить по каждой записи. В случае с NoSQL мы сможем получить все заголовки посредством всего одной операции доступа к диску.

Модель данных в колоночных БД:

  1. Колоночное семейство представляет собой структуру, которая может без проблем группировать колонки и суперколонки.
  2. Ключ является постоянным именем записи. Ключи могут иметь различное число колонок, следовательно, БД способна расширяться неравномерно.
  3. Есть термин пространства ключей. Это пространство определяет самый внешний уровень организации, обычно это имя приложения или имя БД.
  4. Колонка характеризуется упорядоченным списком элементов, которые представляют собой кортежи со значениями и именами.

Примеры успешных решений

Наиболее известные примеры колоночных БД — Google BigTable и HBase с Cassandra.

Если говорить о BigTable, то она представляет собой сжатое, проприетарное и высокопроизводительное хранилище данных от Google со следующими атрибутами: • разреженность (какие-нибудь ячейки могут иметь пустое значение); • распределённость (все данные разделяются между множеством узлов); • постоянство (данные хранятся на диске); • многомерность (более одного измерения); • сопоставление — ключ и значение; • отсортированность (как правило, сопоставления не сортируются, но данный случай является исключением).

2-мерная таблица, которая состоит из колонок и строк, является частью реляционной системы БД.

table2_1-1801-a2f3e7.png

Данную таблицу мы можем представить в качестве BigTable-сопоставления следующим образом:

1-1801-9b3afc.png

Внешние ключи «3PillarCluj», «3PillarTimisoara», «3PillarNoida» и «3PillarFairfax» — это аналоги строк. При этом: • «address» и «details» являются колоночными семействами; • в семействе «address» присутствуют колонки «city» и «pincode»; • в семействе «details» присутствуют колонки «projects» и «strength».

Ссылаться на колонки мы можем посредством колоночного семейства.

Источник — «EXPLORING THE DIFFERENT TYPES OF NOSQL DATABASES».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто