17 giugno 2007

Novità mysql: Falcon

Mysql ci stupisce con l'ennesimo motore di database: Falcon. Probabilmente dobbiamo questa novità all'acquisizione di InnoDB da parte di Oracle e al fatto che qualcosina che non andava molto c'era. Questo sospetto mi viene dal fatto che, come prima nuova feature, c'è un evidente MVCC. Anzi, TRUE MVCC. Viene anche evidenziata la data and index caching: ricordiamo che le "vecchie" versioni di mysql sfruttavano il buffering fatto dal sistema operativo sui device a blocchi come cache, ovvero non avevano cache di dati. Nel file di configurazione my.cnf vengono specificati nuovi parametri riguardo la memoria cache.
I dati relativi ad un singolo database (nel significato di mysql: un namespace) vengono scritti in un unico file; altri due file compongono il db: due log seriali. I metadati delle tabelle vengono scritti in un file frm, come il vecchio motore myisam.
A quanto pare i record modificati vengono tenuti in una memoria speciale chiamata record cache, mi pare di capire in maniera diversa da Oracle, che modifica direttamente i blocchi. I dati, gli indici e gli altri dati vengono scritti tutti insieme nello stesso tablespace; può avere senso in molti ambienti di produzione. C'è il log buffer, il log switch e il checkpoint, come Oracle. Interessante la presenza della compressione dei dati su disco.
Per ora non c'è ancora il backup online e il supporto per le foreign key. A quelli di mysql alcune cose non gli sono proprio simpatiche.
Ora si tratta di capire a quali feature presenti negli altri motori di mysql bisognerà rinunciare per potere avere le nuove funzionalità che Falcon offre, nonché quali cambiamenti bisognerà adottare nelle applicazioni scritte sapendo che mysql non offriva il multi-versioning e nemmeno la possibilità di fare rollback.
Io sono molto curioso, quindi ho subito approntato una macchina virtuale Ubuntu server 64 bit per provare il nuovo motore. Perché Ubuntu server? Perché la trovo minimale e molto ben fatta, a cominciare dal fatto che una volta installata manca persino l'ssh. Una configurazione ultraminimale che in ambito server non può che fare bene sia alle performance che alla sicurezza. Si ricordi poi che generalmente Ubuntu è molto ben supportata, ha sempre un'aggiornamento molto recente del kernel (anche troppo insistente), e un ambiente di sviluppo molto solido. Ho scelto la versione a 64 bit perché mysql 6 sembra intenzionato ad uscire a 64 bit come versione preferenziale.
Spero di avere presto un po' di tempo per fare prove col nuovo engine.

Nessun commento: