MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Esistono strumenti per la migrazione dello schema per i database NoSQL?

Poiché un database nosql può contenere enormi quantità di dati, non è possibile migrarlo nel normale rdbms sence. In realtà non puoi farlo per rdbms non appena i tuoi dati superano una certa soglia di dimensione. Non è pratico ridurre il tuo sito per un giorno per aggiungere un campo a una tabella esistente, quindi con rdbms finisci per fare brutte patch come aggiungere nuove tabelle solo per il campo e fare join per arrivare ai dati. Nel mondo nosql puoi fare diverse cose.

  • Come altri hanno suggerito, puoi scrivere il tuo codice in modo che gestisca diverse "versioni" del possibile schema. questo di solito è più semplice di quanto sembri. Molti tipi di modifiche allo schema sono banali da codificare. per esempio se vuoi aggiungere un nuovo campo allo schema, lo aggiungi semplicemente a tutti i nuovi record e sarà vuoto su tutti i vecchi record (non otterrai errori "campo non esiste" o altro;). se hai bisogno di un valore "predefinito" per il campo nei vecchi record, è troppo banale nel codice.
  • Un'altra opzione e in realtà l'unica opzione valida per le modifiche allo schema non banali come la ridenominazione dei campi e le modifiche strutturali è memorizzare schema_version in OGNI record e avere il codice per migrare i dati da qualsiasi versione a quella successiva su LEGGI . ad esempio, se la versione dello schema corrente è 10 e si legge un record dal database con la versione 7, il livello db dovrebbe chiamare migrate_8, migrate_9 e migrate_10. In questo modo i dati a cui si accede verranno gradualmente migrati alla nuova versione. e se non si accede, chi se ne frega di quale versione è;)