- From: Tim Ellison <Tim_Ellison@uk.ibm.com>
- Date: Tue, 26 Jun 2001 10:00:26 +0100
- To: DeltaV <ietf-dav-versioning@w3.org>
Alan, Your understanding is correct. Delta-V does not subscribe to the Entity-Relationship model that you described; a collection's bindings to other resources are considered "internal members". Modifying the bindings (relationships) from a collection to its members is considered a modification of the collection resource. One minor nit, your diagram concludes: "Renaming 'a' to 'b' requires this collection resource to be versioned." Obviously, if the collection is unversioned then renaming is a simple MOVE. When the collection is versioned it must be checked-out (i.e., made mutable) before the MOVE can succeed. Regards, Tim --- Original Message --- Alan Kent <ajk@mds.rmit.edu.au> wrote: I have been reading through all the WebDAV and now DeltaV specs etc and so am slowing coming up to speed. I have a funny feeling that some of the recent discussions that went over my head may actually be answers to the following questions. But I am happy to make a fool of myself in public :-) My understanding is DeltaV supports versioning of all resources, including collections. So if a MOVE is performed to change /foo/a to /foo/b where /foo is a versioned resource, it is possible to check in the new collection resource bound to /foo and have /foo/b present in it instead of /foo/a. Or put another way, the URI bindings to members of a collection are a part of the parent collection and so are versioned with the member collection. The member itself (the resource identified by /foo/a) does not need to be versioned at all since it is not changed. The reason I ask is I am looking at how to relate the DMA concept of 'containers' to WebDAV/DeltaV 'collections'. In DMA, there is a 'relationship' object that is created to link a member of a container (that is, a 'containee') to the parent container. The 'relationship' objet is therefore like a binding in WebDAV. I think there is however a difference in that in DMA the parent container does not hold the bindings (relationships). The binding objects (changing over to DeltaV terminology) are independent to both the container and member. The binding object holds the name, a pointer to the parent collection, and a pointer to the member resource. The impact of this is that to rename /foo/a to /foo/b does not require the collection /foo to be versioned. Instead, the binding can be versioned instead. The parent collection remains unchanged. The resource also remains unchanged. I believe this is not the DeltaV model. I believe that it is required to version the collection because bindings are a part of the parent collection. A picture might help. In WebDAV/DeltaV I think bindings are stored in the parent collection object as follows. This means to change a binding means the collection must be versioned. +------------+ | Collection | | foo | +-----|------+ | v +------------+ | Collection | Renaming 'a' to 'b' requires this collection | a x | resource to be versioned. +--/-----\---+ / \ v v +------------+ +------------+ | Resource | | Resource | +------------+ +------------+ In DMA, bindings are stored as separate additional objects. Collections are pretty boring really. They main exist to be pointed at. The pointers are in the binding objects which point at the parent collection and the member. +------------+ | Collection | +------------+ ^ | +-----|------+ | Binding | | foo | +-----|------+ | v +------------+ | Collection | +------------+ ^ ^ | | +---------|--+ +-|----------+ | Binding | | Binding | Renaming 'a' to 'b' requires the binding | a | | x | to be versioned, not the collection. +-----|------+ +-----|------+ | | v v +------------+ +------------+ | Resource | | Resource | +------------+ +------------+ The nice thing about the DMA approach is that /foo/a can be moved to /bar/baz/other/a with the versioning of only one binding object. The DeltaV approach in my understanding would require the /foo collection and the /bar/baz/other collection both having new versions created. The reason is that the binding is more linked to the resource it is bound to than the collection containing the binding. If you do a MOVE, its the binding that is being moved. My question is have I understood things correctly above in terms of DeltaV? Since bindings are not resources in DeltaV I could see no way to associate things like version numbers to them. Alan ps: Another model we had played around with was to represent the entire directory tree as effectively a single 'configuration resource'. We could represent this as a single XML document. Then for every change to the directory structure, we would create a complete new version of the XML document. There were problems with this in terms of merging different people's changes, but it saved creating lots of little persistent objects all over the place.
Received on Tuesday, 26 June 2001 05:50:40 UTC