【问题标题】:How best to store web application images in the filesystem如何最好地将 Web 应用程序图像存储在文件系统中
【发布时间】:2023-03-06 18:19:02
【问题描述】:

在文件系统中存储大量在数据库中引用的文件的最佳做法是什么?

我们目前正在从一个在 MySQL 数据库中存储大约 14,000 个文件(大约 6GB 图像和文档)的系统迁移。这很快就会变得难以管理。

我们目前计划通过文件系统中的数据库主键来保存文件。我担心在同一个文件夹中有这么多文件可能会出现性能问题。此外,这些文件将由同一服务器上的多个不同应用程序插入。

我特别想知道:

  • 考虑到这些参数,这是一个好的解决方案吗?
  • 它会在未来留下进一步扩展的空间吗?
  • 是否担心在同一位置存储多个文件?
  • 有没有更好的方法来命名/分发文件?

【问题讨论】:

标签: mysql database storage


【解决方案1】:

我喜欢将文件命名如下 /* 创建目录 */ $dir = date('Y').'/'.date('m').'/'.date('d');

【讨论】:

    【解决方案2】:

    使用 MD5 对内容进行哈希处理,然后添加一个后缀(PK 就足够了)以获取文件的新文件名。创建与哈希的第一个字符对应的 16 个文件夹。在每个文件夹下为第二个角色创建 16 个文件夹。根据散列的前 2 个十六进制字符将图像存储在适当的路径中,然后将散列添加到数据库中的适当记录中。

    【讨论】:

    • content 获取哈希的原因是什么?为什么不只是散列 PK 或 rand()time()
    • @zerkms:没有真正的原因。这只是一个方便的地方。
    • 我认为 6gb 图像的散列并不是很方便 ;-)
    • @zerkms:这还不到 2 张 DVD 的价值。这只是几个小时的“工作”。
    • 然后,再次:如果可以使用散列微时间几乎立即完成,为什么还要执行“几个小时”? ;-)
    猜你喜欢
    • 1970-01-01
    • 2010-09-16
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多