如何组织大量对象

时间:2010-04-29 02:35:39

标签: file

我们有大量与这些文档相关的文档和元数据(xml文件)。组织它们的最佳方法是什么?

目前我们已经创建了一个目录层次结构:

/repository/category/date(when they were loaded into our db)/document_number.pdf and .xml

我们将路径用作系统中文档的唯一标识符。 具有扁平结构似乎不是一个好的选择。同时使用路径作为id有助于保持我们的数据独立于我们的数据库/应用程序逻辑,因此我们可以在发生故障时轻松地重新加载它们,并且所有文档都将维护它们的旧ID。 然而,它引入了一些限制。例如,我们不能移动文件一旦放在这个结构中,也需要工作这样做。 什么是最佳做法?像Scribd这样的网站如何处理这个问题?

1 个答案:

答案 0 :(得分:0)

您的方法似乎并不合理,但如果您在一天内添加了超过几千个文档(文件系统往往无法很好地处理目录中的大量文件),则可能会受到影响。

将.xml文档存储在.pdf旁边似乎有点奇怪 - 如果它真的是关于文档的元数据,那么它应该不在数据库中(听起来像你已经拥有),它可以很容易地查询和索引等?

当存储大量文件时,我通常会获取文件的密钥(例如,URL),对其进行哈希处理,然后根据哈希的第一个字符将X级别存储在目录中...

假设你开始使用密钥“How to organize a large number of objects”。 md5哈希就是0a74d5fb3da8648126ec106623761ac5所以你可以将它存储在......

base_dir / 0 /一个/ 7/4 / HTTP ___ stackoverflow.com_questions_2734454_how到组织-A-大数的对象

...或者类似于你开始时可以轻松找到的那些东西。

这种方法比你的日期方法有一个优点,它可以缩放以适应非常大量的文档(即使每天),而没有任何一个目录变得太大,但另一方面,它不太直观有人必须手动查找特定文件。