MonoDay 2010 FSGateway Ing. Torello Querci Resp. Architetture SW - Negens S.r.l. querci@negens.com 29 Aprile 2010, Salerno
Agenda Introduzione FUSE e mono-fuse Come funziona Cosa supporta Esempi d'uso Evoluzione Domande e risposte
Introduzione FSGateway è un software che tramite FUSE rende accessibili dati strutturati o metadati come file system. Sottotitolo: finalmente un uso intelligente di mono-fuse (Miguel De Icaza, Fosdem 2010)
FUSE e mono-fuse Filesystem in USErspace (FUSE) è un progetto open source, rilasciato sotto la licenza GPL e LGPL, volto alla realizzazione di un modulo per il kernel Linux che permetta agli utenti non privilegiati di un sistema di creare un proprio filesystem senza la necessità di scrivere codice a livello kernel. Mono-fuse è un assembly che consente di interfacciarsi con FUSE direttamente dal codice manage. Si tratta di una libreria C# con dei binding in C. FSGateway utilizza mono-fuse per interfacciarsi con FUSE. Nessuna altra libreria specifica è necessaria.
Come funziona FSGateway si appoggia al modulo FUSE per consentire l'accesso ad un filesystem specifico da parte di un utente non privilegiato. FSGateway non usa nessun modulo specifico del kernel (a parte FUSE ovviamente) L'utente può montare e smontare filesystem virtuali in piena autonomia Ogni filesystem virtuale montato richiede una nuova istanza di FSGateway e questo gli conferisce una certa robustezza in quanto un errore su di un filesystem non ha conseguenze negli altri database
Cosa supporta FSGateway nasce per gestire database, ma è stato esteso per supportare l'accesso ad altre strutture dati Filesystem supportati: File XML Datastore Sugar TagFS PostgreSQL (fino alla versione 8.4) SQLite (versione 3) MySql MSSql
Esempio d'uso - database Possibilità di vedere la struttura del database come un normale filesystem Il contenuto di ogni file è lo script che crea l'oggetto stesso Possibilità di copiare la parte di struttura dati Possibilità di ricercare dove un certo nome di un campo viene usato Possibilità di eseguire un DIFF tra la struttura del database di produzione e quella del database di sviluppo
Esempi d'uso - database L'idea di questo modulo nasce da una esigenza pratica che mi è capitata più di una volta: Per un certo progetto abbiamo un database di produzione versione 1.0 presso il cliente Viene commissionata una evoluzione del software che fa evolvere il database fino alla versione 1.5. Questo viene fatto nell'ambiente di produzione Saranno corretti tutti gli script per migrare il database dalla versione 1.0 alla 1.5?
Esempi d'uso - database
Esempio d'uso - database
Esempio d'uso file XML Avendo a disposizione un file XML file.xml ecco il risultato di: mono fsgateway.exe xmlfs file.xml mountpoint
Esempio d'uso TagFS Il TagFS è in filesystem virtuale che nasce dall'osservazione che il filesystem ad albero è quanto di peggio si possa pensare per organizzare le informazioni. Sarebbe opportuno usare dei TAG da collegare al documento per semplificare la ricerca futura. Come fare minimizzando il lavoro per non dover riscrivere tutti i software per aggiungere i TAG durante il salvataggio?
Esempio d'uso TagFS L'idea è quella di usare le directory come tag. Vantaggi: - nessun software da riscrivere - uso dell'interfaccia di navigazione nel FileSystem tradizionale - possibilità di impiego fin da subito, senza ciò dover sottoporre i file a catalogazione preventiva.
Esempio d'uso TagFS Prendendo una qualsiasi directory su disco ecco il risultato di: mono fsgateway.exe tagfs dir mountpoint
Evoluzione Nei database aggiungere il supporto anche per i vincoli strutturali Nei database aggiungere l'accesso a dati specifici come trigger, stored procedure, etc Migliorare le performance soprattutto del tagfs Aggiungere nuovi tipi di accesso come LDAP...
Domande e risposte Ora tocca a voi :)
Licenza Questo materiale è stato rilasciato sotto la licenza CreativeCommons Attribuzione-non-commerciale-opere-derivate 2.5 Italia. Per leggere una copia della licenza visita il sito WEB: http://creativecommons.org/licenses/by-nc-sa/2.5/it/ O spedisci una lettera a: Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105 USA