我想创建一个图片库,显然,它必须包含图片。
不知何故,我一直想知道将图像存储在目录中并逐个检索它们或将它们作为BLOB数据存储在数据库中之间有什么好处?
谢谢大家!干杯!我愿意学习其中的任何一种方法,所以请赐教。
答案 0 :(得分:0)
这个问题多年来一直争论不休。倡导者将为每个人提供强有力的案例。在任何情况下都没有明确证明是正确的。
当您需要仓库的图像数量变得非常大时,这两种方法都会崩溃。数据库和文件系统在这几年里变得越来越好,因为我在这两个选项中都标记了两个选项。那时,您可以通过创建目录层次结构来修复“文件系统”选项中的性能命中,而不是将它们全部放在一个目录中。到目前为止,文件系统可能已经过优化,以便在目录条目数量变大时不会阻塞文件系统。
这确实是“你的里程可能会有所不同”的情况。因素将包括您将使用哪个文件系统与您将使用的数据库引擎,图像数量,平均大小?你会“标记”数据库中的图像以及存储它们吗?
通常,您必须尝试所有选项,直到找到适合您配置的内容。
绝对要对它进行压力测试。如果您认为需要存储一百万个图像,请不要使用五个图像进行测试,并假设它会缩放。 用至少一百万张图像进行测试,如果不是两百万或五百万张。
也就是说,如果你只需要存储1000张(或更少)甚至10k或更少的图像,并且你需要按照日期,位置,主题等属性对图像进行索引,那么就有可能冒犯很多非常有意义的人,我建议将图像存储为数据库中的blob。使用数据库将图像加入元数据的便利性将超过任何人在该规模上的性能问题。当您使用指向文件系统中文件的指针将数据库存储在数据库中时,事情很容易失去同步。文件被移动,重命名,删除等;你的数据库不会知道,现在你的系统坏了。 使用数据库将确保数据的完整性,包括适合您的图像。
答案 1 :(得分:-1)
首先,您需要在任何预定义文件夹中上传文件,而不是在数据库中存储该文件的名称(使用is varchar数据类型)。
当您获取这些记录时,请使用该名称在需要应用程序的地方重新创建图像路径。