Sono curioso di sapere come altri hanno affrontato il problema di mantenere e sincronizzare le modifiche del database tra molti (10+) sviluppatori senza un DBA? Ciò che intendo, in sostanza, è che se qualcuno vuole apportare una modifica al database, quali sono alcune strategie per farlo? (Ad esempio, ho creato un modello "Car" e ora voglio applicare il DDL appropriato al database, ecc.)Quali sono alcune strategie per mantenere uno schema di database comune con un team di sviluppatori e nessun DBA?
Siamo principalmente un negozio Python e il nostro ORM è SQLAlchemy. In precedenza, avevamo scritto i nostri modelli in modo tale da creare i modelli utilizzando il nostro ORM, ma abbiamo recentemente piantato in asso perché:
- non potevamo tenere traccia delle modifiche utilizzando l'ORM
- Lo stato del ORM wasn in sincronia con il database (ad esempio, molte differenze relative principalmente agli indici e ai vincoli univoci)
- Non è stato possibile verificare le modifiche del database a meno che lo sviluppatore non abbia documentato la modifica del database via e-mail al team.
La nostra soluzione a questo problema è stato quello di avere fondamentalmente un individuo "gatekeeper" che controlla ogni cambiamento nel database e applica tutte le modifiche al database accettati a un file accepted_db_changes.sql
, per cui gli sviluppatori che hanno bisogno di apportare modifiche al database messo la loro richieste in un file proposed_db_changes.sql
. Controlliamo questo file e, quando viene aggiornato, applichiamo la modifica al nostro database personale sul nostro computer di sviluppo. Non creiamo indici o vincoli sui modelli, questi vengono applicati esplicitamente sul database.
Vorrei sapere quali sono alcune strategie per mantenere gli schemi di database e se la nostra sembra ragionevole.
Grazie!
Il tuo gatekeeper è effettivamente il tuo DBA. C'è poco più che puoi fare a parte una maggiore documentazione e più revisioni dello schema. La struttura dei dati merita almeno l'attenzione tanto quanto il QA delle tue unità di codice. Probabilmente farei un grande schema grafico e lo posterò sul muro. – msw