2012-04-11 6 views
2

Ich versuche, ein vorhandenes System durch Hinzufügen der Versionskontrolle zu verbessern. Problem ist, dass das System nicht gut in ein Dateisystem wie Layout übersetzt werden kann. Nach einigen Gedankenexperimenten habe ich einen rudimentären Weg, damit umzugehen, aber bevor ich anfange, dieses Chaos zu benutzen, würde ich es gern im Kollektiv führen.Erstellen eines Versionskontrollsystems für Objekte und Links

Das System besteht aus typisierten Objekten und Links. Die Objekte sind mit einer Verknüpfungstabelle verknüpft, um sinnvolle Beziehungen zu bilden. Die Links sind auch typisierte Objekte und können ihre eigenen Attribute haben.

Benutzer können die Ansicht der Objekte auf jeder Ebene erreichen und nach oben und unten gehen, um die Beziehungen zu sehen.

Die meisten Objekte haben Hunderte von Links zu anderen Objekten. Nicht alle Objekte oder Links unterliegen der Versionskontrolle, da einige als statisch betrachtet werden können. Es ist erlaubt, eine versionsgesteuerte Verbindung zu einem nicht versionskontrollierten Objekt zu haben.

Änderungen an den Objekten kommen als Stapel mit dem gesamten Layout eines Abschnitts der Hierarchie an, ohne oder nur mit minimalen Benutzerkommentaren oder Versionsinformationen. Änderungen werden daher durch Vergleich des neuen Objekts mit dem vorherigen erkannt. Verbindungsänderungen werden auf diese Weise ebenfalls erkannt. Objekte können in einer Version hinzugefügt, in der nächsten entfernt und im nächsten wieder hinzugefügt werden. Die meisten Objekte verfügen über genügend eindeutige Informationen, um zu erkennen, dass es sich tatsächlich um dasselbe Objekt handelt, das ein- und ausflippt.

Objekte und Links, die sich nicht ändern, sollten keine neue Version für die einzelnen Objekte erstellen, aber der Gesamtinhalt, der sich aus der Stapelaktualisierung ergibt, sollte weiterhin als Gruppe identifizierbar sein.

95% der Benutzer werden nur an der neuesten Version der Objekte/Beziehungen interessiert sein, aber ich muss in der Lage sein, zuvor festgelegte Objekte/Beziehungen für die restlichen 5% anzuzeigen.

Meine anfänglichen Gedanken sind, eine Gesamtversion der Benutzer-ID für den Stapel von Änderungen zu implementieren und sie allen aktuellen Objekten/Links für diese Iteration zuzuordnen. Der Rest ist zu gewinnen. Wenn du es bis hierher geschafft hast, danke. Gedanken?

Antwort

2

Das klingt, als ob Sie eine (relationale) Datenbank beschreiben. Ihre bevorzugte Suchmaschine bietet Ihnen eine Reihe von Links für Ideen zur Datenbankversionierung.

Zwei examples für SQL.

+0

Ziemlich viel genagelt. Ich habe 2 + 2 nicht zusammen gesetzt. Ich vereinfachte dies, indem ich das Festschreibungsdatum als Versionskennung außerhalb der UID verwendete, die das Objekt bereits hatte. –

Verwandte Themen