Oracle rilascia MySQL 8.0 (con funzioni NoSQL!)

Settimana davvero impegnativa per Oracle, che dopo VirtualBox e Unbreakable Linux, rilascia al pubblico la nuova versione del suo – usatissimo – MySQL.

Le novità sono molte, ed è la prima major relase da quando Oracle nel 2010 comprò SUN, che a sua volta aveva comprato un anno prima la società svedese editrice: MySQL AB.
La mossa allora fece clamore perché Oracle, famosa per i sui database, stava comprando il principale (se non unico vero) concorrente opensource. MySQL rimane libero da usare, ma alcune funzionalità (per migliorare prestazioni o resilienza) sono a pagamento. Solo per informazione, poco tempo dopo l’acquisto, e come reazione, presero vita alcuni fork del progetto come Percona e MariaDB, con quest’ultimo che sembra essere il nuovo campione dell’opensource – tralasciando PostrgeSQL che ha un linguaggio leggermente diverso, perciò non pienamento compatibile.

Abbiamo una nuova versione del software, e forse per rimarcare il balzo in avanti abbiamo un deciso salto di versione: da 5.7 a 8.0. Sembra il gioco fatto già con Java, (la versione 8 è in realtà la 1.8), in cui si “promuove” la release version a major version per motivi di marketing (numero più alto = software migliore), ma come già detto in questo caso le novità ci sono, e qualcuna è piuttosto corposa.

Oltre ad un aumento dichiarato delle performance medie di due volte, ecco una breve carrellata:

  • MySQL Document Store

Questa forse è la più clamorosa: il più usato database SQL incorporerà un motore NoSQL! Sempre più spesso i programmi hanno bisogno non tanto di un DB che tenga traccia delle relazioni tra i vari campi memorizzati, ma semplicemente memorizzi (e indicizzi) una serie di “documenti”; con questa relase MySQL potrà far fronte ad entrambi i tipi di operazioni, senza necessità di gestire software aggiuntivo (tipo MongoDB). Oracle ha messo a punto un nuovo protocollo di comunicazione  (X Protocol) apposta per questo tipo di operazioni ma compatibile con SQL, in modo da usare lo stesso protocollo (e lo stesso software client) per entrambe, in unione a JSON: sembra davvero comodo!

  • Transactional Data Dictionary

Spesso, più che sui dati in sè, un DB lavora coi metadati, ovvero i dati che riguardano i dati; tipico metadato è un indice della tabella, oppure la relazione che lega i dati di una tabella ad un’altra tabella. Questi metadati, finora, erano gestiti come file particolari, in maniera frammentata e con logiche diverse per tipo di metadato; con questa versione esisterà un DB interno apposta per gestirli in maniera organica e unitaria, utilizzando le stesse procedure (ed ottimizzazioni) che userebbe per gli altri DB. Il risultato è un incremento dichiarato delle performance di 30 volte.

  • SQL Roles

Per ogni DB possono esistere vari utenti, ed ognuno può avere il permesso di eseguire operazioni diverse; questo tipo di permessi (privilegi) devono essere dichiarati (garantiti) uno ad uno per ogni singolo utente. Ora è stato introdotto un concetto di insieme di permessi che prende il nome di ruolo, cosicché basti assegnare un utente ad un ruolo per garantire più permessi: anche questo piuttosto comodo (e simile a quanto normalmente avvenga con utenti e gruppi in un sistema operativo).

  • Default to utf8mb4

Di fatto molti dati non sono altro che una serie di stringhe, che devono essere memorizzate codificate in qualche maniera: ora il default è l’UTF8 (capace di rappresentare il carattere di qualsiasi alfabeto), con un carattere definito da al più 4 byte.

Nel documento ufficiale di presentazione (bisogna avere un account Oracle per poterlo scaricare…) si trovano riferimenti a molte altre novità (come Common Table Expressions e Window Functions), di cui non entriamo nel dettagli, ma basti sapere che alcune vengono presentate come “estremamente potenti”, o capaci di migliorare specifiche performance di 100 volte.

Come sempre, vedremo se e quando il mercato assorbirà questi cambiamenti, o se riterrà più sicuro rimanere con l’architettura già in uso. Chissà, magari passando ad un database compatibile ed opensource… (no, non ho detto MariaDB!)

 

Ho coltivato la mia passione per l'informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.

Tags: , ,