[MarkLogic Dev General] Performance of fn:exists(fn:doc($uri))

Geert Josten geert.josten at dayon.nl
Thu Aug 30 11:06:37 PDT 2012

That read-locks are URI locks, not fragment locks is something I didn't
know. Sounds excellent, should have known earlier..

And now the internal code MarkLogic uses to generate id's for all its
internal objects makes much more sense too..

Mike wrote:
> To put it more simply: how are you going to guarantee the uniqueness of
the URI, if not by checking to see if it exists?

I can only think of one other way, by using a write lock on a fixed uri
(or several fixed uri's), like always doing a
xdmp:document-insert('/assets/lock', <x/>) before deriving a new uri. But
that slows down creation processes, likely more than using the read-lock
approach. :-/

That leaves perhaps only one thing that need attention. If you already
have many documents, then the likeliness random comes up with an id that
already exists increases. The average number of attempts it needs to take
to find an unused number increases over time too. Luckely the range of
random is very large (20 digits), so you really need quite a very lot of
documents to even get close to 1/100000 of the space..



More information about the General mailing list