paolo@bimodesign.com | +34 608 61 64 10

Framework

        

PHP e NoSql - Couchbase

Inizio con questo articolo, l'analisi di come implementare una soluzione NoSQL, in particolare quella offerta da CouchBase (che ricordo comprende CouchDB), usando il linguaggio PHP.
In questo articolo non mi soffermero' su cosa si intenda NoSQL e quali sono le differenze, anche piuttosto marcate, nei vari approcci. Uno schema delle varie soluzioni esistenti e le loro differenze le potete trovare a questo http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis (Nota: copiare-incollare il link sul browser per visualizzare la pagina...) dove viene fatto un confronto tra Cassandra, MongoDB, CouchDB (couchBase), Redis, Riak, HBase, Membase e Neo4j, mentre per una breve panoramica sul mondo NoSql, per ora vi rimando al sempre ottimo wikipedia (link in inglese), ma presto ci tornero' su, con articoli mirati all'analisi e alla definizione dell'architettura adatta alle mie esigenze, ovvero la cosidetta "document-oriented database stores".

Questo primo articolo trattera' i passi necessari per l'installazione di CouchBase su piattaforma Linux-Ubuntu e un primo, banalissimo esempio php.
Iniziamo...

Innanzitutto, rimando a questo link, dove viene indicata la differenza tra CouchBase e CouchDB che, come leggerete non esiste. Infatti la seconda e' la soluzione che viene integrata nella prima :)
Detto questo, procediamo con i passi necessari all'installazione.
Innanzitutto, occorre scaricare la versione piu' appropriata al vostro sistema operativo, a questo link. Io ho scelto la couchbase-server-enterprise_x86_64_1.8.0.deb per Ubuntu.
Quindi lanciare il seguente comando

shell> sudo dpkg -i couchbase-server-enterprise_x86_64_1.8.0.deb

ed al termine dell'installazione, verificare che tutto e' andato correttamente, digitando nel browser, questo link

http://paolo:8091/ o http://127.0.0.1:8091/

Quindi cliccare su start, inserire la password di amministratore e lasciare inalterate tutte le configurazioni indicate nelle schermate.
Terminato, con successo questo passaggio, verifichiamo se il database e' stato installato, attraverso una connessione telnet e digitando in seguenza e senza salti di riga, questi comandi

set test_key 0 0 1
a
STORED
get test_key
VALUE test_key 0 1
a
END
quit

L'installazione ha terminato :)
Ora, prima di procedere all'installazione del Client PHP, qualche breve considerazione.
- I file del base dati, nel mio sistema, sono stati salvati in /opt/couchbase/var/lib/couchbase/data/default-data - Per fare lo shutdown e lo startup, digitare questi comandi

shell> sudo /etc/init.d/couchbase-server start
shell> sudo /etc/init.d/couchbase-server stop

- Per configurare i cluster e le altre potenzialita' di CouchBase, fare riferimento al capitolo 4 Best Pratices di questo manuale. In seguito dedichero' un articolo approfondito a questo argomento.
- Per come sviluppare con CouchBase, fare riferimento al capitolo 9 Developing with Couchbase.

Quindi ora procediamo con l'installazione del client php 1.0 .
Pero', prima, un altro passo previo. Occorre infatti aver installato le librerie del client C.
Per Ubuntu esistono due versioni, quella per oneiric (versione 11) ma che e' considerata instabile e quella per la versione 10 (lucid) che risulta invece quella funzionante. Io, anche avendo sul mio sistema la versione 11.04 di Ubuntu, ho scelto la seconda perche' la prima appunto, mi ha dato problemi.
Per eseguire l'installazione della libreria C, effettuare le seguenti modifiche
Aggiungere questa linea nel file /etc/apt/sources.list.d/couchbase.list

  # Ubuntu 10.04 Lucid Lynx (Debian stable or testing)
  deb http://packages.couchbase.com/ubuntu lucid lucid/main

verificare che abbiamo installato sul nostro sistema il GPG key

shell>  wget -O- http://packages.couchbase.com/ubuntu/couchbase.key | \
sudo apt-key add -

quindi procedere installando il client C

shell> sudo apt-get update && sudo apt-get install libcouchbase-dev

Bene... ci siamo quasi.
Installiamo finalmente la versione del client php.
- Scaricare da questo link la versione appropriata.
- Quindi, come indicato nell'articolo linkato, decomprimere il file, e modificare php.ini, cosi'

extension=/home/paolo/php-ext-couchbase/couchbase.so

e per concludere, creaiamo la nostra prima collection ed il nostro primo document


$cb = new Couchbase("paolo:8091", "admin", "password", "default");
$cb->set("a", 1);
var_dump($cb->get("a"));