img

Как создать пространство ключей в Apache Cassandra

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

Apache Cassandra — это программное обеспечение для управления базами данных NoSQL. Организации используют его для обработки больших объемов данных распределенным способом. Популярность этого программного обеспечения возросла благодаря высокой доступности и отказоустойчивости.

Для этого Cassandra перешла от концепции главных или именованных узлов к симметричным распределенным узлам P2P. Каждый узел в кластере имеет одно или несколько пространств ключей, содержащих данные.

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


Что такое пространство ключей в Cassandra?

Пространство ключей (Keyspace) — это контейнер данных в Cassandra, похожий на базу данных в системах управления реляционными базами данных (RDMBS). Кластер имеет одно пространство ключей для каждого приложения, столько, сколько необходимо, в зависимости от требований и использования системы. Пространства ключей — это совершенно отдельные объекты, и данные, которые они содержат, не связаны друг с другом.

В кластере Cassandra пространство ключей — это самый внешний объект, который определяет, как данные реплицируются на узлах. Пространства ключей состоят из основных объектов, называемых семействами столбцов (которые похожи на таблицы в СУБД), строк, индексированных по ключам, типам данных, сведениям о центре обработки данных, коэффициенту репликации и стратегии пространства ключей.


Компоненты пространства ключей Cassandra

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

Стратегия репликации

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

Возможны две стратегии:

  • Простая стратегия. Используйте эту стратегию для сред тестирования и разработки, а также если вы не собираетесь развертывать кластер более чем в одном центре обработки данных. Коэффициент репликации применяется ко всему кластеру. Разделитель решает, где разместить первую реплику на узле. Затем другие реплики распределяются по часовой стрелке на следующих узлах независимо от центра обработки данных или местоположения.
  • Стратегия сетевой топологии. Эта стратегия подходит, когда вам нужно развернуть свой кластер в нескольких центрах обработки данных. Однако вы можете использовать его даже с одним центром обработки данных, чтобы впоследствии расширить его. Стратегия сетевой топологии работает как для продакшена, так и для разработки. Она имеет тенденцию размещать реплики на узлах, которые не находятся в одной стойке, чтобы избежать проблем, когда одна стойка выходит из строя. С помощью этого параметра каждый центр обработки данных может иметь отдельный коэффициент репликации.

Фактор репликации

Этот параметр определяет, сколько реплик строки хранить на каждом узле.

Минимум должно быть две реплики на центр обработки данных. Это означает, что сбой одного узла не влияет на работу группы репликации. Поэтому рекомендуется установить три копии каждой строки на разных узлах для достижения удовлетворительной отказоустойчивости.

Эмпирическое правило заключается в том, чтобы коэффициент репликации оставался таким же, как и количество узлов.


Базовый синтаксис пространства ключей

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

CREATE KEYSPACE keypsace_name WITH replication = {properties};

Свойства (properties) включают в себя различные параметры, такие как стратегия репликации, коэффициент или долговременная запись.

Примечание. Команды CQL заканчиваются точкой с запятой (;). Если вы не используете точку с запятой в конце запроса, система будет ждать дополнительного ввода.

Создать пространство ключей с помощью Cqlsh

Чтобы создать пространство ключей, запустите оболочку CQL:

cqlsh

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

В этом случае мы создадим test_keyspace с SimpleStrategy и replication_factor 3:

CREATE KEYSPACE test_keyspace
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
Cassandra keyspace

Используйте приведенный выше пример, если вы не собираетесь расширяться до нескольких центров обработки данных. Кроме того, если у вас есть только один узел и вы используете Cassandra для тестирования, вы можете установить replication_factor равным 1.

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

Для этого введите:

CREATE KEYSPACE keyspace_network_topology
WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 3};	
Cassandra keyspace

Имя центра обработки данных по умолчанию — datacenter1. Чтобы проверить имя вашего центра обработки данных, закройте оболочку CQL и используйте nodetool:

nodetool status
Cassandra keyspace

Если у вас несколько центров обработки данных, перечислите их все в запросе с соответствующими коэффициентами репликации.

Например, запрос для двух центров обработки данных выглядит так:

CREATE KEYSPACE keyspace_network_topology
WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 3, 'datacenter2' : 3};

Проверить ключевое пространство

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

DESCRIBE KEYSPACES;
Cassandra keyspace

Система возвращает список всех доступных пространств ключей Cassandra. Мы выделили два пространства ключей, которые мы создали в приведенных выше примерах. Есть пара пространств ключей по умолчанию, которые поставляются с установкой Cassandra.


Отключить устойчивую запись (Durable Writes)

В Cassandra конфигурация durable_writes по умолчанию имеет значение true. Вы можете отключить его, но только для NetworkTopologyStrategy. Этот параметр сообщает Cassandra, следует ли ей использовать журнал фиксации для внесения обновлений в выбранное пространство ключей.

Когда вы пытаетесь отключить durable_writes при создании пространства ключей с помощью SimpleStrategy, вы получаете предупреждение не делать этого. Причина в том, что вы можете потерять свои данные, если вы не синхронизировали данные из memtable в sstable, и ваш дата-центр выйдет из строя.

Чтобы отключить durable_writes при создании пространства ключей, введите этот запрос:

CREATE KEYSPACE keyspace_durwrites
WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 3}
AND DURABLE_WRITES = false;	

Проверка устойчивых операций записи

Вы можете проверить запрос, который использовался при создании пространства ключей, описав пространство ключей. Также появляется часть durable_writes:

DESCRIBE keyspace_durwrites
Cassandra keyspace

Чтобы проверить настройки durable_writes для всех пространств ключей, запросите system_schema:

SELECT * FROM system_schema.keyspaces;

В выходных данных показаны все пространства ключей и их настройки, включая durable_writes.

Cassandra keyspace

Использование пространства ключей

Чтобы выбрать пространство ключей в Cassandra и выполнить над ним действия, используйте ключевое слово USE.

Синтаксис:

USE keyspace_name

Например:

USE keyspace_durwrites;
Cassandra keyspace

Оболочка CQL переключается на указанное вами имя пространства ключей. Чтобы изменить текущее пространство ключей, используйте ту же команду с другим именем.

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

Изменить ключевое пространство

После создания пространства ключей вы можете изменить конфигурацию с помощью ключевого слова ALTER.

Единственное, что вы не можете изменить, это имя пространства ключей. Помимо этого, вы можете изменить стратегию репликации, коэффициент репликации и устойчивые записи.

Чтобы изменить пространство ключей, следуйте тому же синтаксису, что и при его создании, но используйте ALTER вместо CREATE. Измените значения, которые вы хотите.

Например:

ALTER KEYSPACE keyspace_durwrites
WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 2}
AND DURABLE_WRITES = true;	

Чтобы убедиться, что изменения вступили в силу, используйте ключевое слово DESCRIBE:

Cassandra keyspace

На изображении выше показана конфигурация пространства ключей до и после изменения.


Удалить ключевое пространство

Если вы отбросите ключевое пространство, оно будет удалено из системы. Ключевое слово DROP удаляет из пространства ключей все семейства столбцов, а также индексы и типы данных.

Чтобы удалить пространство ключей в Cassandra, используйте этот синтаксис:

DROP keyspace_name;

Например:

DROP keyspace_durwrites;

Чтобы убедиться, что вы удалили пространство ключей, снова используйте запрос DESCRIBE.


Итоги

Выполнив шаги, описанные в этом руководстве, вы сможете успешно создать пространство ключей в Cassandra. Примеры в этом руководстве показали вам, как создать пространство ключей для разных сред и с разными настройками.

Мы также показали вам, как изменить и удалить ключевое пространство, если вам нужно внести какие-либо изменения.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
DevOps
Скидка 25%
DevOps-инженер с нуля
Научитесь использовать инструменты и методы DevOps для автоматизации тестирования, сборки и развертывания кода, управления инфраструктурой и ускорения процесса доставки продуктов в продакшн. Станьте желанным специалистом в IT-индустрии и претендуйте на работу с высокой заработной платой.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Git Flow - это специальная система ветвления для Git. Она помогает команде лучше контролировать и добавлять различные версии про
img
Docker — популярная платформа виртуализации на уровне ОС. Она поставляет приложения в пакетах (контейнерах), которые, представля
img
Хуки в Git — это bash-скрипты, которые запускаются до или после команд Git, например, коммитов и пушей. Они позволяют автоматизи
img
  Nomad и Kubernetes – это две самые популярные платформы оркестровки, предназначенные для оркестровки динамических рабочих нагр
img
  Давайте узнаем о новом Ops-течении – GitOps! DevOps поспособствовал цифровизации многих компаний. Речь идет о командах разрабо
img
  Канареечное (canary) развёртывание – это метод разработки и развертывания программного обеспечения, который позволяет выпускат
21 ноября
20:00
Бесплатный вебинар
Введение в Docker