我正在寻找一种可扩展的方式来存储用户的大量文件。我的策略是用一个随机的名称保存它们,并将名称和文件关系保存在数据库中。
我的问题是,在磁盘上存储文件的建议做法是什么?我面临的一个限制是,如果我将它们全部保存在一个目录中,操作系统的性能会降低,这是不,不。
显然,我可以在指定的整数处创建目录,并分担负载,但这只是一个技巧,我相信肯定有经过试验的真实过程来处理存储。我似乎就是找不到它们:)
我希望私下托管这些文件,而不是像S3那样放在外部存储上。
发布于 2012-11-25 22:12:40
因为您已经为每个文件指定了一个随机名称,所以可以将其切成子目录。
假设有一个随机的名字:
$randomName = 'Akj823daosd03hdx';将其保存到:
/Ak/j8/23/daosd03hdx这将限制每个目录中的节点数量。如果你有一个很好的随机分布,这应该是均匀分布的。
根据你有多少个文件,你也可以以不同的方式分发这些文件,但对于随机名称,它通常是以这种方式直接进行的。您可以根据需要改变子目录和最终文件名的长度和数量。
https://stackoverflow.com/questions/13551765
复制相似问题