Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Utilizzare Cassandra con PHPCassa

Articolo scritto da Ciro Cardone
Pagina 1 di 4

Scopo di questo articolo è quello di mostrare come utilizzare Cassandra nelle nostre applicazioni PHP.
Cassandra nasce come progetto all'interno di Facebook con l'obiettivo di svincolarsi da MySql per la memorizzazione dei messaggi della Inbox.

Cassandra appartiene alla famiglia dei prodotti nosql, ossia quelle soluzioni software che per memorizzare i dati non utilizzano la sintassi SQL e il concetto di relazione, quindi non è un RDBMS, ma un database distribuito, pensato per lavorare in cluster e per gestire grosse moli di dati. Invece che utilizzare i concetti di tabella, tupla e relazione, Cassandra utilizza un approccio column-oriented implementato attraverso l'utilizzo di Hash e Array, ossia memorizza le informazioni nella forma { chiave: valore }.

(L'articolo continua più sotto...)

Come è sviluppato

Cassandra è ora un progetto Apache sviluppato in Java6 quindi assolutamente portabile, avendo come requisito solo l'installazione di una JRE.

Cassandra Project

Le principali features di Cassandra sono:

  1. Decentralizzazione: il database è distribuito su identici nodi all'interno del cluster. Non ci sono colli di bottiglia all'interno del network, nè punti di rottura.
  2. Elasticità: il throughput in lettura/scrittura aumenta linearmente con l'aggiunta di nuove macchine ( nodi ) al cluster senza downtime o disservizi alle applicazioni.
  3. Fault Tolerance: i dati sono automaticamente replicati sui nodi. Ha un supporto per la replicazione su datacenter multipli. I nodi in errore possono essere rimpiazzati senza alcun downtime.
  4. "Durabilità": Cassandra è pensato per applicazioni per cui la perdita di dati risulti critica e anche quando dovesse cadere l'intero data center risolve il problema del data loss attraverso un meccanismo di sincronizzazione basato su commitlog.
  5. Duttilità: è possibile per ogni update scegliere la strategia più corretta alla situazione, la replicazione può essere sincrona o asincrona.

Per avere tutti questi benefici, tuttavia, gli sviluppatori hanno dovuto rinunciare alla gestione delle transazioni.

Il data Model

Le colonne (column) sono il più basso livello di organizzazione dei dati in Cassandra, sono tuple che contengono un nome, un valore e un timestamp. Vengono spesso rappresentate a titolo di esempio con la notazione JSON:

{
  "name": "Nome",
  "value": "Ciro",
  "timestamp": 123456789
}

Name e value sono array di byte ordinati come stringhe UTF-8. La coppia chiave/valore è "labellizzata" con un timestamp. il timestamp serve a Cassandra per capire qual'è il valore più recente ( ricordiamoci che stiamo parlando di un cluster ) quindi per gestire i conflitti.

Le column sono organizzate in column families, che sono l'analogo di una tabella di un database relazionale. Un column family contiene una lista ordinata di colonne, che possono essere referenziate attraverso il loro nome. Ogni column family è salvata in un file separato e il file è ordinato in righe (rows).

Le column families sono a loro volta raggruppate in keyspaces, tipicamente uno per applicazione. Meno usate sono le superColumns, particolari colonne che contengono al loro interno altre colonne.

La tipica struttura a 4 dimensioni di Cassandra è quindi la seguente:

Keyspace -> Column Family -> Column Family Row -> Columns -> Valori
Nel caso in cui aggiungessimo delle SuperColumns:
Keyspace -> Super Column Family -> Super Column Family Row -> Super Columns -> Columns -> Valori

Ecco la rappresentazione in notazione JSON di una struttura semplice:

Users {
  "Ciro": {
    "nickname": "Ci83",
    "cognome": "Cardone"
  }
}
ed una più complessa che utilizza le supercolumns
Users {
  "Ciro": {
    "skills": {
      "Java": "Ottimo",
      "PHP": "Ottimo",
    },
    "anagrafica": {
      "nickname": "Ci83",
      "cognome": "Cardone"
    }
  }
}

Nel keyspace "Users" è definita una chiave "Ciro" con due supercolonne "skills" e "anagrafica" ciascuna delle quali contiene delle coppie chiave/valore.

Corsi
Corso LinuxCorso Linux
Guida completa al sistema open-source. A partire da 39 €.
Corso MySQLCorso MySQL
Gestione del database open-source. A partire da 49 €.
Corso PHPCorso PHP
Corso completo per la creazione di siti Web dinamici. A partire da 49 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122