migration

サーバーサイドアプリケーションを作っていて、この単語をよく聞くようになった。実装しているわけだけど、多分言葉そのものの意味と、ORMの文脈で出てくるそれが微妙に異なっている。

まずは普通の定義

マイグレーションとは、システム、または、データ資産の移行作業のことである。 マイグレーションは、基幹システムを新しいプラットフォームへ移行したり、OSやハードウェアなどの環境が異なるシステムへの移行を指す場合が多い。

gormのmigration

まず、gormの日本語ガイドは必須。

Automatically migrate your schema, to keep your schema update to date.
WARNING: AutoMigrate will ONLY create tables, missing columns and missing indexes, and WON’T change existing column’s type or delete unused columns to protect your data.

なので、ここで言うmigrateっていうのはschema(=table)。なんとなく、migrationっていうとrowsをイメージしてしまうので間違える。

おそらく、ここでいうマイグレーションっていうのは、structからsqlへのつなぎというか、オブジェクトから集合へ(インピーダンス・ミスマッチ)、っていう意味合いがあるんだと思う。

いじっていてたくさん課題があって、

  1. 既存の構造体が存在しないDBへのORMの適用
  2. migrationは都度やるか、最初に動かすか?
  3. gormはctxが無い

SQLのほうが効率がいいシーンもたくさんあるけど、そうすると共存することになりソースコードの可読性は悪くなる。

結局この三連休一生懸命考えたことはほとんど無駄になるわけだけど、いろんなものはどんどん捨てていく。