新米データ移行エンジニア(?)としてのメモ

困難

  • 全てのデータパターンを洗い出すのが難しい。1億レコードあったとして、それを全部眺めてパターンを洗い出せるか?
  • 大体パターンを洗い流したと思っても、そうでないパターンが残っていることがある。1億レコードのなかの10レコードだけ特異だった、とか。
  • 結果、データ移行スクリプトが全てのパターンに対応できておらず、途中でエラーを吐いたり、おかしなデータ変換をしてしまったりする

コツ

あらかじめ全てのデータパターンをシステマチックに洗い出すことを考えるべき。

  • 時間カラム
    • NULLがあるか。全て同じフォーマットなのかスクリプトでチェック
  • id カラム
    • NULLがあるか。本当にすべて integer なのかチェック
    • integerっぽいなーと思ってみたら実はvarcharで数字じゃない値がわずかに入ってたとかあるある
    • データベースだったらカラムの型もちゃんと突き合わせしておけば防げそう。
  • 時間とidカラム以外
    • カラムごとに Unique な値一覧化。組み合わせが関心の対象となる場合、くみあわせて unique を取る。<= enum 的なカラムの場合は有効だが、integer, float なカラムにはあまり有効ではない
    • user_name とか想定パターンから外れているデータがないかチェック (first_name.last_name 想定で移行スクリプトを書いていたが、その他のパターンがあった、とかないか事前チェック)

このように洗い流した最小のデータセットをテストケースとして、データ移行スクリプトの実装を行い、テストをかく。

おわりに

もっと知見欲しい