title: Orient ODBMS
text: # Orient ODBMS
  
  In informatica OrientDB è un visualizzatore ed editor di grafi scritto in Java, ma in cui l'interfaccia si basa su comandi utente in SQL. Nato da una software house italiana viene rilasciato gratuitamente con licenza Apache 2.0.
  
  È un database documentale in cui le relazioni sono gestite principalmente come in un database a grafo con connessioni dirette tra i singoli dati. OrientDB supporta modalità senza schema, con schema oppure miste.
  
  La cosa notevole rispetto agli altri programmi NoSQL è che utilizza comandi SQL fin dove possibile (seguendo un principio di rasoio di Occam), a cui aggiunge comandi NoSQL solo dove i corrispondenti SQL non esistono già senza inventare "l'ennesimo linguaggio" di gestione database. Nella versione base non è invece possibile visualizzare il workflow in forma di listato SQL corrispondente ai comandi dell'utente con bottoni nella shell grafica.
  
  Ha una gestione dei permessi basata su utenti e regole. Utilizza un nuovo algoritmo di indicizzazione derivato dall'Albero RB e dal B+tree chiamato MVRB-Tree, che gli permette di avere benefici sia nell'inserimento che nella ricerca.
  
  ## Storia
  
  Orient nacque dall'esigenza di avere uno strumento semplice e prestante per rendere persistenti gli oggetti applicativi. Nel 1997 i linguaggi di programmazione si trovavano nel bel mezzo di una rivoluzione: l'Object orientation. Il paradigma più utilizzato, quello strutturato, stava per lasciare il posto al nuovo. Questa transizione fu molto graduale e ancora oggi esistono applicazioni che nascono seguendo l'approccio strutturato, magari utilizzando linguaggi Object Oriented.
  
  Seguendo l'evoluzione dei linguaggi, il mercato dei Database management system (allora dominato dai DBMS Relazionali) rispose con una nuova tipologia di prodotti: i DBMS ad oggetti o ODBMS (o ancora OODBMS). Gli ODBMS miglioravano il modello ER per aderire al paradigma Object Oriented. Difatti il Modello E-R non prevedeva concetti come l'ereditarietà, il polimorfismo, ecc.
  
  Sebbene nel 1997 questa transizione si trovasse in uno stadio avanzato, il mercato dei DBMS Relazionali era ancora ben saldo e non dava cenni di cedimento. Le applicazioni Object Oriented erano quindi costrette a convertire gli oggetti nel Modello E-R dando origine al noto problema dell'Impedence Mismatch. Utilizzati da applicazioni progettate e sviluppate ad oggetti, gli ODBMS garantivano prestazioni mediamente superiori alle soluzioni RDBMS. Quale fu la ragione per cui gli ODBMS non si sono mai affermati? Principalmente le seguenti:
  
  * L'enorme Know-How esistente sull'SQL, mai implementato nativamente dagli ODBMS. Al suo posto venne creato l'OQL che sebbene derivasse dall'SQL non era compatibile con esso
  * Il costo eccessivo di questi prodotti se rapportati ai ben più noti DBMS Relazionali
  * La mancanza di un leader di mercato aggressivo
  
  Gli ODBMS dovettero così accontentarsi di un posto di secondo piano nel panorama della persistenza. Ancora oggi gli ODBMS vengono utilizzati prevalentemente in applicazioni di nicchia dove le prestazioni sono un requisito critico.
  
  