2012-04-11 13 views
2

私は、バージョンコントロールを追加することで、既存のシステムに健全性をもたらそうとしています。システムがレイア​​ウトのようなファイルシステムにうまく翻訳されないという問題があります。いくつかの思考実験の後、私はこれを扱う初歩的な方法を持っていますが、この混乱の使用を許可する前に、私は集合によってそれを実行したいと思います。オブジェクトとリンク用のバージョン管理システムを作成する

システムは、型付きオブジェクトとリンクで構成されています。 オブジェクトはリンクテーブルとリンクされ、意味のある関係を形成します。 リンクは型付きオブジェクトでもあり、独自の属性を持つことができます。

ユーザーは、どのレベルでもオブジェクトのビューに到達し、リンクをたどって上下に移動して関係を見ることができます。

ほとんどのオブジェクトには、他のオブジェクトへの何百ものリンクがあります。 静的と見なすことができるオブジェクトやリンクはすべてバージョン管理下にあるわけではありません。 バージョン管理されていないオブジェクトへのバージョン制御リンクを持つことは許されています。

オブジェクトの変更は、階層構造のセクション全体のレイアウトを含むバッチとして到着します。バッチとしては、ユーザのコメントやバージョン情報自体はありません。 したがって、新しいオブジェクトと前のオブジェクトとの比較によって変更が検出されます。このようにしてリンクの変化も検出されます。オブジェクトは1つのバージョンで追加され、次のバージョンで削除され、次のバージョンで再び追加されます。ほとんどのオブジェクトには、これが本当に存在しているかどうかを確認するのに十分な一意の情報があります。

変更されないオブジェクトとリンクには、個々のオブジェクトに対して新しいバージョンが作成されるべきではありませんが、バッチ更新の結果として得られる全体的なコンテンツはグループとして識別可能です。

ユーザーの95%はオブジェクト/リレーションシップの最新バージョンのみに興味がありますが、残った5%のコミット済みオブジェクト/リレーションシップを表示できる必要があります。

私の最初の考えは、変更のバッチの全体的なバージョンのuidを実装し、それをその繰り返しの現在のオブジェクト/リンクにすべて関連付けることです。残りはグラブのためです。あなたがこれをこれまでに作ったなら、ありがとう。思考?

答えて

2

(リレーショナル)データベースを記述しているようです。あなたの好きな検索エンジンは、データベースのバージョニングを行う方法に関するアイデアのためのリンクをいくつか提供します。

2つのexamplesSQL

+0

かなり釘付けです。私は2 + 2をまとめていませんでした。私は、コミット日付をオブジェクトが既に持っていたUID以外のバージョン識別子として使用することでこれを単純化しました。 –

関連する問題