Jeśli dane, które chcesz migrować, są obecnie złe, musisz to naprawić, niezależnie od tego, czy wykonujesz migrację, czy nie. Złe dane = bezużyteczne dane.
Migracje są ryzykowne, to prawda. Ale tak samo jest z każdym większym projektem informatycznym. Istnieją sposoby na ograniczenie ryzyka i na pewno należy je zaplanować z wyprzedzeniem podczas migracji.
Po pierwsze, zawsze powinieneś mieć możliwość powrotu do systemu w obecnej postaci. Drugiej migracji należy dokonać na serwerach testowych skonfigurowanych tylko do migracji. Głupotą jest przeprowadzanie migracji bez możliwości jej przetestowania w pierwszej kolejności. Po trzecie, cały kod do migracji powinien być pod kontrolą źródła.
Po czwarte, przed rozpoczęciem migracji potrzebujesz wymagań i planów testowania. Musisz wiedzieć, że jeśli miałeś 1 293 687 rekordów w starym systemie, to masz to samo w nowym lub wiesz, gdzie poszły (być może do tabeli wyjątków). Jeśli normalizujesz schemat zdenormalizowany, musisz obliczyć, ile rekordów powinieneś skończyć przed rozpoczęciem, a następnie to sprawdzić. Potrzebujesz dokumentacji, która określa, jakie są mapowania z jednego systemu do drugiego. Pomoże to pracownikom kontroli jakości sprawdzić, czy dane trafiły we właściwe miejsce.
Musisz określić sposób obsługi bieżących złych danych. Co można wyczyścić, co może wymagać wartości w wymaganym polu z napisem „Nieznany”, co należy wyrzucić do tabeli wyjątków, co wymaga ręcznej interwencji grupy użytkowników (decydując, czy te dwie osoby są naprawdę duplikatami czy czy w tej praktyce są na przykład dwaj lekarze o tej samej nazwie i czy jest to duplikat, które dane wybrać, gdy oba rekordy się różnią, itp.).
Kluczem do udanej migracji jest planowanie. Przekonałem się, że planowanie (które obejmuje pisanie przypadków testowych i testów jednostkowych) zwykle zajmuje więcej czasu niż sam rozwój.
Kolejnym kluczem do udanej migracji danych jest kontrola jakości. To nie jest projekt do rzucenia w zespole ds. Kontroli jakości na dzień przed premierą. To nie jest projekt do uruchomienia, gdy QA stwierdzi, że jest problem.
Kolejnym kluczem do udanej migracji jest wdrożenie większości danych i przetestowanie ich podczas działania systemu pierwotnego. Jeśli przenosisz wiele rekordów, może to być czasochłonne i nastąpią nowe zmiany. Dlatego proces musi być w stanie wyciągnąć zmiany danych również po rozpoczęciu migracji. Na przykład SQL Server ma coś o nazwie Change Data Capture, które może w tym pomóc. Możesz zrobić kopię zapasową systemu oryginalnego i jednocześnie włączyć rejestrowanie zmian danych. Następnie możesz ponownie utworzyć kopię zapasową na serwerze migracji, przetestować migrację, pobrać większość danych, a następnie wystarczy załadować tylko zmienione rekordy. Podczas migracji ostatecznych rekordów wyłącz system źródłowy, aż migracja zostanie zakończona. Jest to jeden z powodów, aby migrować większość rekordów z wyprzedzeniem, więc aplikacja przestała działać przez jak najmniej czasu. Dobrze wybierz czas migracji, nie zamykaj systemu płac w dniu, w którym powinni przetworzyć listę płac lub wysłać W2. I rób to w niskich godzinach użytkowania. Jeśli masz wielu klientów, możesz rozważyć migrację jednego z nich i upewnienie się, że wszystko jest w porządku, zanim zrobisz inne. O wiele łatwiej jest przywrócić dane jednego klienta niż 10000, jeśli występuje problem. Ale jeśli to zrobisz, zaplanuj to dokładnie. s danych niż 10000, jeśli występuje problem. Ale jeśli to zrobisz, zaplanuj to dokładnie. s danych niż 10000, jeśli występuje problem. Ale jeśli to zrobisz, zaplanuj to dokładnie.
Jeśli migracja obejmuje nowy interfejs użytkownika, poproś rzeczywistych użytkowników, aby z niego korzystali w ramach testów migracji. Następnie przeszkol innych użytkowników, zanim zaczniesz korzystać z usługi na żywo (ale na mniej niż tydzień przed uruchomieniem usługi, inaczej zapomną). Poproś użytkowników zaangażowanych w testowanie o pomoc w zaprojektowaniu szkolenia, wiedzą, jakie pytania mieli i co ludzie powinni wiedzieć w jakiej kolejności. Uzyskaj ich dane wejściowe, dzięki czemu pole będzie wymagane, ponieważ uważasz, że nie powinno to pomóc, jeśli użytkownicy zwykle nie mają tych danych podczas wprowadzania rekordów. Po prostu włożą śmieci do nowo wymaganego pola, ponieważ w przeciwnym razie nie mogą uzyskać danych.
Spójrz, co jest nie tak z bieżącymi danymi, czy możesz dodać klucze obce, ograniczenia, wyzwalacze, reguły biznesowe w aplikacji, wartości domyślne itp., Aby uniknąć tego w przyszłości? Kiedy czyścisz złe dane, musisz również stworzyć sposób na uniknięcie przedostawania się tak samo złych danych w przyszłości. Przeanalizuj przyczyny złych danych i napraw dziury w projekcie.