CouchDB e Rails: interrogare il database

10 novembre 2009

Interrogare il database

Concludiamo questo piccolo tutorial introducendo una ricerca per destinazione, per fare questo dovremo in primis creare la funzione map necessaria e successivamente invocarla dall’interno della nostra applicazione.

Il primo passo di questa procedura consiste nel creare una cartella all’interno di db/app/trip_archives chiamata (la scelta è arbitraria) by_destination (in quanto la ‘query’ che stiamo creando ci consentirà di filtrare i documenti a seconda della loro destinazione). All’interno di questa cartella posizioniamo un file dal nome map.js contenente:

function(doc) {
  if (doc.destination != null) {
    emit(doc.destination, doc);
  }
};

Possiamo valutare il funzionamento di quanto appena creato eseguendo in un prompt dei comandi posizionato nella root dell’applicazione:

couchapp push db/app/trip_archives trip_archives

e successivamente utilizzando la select select view all’interno di Futon per scegliere la ‘query’ by_destination (sempre dopo aver scelto il database trip_archives).

Apriamo ora la console della nostra applicazione (ruby script/console) e digitiamo:

>> Travel.view('trip_archives','trip_archives/by_destination', :key=>'London').rows.size
=> 1
>> Travel.view('trip_archives','trip_archives/by_destination', :key=>'London').rows.first.partecipants
=> ["sandro", "francesca"]
>> Travel.view('trip_archives','trip_archives/by_destination', :key=>'Nairobi').rows.size
=> 0

Il metodo view, non presente in ActiveRecord, consente di chiamare una ‘query’ (il cui nome formale è, com’è ormai intuibile. ‘view’) specificandone il nome. L’opzione :key server per filtrare l’elenco dei risultati su di uno specifico valore (es: ‘London’); se omessa, la view ritornerà l’intero elenco di documenti che rispondono ai criteri della funzione map invocata.

L’applicazione trip_archive è disponibile per il download.

Conclusioni

In questo articolo di carne al fuoco ce n’è parecchia; ho cercato di coprire il maggior numero di funzionalità possibili in modo da proporre una buona visione d’insieme, visione che ritengo necessaria al fine di poter meglio valutare i pregi ed i difetti di questa tecnologia che, pur soffrendo di tutti problemi legati alla sua giovinezza (soprattutto per quanto riguarda la parte di integrazione con Rails) riesce comunque a proporre uno schema operativo innovativo e molto attraente.

CouchDB si pone come serio concorrente ai database relazionali per tutte quelle applicazioni che nativamente implementano un approccio document-oriented: cataloghi, CMS e forum sono tra le tipologie che più beneficiano di questa strutturazione. Senza contare che CouchDB offre un buon controllo di versione e, a differenza di molti suoi ‘cugini’ relazionali, non ha alcun problema a scalare in caso il traffico lo richieda.

Se vuoi aggiornamenti su CouchDB e Rails: interrogare il database inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su CouchDB e Rails: interrogare il database

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy