3

我正在寻找一种可扩展的方式来存储来自用户的大量文件。我的策略是用随机名称保存它们,并将名称和文件关系保存在数据库中。

我的问题是将文件存储在磁盘上的建议做法是什么?我面临的一个限制是,如果我将它们全部保存在一个目录中,操作系统性能会降低,这是不可以的。

显然,我可以在指定的间隔创建目录并拆分负载,但这只是一种技巧,我确信必须有经过尝试和真正的程序来处理存储。我似乎找不到他们:)

我希望私下托管文件,而不是像 S3 这样的外部存储。

4

1 回答 1

3

由于您已经为每个文件指定了一个随机名称,因此将其分成子目录。

假设有一个随机名称:

$randomName = 'Akj823daosd03hdx';

保存到:

/Ak/j8/23/daosd03hdx

这将限制每个目录中的节点数。如果你有一个好的随机分布,这应该是均匀分布的。

根据您拥有的文件数量,您也可以以不同的方式分发这些文件,但使用随机名称通常以这种方式直截了当。您可以根据需要改变子目录和最终文件名的长度和数量。

于 2012-11-25T14:12:39.717 回答