データの移行-危険または不可欠ですか?


26

私の会社のソフトウェア開発部門は、特にマネージャーにとって、データ移行が潜在的に危険であると見なされているという問題に直面しています。

その背景は、お客様が質の悪い大量のデータを使用していることです。これだけされた理由について、部分的に当社のソフトウェアに関連したそれらのほとんどがされています:品質ではなく、データの履歴に前身のシステムから移行したいくつかのバグが発生し、(主に業務)の不整合データレコードまたは中misentries上の事故により、お客様側(当社のソフトウェアがエラーにより許可したもの)。

私のマネージャーからの最も重要な反論は、障害のあるデータがさらに悪いデータに変わる可能性があることです。データのトラブルは顧客のマネージャーを覚醒させ、顧客側のプロセスはシステムに多少適合しているため、もはや機能しない可能性があります

個人的には、データの移行はソフトウェア開発の不可欠な部分であり、データの移行はデータのリファクタリングとはコードで見ることができると考えています。データの移行は、進化するソフトウェアを作成するために不可欠だと思います。それがなければ、悪いデータ構造をある程度回避する痛みを伴うソフトウェアを作成する必要があります。

あなたに聞いています:

  • 開発者の視点からだけでなく、特に実際のケースでは、データ移行についてどう思いますか?
  • 私のマネージャーの意見に反論はありますか?
  • あなたの会社は、データの移行とそれに起因する問題にどのように対処していますか?
  • このトピックに属する他の興味深い考えはありますか?

おそらくグレート質問、しかしに属しprogrammers.stackexchange.com
トム・アンダーソン

1
それは必ずしも「または」の質問ではありません。
デビッドソーン

1
私が追加しなければならない一つの議論は、それは将来的には簡単になることはないだろうということです。移行を今すぐ行いたくない場合は、少なくとも「データクリーニング」プロジェクトに参加して、既存のシステムの問題レコードを識別するためのコードを記述する必要があります。
マイケルコーネ

回答:


29

データの移行は私の基本であり、データのクレンジングは非常に重要な問題です。顧客のデータを100%移行するために使用する戦略の1つは、漸近的なデータクレンジング前移行ツールです。

  1. これは、数十のデータ健全性チェック(主にSQLクエリ)を開発することを意味します。

  2. クレンジングツールを顧客と交換します(彼のデータであるため、パッチユーティリティを設計し、検証ユーティリティを実行します)。

  3. 反復を重ねてツールを改良し、KPIに裏付けられた測定可能な品質をできるだけ早く達成します。

  4. 移行後にデータの一貫性を確認します。これは、DデーでGO / NOGOの決定を行うのに役立ちます。

最終的に、データの移行は3〜5年後に行わなければならない非常に有益な運動です。

  1. プラットフォームのビジネスをサポートする能力を高めることができます。

  2. データベースを合理化できます。

  3. 次世代のビジネスツール(ESB / EAI、ポータル、セルフケアプラットフォーム、レポート、データマイニングなど)のためにITプラットフォームを準備します。

  4. 「緊急の要件」を満たすために、長年にわたって蓄積されてきたプラットフォーム間のDIYデータフローを迅速かつ汚い「一時的な」方法で再編成します。

  5. 何よりも、プラットフォームをよりよく理解し、「できる」態度を育むようになるIT制作チームを支援します。これらの利点を測定することは困難ですが、多くのクライアントを知るようになると、この考慮事項が明らかになります。移行を避けている企業は次の層に残り、太字のものがパックをリードしています。

あなたの家の地下室が木材で散らかったときのようなものです。ある朝、すべてを取り出して、必要なものだけを戻して、残りを捨てる必要があります。その後、再び地下室を使用できます;-)

もう1つの基本的な考慮事項は、「顧客は常により要求が厳しい」のように、今日、顧客の期待は常に動いているということです。そのため、特定の企業の競合他社のかなりの割合が、市場シェアを拡大​​するという明確な意図を持って、これらの新しいトレンドに目を光らせています。彼らがそうする方法は、トレンドに固執する、あるいはトレンドを推進するために提供物を適応させることです。ITプラットフォームが硬すぎると、配偶者や市場動向を先行させ、最終的には自分の市場シェアを維持することが、あなた自身の適性を損なうことになります。言い換えれば、動いている市場では、慣性は無意味なレシピです。

対照的に、新しいシステムへのデータ移行は、より近代的で汎用性の高い生産性ツールを展開し、従業員にとってより魅力的な新しいテクノロジーを最大限に活用し、これが会社の内部革新プロセスを支援するか、さらにはリードします、相対的な市場シェアを確保または増加させます。

上記の考慮事項は、タイトル「データ移行-危険または必須」で尋ねられた質問の半分のみに実際に答えています。はいデータの移行不可欠ですが、それら危険ですか?このため、ITの多くのものは危険です。定義により、利害関係の高いものすべて危険です。特に問題を真剣に受け止めない場合。しかし、これは実際に ITで最も一般的なパターンです。データセンター、高可用性、または耐障害性を真剣に受け取らないこと危険です。
つまり、今日の企業は、今日の情報技術のこれらの柱からオプトアウトする必要があるということですか?きっとない!

冗談を言って言うと、「プロが作った飛行機を使用しないと飛行は危険だ」と主張することができます。データ移行についても同じです。専門家によって実行および実施された場合、適切に設計され、適切に操作された飛行機で飛行することほど危険ではありません。また、ROIは地上の輸送手段と比較して同じ割合です。
専門家に任せた場合、ほとんどの移行はうまく制御された成功であり、失敗+放棄率は非常に低いです。

あなたのマネージャーは、「ほとんどの企業がデータ移行プロジェクトを順調に進めているのに何が私たちの会社を変えて、代わりに失敗を経験するのでしょうか?そして、それなしでうまくいくのでしょうか?」


5
@Alainの答えに反映されているように、マネージャーのアプローチの理由の1つは、データ移行自体が主要なプロジェクトであり、それに伴うすべてのリスクがあることです。また、データ移行に固有のリスクもあります-私が関与した唯一のデータ移行プロジェクトは、データのクレンジングで98.6%の成功率を達成しました。故障率が60万件の顧客レコードを手動で解決する必要があることに気付くまで、これは非常に良いことです。これには、別の部門の設定とチェックおよび検証プロセスが含まれていました。繰り返しますが、これは安くもリスクもありませんでした。

@クリス。私たちは100%を目指しており、少なくとも一度は達成しています。ほとんどの場合、顧客は放置して手動で再作成しましたが、10個未満です。

4
@Alain-おめでとうございます。私が言及したプロジェクトは100%を目指していましたが、これは達成不可能であることが判明しました。手動クレンジングが必要なデータの大部分は、「この住所で記録した3人のジョンスミスのうち、何人が個別の個人ですか」という形式の手動チェックを必要とすることが判明しました。この特定のデータ移行は、RDMS以外の永続性からRDMSへでした。最大25年間にわたって蓄積されたクレンジングデータを暗示しています。

2
また、専門家は、アプリケーションプログラマではなく、データ移行のスペシャリスト(または少なくともデータのスペシャリスト)でなければなりません。企業は、データの専門家ではなく、データのアマチュアにこのようなことを依頼するため、トラブルに巻き込まれます。データベース設計が多すぎる場合も同じです。
HLGEM

1
進化するプラットフォームとして、「移行」または一括インポートが必要です。カウンターパートを強調するために、従来のデータ構造を維持し、無限に拡張するためのコストも高くなります。悪いデータになる悪いデータは、出現するコンテキストの問題であり、実際に重要な顧客価値を追加します。これは、信頼できるデータと信頼できないデータ(懸念のシナリオでは、一部のシナリオでは)それは重要ではなく、中立的な値になります)。
JustinC

5

Alainは、データ移行プロジェクトを成功させるためのデータクレンジングの重要性と、データ移行の背後にある理論的根拠に関して優れた回答を提供しました。マネージャーが抱える特定の懸念のみをターゲットにしたいと思います。

私の意見では、データの移行を行うかどうかの問題ではなく、いつ行うかについてです。あなたのマネージャーは、あなたのデータはもはやあなたのものではなく、エンドカスタマーは既にそれを中心に手順を構築していると言って絶対に有効なポイントを持っています。ただし、この状態は今後変更されません。遅かれ早かれ、データ品質の低下はビジネスの速度低下の避けられない要因となり、移行を余儀なくされます。プレッシャーの下で、そして厳しい締め切りでこれを行うと、次善の決定につながる可能性があります。その上、あなたが現在持っている専門知識について考えてみてください。これから2、3年後には持つでしょう。あなたのデータを理解している人々が退職した場合はどうなりますか?あなたが持っているドキュメントは適切であると確信していますか?

移行を今すぐ行う必要はないかもしれませんが、少なくとも正確に移行を行う時期については、マネージャーにビジョンが必要です。


5

私は保険会社で働いていて、コアシステムのデータ移行に関与していました。まあ、合計で4回ありました。だから、ここに私のコメント:

私の場合、データの移行は必須です。規制により少なくとも10年間データを保持する必要があり、長期的にデュアルシステムをサポートする余裕がないためです。もう1つの理由は、ユーザーが新しいアプリケーションで作業を継続できることを期待していることです。彼らが働いているアイテムを見つけることができないなら、あなたのアプリケーションは悪いです、そして、データが正しくないとき、それはさらに悪いです。

まあ、データ移行は恐ろしい獣であり、それは本物ですので、それに直面します。危険ですが、より早く慎重に対処することで最小限に抑えることができます。ガイドとして、データ移行で考慮すべき4つの大きなプロセスがあります。

  1. データマッピング。マスター(およびその組み合わせ)の新しいシステムへのマップ
  2. データのクリーンアップ。データ内の例外のマップ、つまり、その組み合わせが新しいシステムで無効と見なされるデータ。可能であれば、ビジネスに対処して、マッピングする方法のないデータを除外し、潜在的に新しいシステムを破壊し、回避策を準備する
  3. 実際のデータ移行。データ移行を実行するための多くの戦略があります。例:ビッグバン、インクリメンタル
  4. レポートの統合。両方のシステムを並行して実行する場合、正確で一貫性のあるレポートを作成する方法

慎重な計画、たわごとが起こるイベント!特別なタスクフォースは、移行に関連する問題に対処する準備ができている必要があります。


1
私は天文学で働いていましたが、130年前のデータ(写真版)があり、Y1.9KとY2Kの問題が同時に発生しています。我々はまた、人々が同意した前から多くのビットがバイトであったかにテープ上のデータを持っている
マーティン・ベケット

3

1)特に開発者の視点からだけでなく、実際のケースに関して、データ移行に対するあなたの考えは何ですか?:

移行はシステム開発の重要な部分です。古いシステムを部分的または全体的に置き換える場合、管理者が望むかどうかにかかわらず、移行は現実です。既存のデータが悪い場合、新しいシステムにひどく反映されます。したがって、適切な移行戦略を立てることは非常に重要です。

2)私の上司の意見に反論はありますか?

はい、移行にはリスクが伴いますが、それは人生の事実でもあるため、対処してください。そして、できるだけ早く対処してください。

3)あなたの会社は、データ移行とそれらによって引き起こされる困難にどのように対処しますか?

私の会社は-成功を収めることで、顧客を移行プロセスに積極的に関与させました。プロジェクトの最初の段階で既存のデータをできる限り精査し、移行を開始する前にデータの品質を改善することをお客様に推奨します。時々私たちは実際にそれを要求します。

4:このトピックに属するその他の興味深い考え

私のアドバイスは、移行プロセスを変換とデータクリーニングの2つのステップに分けることです。変換はかなり簡単です-古いシステムオブジェクトを新しいシステムにマッピングする問題。一方、データクリーニングは非常に注意が必要な場合があります(上記を参照)。顧客をできる限り関与させ、できるだけ早くプロセスを開始します。不正なデータは新しいシステムに不適切に反映されることに注意してください-時には完全に理由もなく。新しいシステムが機能しない場合、顧客が古いシステムでうまく機能していると思われるデータを非難することはほとんどありません。


2

移行する予定のデータが現在不良である場合、移行を行うかどうかにかかわらず修正する必要があります。不良データ=役に立たないデータ。

移行は危険です、それは本当です。しかし、すべての主要な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週間もしないと、ユーザーは忘れてしまいます)。テストに携わるユーザーにトレーニングの設計を支援してもらい、どのような質問があり、どの順序で何を知る必要があるかを知ってもらいます。ユーザーがレコードを入力するときに通常そのデータを持っていない場合、それは役に立たないと思うので、入力を取得し、必須フィールドを作成します。そうしないとデータを取得できないため、新しく必要なフィールドにジャンクを入れます。

現在のデータの何が問題なのかを見てください。外部キー、制約、トリガー、アプリケーションのビジネスルール、デフォルト値などを追加して、将来これが悪いことを避けることができますか?不良データをクリーンアップするとき、将来的に同様に不良データが入らないようにする方法も作成する必要があります。不良データが割り当てられた理由を分析し、設計内の穴を修正します。


1

データの移行が必要です。データの移行がなければ、先へ進むことはできません。必要な履歴を使用して作業した多くのシステムは、以前のシステムでのみ利用可能です。これを行う唯一の実用的な方法は移行です。多くの場合、データ品質が問題です。通常、これは以前のシステムで対処する必要があります。これには、品質を回復するためにデータの変更が必要になる場合があります。

私が使用した他のシステムは、他のシステムのデータに依存していました。これは別の重要な問題です。場合によっては、データを完全に置き換えることができます。他のケースは、新しいデータに含まれる変更を既存のセットにマージすることで、より適切に処理される場合があります。これらのタイプの移行には、受信フィードの有効性チェックを含める必要があります。

既存のデータを検証およびクリーニングする機能は、システムの重要な機能となります。これは移行とは無関係です。多くの場合、システムの制御外にあるデータを変更するメカニズムがあります。これにより、データが無効になる可能性があります。他のデータの問題は、アプリケーションのバグが原因です。検証ルーチンを定期的に実行すると、問題を特定し、移行の時間になる前にデータをクリーンアップできます。前述のように、データを早期にクリーンアップすると、移行が容易になります。

一部の検証は時間に依存するため、変更されていないデータには適用しないでください。これは、コードが廃止されたコード値で一般的です。検証エラーをトリガーすることなく、レコード内の他のフィールドを変更することができるはずです。これにより、検証前に変更されたフィールドを識別する必要があるため、更新の検証がより複雑になる可能性があります。クロスフィールド検証もより複雑になる場合があります。この場合、検証を回避できるため、一部のレコードを読み取り専用として扱う機能が役立ちます。

私が取り組んだあるシステムでは、新しいシステムが顧客によって部分的に拒否されました。彼らは、新しいデータ入力モジュールの使用を許可しませんでした。しかし、彼らは新しいシステムからのバッチ処理を望んでいました。解決策は、バッチ実行の前にデータを毎晩移行することでした。


1

それは必要な悪です。私は両方に取り組んできましたが、これらは問題を悪化させる他の問題の一部です。

  1. 特に企業では、企業が新しいシステムに移行するとき、彼らは古いシステムがしたことをすべてやりたいと思っています。彼らは彼らの手順を見直しません。彼らは圧倒されて、すべてを同じようにやり続けたいだけです。これは彼らにとって安全です。
  2. 彼らは新しいシステムを学ぶために時間をかけたり、専門知識を持つ人々を雇ったりしません。
  3. 彼らは新しいシステムをカスタマイズして、#1に対応するか、ビジネスの新しい側面を処理したいと考えています。新しいシステムXのカスタマイズX変換されたデータ=複雑な合併症
  4. テスト専用の時間が十分ではありません。
  5. 顧客は、並行して実行したり、物事を2回実行することを嫌います。ユーザーを責めることはできません。なぜなら、ユーザーは他のすべての任務が全速力で維持されているため、これを行う時間を与えられていないからです。

マネージャーがデータを変換しないことで売上の損失を正当化できる場合は、マネージャーにさらに力を与えます。すべてのデータ変換が失敗することを顧客に伝えることは、他の誰かが常にそうすることを常に伝えるので、うまくいきません(通常は競争相手)。


0

開発者の視点からだけでなく、特に実際のケースでは、データ移行についてどう思いますか?

ソフトウェアは定期的にアップグレードする必要があります。移行を確実に保存するには、バックアップとテストが必要です。

私のマネージャーの意見に反論はありますか?

彼はそれが危険であることは正しい。ただし、テクニックを適応させてリスクを軽減することができます。

あなたの会社は、データの移行とそれに起因する問題にどのように対処していますか?

毎日のバックアップ、増分バックアップ、すべての運用環境への展開前のバックアップがあります。少なくとも何か悪いことが起こった場合はロールバックできます。

テスト環境、自動テスト、毎日のビルドサーバーがあります。また、主要な操作と機能が適切に機能していることを確認するための煙テスト手順。開発者、QA、およびユーザーがビルド(データが移行されている)をテストします。

ruby on railsを使用しています。これは、データの移行、アップグレード、およびロールバックのバージョン管理を提供します。私たちの生活が楽になります。

capistranoを使用して、コードの更新とデータの移行を実行しています。移行を自動化してシンプルに保つことは、運用システムを確実に機能させるための重要な要素の1つです。

このトピックに属する他の興味深い考えはありますか?

データ移行に関するもう1つの懸念は、コードのアップグレードとデータ移行の一貫性です。私の場合も、自動化された方法を使用して処理しています。そしていつでもロールバックする準備ができています。

データ移行を手動で実行すると、データベースが不明な状態になる場合があります。また、異なるサーバー環境間でデータ移行バージョンを比較することは困難です。

それが役に立てば幸い。


-1

時間と投資とリスクがすべて高すぎるため、古いレガシーシステムからデータを移行しようとして時間を無駄にしません。新しいシステムで前進し、必要に応じて統合するだけです。

すべてのビジネスには、サポートする必要がある何らかの形式のレガシーシステムがあり、それはビジネスを行うための通常のコストです。

マネージャーが実現を望んでいる報酬は、移行のコストを考えると、非常に高いほうがよいでしょう。


あなたが病院を経営しないことを願っています。なぜ、赤ちゃんの患者記録しか持っていないのですか?昨年、新しいシステムをインストールしましたが、古いデータをすべて移行するのは難しすぎたため、新しい患者のみを配置しました!
マーティンベケット

いいえ、私は病院を経営していません。私が言ったことをもう一度読んでください。 "The reward your managers hope to realize had better be extremely high given the cost of the migration." 報酬が高い場合-それが何であれ-それは価値があります。そうでなければ、それはすべての人の時間の無駄であり、不必要なリスクです。また、場合によっては、新しいシステムが古いデータにアクセスできるようにするために統合を行うことができると答えました。しかし、この決定はシナリオに完全に依存します。
jmort253

申し訳ありませんが、統合は悲しみをさらに複雑にします。
ポールネイサン

@Paul-もちろんですが、データの移動も同様です。ここに特効薬はありません。
jmort253
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.