GeoServer : Versioning WFS - Versioning approaches classification
This page last changed on Nov 22, 2006 by aaime.
It's quite clear that the requirements for a Versioning WFS sum up to building a full fledged version control system for features, although we may want to find ways to implement it step by step. So, it may be helpful to compare different approaches at tackling some of the implementation aspects of a version control system.
Given two revisions of the same feature, how do you store the difference between them?
Copy has the advantage of speed, getting a certain revision is just a matter of selection, whilst patch may use less space, especially if the feature is big, but requires both the selection of patches and their application to the integral data copy we have somewhere (how the integral data copy is managed is discussed in another part of this document).
For a comparison of different diff computation algorithms, see: "An Empirical Study of Delta Algorithms".
Do we keep backwards or forward changes?
Were do you have the states that differences refer to in order to build another revision of data?
Backward changes ensures fast access to the last revision, forward changes allows to handle multiple branches of data in a more natural way, because revisions can be thought as a tree starting with a single root (so a branch is just recorded as a set of forward changes from the common point where it branched off).
Backwards changes need last revision integral copies, whilst forward changes do need at least an integral copy in the root of the versioning tree.
Forward changes calls for fast to compute differences in order to get decent speed on the common case. ArcSDE uses forward changes coupled with difference by copy approach and integral copy in the root. Svn and csv use backward changes coupled with diffs and integral copy as the last revision.
Are these special beasts, or does the data structure seamlessly handle those too?
In the ArcSDE case, forward changes provide a natural fit to handle whatever trunk "copy" you may think of, branches and tags are really the same. The same goes for SVN.
If would be nice to have the same conceptual ease.
How do we manage space and speed up a bogged down versioning server?
loper" if you want more details about the inner workings of it.
|Document generated by Confluence on May 14, 2014 23:00|