NFS 层次结构建议
Posted
技术标签:
【中文标题】NFS 层次结构建议【英文标题】:NFS hierarchy suggestions 【发布时间】:2013-09-19 15:12:43 【问题描述】:我正在创建一个允许用户上传视频/mp3/图像的网页。我一直在四处寻找可以为我指明正确方向的东西,但没有任何东西可以帮助解决这个问题。
在创建帐户时为每个用户设置一个新目录或将文件保存在一个文件夹中以对应文件类型更有效吗?
示例 1:
htdocs/user/media/image
htdocs/user/media/video
htdocs/user/media/audio
似乎这个选项可以让每个用户在他们已经登录后更快地更新,但如果我有很多人加入该网站,这将意味着很多新文件夹。
示例 2:
htdocs/media/image
htdocs/media/video
htdocs/media/audio
这个选项似乎很快就会失控,并可能影响访问文件的速度。
【问题讨论】:
【参考方案1】:您的应用程序将要做什么都很重要。
我认为对您的应用程序来说最好的办法是为每张上传的图片生成一个随机名称,然后创建一个嵌套文件夹结构来存储图片。例如,如果用户上传了一张照片,而您将其命名为 1234.png。然后,您可以将此图片存储在文件夹结构 //1/2/1234.png 中,类似地,ab234.png 将存储在 //a/b/ab234.png 中。这种结构允许增长,最大限度地减少文件夹数量,并最大限度地减少每个文件夹的文件数量。
要索引文件,您可以使用 mysql 数据库。在 MySql 数据库中,您可以有一个将 userIds 链接到磁盘上的图片位置的表。您的表将有几列。对于具有图片 1234.png 的用户“1”,表格条目将为
【讨论】:
是否所有特定用户的媒体都存储在相同的文件夹结构(即 a/b/)中,或者每个上传的文件夹结构是随机的,并且表格只跟踪属于每个用户的图像和就从四面八方抢过来?这是否类似于 facebook 用于存储图像的方式(在 haystack 方法之前)?我记得从那里保存图片,名字有 50 多个随机字符。 每次上传都会有随机的文件夹结构,表格只是跟踪属于每个用户的图像,然后从各个地方抓取它们。这就是许多公司/小型项目存储数据的方式,因为它非常简单并且扩展性很好。一旦进入数以百万计的范围,您可能需要调整图像的存储方式。我还建议在导入图像时将图像重新格式化为标准尺寸,甚至可能创建多个版本(较小的尺寸用作缩略图等) 我想如果我赚到数百万,无论如何我都会有更大的鱼要炸。还有一个问题,关于在这样的结构中保护用户文件的最佳方法有什么建议吗? 当您使用 MySQL 访问文件时,用户图片将只能由链接到该文件的 userId 访问。实际上,除了他们的 userId 在 MySql 中知道的文件之外,没有用户可以访问任何文件。只有 root 或特权帐户才能访问所有文件。以上是关于NFS 层次结构建议的主要内容,如果未能解决你的问题,请参考以下文章