Aggiunta di nuove funzionalità al software mantenendo lo stesso database

2

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

  1. creazione di un database parallelo con la nuova struttura
  2. 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
  3. conversione simultanea dei dati dal vecchio db al nuovo
  4. scambia il software con la versione finale che utilizza solo il nuovo db
  5. 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.

    
posta user81993 03.09.2015 - 15:38
fonte

1 risposta

1

Per i clienti delle telecomunicazioni in cui i tempi di inattività influiscono direttamente sulle entrate e le migrazioni multicomponenti vengono spesso eseguite in un processo di una notte, abbiamo utilizzato nomi di tabelle e script in background che replicano e convertono i dati prima di un cutover. In questo modo è possibile eseguire test sulla nuova versione della tabella che ha un set completo di dati contro whict da testare. Allo stesso tempo, le code possono essere scaricate e il software può essere rimbalzato per iniziare immediatamente a utilizzare la nuova versione della tabella al momento del cutover.

Permette anche un backout relativamente facile se qualcosa è mancato e il software deve essere ripristinato perché i dati sono tutti lì. Una volta che la migrazione è stata confermata con successo, la vecchia tabella può essere eliminata.

    
risposta data 03.09.2015 - 17:57
fonte

Leggi altre domande sui tag