所有大型网站都不会将图片保存到数据库中存储在磁盘中。他们将对图片位置的引用保存在表格中。然后从那里链接。
为什么?性能。
从数据库中提取大量内容是巨大的性能瓶颈。而且数据库不能很好地水平扩展,因此这将意味着更大的问题。所有大型网站都使用静态内容场来处理静态内容,例如图像。那些服务器不会关心您的身份。
您可能会问他们如何使照片真正保密?他们没有。
图片的链接本身就是地址和密码。让我们以Facebook为例。如果我在我的帐户上存储了私人照片,则您将无法打开它。但是,只要您有正确的地址就可以。
这幅画是私人的。注意文件名
10400121_87110566301_7482172_n.jpg
(facebook会不时更改URL,因此链接可能会断开)
这不是顺序的。获取图片的唯一方法是知道它的地址。
根据上一张用户的照片,您无法猜测下一张。
它具有巨大的熵,因此,即使您开始进行随机的疯狂猜测,您也会遇到大量失败,而且,如果您确实看到了图片,那么您将无法从那里意识到所有者的身份,本身就是匿名保护。
编辑(为什么不应该将图像存储在“用户名”文件夹中:
编辑之后,很明显,您确实打算将文件放在磁盘上而不是在数据库上。此编辑涵盖了新方案。
即使您的逻辑(为每个用户创建一个文件夹)接缝更加有条理,当您开始拥有许多用户和许多图片时,它仍然会带来问题。假设您的服务器有1T磁盘空间。并让我们想象一下1T在服务器可以处理的负载上或多或少是准确的。
现在您有11个用户,假设他们同时开始上传,每个用户都将上传100GB以上的文件。当它们达到91GB时,每个服务器已满,您必须开始将图像存储在其他服务器上。如果遵循该用户/文件夹结构,则必须选择一个用户并将其所有数据迁移到其他服务器。此外,它对不能上传文件超过1T的用户进行了硬限制。
那我应该将所有文件存储在同一个文件夹中吗?
不,大型站点通常将文件存储在顺序文件夹(/ 000001 /,/ 000002 /等)中,每个文件夹的x定义文件数为x。这主要是针对文件系统性能问题。
有关目录中的文件过多的更多信息?