CassandraSE
# CassandraSE

CassandraSE è uno storage engine creato dagli sviluppatori di MariaDB per permettere a questo DBMS (ma anche a Percona Server e MySQL) di interfacciarsi con Apache Cassandra. Cassandra è un DBMS NoSQL, che utilizza concetti piuttosto differenti da quelli usati da MariaDB e gli altri server SQL. Compito di CassandraSE è fare da "ponte" non solo da un punto di vista fisico (permettendo cioè di utilizzare i file scritti da Cassandra) ma anche da un punto di vista logico, permettendo ad esempio di usare le famiglie di colonne come se fossero tabelle relazionali.

La licenza è la GNU GPL versione 2.

## Particolarità delle tabelle CassandraSE

Trattandosi di un'interfaccia verso un server di database che segue una logica completamente differente da quella relazionale, le tabelle CassandraSE devono essere usate con accortezza. Occorre conoscere il funzionamento di Cassandra, quello di MariaDB e sapere in che modo CassandraSE unisce tra loro questi due software.

### Struttura delle tabelle CassandraSE

In Cassandra, le famiglie di colonne hanno un identificativo chiamato rowkey, che potrebbe avere un alias. Nelle tabelle create con CassandraSE dovrà esistere una colonna corrispondente, chiamata appunto "rowkey" oppure con lo stesso alias usato in Cassandra. Su questa colonna deve essere creata la chiave primaria.

Le colonne statiche sono collegate a colonne omonime, create all'interno della tabella CassandraSE. Occorre che queste siano definite con il tipo di dato corrispondente.

Le colonne dinamiche possono essere collegate a un campo BLOB in MariaDB. Questo campo deve avere l'opzione DYNAMIC_COLUMN_STORAGE impostato a 'yes'. MariaDB supporta alcune funzioni apposite per gestire le Colonne Dinamiche, con qualsiasi storage engine.

Le supercolonne non sono supportate.

### Tipi di dati

Cassandra utilizza tipi di dati che in alcuni casi sono più capienti rispetto ai corrispondenti di MySQL e MariaDB. Alcune note su tipi particolari:

* ASCII - Può essere mappato a un VARCHAR che usa la codifica Latin1.
* TEXT - Può essere mappato a un VARCHAR che usa la codifica UTF8.
* COUNTER - Non può essere modificato da CassandraSE e corrisponde a BIGINT.
* VARINT - Può essere collegato a un VARBINARY.
* BIGINT - In Cassandra, questo è l'unico dato numerico a lunghezza fissa.
* BOOLEAN - In MySQL e MariaDB è un alias di TINYINT, ma può essere usato per gestire il BOOLEAN di Cassandra.
* UUID - CassandraSE lo registra come stringa di 36 caratteri.

### Istruzioni

L'istruzione INSERT esegue implicitamente una UPDATE nel caso in cui la riga che si sta inserendo esista già.

SELECT e DELETE funzionano come negli altri storage engine.

