Cloud Spanner でも schemalex 見たいなスキーマ管理がしたかったので作った スキーマ管理ツールはだいたい二種類あって、ActiveRecord見たいな変更差分のDDLをどんどん書いていって順番よく適用していく奴と、schemalexやRidgepoleみたいなテーブル定義のファイルから差分を出して都度適用していく奴があってこのツールは後者の方。 Spannerのスキーマ管理ツールを作る上で多分考える必要がありそうな以下の2点にも対応している。 Interleave Not Null Interleaveに関しては単純にテーブル定義でツリーを作り、自身が再作成でしか適用できない差分だった場合(主キーの変更やPARENTの変更)に子を全て削除してから自分を削除する。 Not Nullに関しては一度Nullableなカラムを追加した後にPartitionedUpdateでデ