I don't see anything wrong with creating directories manually, there is even an 
api for it:

http://docs.marklogic.com/xdmp:directory-create

But it seems like it might be a pretty big burden on the application to do 
that, that is the only reason I was suggesting making that automatic and seeing 
how cheap or expensive that is for your app (and if you are creating the dirs 
anyway, how different would that actually be than having MarkLogic create them 
for you).

One other thing to note: newer versions of MarkLogic have a lot of performance 
improvements around large updates and deletes, so if you are on an older 
version of MarkLogic, upgrades can be good.

-Danny

________________________________
From: [email protected] 
[[email protected]] on behalf of Michael Sokolov 
[[email protected]]
Sent: Thursday, May 22, 2014 7:18 PM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] best practices for manual directory 
creation

Thanks for the suggestion, Danny; it seems sensible.  At this stage I don't 
want to modify the rest of the system, which is pretty mature and relies on the 
system-maintained last-modified property.  In fact we already maintain a 
separate modified timestamp in the documents with different semantics (eg you 
can copy a document without updating its timestamp), but this can't be used for 
tracking changes to binary documents.  So I think we are stuck with the 
built-in maintain-last-modified.

I did briefly try having directory creation=automatic + maintain directory last 
modified=false and maintain-last-modified=true, but I thought it looked as if 
things were slowing down again during a large document import.  I didn't 
measure carefully or continue this experiment for long though because I think I 
have a solution to the manual directory creation that is effective.  All our 
document updates go through a single java API, so I can track updated uris 
there and manage directory insertion in batches as a separate process.  And it 
seems that the trick of setting the <directory/> property tickles the 
modified-time.  I suppose if that became unsupported it could cause problems, 
but I think I can live with that risk.

Coming back around to my initial question though -- it seems like the consensus 
here is that best practice is *not* to create directories manually?

-Mike

On 5/22/2014 12:05 PM, Danny Sokolsky wrote:
I think if you want to maintain these yourself, you should not use the system 
maintained properties; instead, make up some of your own that do the equivalent 
things.

That being said, have you tried leaving directory creation at automatic, but 
turning off maintain last modified and maintain directory last modified?  
Depending upon how deep your directory hierarchy is, this might not cause too 
much overhead.  I would recommend trying that, and then just add a dateTime 
property (or element in the document if you prefer, allowing you to not have to 
create a property fragment) to track whatever you want about the last modified 
(based on your app requirements).  I think that might work well, especially if 
your hierarchy does not not have millions of directories.  See how it works and 
let us know.

-Danny

From: 
[email protected]<mailto:[email protected]>
 [mailto:[email protected]] On Behalf Of Keith L. 
Breinholt
Sent: Thursday, May 22, 2014 8:23 AM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] best practices for manual directory 
creation

<prop:last-modified> is not a property that you can manually set.  I believe 
that is a security issue.

From: 
[email protected]<mailto:[email protected]>
 [mailto:[email protected]] On Behalf Of Mike Sokolov
Sent: Thursday, May 22, 2014 8:26 AM
To: MarkLogic General ML
Subject: Re: [MarkLogic Dev General] best practices for manual directory 
creation

I'm getting good results updating the directory timestamps using:

xdmp:document-set-properties ($dir-uri, <prop:directory/>)

and this seems to limit the number of prop:directory properties to 2 too

-Mike
On 05/22/2014 10:03 AM, Mike Sokolov wrote:
I'm working with a system that requires directories and directory-modified 
timestamps (for a webDAV-like browsing feature), but have found that automatic 
directory creation introduces unacceptable lock contention during bulk updates, 
so I am looking into managing the directory creation and timestamp updates 
manually.

I have one question, and one strange observation - maybe a bug.  I'm working 
with 7.0-2.3.

First the question: how should I update the prop:last-modified property?

Updating it explicitly raises an error:
XDMP-ARG: xdmp:document-set-property("/books/", <prop:last-modified 
xmlns:prop="http://marklogic.com/xdmp/property";<https://urldefense.proofpoint.com/v1/url?u=http://marklogic.com/xdmp/property&k=wlPCrglRP6kzT4RbABWMaw%3D%3D%0A&r=2FOxwjXkcRFP9Zb5gsGqutGbMyYaH6V5O1y2qyDOE%2Bw%3D%0A&m=tMQwNzleMcPFHrHVywsz7LShGCB7BV0fr4nwOoRO9yE%3D%0A&s=b129b0afdc261f273e05e156d512fac53273fae49be30e4e6423deb66508ad09>>2014-05-22T15:53:46.724003+02:00</prop:last-modified>)
 -- Invalid argument

even though I have "maintain directory last modified" set to false (and 
directory creation = manual).  I do have maintain last modified set to true, so 
I expect that is happening automatically on directory creation - OK, but in 
that instance how would I update the directory modified time when inserting or 
deleting documents in the directory?

I tried adding a dummy property using xdmp:set-property, and that does seem to 
update the timestamp, but I don't really want to do that if I don't have to, of 
course.  Perhaps I could delete and then recreate the directory properties 
document, but that doesn't seem great either. Any other ideas?

Now the weird observation.  It seems that every time I modify the directory 
properties document, it gets another <prop:directory /> property node!  
Currently I have:

<prop:properties 
xmlns:prop="http://marklogic.com/xdmp/property";<https://urldefense.proofpoint.com/v1/url?u=http://marklogic.com/xdmp/property&k=wlPCrglRP6kzT4RbABWMaw%3D%3D%0A&r=2FOxwjXkcRFP9Zb5gsGqutGbMyYaH6V5O1y2qyDOE%2Bw%3D%0A&m=tMQwNzleMcPFHrHVywsz7LShGCB7BV0fr4nwOoRO9yE%3D%0A&s=b129b0afdc261f273e05e156d512fac53273fae49be30e4e6423deb66508ad09>>
<prop:directory/>
<prop:directory/>
<prop:directory/>
<prop:directory/>
<prop:directory/>
<prop:directory/>
<prop:directory/>
<prop:directory/>
<prop:directory/>
<prop:directory/>
<prop:last-modified>2014-05-22T15:47:37+02:00</prop:last-modified>
</prop:properties>

I thought that properties documents maintained a map with unique keys?

-Mike



_______________________________________________

General mailing list

[email protected]<mailto:[email protected]>

http://developer.marklogic.com/mailman/listinfo/general<https://urldefense.proofpoint.com/v1/url?u=http://developer.marklogic.com/mailman/listinfo/general&k=wlPCrglRP6kzT4RbABWMaw%3D%3D%0A&r=2FOxwjXkcRFP9Zb5gsGqutGbMyYaH6V5O1y2qyDOE%2Bw%3D%0A&m=tMQwNzleMcPFHrHVywsz7LShGCB7BV0fr4nwOoRO9yE%3D%0A&s=c9cb9dbd161260f93e52fe3901e1bb716460a6fcc74f86cb436db69aa2cd554c>



NOTICE: This email message is for the sole use of the intended recipient(s) and 
may contain confidential and privileged information. Any unauthorized review, 
use, disclosure or distribution is prohibited. If you are not the intended 
recipient, please contact the sender by reply email and destroy all copies of 
the original message.




_______________________________________________
General mailing list
[email protected]<mailto:[email protected]>
http://developer.marklogic.com/mailman/listinfo/general


_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to