УСТАНОВКА APACHE CASSANDRA

Thank you for reading this post, don't forget to subscribe!

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

Ряд круп­ных игро­ков в онлайн-инду­стрии исполь­зу­ют Apache Cassandra, такие как Netflix, Apple, Uber и eBay.

ШАГ 1: УСТАНОВИТЕ ПАКЕТЫ, НЕОБХОДИМЫЕ ДЛЯ APACHE CASSANDRA

Преж­де чем при­сту­пить к уста­нов­ке Cassandra в Ubuntu, убе­ди­тесь, что вы уста­но­ви­ли Java OpenJDK 8 и пакет api-transport-https.

Если у вас уже уста­нов­ле­ны эти паке­ты, вы може­те перей­ти к шагу 2 руководства.

При­ме­ча­ние. В каче­стве при­ме­ров мы исполь­зо­ва­ли Ubuntu 20.04, но инструк­ции при­ме­ни­мы и к дру­гим вер­си­ям Ubuntu.

УСТАНОВИТЕ JAVA OPENJDK

Apache Cassandra нуж­да­ет­ся в OpenJDK 8 для рабо­ты в систе­ме Ubuntu. Сна­ча­ла обно­ви­те репо­зи­то­рий пакетов:

Когда про­цесс завер­шит­ся, уста­но­ви­те OpenJDK 8 с помо­щью сле­ду­ю­щей команды:

Когда уста­нов­ка завер­шит­ся, про­верь­те, успеш­но ли уста­нов­ле­на Java, про­ве­рив вер­сию Java:

На выхо­де долж­на быть пока­за­на вер­сия Java.

Вто­рая циф­ра (8) пред­став­ля­ет вер­сию Java.

УСТАНОВИТЕ ПАКЕТ APT-TRANSPORT-HTTPS

Затем уста­но­ви­те транс­порт­ный пакет APT. Вам необ­хо­ди­мо доба­вить этот пакет в свою систе­му, что­бы раз­ре­шить доступ к репо­зи­то­ри­ям с исполь­зо­ва­ни­ем HTTPS.

Вве­ди­те эту команду:

В при­ве­ден­ном выше при­ме­ре выде­ле­ны послед­ние два шага про­цес­са уста­нов­ки apt-transport-https.


ШАГ 2. ДОБАВЬТЕ РЕПОЗИТОРИЙ APACHE CASSANDRA И ИМПОРТИРУЙТЕ КЛЮЧ GPG

Вам нуж­но доба­вить репо­зи­то­рий Apache Cassandra и полу­чить ключ GPG перед уста­нов­кой базы данных.

Вве­ди­те коман­ду ниже, что­бы доба­вить репо­зи­то­рий Cassandra в спи­сок источников:

Вывод воз­вра­ща­ет­ся к новой стро­ке без сообщения.

Послед­ний круп­ный выпуск Cassandra на момент напи­са­ния этой ста­тьи — 4.0. Вот поче­му мы исполь­зо­ва­ли 40 в коман­де. Что­бы уста­но­вить более ста­рую вер­сию, напри­мер 3.9, заме­ни­те 40x на 39x.

Затем исполь­зуй­те коман­ду wget, что­бы полу­чить откры­тый ключ по ука­зан­но­му ниже URL-адресу:

Если вы пра­виль­но вве­ли коман­ду и URL-адрес, на выхо­де выво­дит­ся сооб­ще­ние «ОК».

При­ме­ча­ние: обра­ти­те вни­ма­ние на регистр букв в URL-адре­се выше. Вам нуж­но вве­сти пра­виль­ный регистр и тире в кон­це команды.


ШАГ 3: УСТАНОВИТЕ APACHE CASSANDRA

Теперь вы гото­вы уста­но­вить Cassandra на Ubuntu.

Обно­ви­те спи­сок паке­тов репозитория:

Затем запу­сти­те коман­ду установки:

В при­ве­ден­ном выше выво­де пока­зан послед­ний раз­дел про­це­ду­ры уста­нов­ки Cassandra в Ubuntu 20.04. Вывод дол­жен выгля­деть ана­ло­гич­но в более ста­рых вер­си­ях Ubuntu.

При­ме­ча­ние. После завер­ше­ния уста­нов­ки служ­ба Cassandra запус­ка­ет­ся авто­ма­ти­че­ски. Так­же в про­цес­се созда­ет­ся поль­зо­ва­тель cassandra. Этот поль­зо­ва­тель исполь­зу­ет­ся для запус­ка службы.

ПРОВЕРКА УСТАНОВКИ APACHE CASSANDRA

Нако­нец, что­бы убе­дить­ся, что про­цесс уста­нов­ки Cassandra завер­шил­ся пра­виль­но, про­верь­те состо­я­ние кластера:

Бук­вы UN в выво­де сиг­на­ли­зи­ру­ют о том, что кла­стер работает.

Вы так­же може­те про­ве­рить ста­тус Cassandra, введя:

Выход дол­жен отоб­ра­жать­ся как active (running) зеле­ным цветом.

КОМАНДЫ ДЛЯ ЗАПУСКА, ОСТАНОВКИ И ПЕРЕЗАПУСКА СЛУЖБЫ CASSANDRA

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

Исполь­зуй­те сле­ду­ю­щую коман­ду для запус­ка Cassandra:

Еще раз про­верь­те ста­тус услу­ги. Он дол­жен изме­нить­ся на активный.

Что­бы пере­за­пу­стить служ­бу, исполь­зуй­те коман­ду перезапуска:

Что­бы оста­но­вить служ­бу Cassandra, введите:

Ста­тус отоб­ра­жа­ет­ся как неак­тив­ный после исполь­зо­ва­ния коман­ды остановки.

АВТОМАТИЧЕСКИ ЗАПУСКАТЬ СЛУЖБУ APACHE CASSANDRA ПРИ ЗАГРУЗКЕ

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

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

Теперь, если ваша систе­ма пере­за­гру­зит­ся, служ­ба Cassandra вклю­ча­ет­ся автоматически.


ШАГ 4. НАСТРОЙКА APACHE CASSANDRA

Вы може­те изме­нить настрой­ки кон­фи­гу­ра­ции Cassandra в зави­си­мо­сти от ваших тре­бо­ва­ний. Кон­фи­гу­ра­ции по умол­ча­нию доста­точ­но, если вы соби­ра­е­тесь исполь­зо­вать Cassandra на одной ноде. При исполь­зо­ва­нии Cassandra в кла­сте­ре вы може­те настро­ить основ­ные пара­мет­ры с помо­щью фай­ла cassandra.yaml.

Мы реко­мен­ду­ем создать резерв­ную копию фай­ла cassandra.yaml, если вы соби­ра­е­тесь его редак­ти­ро­вать. Для это­го исполь­зуй­те эту команду:

Мы исполь­зо­ва­ли ката­лог /etc/cassandra в каче­стве места назна­че­ния для резерв­ной копии, но вы може­те изме­нить путь по сво­е­му усмотрению.

ПЕРЕИМЕНОВАТЬ КЛАСТЕР APACHE CASSANDRA

Исполь­зуй­те тек­сто­вый редак­тор по ваше­му выбо­ру, что­бы открыть файл cassandra.yaml (мы будем исполь­зо­вать nano):

Най­ди­те стро­ку, кото­рая гла­сит cluster_name:. Имя по умол­ча­нию — Test Cluster. Это пер­вое изме­не­ние, кото­рое вы хоти­те сде­лать, когда нач­не­те рабо­тать с Cassandra.

Если вы не хоти­те вно­сить допол­ни­тель­ные изме­не­ния, вый­ди­те и сохра­ни­те файл.

ДОБАВИТЬ IP-АДРЕСА УЗЛОВ CASSANDRA

Еще одна вещь, кото­рую вы долж­ны доба­вить в cassandra.yaml, если вы исполь­зу­е­те кла­стер, — это IP-адрес каж­до­го узла.

Открой­те файл кон­фи­гу­ра­ции и в раз­де­ле seed _provider най­ди­те запись seeds

Добавь­те IP-адрес каж­до­го узла в вашем кла­сте­ре. Раз­де­ли­те запи­си, исполь­зуя запя­тую после каж­до­го адреса.

ШАГ 5. ПРОТЕСТИРУЙТЕ ОБОЛОЧКУ КОМАНДНОЙ СТРОКИ CASSANDRA

Про­грамм­ный пакет Cassandra постав­ля­ет­ся с инстру­мен­том команд­ной стро­ки (CLI). Этот инстру­мент исполь­зу­ет язык запро­сов Cassandra - CQL для связи.

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

Загру­жа­ет­ся обо­лоч­ка, пока­зы­ва­ю­щая под­клю­че­ние к кла­сте­ру по умол­ча­нию. Если вы изме­ни­ли пара­метр cluster_name, он пока­жет тот, кото­рый вы опре­де­ли­ли в фай­ле кон­фи­гу­ра­ции. В при­ве­ден­ном выше при­ме­ре пока­за­но под­клю­че­ние по умол­ча­нию к локаль­но­му хосту.

РАБОТА С ТАБЛИЦАМИ В APACHE CASSANDRA

Apache Cassandra — это про­грамм­ное обес­пе­че­ние рас­пре­де­лен­ной базы дан­ных с откры­тым исход­ным кодом для рабо­ты с база­ми дан­ных NoSQL. Это про­грамм­ное обес­пе­че­ние исполь­зу­ет язык запро­сов Cassandra - CQL в каче­стве осно­вы для свя­зи. CQL хра­нит дан­ные в таб­ли­цах, орга­ни­зо­ван­ных в виде набо­ра строк со столб­ца­ми, содер­жа­щи­ми пары ключ-значение.

Таб­ли­цы CQL сгруп­пи­ро­ва­ны в кон­тей­не­ры дан­ных, кото­рые в Cassandra назы­ва­ют­ся про­стран­ства­ми клю­чей (keyspace). Дан­ные, хра­ня­щи­е­ся в одном про­стран­стве клю­чей, не свя­за­ны с дру­ги­ми дан­ны­ми в кла­сте­ре. Таким обра­зом, вы може­те иметь таб­ли­цы для раз­ных целей в отдель­ных про­стран­ствах клю­чей в кла­сте­ре, и дан­ные не будут совпадать.

ВЫБОР ПРОСТРАНСТВА КЛЮЧЕЙ ДЛЯ ТАБЛИЦЫ CASSANDRA

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

ВАРИАНТ 1: КОМАНДА USE

Запу­сти­те коман­ду USE, что­бы выбрать про­стран­ство кла­виш, к кото­ро­му будут при­ме­нять­ся все ваши коман­ды. Для это­го в обо­лоч­ке cqlsh введите:

Затем вы може­те начать добав­лять таблицы.

ВАРИАНТ 2. УКАЖИТЕ ИМЯ ПРОСТРАНСТВА КЛЮЧЕЙ В ЗАПРОСЕ

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

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


БАЗОВЫЙ СИНТАКСИС ДЛЯ СОЗДАНИЯ ТАБЛИЦ CASSANDRA

Созда­ние таб­лиц с помо­щью CQL похо­же на SQL-запро­сы. В этом раз­де­ле мы пока­жем вам основ­ной син­так­сис для созда­ния таб­лиц в Cassandra.

Основ­ной син­так­сис для созда­ния таб­ли­цы выгля­дит сле­ду­ю­щим образом:

При жела­нии вы може­те опре­де­лить допол­ни­тель­ные свой­ства и зна­че­ния таб­ли­цы, исполь­зуя WITH:

Напри­мер, исполь­зуй­те его, что­бы опре­де­лить, как хра­нить дан­ные на дис­ке или исполь­зо­вать ли сжатие.


ТИПЫ ПЕРВИЧНЫХ КЛЮЧЕЙ CASSANDRA

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

Суще­ству­ет несколь­ко типов пер­вич­ных ключей:

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

КАК СОЗДАТЬ ТАБЛИЦУ CASSANDRA

В сле­ду­ю­щих раз­де­лах объ­яс­ня­ет­ся, как созда­вать таб­ли­цы с раз­лич­ны­ми типа­ми пер­вич­ных клю­чей. Сна­ча­ла выбе­ри­те про­стран­ство клю­чей, в кото­ром вы хоти­те создать таб­ли­цу. В нашем случае:

Каж­дая таб­ли­ца содер­жит столб­цы и тип дан­ных Cassandra для каж­дой записи.

СОЗДАТЬ ТАБЛИЦУ С ПРОСТЫМ ПЕРВИЧНЫМ КЛЮЧОМ

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

CQL-запрос выгля­дит сле­ду­ю­щим образом:

Этот запрос создал таб­ли­цу с име­нем supplier с supp_id в каче­стве пер­вич­но­го клю­ча для таб­ли­цы. Когда вы исполь­зу­е­те про­стой пер­вич­ный ключ с име­нем столб­ца в каче­стве клю­ча раз­де­ла, вы може­те поме­стить его либо в нача­ло запро­са (рядом со столб­цом, кото­рый будет слу­жить пер­вич­ным клю­чом), либо в конец, а затем ука­зать имя столбца:

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

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

Что­бы отоб­ра­зить содер­жи­мое таб­лиц, введите:

Вывод пока­зы­ва­ет все столб­цы, опре­де­лен­ные при созда­нии таблицы.

Дру­гой спо­соб про­смот­реть све­де­ния о таб­ли­це — исполь­зо­вать DESCRIBE и ука­зать имя таблицы:

В выход­ных дан­ных отоб­ра­жа­ют­ся столб­цы и настрой­ки по умол­ча­нию для таблицы.

СОЗДАТЬ ТАБЛИЦУ С СОСТАВНЫМ ПЕРВИЧНЫМ КЛЮЧОМ

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

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

Схе­ма таб­ли­цы выгля­дит так:

В этом слу­чае мы исполь­зо­ва­ли supp_product и supp_id для созда­ния уни­каль­но­го состав­но­го клю­ча. Здесь пер­вая запись в скоб­ках supp_product — это ключ раз­де­ла. Он опре­де­ля­ет, где хра­нить дан­ные, то есть как систе­ма раз­де­ля­ет данные.

Сле­ду­ю­щая запись — стол­бец кла­сте­ри­за­ции, опре­де­ля­ю­щий, как Cassandra сор­ти­ру­ет дан­ные, в нашем слу­чае — по supp_id.

Изоб­ра­же­ние выше пока­зы­ва­ет, что таб­ли­ца была успеш­но созда­на. Что­бы про­ве­рить дета­ли таб­ли­цы, запу­сти­те запрос DESCRIBE TABLE для новой таблицы:

Настрой­ки по умол­ча­нию для поряд­ка кла­сте­ри­за­ции — по воз­рас­та­нию (ASC). Вы може­те перей­ти на нис­хо­дя­щий (DESC), доба­вив сле­ду­ю­щий опе­ра­тор после пер­вич­но­го ключа:

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

СОЗДАНИЕ ТАБЛИЦ С ИСПОЛЬЗОВАНИЕМ СОСТАВНОГО КЛЮЧА РАЗДЕЛА

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

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

В при­ве­ден­ном выше при­ме­ре мы раз­де­ли­ли дан­ные на две кате­го­рии: рас­ход­ные мате­ри­а­лы постав­щи­ка и про­дук­ты, запа­са­е­мые на скла­де, и рас­пре­де­ли­ли дан­ные с помо­щью состав­но­го клю­ча раздела.

При­ме­ча­ние. При таком раз­де­ле­нии каж­дая кате­го­рия про­дук­тов хра­нит­ся на отдель­ном узле, а не в одном разделе.

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


УДАЛИТЬ ТАБЛИЦУ В CASSANDRA

Что­бы уда­лить таб­ли­цу в Cassandra, исполь­зуй­те опе­ра­тор DROP TABLE. Что­бы выбрать таб­ли­цу, кото­рую вы хоти­те уда­лить, введите:

Най­ди­те таб­ли­цу, кото­рую хоти­те уда­лить. Исполь­зуй­те имя таб­ли­цы, что­бы уда­лить ее:

Запу­сти­те запрос DESCRIBE TABLES еще раз, что­бы убе­дить­ся, что вы успеш­но уда­ли­ли таблицу.

ИЗМЕНИТЬ ТАБЛИЦУ В CASSANDRA

Cassandra CQL поз­во­ля­ет добав­лять или уда­лять столб­цы из таб­ли­цы. Исполь­зуй­те коман­ду ALTER TABLE, что­бы вне­сти изме­не­ния в таблицу.

ДОБАВИТЬ СТОЛБЕЦ В ТАБЛИЦУ

Перед добав­ле­ни­ем столб­ца в таб­ли­цу реко­мен­ду­ет­ся про­смот­реть содер­жи­мое таб­ли­цы, что­бы убе­дить­ся, что имя столб­ца еще не существует.

После про­вер­ки исполь­зуй­те запрос ALTER TABLE в этом фор­ма­те, что­бы доба­вить столбец:

Сно­ва исполь­зуй­те DESCRIBE TABLE, что­бы убе­дить­ся, что стол­бец появил­ся в списке.

УДАЛИТЬ СТОЛБЕЦ ИЗ ТАБЛИЦЫ

Подоб­но добав­ле­нию столб­ца, вы може­те уда­лить стол­бец из таб­ли­цы. Най­ди­те стол­бец, кото­рый вы хоти­те уда­лить, с помо­щью запро­са DESCRIBE TABLES.

Затем вве­ди­те:

При­ме­ча­ние. Не ука­зы­вай­те тип дан­ных для столб­ца, если вы хоти­те уда­лить его из таб­ли­цы. Вы полу­чи­те ошиб­ку “SyntaxException: line 1:48 mismatched input ‘text’ expecting EOF (ALTER TABLE suppliers_by_product DROP supp_name [text]…)”


ОЧИСТИТЬ ТАБЛИЦУ В CASSANDRA

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

Напри­мер, что­бы уда­лить все стро­ки из таб­ли­цы постав­щи­ков, введите:

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

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

 

 

СОЗДАТЬ ПРОСТРАНСТВО КЛЮЧЕЙ В APACHE CASSANDRA

 

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

ЧТО ТАКОЕ ПРОСТРАНСТВО КЛЮЧЕЙ В CASSANDRA?

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

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


КОМПОНЕНТЫ ПРОСТРАНСТВА КЛЮЧЕЙ CASSANDRA

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

СТРАТЕГИЯ РЕПЛИКАЦИИ

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

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

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

ФАКТОР РЕПЛИКАЦИИ

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

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

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


БАЗОВЫЙ СИНТАКСИС ПРОСТРАНСТВА КЛЮЧЕЙ

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

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

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


СОЗДАТЬ ПРОСТРАНСТВО КЛЮЧЕЙ С ПОМОЩЬЮ CQLSH

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

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

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

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

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

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

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

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

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

ПРОВЕРИТЬ КЛЮЧЕВОЕ ПРОСТРАНСТВО

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

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


ОТКЛЮЧИТЬ УСТОЙЧИВУЮ ЗАПИСЬ (DURABLE WRITES)

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

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

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

ПРОВЕРКА УСТОЙЧИВЫХ ОПЕРАЦИЙ ЗАПИСИ

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

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

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

ИСПОЛЬЗОВАНИЕ ПРОСТРАНСТВА КЛЮЧЕЙ

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

Син­так­сис:

Напри­мер:

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

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


ИЗМЕНИТЬ КЛЮЧЕВОЕ ПРОСТРАНСТВО

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

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

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

Напри­мер:

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

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


УДАЛИТЬ КЛЮЧЕВОЕ ПРОСТРАНСТВО

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

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

Напри­мер:

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