Categories
database React web

Database remoto (2)

Alcune caratteristiche di Apache Cassandra sono molto interessanti.

Apache Cassandra può essere installato su diversi nodi fisici e memorizza i dati in modo distributo.

Dato che ogni server-nodo contiene una replica parziale dei dati, esso fornisce un servizio molto affidabile e con elevata disponibilità.

All’aumentare del numero dei nodi aumentano in modo proporzionale anche le prestazioni (in termini di numero di operazioni al secondo).

Dato che le applicazioni che usano i database richiedono una bassa latenza delle operazioni di scrittura e lettura, Cassandra non usa il tradizionale modello di dati relazionale.
Inoltre Cassandra non usa chiavi esterne, non memorizza le tabelle in forma normalizzata e non esegue operazioni di join tra tabelle che si trovano in diverse partizioni dei dati. In questi casi il join puo’ essere fatto nel client.

Al contrario, invece delle tabelle in forma normalizzata, i dati sono basati sul formato più utile alle query (query-driven modelling).
Alcuni dati sono ridondanti, in modo che sia più semplice eseguire le interrogazioni.

Una istanza di Cassandra può contenere i dati di diverse applicazioni, ma i dati di ogni applicazione sono separati dagli altri grazie ad un diverso Keyspace.
Grazie al diverso keyspace si possono definire anche diverse regole nella strategia di replica dei dati nei vari nodi.

Le parole chiave sono:

  • keyspace separa le tabelle di diverse applicazioni
  • tabella, composta da diverse partizioni.
  • primary key: ogni tabella contiene una primary key, spesso composta da più colonne, per identificare in modo univoco una riga nella tabella.
  • Quando la primary key è composta da più colonne, allora queste si chiamano:
    • partition key: le tabelle sono divise in partizioni (gruppi di righe) in modo da migliorare le prestazioni del database. Se la primary key è composta da non ci sono altre colonne, la partition key coincide con la primary key.
    • clustering column: le colonne successive alla partition key servono anche a definire il clustering order
  • colonna static, presente solo se esistono clustering column, dove tutte le righe condividono lo stesso valore
  • colonna index, usata per velocizzare le ricerche (hashing).
  • row, ogni riga è composta da colonne
  • datum, ovvero la colonna, che contiene il singolo dato e il tipo di dato.

Alcune dei tipi di dato sono:

  • bigint
  • counter
  • decimal
  • double
  • boolean
  • text
  • varchar
  • time
  • date
  • timestamp

Per accedere al database remoto si può specificare:
indirizzo IP, porta, keyspace, datacenter, username e password

Apache Cassandra usa il linguaggio CQL, che è simile al linguaggio SQL

Esempi di codice CQL

Per mostrare la lista dei keyspace

DESC keyspaces

Per creare un nuovo keyspace (space1)

CREATE KEYSPACE space1
  WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};

Per usare il keyspace

USE space1;

Per creare una tabella (tab1)

CREATE TABLE tab1 (
    id text PRIMARY KEY,
    name text,
    birthday date,
    last_access timestamp
);

Per mostrare la lista delle tabelle

DESC tables;

Leave a Reply