Image

Installando CassandraDB NoSql in Docker

Apache Cassandra è un DBMS NoSQL distribuito e open source per gestire grandi quantità di dati dislocati in diversi server, fornendo inoltre un servizio orientato alla alte disponibilità.

Introduzione

Apache Cassandra è un DBMS "NOSQL" distribuito e open source. Si tratta di un progetto Top-Level, sviluppato da Apache Software Foundation, per gestire grandi quantità di dati dislocati in diversi server, fornendo inoltre un servizio orientato alla disponibilità, senza alcun point of failure.

Per iniziare avremo bisogno di, aver installato nel nostro linux, l'Engine Docker che potrete trovare in questo link ma se giàa lo avete installato possiamo passare alla creazione del nostro container. Per cominciare abbiamo bisogno di creare un "volume" che permetterà di dare persistenza ai nostri dati:

sudo docker volume create cassandra_data

Sarà necessario creare una cartella locale in cui inserire i file in formato .cql che verranno montati all'interno del container nella cartella /works.

mkdir ~/cassandra

Adesso eseguire il comando per scaricare l'immagine del sistema operativo configurato con CassandraDB e i parametri necessari per alcune specifiche configurazioni:

sudo docker run --name cassandra -d \
    -p 7000:7000 \
    -e CASSANDRA_TRANSPORT_PORT_NUMBER=7000 \
    -e CASSANDRA_JMX_PORT_NUMBER=7199 \
    -e CASSANDRA_CQL_PORT_NUMBER=9042 \
    -e CASSANDRA_USER="cassandra" \
    -e CASSANDRA_PASSWORD="cassandra" \
    -e CASSANDRA_HOST="cassandra" \
    -e CASSANDRA_CLUSTER_NAME=ClusterDB \
    -v cassandra_data:/var/lib/cassandra \
    -v /home/$USER/cassandra:/works\
    cassandra:latest

N.B. la directory "~/cassandra", creata in precedenza, conterrà i nostri file .cql.

Comando per accedere tramite terminale alla shell di CassandraDB

sudo docker exec -it  cassandra cqlsh

Nel caso in cui abbiamo bisogno di eseguire un file, contenente le nostre query SQL, dentro della shell di CassandraDB doremmo usare il seguente comando:

SOURCE '/works/nome_file.cql'

Comando per iniettare codice sql all'interno del container CassandraDB

sudo docker exec -it  cassandra cqlsh -e "SELECT * FROM system_schema.keyspaces;"

Per facilitare l'esecuzione dei comandi è necessario creare un file bash con il vostro editor preferito, Es.:

nano ~/cassandra.sh

e inseriremo dentro il seguente contenuto:

#!/bin/bash
sudo docker exec -it cassandra cqlsh -u $NOMEUSUARIO -p $PASSWORD -f /works/$1

Salvare il file e assegnare i permessi di esecuzione:

chmod +x ~/cassandra.sh

Copiarlo in una directory del S.O. per farlo funzionare rapidamente:

sudo cp ~/cassandra.sh /usr/bin

Già possiamo eseguirlo, digitando solo il comando:

cassandra.sh nome_file.cql