Protože databáze nosql může obsahovat obrovské množství dat, nemůžete ji migrovat v běžném smyslu rdbms. Ve skutečnosti to nemůžete udělat pro rdbms, jakmile vaše data překročí určitou hranici velikosti. Je nepraktické přerušit provoz webu na jeden den a přidat pole do existující tabulky, a tak s rdbms skončíte s tím, že budete dělat ošklivé záplaty, jako je přidávání nových tabulek jen pro pole a spojování, abyste se dostali k datům. Ve světě nosql můžete dělat několik věcí.
- Jak navrhli ostatní, můžete svůj kód napsat tak, aby zpracovával různé „verze“ možného schématu. to je obvykle jednodušší, než to vypadá. Mnoho druhů změn schématu je pro kódování triviální. například pokud chcete do schématu přidat nové pole, stačí ho přidat ke všem novým záznamům a na všech starých záznamech bude prázdné (neobjeví se chyby "pole neexistuje" nebo tak něco;). pokud potřebujete „výchozí“ hodnotu pro pole ve starých záznamech, je to příliš triviálně provedeno v kódu.
- Další možností a vlastně jedinou rozumnou možností do budoucna s netriviálními změnami schématu, jako jsou přejmenování polí a strukturální změny, je uložit schema_version do KAŽDÉHO záznamu a mít kód pro migraci dat z jakékoli verze do další na ČTĚTE . tj. pokud je vaše aktuální verze schématu 10 a čtete záznam z databáze s verzí 7, pak by vaše db vrstva měla volat migrate_8, migrate_9 a migrate_10. Takto budou data, ke kterým se přistupuje, postupně migrována do nové verze. a pokud není přístupný, pak koho zajímá, která verze to je;)