Database con cronologia delle versioni?

2

Sto sviluppando un gioco con un'architettura basata su componenti. Voglio memorizzare le descrizioni delle entità in un database SQLite per compattezza e convenienza. Ovviamente il codice di back-end è (e lo schema del database sarà) sotto controllo di versione. Dal momento che un comportamento importante è presente nel database e poiché più persone lavoreranno su di esso, ritengo che anch'esso debba essere correttamente versionato.

Finora le mie uniche soluzioni sono:

  • Effettua backup periodici del database.
    Ciò sarebbe in disaccordo con l'impostazione di controllo della versione esistente, e quindi soggetta a errori.

  • Scarica il database in un formato e versione diffusi.
    Ciò richiede l'importazione di detto formato, che è simile alla compilazione, che dovrebbe essere evitato.

Mi piacerebbe alternative più pulite all'interno del setup esistente, o un valido motivo per passare a un altro. C'è una bella libreria C ++ per manipolare un database basato su testo (cioè, diffondibile e preferibilmente non XML)?

    
posta Jon Purdy 05.08.2011 - 02:57
fonte

1 risposta

5

Se si imposta la memorizzazione di queste informazioni in un database, in realtà suggerirei di archiviare l'SQL per caricare i dati stessi nel controllo di versione e avere lo strumento di compilazione (ad esempio, Makefile ) caricare questo in un nuovo database ogni volta che il file di testo cambia.

Riceverai le differenze leggibili (vedi le modifiche effettive) e lascerai il tuo "codice sorgente" in un formato umano semplice. Ci sono una serie di problemi con il checkin dei file binari (opzione 1) o dei file generati dal computer (opzione 2).

Con il primo, si perdono diff e si fondono. Sarebbe un rompicapo per me - quando due persone fanno entrambe le modifiche, cosa fai?

Con la seconda, le tue differenze e le tue fusioni diverranno follemente confuse. Lo strumento di backup probabilmente esegue il dump delle righe in "ordine del database", non particolarmente ben definito e soggetto a modifiche nel tempo. Ciò causerà fusioni terrificanti. Anche se fa le cose in un ordine stabile, sarà probabilmente meno leggibile rispetto a scrivere il carico SQL a mano e gestirlo.

    
risposta data 05.08.2011 - 03:29
fonte

Leggi altre domande sui tag