Тъй като база данни nosql може да съдържа огромни количества данни, вие не можете да я мигрирате в обичайния смисъл на rdbms. Всъщност не можете да го направите за rdbms, веднага щом вашите данни преминат някакъв праг на размера. Непрактично е да прекъснете сайта си за един ден, за да добавите поле към съществуваща таблица, и така с rdbms в крайна сметка правите грозни корекции като добавяне на нови таблици само за полето и правене на обединения, за да стигнете до данните. В света на nosql можете да направите няколко неща.
- Както предложиха други, можете да напишете кода си така, че да обработва различни „версии“ на възможната схема. това обикновено е по-просто, отколкото изглежда. Много видове промени в схемата са тривиални за кодиране. например, ако искате да добавите ново поле към схемата, просто го добавяте към всички нови записи и то ще бъде празно за всички стари записи (няма да получите грешки „полето не съществува“ или нещо подобно;). ако имате нужда от стойност „по подразбиране“ за полето в старите записи, това е твърде тривиално направено в код.
- Друга опция и всъщност единствената разумна опция занапред с нетривиални промени в схемата като преименуване на полета и структурни промени е да се съхранява schema_version във ВСЕКИ запис и да има код за мигриране на данни от всяка версия към следващата на ПРОЧЕТЕТЕ . т.е. ако текущата ви версия на схема е 10 и четете запис от базата данни с версия 7, тогава вашият db слой трябва да извика migrate_8, migrate_9 и migrate_10. По този начин данните, до които се осъществява достъп, ще бъдат постепенно мигрирани към новата версия. и ако не е достъпен, тогава кой го интересува коя версия е;)