【问题标题】:Why not store files in the database?为什么不将文件存储在数据库中?
【发布时间】:2013-09-29 16:05:11
【问题描述】:

在将部署在 heroku 上的应用中......

我需要允许用户上传缩略图。

部署 heroku 的应用程序当然没有持久的本地文件存储。

在这里做的典型事情,谷歌搜索,似乎是将文件存储在 Amazon S3 或其他 AWS 托管的云存储中。

但是如果我只是将图像粘贴在 postgres blob 列中呢?

这样做有什么缺点?好处是,不必为其他存储付费,不必处理具有更多错误和中断机会的额外外部系统。但是似乎没有人这样做一定有一些很好的理由,它们是什么?

【问题讨论】:

    标签: database heroku upload blob


    【解决方案1】:

    数据库和 S3 是两种不同的存储机制。它们有何不同?

    关于 S3

    Amazon S3 是一个高度专业化的文件存储系统。它最大限度地减少了您可以对基本的读/写/删除文件操作执行的操作,并优化了缓存以提供存储的整个文件的数据。

    关于 Postgres

    Postgres 是一种 SQL 关系型数据库,具有极大的灵活性,可以为各种操作存储和索引数据。您可以很好地将二进制图像数据塞进 Postgres 中的一行。

    比较成本/可扩展性

    您为什么会选择 S3 而不是 Postgres?成本和可扩展性。 Postgres 是一个昂贵的、高技能的多面手。在 Heroku 上,根据数据量和流量规模,运行 Postgres 数据库可能每月花费数百或数千美元。

    Amazon S3 是一种廉价且高度可扩展的解决方案,完全符合您的需求(编写图像,在网页上下文中提供图像)。

    TL;DR:Amazon S3 针对图像等文件进行了高度优化、高度可扩展且相对便宜。

    【讨论】:

    • 对不应该公开的敏感数据有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2011-07-04
    • 2017-04-29
    • 1970-01-01
    • 2013-10-18
    • 2012-06-04
    • 2011-04-10
    • 2016-06-22
    • 1970-01-01
    相关资源
    最近更新 更多