Ponieważ baza danych nosql może zawierać ogromne ilości danych, nie można jej migrować w zwykłym sensie rdbms. Właściwie nie możesz tego zrobić dla rdbms, jak tylko twoje dane przekroczą pewien próg rozmiaru. Niepraktyczne jest wyłączanie witryny na jeden dzień, aby dodać pole do istniejącej tabeli, więc z rdbms robisz brzydkie łatki, takie jak dodawanie nowych tabel tylko dla pola i robienie łączeń, aby dostać się do danych. W świecie nosql możesz zrobić kilka rzeczy.
- Jak sugerowali inni, możesz napisać swój kod tak, aby obsługiwał różne „wersje” możliwego schematu. jest to zwykle prostsze niż się wydaje. Kodowanie wielu rodzajów zmian w schemacie jest trywialne. na przykład jeśli chcesz dodać nowe pole do schematu, po prostu dodaj je do wszystkich nowych rekordów i będzie puste we wszystkich starych rekordach (nie otrzymasz błędów "pole nie istnieje" ani nic;). jeśli potrzebujesz wartości "domyślnej" dla pola w starych rekordach, jest to zbyt trywialne zrobione w kodzie.
- Inną opcją i właściwie jedyną rozsądną opcją w przypadku nietrywialnych zmian schematu, takich jak zmiany nazw pól i zmiany strukturalne, jest przechowywanie wersji schematu w KAŻDYM rekordzie i posiadanie kodu do migracji danych z dowolnej wersji do następnej PRZECZYTAJ . np. jeśli twoja bieżąca wersja schematu to 10 i odczytujesz rekord z bazy danych w wersji 7, to twoja warstwa bazy danych powinna wywołać migrate_8, migrate_9 i migrate_10. W ten sposób dane, do których uzyskuje się dostęp, będą stopniowo migrowane do nowej wersji. a jeśli nie jest dostępny, to kogo obchodzi, która to wersja;)