我创建了一个包含项目,员工等表格的数据库。 我有一些与我的数据库中的条目相关的fotos和pdf文件(例如,扫描证书),这些文件应该可以通过我们的内部网站访问。
有没有人对如何管理这个有任何建议?
我正在考虑设置子域“files.ourdomain.com”,并为每个表创建子目录。并为每条记录创建一个目录?我应该为“employee.certificates”创建一个DB字段,其中包含证书的整个路径/文件名吗?`
或者我应该将文件存储在数据库中? (MySql INNODB)
答案 0 :(得分:0)
在评论中,Peter表示出于安全原因将文件存储在数据库中会更容易和更好,并且有一种情况 - 只有DBA和网络服务器才能访问文件和它们可以加密。我不同意"更容易"但是,因为您需要在将图像放入数据库之前对其进行编码,然后在想要显示时再次解码。
您可以选择:
每种方法都有利有弊:
如果您将文件存储在数据库中,您可以将备份文件放到另一台服务器上,一切都将存在。但是,如果您正在使用复制或群集,则每个服务器都将拥有该文件的副本,因此存储要求会增加。显而易见,您还需要更多的备份空间,备份和恢复将按比例延长。
如果将文件存储在中央位置并仅记录位置,则数据库存储要求较低,并且多个数据库服务器可以确信只有一个文件副本。同样,文件可以单独备份。缺点是"如果您的文件存储服务器出现故障"会发生什么。但是,通过镜像和备份,可以减轻这种情况。
在这两种情况下,您都需要为每个文件存储一个文件名,以便网络服务器可以使用它们。
看看this Stack Overflow question,它的优点和缺点比我做得好得多。
就个人而言,我存储了一个链接到外部文件的文件名。