1

私のシナリオを述べさせてください。

データベースに保存されているデータを試してみるアプリケーションがあります。たとえば、ゲームアプリケーションの場合。

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です。

4

2 に答える 2

1

あなたは、 GitMercurialSVNなどのバージョン管理システムの使用について話している。私はそれをこのようにします:

  • 移行ファイルとサンプルデータをチェックインして、コードとともにデータベースにロードします。移行では、データベースにデータをロードします。
  • 元に戻す必要がある場合は、移行を実行してDBを「0」状態に戻し、コードリポジトリを使用してコードを元に戻します。次に、移行を再実行して、データベースを最上位の移行とコンテンツに戻します。

Gitは、構成バージョンを維持するための優れたシステムです。SVNは、まだ関連性のある古いスタンバイです。しばらくの間バージョン管理システムを使用し、すべての問題を理解していない限り、自分で作成しようとしないでください。

これは一般的な答えですが、非常に一般的な質問です。

于 2013-01-16T05:58:57.997 に答える
1

私はあなたの要件がちょっと珍しいと思います:)そして提案された解決策も:D(私があなたの質問を正しくしたと仮定して)

以下は私がうまくいくと思う基本的な構造です

すべてのバージョンと新機能へのリンクを含むテーブルを作成できます

例:にモジュールを追加するとpick a gun、ver5ではへのリンクpick a gunがバージョン番号のあるテーブルに追加されます

version | module 
1       | basic_game
2       |  gun

したがって、ユーザーが選択したバージョンに応じて、すべてのモジュールとそのレイアウトを動的にロードします。

これにより、ユーザーは新しい変更でデータベースにアクセスせず、データベースをバージョン管理したくありません。(そして他のことは、dbをバージョン管理する場合でも、コードを制御する方法が必要です)

これがあなたに当てはまるかどうかはわかりませんが、これは私が考えることができる1つの解決策です

于 2013-01-16T06:06:37.493 に答える