关于在 PHP/MySQL CMS 中处理图像的最佳实践的快速问题。每个项目将有不同数量的关联图像,这些图像将存储在项目 ID 引用的文件夹中。验证在上传时完成,因此所有文件都应该是有效的。我的问题是我是否还应该将 ID 和文件名存储在数据库表中并从数据库中提取源数据,或者是否可以简单地遍历文件夹并直接插入源文件名?
我希望这是有道理的。提前感谢您的任何建议。
这在很大程度上取决于您想要多少故障点以及响应时间的速度。
如果将其存储在文件系统上:
但是,如果将其作为二进制 blob 存储在数据库中:
在这两种情况下,只要设置了正确的索引/键,第 3 步(数据库找到行)就可以与我们的 WITHOUT blob 列一样快。MySQL 会在内部将指针移动到精确的索引位置——它实际上不会遍历每个字节,直到找到正确的字节(这是索引的全部点)。这与 PHP 手动读取文件一样耗时。但是,我目前没有支持性能数据来支持这一点。
现在让我谈谈失败点:
出于可移植性、灵活性和最大程度地减少故障或损坏的目的,我一直将二进制数据作为 blob 存储在数据库中。
如果您选择将文件作为 blob 存储在数据库中,请考虑不同的 blob 存储要求:http ://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html#id656744
最后,值得深思的是:我有使用 Adobe's Day CQ 的经验,这是一个新兴的企业级内容管理系统。它主要是用 Java 编写的,但需要注意的是数据架构。它使用 JCR(Java 内容存储库),或多或少类似于多维 MySQL 数据库(有点酷?)。其 DAM(数字资产管理器)中的所有图像数据都存储为 JCR 中的一个节点。