bin — содержит исполняемые файлы для управления сервером Cassandra, клиент интерфейса командной строки (CLI), различные утилиты (такие как nodetool для управления нодами кластера); при установке из репозитория — большая часть этих утилит (cqlsh, nodetool) находятся в /usr/bin/, а cassandra — в /usr/sbin/;
conf — файлы конфигурации Cassandra: cassandra.yaml — основной файл конфигурации сервера, storage-conf.xml отвечает за создание и настройку хранилища данных, файлы настройки авторизации, файл настроек log4j для управления логами; при установке из репозитория — они обычно расположены в /etc/cassandra/;
interface — содержит один файл cassandra.thrift, который предоставляет API для клиентов, описанный с помощью Thrift;
javadoc — документация, созданная с помощью JavaDoc; включает в себя только содержимое комментариев из Java-кода, и не является полноценной документацией по Cassandra;
lib — содержит внешние библиотеки, необходимые для работы Cassandra;
pylib — Python-драйвер для Cassandra; может быть установлен отсюда, либо из PIP (pip install cassandra-driver);
tools — некоторые утилиты, например — cassandra-stress для нагрузочного тестирования; при установке из репозитория — находятся в каталоге /usr/bin/.
При установке скомпилированной версии — перед запуском создайте и установите владельца для каталогов:
Замените setevoy на пользователя, от имени которого будет запускаться Cassandra.
Теперь можно запускать сервер:
$ cd apache-cassandra-2.0.14/
$ ./bin/cassandra -f
Cassandra CLI и cqlsh
Для управления сервером и нодами можно использовать имеющуюся утилиту командной строки cassandra-cli (которая использует упомянутый выше Thrift-сервер):
$ ./bin/cassandra-cli
Connected to: "Test Cluster" on 127.0.0.1/9160
Welcome to Cassandra CLI version 2.0.14
Но она уже считается устаревшей:
The CLI is deprecated and will be removed in Cassandra 3.0
И поэтому используем утилиту cqlsh:
$ ./bin/cqlsh
Connected to Test Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.14 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh>
Cassandra используется язык запросов CQL (Cassandra Query Language).
Подсказка по командам
cqlsh> ?
Documented shell commands:
===========================
CAPTURE COPY DESCRIBE EXPAND SHOW TRACING
CONSISTENCY DESC EXIT HELP SOURCE
CQL help topics:
================
ALTER CREATE_TABLE_OPTIONS SELECT
...
CREATE_KEYSPACE PERMISSIONS
CREATE_TABLE REVOKE
Для получения подсказки по конкретной команде:
cqlsh> HELP SHOW
SHOW [cqlsh only]
Displays information about the current cqlsh session. Can be called in
the following ways:
...
SHOW SESSION <sessionid>
Pretty-prints the requested tracing session.
После установки Cassandra имеет только два пространства ключей (keyspace), которые можно посмотреть так:
cqlsh> describe keyspaces;
system system_traces
Они являются аналогами баз mysql и performance_shema в MySQL и не предназначены для работы пользователя.
Получить информацию по самому кластеру, к которому вы подключены, можно так:
cqlsh> describe cluster;
Cluster: Test Cluster
Partitioner: Murmur3Partitioner
Snitch: SimpleSnitch
Больше про команду DESCRIBE можно почитать тут>>>,
Пространство ключей (keyspace) — что-то схожее с базой данных в реляционных базах данных, которая содержит описание одной или нескольких семейств колонок (column family), которые, грубо говоря, являются аналогами таблиц в базах типа MySQL.
Для создания нового keyspace — используется команда CREATE KEYSPACE:
Если вызвать desc keyspace testkeyspace ещё раз — мы увидим новую таблицу:
cqlsh:testkeyspace> desc keyspace testkeyspace;
CREATE KEYSPACE testkeyspace WITH replication = {
'class': 'SimpleStrategy',
'replication_factor': '1'
};
USE testkeyspace;
CREATE TABLE users (
lastname text,
age int,
city text,
email text,
firstname text,
PRIMARY KEY ((lastname))
) WITH
bloom_filter_fp_chance=0.010000 AND
caching='KEYS_ONLY' AND
comment='' AND
dclocal_read_repair_chance=0.100000 AND
gc_grace_seconds=864000 AND
index_interval=128 AND
read_repair_chance=0.000000 AND
replicate_on_write='true' AND
populate_io_cache_on_flush='false' AND
default_time_to_live=0 AND
speculative_retry='99.0PERCENTILE' AND
memtable_flush_period_in_ms=0 AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'LZ4Compressor'};
Для изменения таблиц — используется ALTER TABLE. Например — что бы удалить колонку firstname:
cqlsh:testkeyspace> ALTER TABLE users DROP firstname;