n° 185
Maggio/Giugno 2013
Maggio 20, 2013, 09:43:04 pm *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  

* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Versioning e Release Database  (Letto 2593 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
..gio..
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 4


Mostra profilo E-mail
« inserita:: Marzo 09, 2010, 12:47:25 am »

Ciao a tutti.
Sono alla ricerca di un software, per uso aziendale, per il versioning/gestione rilasci/sincronizzazione struttura e dati dello stesso database presso server diversi (vari clienti).
Ho cercato invano in rete, su veramente tanti siti, ma il massimo che si trova sono software per la comparazione e generazione di script per allineare due basi dati.

La mia esigenza è decisamente diversa, non ho bisogno di un semplice software che esegua un compare banale di struttura e dati, ma dovrà velocizzare le fasi critiche di installazione con funzionalità aggiuntive per facilitare rilasci ed aggiornamenti frequenti.
Vari esempi di utility necessarie potrebbero essere :
    1. Versionamento degli oggetti dello stesso database (magari con SVN)
    2. Possibilità di eseguire compare tra le revisioni come se ogni oggetto divenisse una pagina di codice
    3. Possibilità di comparazione di più di due database contemporaneamente
    4. ...

Di utility che fanno una o parte di queste cose ce ne sono un'infinità in giro.
Ne ho provate alcune, apprezzate altre, ma un vero e proprio software completo ed articolato che mi aiutasse nel gestire le modifiche effettuate al db non sono ancora riuscito a trovarlo.

Mi sono detto che qualche software professionale deve pur esistere, visto che non sono sicuramente l'unico a gestire n database da aggiornare in modalità differenti su un complessivo di oltre 200 oggetti db (tabelle, trigger, viste, funzioni, store, ...).

Mi rendo conto che le mie sono pretese decisamente elevate, ma lo sono altrettanto le difficoltà di gestire tutte le installazioni sparse dai clienti.

Chiedo cortesemente risposte da chi ha effettivamente provato ciò che mi consiglierà.

Grazie mille per l'aiuto.
Giovanni
Registrato
DonZaucker74
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 124


Mostra profilo
« Risposta #1 inserita:: Marzo 09, 2010, 11:46:54 am »


Provo a descriverti come gestisco io la situazione, anche se le mie dimensioni penso siano nettamente più "piccole" delle tue: io ho solo una decina di clienti da gestire, quindi tutto sommato potrei fare anche "a manina" come si dice.  Sorriso

Ti dico subito che non utilizzo particolari software ma soltanto SourceSafe come repository del codice e per il versioning.

All'interno della base dati ho inserito una tabella di versioning che utilizzo per inserire informazioni riguardanti la versione dell'applicazione (e quindi del database).

Ogni rilascio prevede che ci sia una parte di codice (che non interessa per l'argomento) e uno script sql.
Lo script, oltre a effettuare le modifiche del caso, aggiorna la tabella di versioning.
Forse è una cosa scontata ma tengo a precisare che ogni aggiornamento viene fatto attraverso questo script e, assolutamente, non si modifica il database "a mano" altrimenti cade tutto il discorso. Un altro requisito è che i database siano tutti "strutturalmente" identici, altrimenti il discorso cade ancora.

Quindi quando aggiorno devo soltanto conoscere la versione "di partenza" del database per sapere quali script è necessario eseguire (cioè devo leggere la tabella di versioning). Il giorno in cui i clienti aumenteranno a dismisura penserò a come automatizzare questo processo...

Una situazione particolare è prevedere script diversi a seconda della versione del motore del database: io ad esempio devo gestire database sql2000, sql2005, sql2008, con regole di confronto Case sensitive e non. Anche se cerco di rendere il più possibile compatibili gli script in modo da averne uno per tutti, alcune volte sono costretto ad avere uno script diverso per ogni motore (e magari differisce solo per una virgola...). Questo significa che devo anche sapere quale motore hanno i vari clienti... anche qui vale lo stesso discorso: quando i clienti aumenteranno a dismisura penserò a come automatizzare il processo...

Non so se può essere stato utile quanto ho descritto. Nel caso non lo fosse stato chiedo scusa.

dZ

Registrato
..gio..
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 4


Mostra profilo E-mail
« Risposta #2 inserita:: Marzo 09, 2010, 01:49:04 pm »

Grazie mille per la risposta.
Mi sembra un'ottima soluzione. Ho paura però che tutto questo sia soggetto all'errore umano, soprattutto quando si è costretti a modifiche temporanee per risolvere problemi "al volo".

Abbiamo tentato di sviluppare qualche utility che ci aiutasse nei task da me descritti, ma purtroppo questo richiede dedizione, tempo, correzioni, e tutto ciò che ne consegue.

Trovo che, affidarsi ad una soluzione sviluppata da terzi, ma affidabile e provata, potrebbe costare molto meno.

Come ripeto, spero proprio che esistano software di questo tipo, già collaudati e pronti all'uso; dove tutte le problematiche di rilascio siano state ben analizzate e quindi automatizzate.

Mi viene in mente un altro esempio da portare per definire meglio ciò che sto cercando :

Spesso capita che le circostanze richiedano di effettuare modifiche direttamente dal cliente, quindi per limiti di tempo si modifica una store "al volo"; al rilascio seguente, rimane il problema di "mergiare" queste modifiche con quelle fatte in sviluppo. Sicuramente farlo per un paio di oggetti db non costa molto, ma comunque queste micro-attività diventano tutte perdite di tempo che sommatesi fanno diventare un'operazione di rilascio interminabile (anche più di 3 giornate).

Ti ringrazio ancora per l'aiuto.
Giovanni
Registrato
DonZaucker74
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 124


Mostra profilo
« Risposta #3 inserita:: Marzo 09, 2010, 03:47:59 pm »


Citazione
Spesso capita che le circostanze richiedano di effettuare modifiche direttamente dal cliente, quindi per limiti di tempo si modifica una store "al volo"; al rilascio seguente, rimane il problema di "mergiare" queste modifiche con quelle fatte in sviluppo. Sicuramente farlo per un paio di oggetti db non costa molto, ma comunque queste micro-attività diventano tutte perdite di tempo che sommatesi fanno diventare un'operazione di rilascio interminabile (anche più di 3 giornate).

Qua mi sa che entra in gioco anche un fattore diciamo "politico".  Sorriso
Preso per buono che il più delle volte la modifica al volo è una personalizzazione per il cliente X piuttosto che un baco, si rischia di finire nella situazione in cui:
- il cliente X ha la versione 1.1.2;
- il cliente Y ha la versione 1.1.2 con la stored s1 modificata;
- il cliente Z ha la versione 1.1.2 con la stored s2 modificata (ma la s1 no);

poi passa del tempo, le versioni cambiano e si arriva alla 1.2.0: il cliente Y, non aggiornato da tempo, chiama dicendo che ha trovato un baco.
Ma Y che versione ha?Che?!?
io penso che la versione "1.1.2 con la stored s1 modificata" non sia una versione, ma un ibrido (aggiungo anche ingestibile). Soprattutto nel caso specifico in cui Y si trova molto "arretrato" in fatto di aggiornamenti (chi si ricorda cosa abbiamo fatto a Y? chi è andato ad installare? non lo so, non mi ricordo... e via dicendo).
Volendo posso aggiungere che mi è anche capitato di perdere alcune modifiche per strada (vuoi per negligenza, vuoi per fretta....) causando una vera e propria giungla in cui tante volte si rischia di non capire più niente.

E quindi per poter rispondere correttamente (e in modo chiaro e completo) alla domanda:
"Ma il cliente Y che versione ha?Che?!?"
in azienda abbiamo adottato la seguente soluzione "politica": i bachi (si dovrebbe dire i POCHI bachi  Sorriso) si risolvono anche presso il cliente ma all'istante se ne dà comunicazione in sede, perchè si provveda a rilasciare al più presto una versione corretta. Le personalizzazioni si inseriranno invece in una versione "futura" (gestita dalla sede, dunque una "Versione" vera e propria).

So che questa cosa potrebbe creare dissenso, malumori, e via dicendo, ma ritengo che il versioning sia fondamentale, non tanto dal punto di vista della programmazione, quanto da quello della gestione.
Sinceramente non mi sono mai posto il problema di ricercare un software che mi sistemi i problemi in questione (se ce ne fosse uno che però li risolve completamente ben venga): penso sia più un problema organizzativo e di gestione del progetto.

Non so se mi sbaglio, poi ripeto: io vivo in una "piccola" dimensione di una decina di clienti, se qualcuno di loro trova un baco ci telefona, noi glielo sistemiamo, creiamo una nuova versione e gliela inviamo via mail oppure aggiorniamo direttamente attraverso un collegamento remoto. Se richiede una personalizzazione se ne studia la fattibilità. Ad ogni modo (tranne casi eccezionali) la versione "esce" dalla sede, ed è una versione generale, non una versione per il cliente X.

dZ

ps. spero di non essere andato fuori tema, nel caso scusatemi!

Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2011 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



Links to Page