blog.bouzuya.net

2012-12-06 SubversionとOracle Databaseとの同期

SubversionとOracle Databaseとの同期について考えている。バージョン管理システムはSubversion以外でも良いし、RDBMSもOracle Database以外でも良い。バージョン管理システムとRDBMSとの間で同期をとりたいのだ。

動作自体はRDBMS単体で可能だが、複数人で複数のスキーマを相手にすると、すぐに破綻する。どのスキーマが正しいのか分からなくなる。

そこでソースコードと同様にデータベースオブジェクトについてもバージョン管理システムの管理下に置くことにする。テーブルなどを定義するSQLスクリプトをコミットする。これで変更が追跡できそうだ。

しかし、往々にして、バージョン管理システム側が正しいものであることを忘れて動作するRDBMSだけを更新する人間がでてきて、同期がとれなくなる。

どうしたものだろうか。

検索してみた。InfoQの『継続インテグレーションとデータベースのバージョン管理』では、まずはじめに共用データベースを使用するなと書いてある。なるほど。共用しているデータベースに動くものを置けるのだから、それで満足して、コミットが漏れることに抵抗を感じなくなってしまったり、あたかもバージョン管理システム側が冗長に感じられたりするのかもしれない。

ぼくはバージョン管理システム側にコミットしておけば、あとは自動で適用してほしいと思っている。いろいろ課題が多いし、このあたりの現実の開発環境でよくあるところへの解をより多く知りたいと感じる。

10 min.