Filesystems web托管网站的文件存储策略

Filesystems web托管网站的文件存储策略,filesystems,Filesystems,我将托管用户提交的文件。我需要从文件中获取一些数据,然后将其移动到某个目录 在该文件的生命周期中,有两个关注点。第一种是当数据被抽象时,第二种是当文件被归档以便可以共享时 在对数据进行抽象时,我认为应该将文件重命名为唯一的文件,或者在文件名中附加一个唯一的字符串,以防止它覆盖其他现有文件 当文件要归档时,我想到了三种策略。一种是将从某个数据上传的所有文件保存在一个文件夹中。2006/9/04,2008/1/05另一个是保留一个文件夹并不断填充它,直到我想在文件夹中保留的文件达到最大数量,然后再创

我将托管用户提交的文件。我需要从文件中获取一些数据,然后将其移动到某个目录

在该文件的生命周期中,有两个关注点。第一种是当数据被抽象时,第二种是当文件被归档以便可以共享时


在对数据进行抽象时,我认为应该将文件重命名为唯一的文件,或者在文件名中附加一个唯一的字符串,以防止它覆盖其他现有文件

当文件要归档时,我想到了三种策略。一种是将从某个数据上传的所有文件保存在一个文件夹中。2006/9/04,2008/1/05另一个是保留一个文件夹并不断填充它,直到我想在文件夹中保留的文件达到最大数量,然后再创建另一个/folder001/,/folder002/,/folder003/,等等。。。另一种方法是在子文件夹达到某个阈值后创建子文件夹。就像/j/jd/jde/jdelator一样,我在unix中看到过这一点,不知道如何解释


我的问题是你们发现了什么样的策略有用或使用了什么样的策略?

我使用了一个关系数据库,它将ID的int标记为uuid,uuid是文件的名称。这样,它们在磁盘上的位置就无关紧要了。这有助于我混淆文件。此外,我还可以使用连接任意重命名文件。此外,我可以使用不同的文件名。这完全取决于你的应用程序和它运行的位置

尽管这取决于您的应用程序等,但我建议现在保持文件存储库方案非常简单,稍后再决定更详细的策略。换句话说,你在一段时间内制造了一种有管理的混乱;结构和策略将在稍后讨论,届时您将了解所有需求和领域细节。通过保持简单,你可以很容易地改变一切


无论如何,改变是不可避免的,现在你能做的最好的事情就是选择一些策略并记录所有事情。

我会在数据库中使用guid投票,然后在必要时使用内容处置标题将其命名回原始文件名。我主张的一点是,您使用的文件夹存储在web根目录之外;您不希望用户将文件上载到您的应用程序文件夹中。

当数据被抽象时,我会选择类似的内容:filename+毫秒; 对毫秒的两个调用不太可能是相同的,而且文件名在访问时更便于用户使用

如果您决定删除旧的和未使用的文件,那么日期策略会很方便:根据您的日志,您只需获取2006文件夹,并删除去年未访问的所有文件。 这对用户来说也是一个很好的指示,因为他们会知道它是否是新文件。 folderXYZ只是这个的一个变体,它用每个N个文件的一个标记替换日期

“阈值”子文件夹可帮助您将目录的条目数保持在较低的水平,因此访问速度更快。请注意,此解决方案有时需要移动文件,如果在特定目录增长时未映射,则需要中断某些url

另一种可能是使用UID与文件名位置对应的数据库,并通过访问文件。 通过这种方式,用户将文件保存为filename.txt,这对他来说很方便,并且您可以通过使用DB将UID转换为location的URL知道在哪里可以找到文件。 请注意,UID可以是校验和MD5、SHA-1,以处理同一文件的重复项