【发布时间】:2013-04-21 12:14:52
【问题描述】:
我正在设计一种存储许多大文件的解决方案。从我在 stackoverflow 上读到的内容来看,像 Mongodb 这样的数据库系统是存储大量文件的最佳方式(来源:Scalable File Storage)。为什么?当然,我最好将文件简单地存储在可扩展系统(如 Amazon)上的文件系统中,并为每个文件指定一个 ID。
试图找到我看过的答案:
- Image upload storage strategies
- MySQL Binary Storage using BLOB VS OS File System: large files, large quantities, large problems
- Large scale image storage
- Difference between Object Storage And File Storage
- Scalable File Storage
到目前为止,我很感激:
- 存储在文件系统上会使服务器迁移更加困难。
- 一个目录中可以保存的文件和文件夹的数量是有限制的。
这两点似乎都不能让我相信将文件保存在数据库中的额外工作是值得的。在我看来,如果我在其中存储大文件而不是直接存储在文件系统中,则会增加数据库灾难性损坏的风险。我目前正在考虑将文件存储在 Amazon s3 解决方案中。如果我疯了和/或我是否忽略了任何事情,你能告诉我吗?
【问题讨论】:
-
我不确定你在做什么,但如果涉及金钱,我会使用第 3 方来确保它们被安全存储。然而,在大多数情况下,我会将它们存储在文件系统中。问题是,您需要提出一个好的数据库模式来组织文件及其所有信息。您必须问自己的另一个问题是,文件是否应该受到保护?如果是这样,您需要采取额外的步骤来确保它们不能通过 URL 操作轻松访问。
-
存储大文件的最佳方式是在服务器的文件系统或 CDN 上,而不是在数据库中 - 仅在数据库中存储对文件的引用
-
我会使用 S3。我会考虑开发自己的系统的唯一条件是是否存在排除使用 S3 的合规性要求。在小规模上,构建一个系统来构建一个与 s3 具有相同性能/可靠性的系统是非常昂贵的。
标签: php mongodb amazon-ec2