1. ホーム
  2. データベース

[解決済み】データベースをgit(バージョン管理)下に置くには?)

2022-03-28 02:08:06

質問

ウェブアプリを作っていて、いくつかの大きな変更のためにブランチを作る必要があるのですが、この変更にはデータベーススキーマの変更が必要なので、データベース全体も git の下に置きたいと思います。

どうすればいいのでしょうか。gitリポジトリの下に置いておける特定のフォルダはありますか?どのようにすれば分かりますか?どうすれば、正しいフォルダを置いたと確認できますか?

この変更は後方互換性がないため、失敗が許されないのです。

私の場合、データベースはPostgreSQLです。

編集する

バックアップを取り、データベースの代わりにバックアップファイルをバージョン管理下に置くことを提案した人がいました。正直なところ、それはとても飲み込みにくいことだと思います。

<ストライク もっといい方法があるはずだ。

アップデートする

でも、まだ納得がいかないので、質問を少し変えてみます。

データベース全体をバージョン管理下に置きたいのですが、ダンプではなく実際のデータベースをバージョン管理下に置くには、どのようなデータベースエンジンを使用すればよいでしょうか?

sqliteはgitフレンドリーでしょうか?

あくまで開発環境なので、データベースは好きなものを選べるのですが。

Edit2:

私が本当に欲しいのは、自分の開発履歴を追跡することではなく、"new radical changes" ブランチから "current stable branch" に切り替えて、例えばバグや問題点などを current stable branch で修正できるようにすることなのです。ブランチを切り替えたときに、データベースが自動的に今いるブランチと互換性を持つようにするのです。 実際のデータについてはあまり気にしていません。

解決方法は?

データベースのダンプを取り、代わりにそれをバージョン管理する。こうすれば、フラットなテキストファイルになります。

個人的には、データ・ダンプとスキーマ・ダンプの両方を取っておくことをお勧めします。こうすることで、リビジョンごとにスキーマのどこが変わったかをdiffで簡単に確認することができます。

大きな変更を加える場合は、セカンダリデータベースを用意して、新しいスキーマを変更し、古いデータベースには触れないようにする必要があります。