移行する予定のデータが現在不良である場合、移行を行うかどうかにかかわらず修正する必要があります。不良データ=役に立たないデータ。
移行は危険です、それは本当です。しかし、すべての主要なITプロジェクトもそうです。リスクを軽減する方法があり、移行の前にそれらを確実に計画する必要があります。
まず、現在のシステムに戻る方法が常に必要です。2回目の移行は、移行専用にセットアップされたテストサーバーで実行する必要があります。最初にテストすることなく移行を行うのは愚かなことです。第三に、移行のためのすべてのコードはソース管理にあるべきです。
第4に、移行を開始する前に要件とテスト計画が必要です。古いシステムに1,293,687レコードがある場合、新しいシステムにも同じレコードがあるか、それらがどこに行ったか(おそらく例外テーブルに)を知っている必要があります。非正規化スキームを正規化する場合、開始する前に必要なレコード数を計算してから確認する必要があります。あるシステムから別のシステムへのマッピングが何であるかを指定するドキュメントが必要です。これにより、QA担当者は、データが適切な場所に送られたかどうかを確認できます。
現在の不良データの処理方法を決定する必要があります。クリーンアップできるもの、「不明」という必須フィールドの値が必要になる可能性のあるもの、例外テーブルに投げ捨てられるべきもの、ユーザーグループによる手動の介入が必要なもの(これら2人が本当にdupまたはその実務には、たとえば同じ名前の2人の医師がいて、2人の記録が異なるときにどのデータを選択するかが重複している場合など)。
移行を成功させる鍵は計画です。通常、計画(テストケースと単体テストの作成を含む)には、実際の開発よりも時間がかかることがわかりました。
データ移行を成功させるための次の鍵はQAです。これは、発売の前日にQAチームに投げかけるプロジェクトではありません。これは、QAが問題があると言ったときに立ち上げるプロジェクトではありません。
移行を成功させるためのもう1つの鍵は、元のシステムがまだ実行されている間にデータの大部分を展開してテストすることです。大量のレコードを移動している場合、これには時間がかかり、新しい変更が発生します。そのため、プロセスは、移行の開始後もデータの変更をプルできる必要があります。たとえば、SQL Serverには、これに役立つChange Data Captureと呼ばれるものがあります。元のシステムのバックアップを取り、同時に変更データキャプチャをオンにすることができます。その後、バックアップを移行サーバーに保存し、移行をテストし、大部分のデータをロードしてから、変更したレコードのみをロードする必要があります。最終レコードを移行するときは、移行が完了するまでソースシステムの電源を切ります。これが大部分のレコードを事前に移行する理由の1つです。そのため、アプリケーションのダウン時間は最短です。移行時間を適切に選択してください。給与計算システムをW2を送信したり給与を処理したりする日までシャットダウンしないでください。また、使用率の低い時間帯に実行してください。複数のクライアントがある場合は、最初に1つを移行し、他のクライアントを実行する前にすべてが正常であることを確認することを検討できます。問題がある場合、10000よりも1つの顧客のデータをロールバックする方がはるかに簡単です。ただし、実行する場合は慎重に計画してください。問題がある場合は、10000を超えるデータ。ただし、実行する場合は慎重に計画してください。問題がある場合は、10000を超えるデータ。ただし、実行する場合は慎重に計画してください。
移行に新しいユーザーインターフェイスが含まれる場合は、実際のユーザーに移行テストの一部として使用してもらいます。次に、ライブに移行する前に他のユーザーをトレーニングします(ただし、ライブに移行するまで1週間もしないと、ユーザーは忘れてしまいます)。テストに携わるユーザーにトレーニングの設計を支援してもらい、どのような質問があり、どの順序で何を知る必要があるかを知ってもらいます。ユーザーがレコードを入力するときに通常そのデータを持っていない場合、それは役に立たないと思うので、入力を取得し、必須フィールドを作成します。そうしないとデータを取得できないため、新しく必要なフィールドにジャンクを入れます。
現在のデータの何が問題なのかを見てください。外部キー、制約、トリガー、アプリケーションのビジネスルール、デフォルト値などを追加して、将来これが悪いことを避けることができますか?不良データをクリーンアップするとき、将来的に同様に不良データが入らないようにする方法も作成する必要があります。不良データが割り当てられた理由を分析し、設計内の穴を修正します。