Il mio piccolo team è a pochi giorni dal lancio della nostra pagina web. È un'altra pagina del tipo di contenuto utente, quindi molti dei nostri dati riguarderanno le preferenze e il comportamento dell'utente. Abbiamo deciso di portarlo fuori dalla porta non appena le funzionalità minime sono pronte e testate, ma abbiamo grandi progetti di più cose da implementare mentre è in diretta.
Queste cose molto probabilmente includeranno nuove colonne nelle tabelle di dati e forse persino una completa reinterpretazione di quelle esistenti. Questo tipo di modifiche richiederà molto tempo per essere implementato e vorremmo ridurre al minimo i tempi di fermo. Pensiamo di averlo capito da
- creazione di un database parallelo con la nuova struttura
- sostituendo il software con uno transitorio che duplicherebbe l'invio di nuovi utenti sia al vecchio che al nuovo database mentre si utilizza ancora il vecchio database
- conversione simultanea dei dati dal vecchio db al nuovo
- scambia il software con la versione finale che utilizza solo il nuovo db
- elimina il vecchio db
Ciò comporterebbe 2 tempi di inattività molto piccoli (meno di un secondo realmente) separati da qualsiasi quantità di tempo necessario per completare il trasferimento dei vecchi dati (probabilmente limitati e eseguiti a bassi tempi di attività per non disturbare le prestazioni della risposta) .
Abbiamo tutti i nostri metodi di accesso db configurati per rendere più semplice possibile montare la versione transitoria, suona come un buon piano? Come fanno i grandi (come google o facebook) a farlo?
Stiamo usando asp.net + MariaDB se questo è importante.