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

时间:2010-06-02 15:45:28

标签: jcr

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

有什么好处。使用查询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

2 个答案:

答案 0 :(得分:2)

看看这个:D avid's Model: A guide for content modeling

一些亮点:

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

答案 1 :(得分:1)

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

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

我会亲自去找你的第一个提案,因为它更有意义。 我们有一个webapp,我们所有的用户都可以在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类系统中完全遵循home文件夹的方式。 我们试图弄清楚我们(合理地)可以做的所有事情。例如用户空间(/ s / si / simong),但也包括消息:

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

然而,由个人用户在给定文件夹中没有超过1000个子文件(我们会警告他们。) 这样做也可以为您提供进行访问控制的好处。 即:〜/ private下的everthing只能由当前用户读取和写入,〜/ public可供所有人阅读。