В данной статье мы рассмотрим работу с пространствами ключей (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.