HI. I believe you can do that here:
http://developer.marklogic.com/mailman/listinfo/general Kind Regards, David Ennis On 4 June 2014 23:09, Analyze That | Johan van den Brink < jo...@analyzethat.nl> wrote: > Hi guys, > > How can I unsubscribe from this mailing list? > > > Met vriendelijke groet, > > > Johan van den Brink > Consultant > Analyze That - Analytics | Data Integration | Reporting | Process Mining > Kerkewijk 8 > 3901 EG Veenendaal > T: (06) 49 92 30 30 > T: (0318) 52 55 87 > M: jo...@analyzethat.nl > W: www.analyzethat.nl > L: http://nl.linkedin.com/in/brinkjohanvanden > > -----Original Message----- > From: general-boun...@developer.marklogic.com [mailto: > general-boun...@developer.marklogic.com] On Behalf Of Whitby, Rob > Sent: woensdag 4 juni 2014 19:59 > To: MarkLogic Developer Discussion > Subject: Re: [MarkLogic Dev General] New Feature Request: Unique Value > Range Indexes > > How about something like this? > > declare function unique-uri() { > let $uri := "/doc/" || xdmp:random() || ".xml" > return if (fn:not(fn:doc-available($uri))) then $uri else unique-uri() }; > > I guess because indexes are distributed across forests, ensuring > uniqueness is not that easy? > > Rob > ________________________________________ > From: general-boun...@developer.marklogic.com [ > general-boun...@developer.marklogic.com] on behalf of Ron Hitchens [ > r...@ronsoft.com] > Sent: 04 June 2014 18:01 > To: MarkLogic Developer Discussion > Subject: [MarkLogic Dev General] New Feature Request: Unique Value Range > Indexes > > I'm working on a project, one aspect of which requires minting unique > IDs and assuring that no two documents with the same ID wind up in the > database. I know how to accomplish this using locks (I'm pretty sure) but > any such implementation is awkward and prone to subtle edge case errors, > and can be difficult to test. > > It seems to me that this is something that MarkLogic could do much more > reliably and quickly than any user-level code. The thought that occurred > to me is a variation on range indexes which only allow a single instance of > any given value. > > Conventional range indexes work by creating term lists that look like > this (see Jason Hunter's ML Architecture paper), where each term list > contains an element (or attribute) value and a list of fragment IDs where > that term exists. > > aardvark | 23, 135, 469, 611 > ant | 23, 469, 558, 611, 750 > baboon | 53, 97, 469, 621 > etc... > > By making a range index like this but which only allows a single > fragment ID in the list, that would ensure that no two documents in the > database contain a given element with the same value. That is, attempting > to add a second document with the same element or attribute value would > cause an exception. And being a range index, it would provide a fast > lexicon of all the current unique values in the DB. > > Such an index would look something like this: > > abc3vk34 | 17 > bkx46lkd | 52 > bz1d34nm | 37 > etc... > > Usage could be something like this: > > declare function create-new-id-doc ($id-root as xs:string) as xs:string { > try { > let $id := $id-root || "-" || mylib:random-string(8) > let $uri := "/idregistry/id-" || $id > let $_ := > xdmp:document-insert ($uri, > <registered-id> > <id>{ $id }</id> > <created>{ fn:current-dateTime() }</created> > </registered-id> > return $id > } catch (e) { > create-new-id-doc ($id-root) > } > }; > > This doesn't require that I write any (possibly buggy) mutual exclusion > code and I can be confident that once the xdmp:document-insert succeeds > that the ID is unique in the database and that the type (as configured for > the range index) is correct. > > Any love for Unique Value Range Indexes in the next version of > MarkLogic? > > --- > Ron Hitchens {r...@overstory.co.uk} +44 7879 358212 > > _______________________________________________ > General mailing list > General@developer.marklogic.com > http://developer.marklogic.com/mailman/listinfo/general > _______________________________________________ > General mailing list > General@developer.marklogic.com > http://developer.marklogic.com/mailman/listinfo/general > _______________________________________________ > General mailing list > General@developer.marklogic.com > http://developer.marklogic.com/mailman/listinfo/general >
_______________________________________________ General mailing list General@developer.marklogic.com http://developer.marklogic.com/mailman/listinfo/general