存储500.000张图像的最有效方法是什么?

Ari*_*ona 5 php optimization

我正在为一个网站编写一个基本的图库,在任何时候都有大约40,000名在线人员.用户将能够创建图库和上传图像.

我的问题是,我应该为每个图库创建一个单独的文件夹并将图像放入其中,或者创建一个文件夹并将所有图像放入其中,但是为数据库中的每个图像保留gallery_id吗?或者,我应该为每个用户创建一个目录,然后在其中的另一个目录中为库名称?

你会怎么做?

PS.我需要它尽可能轻.

bum*_*box 9

我会通过id存储它们,我会将它们分成文件夹(依赖于文件系统,有些文件夹中的大量文件表现不佳),如果你必须手动查看某些文件,它会更容易找到它们

给每个文件一个id,然后使用文件名的前3位数字,将它们分成文件夹.(你可以在100000开始你的自动增量计数器或零填充id,所以至少有3个级别

/photos/1/0/3/103456.jpg
/photos/9/4/1/941000.jpg
/photos/0/0/0/000001.jpg
Run Code Online (Sandbox Code Playgroud)

您可以在数据库中存储照片与用户/图库/等的关系

或者,如果你想看看大男孩是如何做到的

大海捞针:高效存储数十亿张照片

  • +1这是一个很好的答案,但是我建议使用像我在答案中所说的哈希函数,以确保ID均匀分布,并且不会在一个文件夹中包含过多文件 (2认同)