【发布时间】:2013-07-23 17:28:24
【问题描述】:
在构建 Web 应用程序时,我们通常有与数据库条目相关联的文件,例如:我们有一个 user 表,每个类别都有一个 avatar 字段,其中包含相关图像的路径。
为了确保文件名没有冲突,我们可以:
- 上传文件后重命名为
ID.jpg;那么路径将是/user-avatars/ID.jpg - 或者为每个实体创建一个子目录,保持原文件名不变;那么路径将是
/user-avatars/ID/original_filename.jpg
其中 ID 是 users 的唯一 ID 号
从应用程序逻辑的角度来看,两者都完全有效。
但是从文件系统性能的角度来看,哪一个会更好?我们必须记住,category 条目的数量可能非常高(数百万)。
一个目录可以容纳的子目录的数量是否有限制?
【问题讨论】:
-
这取决于文件系统。
-
对于不经常更改的小型只读文件(如头像图片),使用专用数据库可能有意义。即使是本地 SQLite3 实例也值得。请参阅sqlite.org/intern-v-extern-blob.html - 但在 Web 服务器上下文中,静态文件资源更有意义。
标签: file filesystems