[Python] Versioning di un database

2009-05-05 Per discussione Pietro Battiston
Salve a tutti,
ho quasi finito quella web app per la gestione di un database per cui vi
avevo chiesto consigli poco tempo fa.

In quel CGI (non sono affatto riuscito a capire se WSGI sia possibile su
Aruba) basato su un database sqlite gestito tramite sqlalchemy, vari
utenti hanno le credenziali di accesso, che permettono loro di
effettuare modifiche.

Vorrei però tenere traccia di tutte le modifiche fatte nel tempo, ed in
particolare di chi le ha fatte.

Esiste uno standard per log del genere e/o un modo per chiedere a
sqlalchemy di mettere in formato comodo le informazioni su quel che si
sta facendo al momento del commit()?

Lo chiedo non tanto per il logging in sé, per il quale in realtà mi
basterebbe semplicemente appendere una riga utente, data,
riga_modificata, campo_modificato, nuovo_valore ad un file ogni volta
che registro una modifica, quanto per l'eventuale disponibilità di
strumenti/librerie per l'analisi successiva di tali log.

grazie

Pietro

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Versioning di un database

2009-05-05 Per discussione Giovanni Marco Dall'Olio
2009/5/5 Pietro Battiston too...@email.it:

 Vorrei però tenere traccia di tutte le modifiche fatte nel tempo, ed in
 particolare di chi le ha fatte.

 Esiste uno standard per log del genere e/o un modo per chiedere a
 sqlalchemy di mettere in formato comodo le informazioni su quel che si
 sta facendo al momento del commit()?

Ottima domanda,
qualche tempo fa l'avevo posta in una lista di bioinformatica, ma
senza ricevere risposte conclusive :(
- http://lists.idyll.org/pipermail/biology-in-python/2008-December/000408.html

Intanto ti consiglio di dare una occhiata a elixir, e ad una sua
estensione chiamata versioning:
- http://elixir.ematia.de/trac/browser/elixir/trunk/tests/test_versioning.py

elixir é una raccolta di plugin per sqlalchemy, essenzialmente
fornisce una sintassi alternativa (vedi tutorial), ma puoi anche
utilizzare solo l'estensione che ti ho indicato.

Anche questo post sembra essere interessante:
- http://motinblog.blogspot.com/2005/10/version-control-of-database-data.html


 Lo chiedo non tanto per il logging in sé, per il quale in realtà mi
 basterebbe semplicemente appendere una riga utente, data,
 riga_modificata, campo_modificato, nuovo_valore ad un file ogni volta
 che registro una modifica, quanto per l'eventuale disponibilità di
 strumenti/librerie per l'analisi successiva di tali log.

Onestamente ho l'impressione che non vi siano standard per il
versioning di un database, ma se dai una occhiata su google puoi
trovare un paio di estensioni qui e lá.
Per esperienza, ti posso dire che git é capace di includere file
binari grossi di 6-700 MB senza soffrire troppo, ma ovviamente non é
la soluzione migliore e non ti permette di ripristinare singoli
record.


 grazie

 Pietro

 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python




-- 
Giovanni Dall'Olio, phd student
Department of Biologia Evolutiva at CEXS-UPF (Barcelona, Spain)

My blog on bioinformatics: http://bioinfoblog.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Versioning di un database

2009-05-05 Per discussione Enrico 'Henryx' Bianchi
Pietro Battiston wrote:

 Vorrei però tenere traccia di tutte le modifiche fatte nel tempo, ed in
 particolare di chi le ha fatte.


Di solito per questo tipo di lavoro si utilizzano le tabelle di audit,
ovvero delle tabelle simili alla tabella originale con in piu` dei campi
di controllo. Per il loro popolamento si utilizzano dei trigger sulla
tabella originale, che vanno a riempire la tabella di audit trail con i
dati manipolati piu` i dati di controllo (e.g. utente, tipo di
operazione, data)

Enrico
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python