HI Danny, 'If what you mean by versioning is check in/check out, then the answer to your question is that one can build an application that versions documents with MarkLogic' The idea I'm referring to is not check in/check out, just assigning a version number to a document.
If there is no versioning, consider Person A and Person B. Both persons load a document and begin editing. A writes to the document, and then B writes to the same document 5 minutes later. If the document doesn't have a version number associated with it, there B doesn't know that the document has already been updated (that his view of the document is actually stale), and will merrily overwrite the changes that A made, hence 'last update wins'. With versioning, before B is able to write to the document, (and within the scope of a transaction) the version number would be checked to ensure that B's data is not stale (ie. that the version numbers are identical) before writing. If the data is stale, the data will NOT be written and B will be forced to update their view (and the version number) of the document, and may then make updates and try to write again. I realize that I can code this behavior myself, was wondering if Marklogic supports this transparently. Thanks, Mark On Feb 4, 2008 2:04 PM, Danny Sokolsky <[EMAIL PROTECTED]> wrote: > Hi Mark, > > > > If what you mean by versioning is check in/check out, then the answer to > your question is that one can build an application that versions documents > with MarkLogic. Because MarkLogic Server supports transactions, you can > build an application that would keep track of the versions of a document and > allow users to check out and check in different versions, and have MarkLogic > Server store all of the versions of the documents. > > > > When you update a document in a transaction (in an XQuery statement), the > transaction is run as an update statement in what is known as > Readers/Writers mode. In readers/writers mode, a lock is put on the > document(s) used in the statement, and no other transactions can update > those documents until those locks are released, which happens at the end of > the transaction when the update commits, so transactional integrity is > preserved. > > > > I am not sure what you mean by the "last update wins" scenario; in a > transaction, the updates are always consistent. These transactions all > happen automatically in MarkLogic Server, whenever there is an update that > occurs within an XQuery statement. Now if another transaction comes along > after the first one commits, it will see the newly committed version of the > document, and if it updates it, it will lock it so no one else can update > during the transaction. Meanwhile, the documents being updated are still > available for read-only queries (including searches); any query will use the > latest committed version of the document(s) at the time in which it runs. > > > > For details how this works, see the "Understanding Transactions in > MarkLogic Server" chapter of the Developer's Guide ( > http://developer.marklogic.com/pubs/3.2/books/dev_guide.pdf). > > > > -Danny > > > > *From:* [EMAIL PROTECTED] [mailto: > [EMAIL PROTECTED] *On Behalf Of *Mark Waschkowski > *Sent:* Saturday, February 02, 2008 6:25 AM > *To:* [email protected] > *Subject:* [MarkLogic Dev General] versioning of data > > > > Hi, > > I checked the dev doc but didn't see anything exactly like my question: > does Marklogic support versioning of documents, or any plans to in the > future? I'm concerned about the 'last update wins' scenario. > > Thanks, > > Mark > > _______________________________________________ > General mailing list > [email protected] > http://xqzone.com/mailman/listinfo/general > >
_______________________________________________ General mailing list [email protected] http://xqzone.com/mailman/listinfo/general
