在jcr存储库中组织文件的正确方法

问题描述:

什么是在使用JCR的wcm中组织文件的正确方法。假设文件总数超过100,000个文件,总文件大小约为50-70GB。 是否更好地组织由fie类型的文件(并创建子目录进一步按某些类别对文件进行分组)在jcr存储库中组织文件的正确方法

有什么优势。在使用查询API,维护或其他功能时它有什么区别吗?

Proposal 1: 
--shared 
------images 
------pdf 
------movies 
--location1 
------images 
------pdf 
------movies 
--location2 
------images 
------pdf 
------movies 

Proposal 2: 
--pdf 
-------shared 
-------location1 
-------location2 
--images 
--------shared 
--------location1 
--------location2 
.. etc 

无论你做什么,请确保你最终没有超过1000个子节点在任何给定的节点下。 就像在任何(真实)文件系统中一样,当您想列出包含大量文件/子文件夹的文件夹时,可能需要一些时间。 默认情况下,Jackrabbit 2.x将散列用户空间。 即:

/users/s/sa/sandra 
/users/s/si/simong 
... 

我会亲自去为你的第一个建议,因为它更有意义。 我们有一个web应用程序,其中所有的用户都可以上传/删除/修改JCR的档案并没有这样说:

/_users/s/si/simon/public 
/_users/s/si/simon/public/My Pictures 
/_users/s/si/simon/public/My Pictures/2010/06/Trip to the US 
/_users/s/si/simon/public/My Pictures/2010/06/Trip to the US/DC1001.jpg 
/_users/s/si/simon/private/account_details.txt 
... 

我们松散以下回家的路上,夹在类UNIX系统中完成的。 我们尝试散列所有我们(合理)可以做的事情。像例如用户空间(/ S/SI/simong),而且还搞什么消息:

/_users/s/si/simong/messages/2009/12/25/ab34ed87dee 
/_users/s/si/simong/messages/2010/03/12/e4f1de3cd48 
... 

但是它是由个人用户不具有给定文件夹更多的则1000个的子文件(我们做的警告他们虽然。) 这样做也给你一个很好的锻炼访问控制的好处。 ie:〜/ private下的everthing只能由当前用户读写,〜/ public是每个人都可读的。

在此请看:d avid's Model: A guide for content modeling

一些亮点:

  • 数据首先,结构以后。也许。
  • 驱动内容层次结构,不要让它发生。
  • 工作区用于clone(),merge()和update()。
  • 小心同名兄弟姐妹。
  • 参考文献被认为是有害的。
  • 文件是文件。
  • 身份证是邪恶的。