Кассандра - Модель данных
Модель данных Cassandra значительно отличается от того, что мы обычно видим в СУБД. В этой главе представлен обзор того, как Cassandra хранит свои данные.
Кластер
База данных Cassandra распределена по нескольким машинам, которые работают вместе. Самый внешний контейнер известен как кластер. Для обработки сбоев каждый узел содержит реплику, а в случае сбоя реплика берет на себя ответственность. Cassandra упорядочивает узлы в кластере в кольцевом формате и назначает им данные.
Keyspace
Keyspace - это самый внешний контейнер для данных в Cassandra. Основные атрибуты Keyspace в Cassandra:
Replication factor - Это количество машин в кластере, которые получат копии одних и тех же данных.
Replica placement strategy- Это не что иное, как стратегия размещения реплик на ринге. У нас есть такие стратегии, какsimple strategy (стратегия с учетом стойки), old network topology strategy (стратегия с учетом стойки), и network topology strategy (стратегия совместного использования центра обработки данных).
Column families- Keyspace - это контейнер для списка из одного или нескольких семейств столбцов. Семейство столбцов, в свою очередь, представляет собой контейнер для набора строк. Каждая строка содержит упорядоченные столбцы. Семейства столбцов представляют структуру ваших данных. Каждое пространство ключей имеет как минимум одно, а часто и несколько семейств столбцов.
Синтаксис создания пространства ключей следующий:
CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
На следующем рисунке показано схематическое изображение Keyspace.
Семейство столбцов
Семейство столбцов - это контейнер для упорядоченного набора строк. Каждая строка, в свою очередь, представляет собой упорядоченный набор столбцов. В следующей таблице перечислены моменты, которые отличают семейство столбцов от таблицы реляционных баз данных.
Реляционная таблица | Кассандра колонна Семья |
---|---|
Схема в реляционной модели фиксирована. После того как мы определим определенные столбцы для таблицы, при вставке данных в каждую строку все столбцы должны быть заполнены как минимум нулевым значением. | В Cassandra, хотя семейства столбцов определены, столбцы - нет. Вы можете в любое время добавить любой столбец в любое семейство столбцов. |
В реляционных таблицах определяются только столбцы, и пользователь заполняет таблицу значениями. | В Cassandra таблица содержит столбцы или может быть определена как семейство супер столбцов. |
Семейство столбцов Cassandra имеет следующие атрибуты:
keys_cached - Он представляет собой количество кэшируемых ячеек на SSTable.
rows_cached - Он представляет количество строк, все содержимое которых будет кэшировано в памяти.
preload_row_cache - Он указывает, хотите ли вы предварительно заполнить кеш строк.
Note − В отличие от реляционных таблиц, в которых схема семейства столбцов не фиксирована, Cassandra не заставляет отдельные строки содержать все столбцы.
На следующем рисунке показан пример семейства столбцов Cassandra.
Столбец
Столбец - это основная структура данных Cassandra с тремя значениями, а именно: ключ или имя столбца, значение и отметка времени. Ниже приводится структура столбца.
Суперколонка
Супер-столбец - это специальный столбец, поэтому он также является парой ключ-значение. Но суперколонка хранит карту подстолбцов.
Обычно семейства столбцов хранятся на диске в отдельных файлах. Поэтому для оптимизации производительности важно хранить столбцы, которые вы, вероятно, запрашиваете вместе, в одном семействе столбцов, и здесь может быть полезен суперколбец. Ниже представлена структура суперволца.
Модели данных Cassandra и СУБД
В следующей таблице перечислены моменты, которые отличают модель данных Cassandra от модели данных СУБД.
СУБД | Кассандра |
---|---|
РСУБД работает со структурированными данными. | Кассандра работает с неструктурированными данными. |
Имеет фиксированную схему. | У Кассандры гибкая схема. |
В СУБД таблица - это массив массивов. (СТРОКА x КОЛОННА) | В Cassandra таблица представляет собой список «вложенных пар ключ-значение». (СТРОКА x клавиша COLUMN x значение COLUMN) |
База данных - это самый внешний контейнер, содержащий данные, соответствующие приложению. | Keyspace - это самый внешний контейнер, содержащий данные, соответствующие приложению. |
Таблицы - это сущности базы данных. | Таблицы или семейства столбцов являются сущностью пространства ключей. |
Строка - это отдельная запись в СУБД. | Строка - это единица репликации в Кассандре. |
Столбец представляет атрибуты отношения. | Колонна - это единица хранения в Кассандре. |
РСУБД поддерживает концепции внешних ключей, объединений. | Отношения представлены с помощью коллекций. |