On 03/07/2013 11:04 PM, Silver, Jonathan wrote:
Thanks for the [long] reply. I really do appreciate the extra information. It seems to me that what I am asking would be a common kind of thing.
I think that you indicated that I could add a datetimestamp to a node and then have multiple copies. At least that would get me to have multiple versions.
Yes, for instance, but it adds extra information to each changed node and the identity is getting lost (for instance that's great and almost necessary to determine the differences between versions efficiently). It would be best if the storage system itself is capable of this for instance through extending the XDM and identifying a node through a simple tuple: unique ID (and never reuse IDs of deleted nodes) + version or an equivalent.
But I suppose it's a great way to do versioning with BaseX. However, determining differences might become cumbersome. A versioning system usually adds references to new versions (as in persistent datastructures[1]). However that always implies some additional overhead through copying of leaf to root paths in tree-based index-structures (for instance the B+-tree shadowing) or at least some kind of overhead in a dictionary to reference the data-pages.
I think BaseX is designed to provide the best possible query performance, such that providing snapshots of documents in a collection does not make much sense, but Christian might have additional information (also regarding your second paragraph which I didn't address as I don't know how documents are referenced).
kind regards Johannes