Eqepa dbms-svn-web

807 views
717 views

Published on

Architettura e Tecnologie per la realizzazione di un sistema di versionamento e condivisione di una base di dati

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
807
On SlideShare
0
From Embeds
0
Number of Embeds
182
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Eqepa dbms-svn-web

  1. 1. Eqepa Dbms Svn System SVN-Server DBMS-server SVN-Client DBMS-server SVN-Client DBMS-server SVN-Client DBMS-server
  2. 2. Sommario <ul><ul><ul><li>Introduzione al problema </li></ul></ul></ul><ul><ul><ul><li>Svn per sviluppo web </li></ul></ul></ul><ul><ul><ul><li>Esigenze </li></ul></ul></ul><ul><ul><ul><li>Idea </li></ul></ul></ul><ul><ul><ul><li>LiquiBase e svn Hook </li></ul></ul></ul><ul><ul><ul><li>Architettura della soluzione </li></ul></ul></ul><ul><ul><ul><li>Conclusioni e sviluppi futuri </li></ul></ul></ul>
  3. 3. Introduzione al problema-1 <ul><ul><ul><li>L'utilizzo del versionamento del codice sorgente è una necessità per tutti gli sviluppatori </li></ul></ul></ul><ul><ul><ul><li>Con gli strumenti attuali è facile condividere lo sviluppo di applicazioni composte da un insieme di file testuali </li></ul></ul></ul><ul><ul><ul><li>Al contempo però con un architettura classica non è possibile condividere (sviluppare) applicazioni che fanno riferimento a server dbms per la gestione dei dati che esse utilizzano </li></ul></ul></ul>
  4. 4. Introduzione al problema-2 <ul><ul><ul><li>In generale applicazione e dbms vengono considerate entità separate </li></ul></ul></ul><ul><ul><ul><li>Questo è causa sia di una divisione nel team di sviluppo, e sia di enormi problemi di gestione dei dati </li></ul></ul></ul><ul><ul><ul><li>L'obiettivo è quello di trovare un'architettura di versionamento che permetta di condividere codice e dati di un applicazione in maniera facile e automatizzata </li></ul></ul></ul><ul><ul><ul><li>Questo problema è all'ordine del giorno per tutti i team di sviluppo di web-applications </li></ul></ul></ul>
  5. 5. Svn per sviluppo web <ul><ul><ul><li>Ogni applicazione web è composta da un insieme di file testuali di diversa natura, ma sopratutto da un una raccolta di dati contenuti in un dbms necessari per il suo funzionamento </li></ul></ul></ul><ul><ul><ul><li>L'utilizzo di CMS ha accresciuto l'utilizzo dei database per il mantenimento di informazioni riguardanti anche la parte di interfaccia di queste applicazioni </li></ul></ul></ul><ul><ul><ul><li>In definitiva è molto difficile accedere ad una risorsa identificata da un url senza fare accesso ai dati contenuti in un server dbms </li></ul></ul></ul>
  6. 6. Esigenza <ul><ul><ul><li>Quello che ogni sviluppatore web vorrebbe è che al momento del commit, a fronte di modifiche sul codice sorgente, corrisponda un commit delle modifiche effettuate sul suo database locale verso quello sul server svn </li></ul></ul></ul><ul><ul><ul><li>A questo punto ogni altro membro del team di sviluppo, effettuando un update del codice effettuerà anche una sincronizzazione della struttura e del contenuto del database usato dall'applicazione </li></ul></ul></ul><ul><ul><ul><li>Il codice e il database sarebbero cosi, sempre sincronizzati </li></ul></ul></ul>
  7. 7. L'Idea <ul><ul><ul><li>I dati contenuti in un dbms possono essere rappresentati da una sequenza di operazioni testuali (log) che eseguite una dopo l'altra riportano lo stato della base dati coerente con quello specificato nel file </li></ul></ul></ul><ul><ul><ul><li>L'idea è quella di rappresentare in formato testuale le differenze tra una base dati di riferimento (su un server-svn) </li></ul></ul></ul><ul><li> e quella locale di ogni sviluppatore </li></ul><ul><ul><ul><li>Eseguendo le operazioni specificate il dbms di riferimento si porterà in un stato coerente con quello dello sviluppatore che ha eseguito le modifiche </li></ul></ul></ul>
  8. 8. LiquiBase e svn Hook-1 <ul><ul><ul><li>Per questo scopo ci vengono in aiuto due tecnologie non molto conosciute ma di particolare utilità: </li></ul></ul></ul><ul><li> Liquibase e svn Hook </li></ul><ul><ul><ul><li>Il primo è un tool, java, in grado di generare un file xml contenente le operazioni da eseguire per ricreare lo stato del db su cui esso è applicato </li></ul></ul></ul><ul><ul><ul><li>Il secondo è il sistema di gestione degli eventi presente nativamente in svn che permette di associare script batch o file eseguibili in reazione agli eventi di commit e update. </li></ul></ul></ul>
  9. 9. LiquiBase e svn Hook-1 <ul><ul><ul><li>Grazie al comando diffChangeLog di liquibase è possibile generare un file xml contenente tutte le differenze (a livello di schema) tra un db base (sviluppatore) ed uno globale di riferimento (server-svn) </li></ul></ul></ul><ul><ul><ul><li>Al momento del commit, prima che questo avvenga, si scatenarà l'evento pre-commit che invocherà la procedura di creazione del file di changeLog </li></ul></ul></ul><ul><ul><ul><li>Essendo questo file versionato, il suo contenuto sarà inviato al server-svn, sfruttando l'evento post-commit le operazioni in esso specificate saranno ripetute nel dbms di riferimento </li></ul></ul></ul>
  10. 10. LiquiBase e svn Hook-2 <ul><ul><ul><li>Al momento di un operazione di update da parte di qualsiasi client, il file change log sarà portato nell'ultima revisione </li></ul></ul></ul><ul><li>contenente le modifiche effettuate sul dbms di riferimento </li></ul><ul><ul><ul><li>A questo punto basta invocare, a fronte dell'evento post-update sul client, la procedure di liquibase che pemette di applicare le operazioni indicate nel file di log </li></ul></ul></ul><ul><ul><ul><li>A successive modifiche del db corrisponderà un aggiunta delle operazioni da sincronizzare in coda a questo file che quindi conterrà lo stato corrente del db per ogni revisione. </li></ul></ul></ul>
  11. 11. Architettura della soluzione SVN-Server DBMS-server SVN-Client DBMS-server SVN-Client DBMS-server SVN-Client DBMS-server
  12. 12. Architettura della soluzione SVN-Server DBMS-server SVN-Client DBMS-server SVN-Client DBMS-server SVN-Client DBMS-server Il client esegue modifiche al codice e sulla struttura del db. Successivamente esegue un commit verso L'svn server. Sul client si scatenerà l'evento pre commit che causerà la generazione del file di log che conterrà le differenze tra la base dati di riferimento e quella locale. Successivamente il codice viene Condiviso.
  13. 13. Architettura della soluzione SVN-Server DBMS-server SVN-Client DBMS-server SVN-Client DBMS-server SVN-Client DBMS-server Il server svn riceverà il codice Dal client ed eseguirà le Operazioni necessarie per il Corretto versionamento. A questo Punto si scatenerà l'evento post Commit che causerà sul server L'invocazione della procedura Di liquibase per l'esecuzione delle Operazioni contenute nel file di Log
  14. 14. Architettura della soluzione SVN-Server DBMS-server SVN-Client DBMS-server SVN-Client DBMS-server SVN-Client DBMS-server Al momento dell'update da parte Di qualsiasi client questo riceverà Il file changelog relativo all'ultima Revisione, quindi, contenente le Ultime modifiche effettuate sul Dbms di riferimento. A questo Punto gestendo l'hook Post-update su ogni client si Invocherà l'esecuzione della Procedura liquibase per L'aggiornamento del dbms lato client

×