Eftersom en nosql-databas kan innehålla enorma mängder data kan du inte migrera den i den vanliga rdbms-satsen. Egentligen kan du inte göra det för rdbms lika bra så fort din data passerar någon storlekströskel. Det är opraktiskt att lägga ner din webbplats för en dag för att lägga till ett fält till en befintlig tabell, och så med rdbms gör du fula patchar som att lägga till nya tabeller bara för fältet och göra joins för att komma till data. I nosql-världen du kan göra flera saker.
- Som andra föreslog kan du skriva din kod så att den kommer att hantera olika "versioner" av det möjliga schemat. detta är vanligtvis enklare än det ser ut. Många typer av schemaändringar är triviala att koda runt. till exempel om du vill lägga till ett nytt fält till schemat, lägger du bara till det i alla nya poster och det kommer att vara tomt på alla gamla poster (du kommer inte att få "fältet existerar inte"-fel eller något;). om du behöver ett "default"-värde för fältet i de gamla posterna är det för trivialt gjort i koden.
- Ett annat alternativ och faktiskt det enda sunda alternativet framöver med icke-triviala schemaändringar som fältbyten och strukturella ändringar är att lagra schema_version i VARJE post och att ha kod för att migrera data från valfri version till nästa på LÄS . d.v.s. om din nuvarande schemaversion är 10 och du läser en post från databasen med version 7, bör ditt db-lager anropa migrate_8, migrate_9 och migrate_10. På så sätt migreras de data som nås gradvis till den nya versionen. och om den inte nås, vem bryr sig då om vilken version det är;)