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