it-swarm.dev

C'è un modo per rilevare le modifiche al database che sono state apportate da estensioni di terze parti?

Lavoro in un ambiente di sviluppo/gestione temporanea/produzione e ho incontrato alcune sfide che promuovono il codice da un ambiente all'altro, specialmente quando sono richiesti aggiornamenti a Joomla e ad altri software di terze parti.

C'è un modo per scoprire quali istruzioni sql sono state eseguite sul database da una certa data in modo da poterle applicare in ambienti diversi, senza dover aggiornare ciascun ambiente?

7
ContextSwitch

La risposta semplice è no.

La risposta estesa è che mysql può registrare le query, tuttavia ha dei limiti e se c'è anche una differenza tra gli ambienti, le query non funzionerebbero. Anche con questo l'unico modo per farlo è attraverso il server stesso, poiché per quanto ne so non è stata aggiunta alcuna registrazione speciale a JDatabase (anche se un componente non utilizza JDatabase, il controllo si abbassa ancora di più).

Con quanto sopra puoi vedere in un mondo perfetto, c'è un modo, tuttavia se ti sposti da dev a live, al momento disponevi di un sito live che stava facendo query da solo ed è "diverso" rispetto allo sviluppo/messa in scena attuale versione. Quindi, se un utente si è registrato sul sito live e hai aggiornato Joomla in dev, l'aggiornamento alla tabella degli utenti aggiungerebbe la necessità di aggiungere manualmente quell'utente (potrebbero esserci anche delle modifiche alla struttura della tabella). Ora immagina che non sia un utente, ma 10, o addirittura 100, e il processo non può essere automatizzato.

Joomla ha alcune belle funzionalità di aggiornamento, che consentono una versione per l'aggiornamento della versione mysql sulle tabelle, questo assicura che le tabelle mantengano la struttura di cui hanno bisogno le query, tuttavia non tiene traccia di inserimenti o aggiornamenti sulle tabelle, quindi se si aggiorna in un ambiente di sviluppo , il modo migliore per aggiornare in produzione è semplicemente seguire gli stessi passaggi e aggiornare anche in produzione.

In futuro potrebbe essere possibile per Joomla tenere traccia delle modifiche al database nel suo core, permettendoti di sincronizzare una versione di produzione con una versione di sviluppo, tuttavia la quantità di lavoro per costruire qualcosa del genere è pazza e avrebbe un impatto sulle prestazioni. In questo momento non credo ci sia, o dovrebbe esserci alcun piano per questo.

9
Jordan Ramstad

I database tendono ad essere un grosso problema con tutto lo sviluppo del software. Mantenere le cose sincronizzate come un grande dolore anche per noi, specialmente con i siti di produzione e produzione.

Una cosa che ho iniziato a guardare ultimamente ma non ancora implementata è:

http://phinx.org/

Un altro "metodo di povero" è quello di esportare gli schemi DB (se sei preoccupato per gli schemi, i dati sono probabilmente un animale diverso) e quindi eseguire una diff sugli schemi per ciascun database. Dovrebbe rivelare le differenze tra abbastanza facilmente. Quindi devi solo fare il consolidamento dei dati. Con questo vorrei dire che, idealmente, dovresti solo preoccuparti dei dati sul tuo ambiente di produzione e mantenerli sincronizzati con l'ambiente di gestione temporanea. Quindi puoi sandbox e giocare nello sviluppo secondo necessità.

4
Chad Windnagle