/note/tech

履歴管理ができるテーブル構造を考えてみた

アソビュー!では様々なデータをRDBで取り扱っていますが、テーブル構造はメンテナンスが難しいです。

モノリシックなマスターテーブルが存在していて、更新日カラムが付属しているけどどこを更新したのかわからない。

また、過去のデータがほしいけどマスターテーブルなので元々がどんなデータだったかわからない。

ということがたまに発生したりします。

上記から履歴管理ができるテーブル構造を作る必要があったため、検討をしました。

という要件から SHOP_REVISIONS テーブルが生まれる理由がよくわからなかった。

マスターテーブルの過去の構造を取り出したいのであれば、リビジョンだけではテーブル構造の再現はできないのでは。

そうではなく特定のリビジョンの時のデータの状態を取り出したいということであるとしても、 SHOP_IMTE_* テーブル達はリビジョンに関連付けられていないので、やはり特定のリビジョンの状態を取り出すことはできないように思える。

そもそも SHOP_REVISIONS テーブルはどのタイミングで更新されるのか? 配下のテーブルが更新される毎に更新されるのだろうか?