Руководство по Cassandra. Работа с KeySpaces.

В данной статье мы рассмотрим работу с пространствами ключей (keyspaces).

В Cassandra KEYSPACE – это некое пространство имён, которые определяет расположение данных в нодах. Кластер, в этом случае содержит по одному KEYSPACE на каждую ноду.

Создание

Для создания KEYSPACE нам необходимо открыть консоль (cqlsh) и выполнить следующую команду следующего вида:


CREATE KEYSPACE “ИМЯ_ПРОСТРАНСТВА_КЛЮЧЕЙ”
WITH replication = {'class': ‘ИМЯ_СТРАТЕГИИ’, 'replication_factor' : ‘КОЛИЧЕСТВО_РЕПЛИК’}


AND durable_writes = ‘БУЛЕВОЕ_ЗНАЧЕНИЕ’;

На практике, это выглядит, примерно, так:

CREATE KEYSPACE proselyte WITH replication = {'class': 'SimpleStrategy', 'replication_factor':2};

После этого, мы можем проверить, какие пространства ключей у нас есть на локальной машине:

DESCRIBE KEYSPACES;

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

cqlsh> DESCRIBE KEYSPACES;


proselyte system_schema system_auth system system_distributed system_traces

И, среди прочих, мы видим пространство ключей proselyte.

Также, мы можем выполнить следующую команду:

SELECT * from system_schema.keyspaces

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

keyspace_name | durable_writes | replication
--------------------+----------------+-------------------------------------------------------------------------------------
proselyte | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '2'}
system_auth | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '1'}
system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'}
system_distributed | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'}
system_traces | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '2'}

Для того чтобы начать работу с данным KEYSPACE, нам необходимо выполнить команду:


USE proselyte;

После этого в консоли произойдёт небольшое изменение и вместо:

cqlsh>

Мы увидим:

cqlsh:proselyte>

Изменение

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

ALTER KEYSPACE <ИМЯ_ПРОСТРАНСТВА_КЛЮЧЕЙ> ...

Рассмотрим пример.
На данный момент у нас есть KEYSPACE proselyte со следующими настройками:


cqlsh:proselyte> select * from system_schema.keyspaces WHERE keyspace_name = 'proselyte';


keyspace_name | durable_writes | replication
---------------+----------------+-------------------------------------------------------------------------------------
proselyte | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '2'}

Попробуем изменить значение org.apache.cassandra.locator.SimpleStrategy


ALTER KEYSPACE proselyte WITH replication = {'class': 'NetworkTopologyStrategy'};

И повторим запрос select * from system_schema.keyspaces…


cqlsh:proselyte> select * from system_schema.keyspaces WHERE keyspace_name = 'proselyte';

keyspace_name | durable_writes | replication
—————+—————-+——————————————————————-
proselyte | True | {‘class’: ‘org.apache.cassandra.locator.NetworkTopologyStrategy’}


(1 rows)

Как мы видим, значение replication изменилось и теперь, вместо SimpleStrategy мы видим NetworkTopologyStrategy и отсутствие значения replication_factor.

Удаление

Для удаления KEYSPACE нам необходимо выполнить команду вида:

DROP KEYSPACE “ИМЯ_ПРОСТРАНСТВА_КЛЮЧЕЙ”

В нaшем случае, запрос будет иметь следующий вид:

DROP KEYSPACE proselyte;

Проверяем запросом:

DESCRIBE KEYSPACES;

В результате мы увидим:

system_schema system_auth system system_distributed system_traces

Т.е. proselyte в списке уже нет.

На этом мы заканчиваем обзор работы с KEYSPACES.
В следующей статье мы рассмотрим работу с таблицами в Cassandra.