【发布时间】:2017-12-02 08:15:02
【问题描述】:
我在这里阅读了几个关于为什么 SQL 中的二进制文件/图像可能是一个坏主意的答案(例如,增加备份时间,会使查询变慢)。我们的项目是:
我们必须在线存储大约 5000 张图片,每张最多 1MB,因此总共需要大约 5GB 的存储空间以及每张图片的一些元数据。未来不太可能变得更复杂。
我们将提供一个 CMS,让您可以修改/上传照片。可能一次只有一个人会使用它。
我们有一个在单台计算机上运行的应用程序,它将保留所有照片的副本以加快显示速度(即,当 CMS 添加照片时,我们将有一些方法来同步它图像到应用程序)。举个例子,假设这个应用程序是一个不断运行的幻灯片。
计划是使用 AWS 或 Heroku 之类的东西来托管具有自动备份功能的 SQL 数据库,并且元数据+图像将存储在数据库中。
这个的最大优点是使用例如用于图像的 S3 + 用于元数据的数据库很简单。鉴于数据库的使用率很低,我认为速度不是问题。慢速备份似乎也不是问题。对于这个项目,成本和低维护也很重要。
这似乎是一个明智的设计还是会遇到问题?有没有像我所缺少的那样简单的东西?
【问题讨论】:
-
我想你已经想到了解决方案并得出了一个合理的解决方案。您实际上是在将数据库用于存档目的,并且您已经考虑了利弊。
-
@GordonLinoff 谢谢。我想我已经阅读了“不要将图像存储在数据库中!!!”的建议。所以很多时候感觉99%的时候这是错误的事情。在合理的情况下,某种经验法则将有助于抵消我在这里做错了什么的感觉。对我来说,规则似乎是,如果简单性是一个重要因素,您存储的数据可能不会超过 50GB,并且图像不会被太频繁地提供(例如,不要为公共站点这样做)然后图像数据库是个好主意。
-
。 .这取决于很多因素。通常,在数据库中存储大 blob 不应该是默认选项,除非您使用专门为此目的设计的数据库。但是,与大多数有关数据库的规则一样,当您仔细考虑问题并了解其后果时,通常情况下正确的内容可能并不正确。
标签: sql postgresql amazon-web-services heroku amazon-s3