Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicit� Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Guida all'uso di OrientDB: i concetti di RecordID e Cluster
Scritto da Luca Garulli il 25-01-2011 ore 10:05
Parallel Studio
Nella puntata precedente abbiamo cominciato a giocare con OrientDB; in questo appuntamento approfondiremo i due concetti che sono alla base del DBMS stesso: RecordID e Cluster. Per i nostri esperimenti utilizzeremo la console vista nella puntata precedente. Per visualizzare tutti i record contenuti in una classe c' il comando browse class <class-name>.

Per esempio:
  1. > browse class OUser

In questo caso stiamo visualizzando tutti gli utenti del database; pi avanti approfondiremo il sistema di sicurezza di OrientDB, ma per adesso OUser una classe come un'altra. Per ogni interrogazione la console ci mostra sempre il numero del record all'interno del resultset e il Record ID.

5386535625_20b5c167b6_b.jpg

Il primo serve come identificativo per una visualizzazione di dettaglio; per mostrare il primo record in dettaglio occorre utilizzare il comando display <#> dove # il numero di record:
  1. > display 0


5387141304_bc7dc48cff_z.jpg

Ogni record in OrientDB ha un proprio ID autoassegnato e univoco all'interno del database, composto da due parti <cluster-id>:<cluster-position>. Cos' un cluster?

Il cluster altro non che un raggruppamento di record. L'equivalente del mondo relazionale sarebbe la tabella, ma un cluster pu raggruppare anche record eterogenei, quindi non appartenenti allo stesso tipo. Ogni database pu avere al massimo 32.767 cluster (215) e ogni singolo cluster pu gestire fino a 9.223.372.035 miliardi di record (263). La dimensione massima di un database in record quindi di 278 record, ossia 302.231.454.903.657 miliardi di record. Probabilmente non arriveremo neanche vicini a questi numeri, quindi lunico limite che dobbiamo realmente ricordare il numero di cluster.

Ci sono 3 tipi di cluster:
  • cluster fisico (physical o local), che scrive direttamente sul file system;
  • cluster logico, che si appoggia al cluster fisico, pi lento, pesante, ma ha il vantaggio di non creare dei file. Nella maggior parte dei casi questo non affatto un problema, ma in sistemi dove ci sono delle restrizioni sul numero dei file utilizzati il cluster logico da preferire;
  • cluster in memoria (memory): tutte le informazioni contenute in questo tipo di cluster sono volatili, e quindi andranno perdute alla terminazione del processo o del server se il database remoto.
Per la stragrande maggioranza dei casi i cluster fisici sono da preferire, perch sono pi leggeri e performanti. Quando si vogliono memorizzare informazioni temporanee o come cache applicativa, i cluster "in memoria" possono essere una buona scelta. La bella notizia che di default OrientDB crea sempre cluster fisici, quindi per adesso possiamo anche non preoccuparcene troppo.

Per visualizzare tutti i cluster da console basta eseguire il comando clusters:
  1. > clusters


5387141822_c361174708_z.jpg

Nel modello object-oriented di OrientDB tutte le istanze di una classe vengono memorizzare in un cluster ad hoc. Per convenzione il nome del cluster e della classe corrispondono, ma possibile modificare lo schema in qualsiasi momento; per questo motivo se eseguiamo il browsing del cluster OUser, utilizzato in un esempio precedente, avremmo gli stessi risultati proprio perch alla classe OUser associato il cluster OUser.
  1. > browse cluster OUser


5386535625_20b5c167b6_z.jpg

Per effettuare query sul database la stragrande maggioranza di prodotti NoSQL ha un linguaggio proprietario pi o meno complesso. OrientDB, invece, tra le varie modalit supporta proprio un sottoinsieme di SQL con nuovi operatori per sfruttare le potenzialit dello schema-less e del grafo non presenti nel mondo relazionale. Sebbene questa scelta possa apparire un controsenso, in realt stata ponderata; infatti si considerato che la maggior parte degli utenti che utilizza un DBMS oggi conosce SQL; chi si avvicina a OrientDB ha un background sicuramente relazionale e inoltre SQL molto pi leggibile e conciso di uno script Map Reduce.

Nella prossima puntata vedremo come manipolare i record nel database utilizzando esclusivamente la console e il linguagggio SQL. Intanto scrivete queste due righe nella console:
  1. > select * from OUser
  1. > select * from cluster:OUser
e guardate cosa succede.
Precedente: Progetto Emporia per personalizzare la propria pagina di news
Successiva: Guida alle licenze software: il diritto d'autore
Copyright Programmazione.it™ 1999-2016. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.215 secondi.