私のシナリオを述べさせてください。
データベースに保存されているデータを試してみるアプリケーションがあります。たとえば、ゲームアプリケーションの場合。
1)現在、アプリがバージョン5で実行されているとします。アプリで遊んでいるときに、現在追加されている機能(機能5)が適切でないと感じた場合は、以前のバージョンに切り替えたいと思います。アプリケーション(たとえば、機能1、2、3、および4が実装されているバージョン4)。
2)これは、以前のバージョン(バージョン4)に必要なデータを使用してアプリケーションを実行できるように、データベースレベルで実装されたバージョン管理システムが必要であることを意味します。簡単に言うと、バージョン4でアプリケーションを実行できるように、本番データベースに最近追加したデータ(機能5に関連する)は必要ありません。
3)後で、機能5が安定していると感じたときにさらに開発を進めた後、アプリケーションのバージョン6をチェックインして公開したいと思います。
4)バージョン1、2、3、4、5はチェックポイントのようなものです。これは、アプリを公開するのに適していると判断した段階です。バージョンを切り替えて、必要に応じてライブにする機能が必要です。
5)また、明確にするために:チェックインされたバージョンは変更できません。つまり、チェックポイント、たとえばバージョン3が設定されると、そのバージョンにそれ以上変更することはできなくなります。
このバージョン管理システムをデータベースレベルで実装するための適切な方法を説明してください。ハイブを使用してバージョンポイントでデータをバックアップしたり、アプリケーションのデータのバージョンをハイブに保存したりするなど、いくつかのオプションを考えました。私はこれがうまくいくと思います、しかしそれは確かにハンキーなドーリーに見えません。私が知りたいのは、-私が述べた方法は続行するのに十分なオプションですか、それともデータベース内のデータをすぐにバージョン管理できるオープンソースアプリケーションがありますか?他の提案やアイデアは大歓迎です。
提案された実装:
@Sameeraの答えに基づいて私が考えていること。
1)新しいバージョンテーブルを作成し、それをアプリケーションテーブルに関連付けます。
2)以前はアプリケーションテーブルに関連付けられていた他のテーブルを、現在はバージョンテーブルに関連付けます。
3)現在、各バージョンテーブルには、状態属性0、1、または2があります。開発用に1、ライブ用に2、デッド用に0です。