gpt4 book ai didi

image - 用于在社交网站中存储图像的文件层次结构?

转载 作者:行者123 更新时间:2023-12-01 06:43:06 25 4
gpt4 key购买 nike

哪种类型的文件系统有利于在拥有约 5 万用户的社交网站中存储图像?

我的意思是说如何创建目录?用于存储图像的文件夹层次结构应该是什么(例如按相册或按用户)。

我知道 Facebook 现在使用 haystack,但在此之前它使用简单的 NFS。 NFS 的层次结构是什么?

最佳答案

从文件系统的角度来看,没有“最佳”方法可以做到这一点——例如,除了您在写入照片的 NFS 共享中创建的目录之外,NFS 没有任何设置的“层次结构”。

每个底层文件系统类型(不是 NFS,我的意思是您将使用 NFS 从中提供文件的服务器端文件系统)都有自己独特的性能特征,但可能所有这些都具有相对较快的( O(1) 或至少 O(log(n)) )方式在目录中查找文件。出于这个原因,您基本上可以执行任何您想要的目录结构并获得“不差”的性能。因此,您应该根据什么使编写和维护应用程序最容易来做出决定,特别是因为您现在的用户数量相对较少。

也就是说,如果我试图解决这个问题并想使用一个相对简单的解决方案,我可能会给每张照片一个很长的十六进制随机数(如 b16eabce1f694f9bb754f3d84ba4b73e )或使用照片的校验和(如运行的输出md5/md5sum 在照片文件上,如 5983392e6eaaf5fb7d7ec95357cf0480 ),然后将其拆分为“目录”前缀和“文件名”后缀,如 5983392e6/eaaf5fb7d7ec95357cf0480.jpg 。选择创建拆分的数量将决定您最终在每个目录中的文件数量。然后我会将数字/校验和存储为您用来跟踪已上传照片的数据库表中的一列。

这两种方法之间的权衡主要与性能相关:创建随机数比执行校验和快得多,但校验和允许您注意到已上传多张同一张照片并节省存储空间(如果这可能在您的网站上很常见) ,我不知道:-))。加密安全校验和还创建分布非常好的值,因此您可以确定最终不会在一个特定目录中人为地获得大量照片(即使黑客知道您使用的是什么校验和算法)。

如果您发现您选择的确切分割点无法再扩展,因为它每个目录需要太多文件,您可以简单地添加另一级目录嵌套,例如从 5983392e6/eaaf5fb7d7ec95357cf0480.jpg 切换到 5983392e6/eaaf5fb7/d7ec95357cf0480.jpg 。此外,如果您的单个 NFS 服务器无法再单独处理负载,您可以使用前缀将照片分布到多个 NFS 服务器而不是简单地分布在多个目录中。

关于image - 用于在社交网站中存储图像的文件层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8397979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com