在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()。
- 小心同名兄弟姐妹。
- 参考文献被认为是有害的。
- 文件是文件。
- 身份证是邪恶的。