React+Node.js项目文件存储方案咨询:数据库还是云服务商?
文件存储方案选择:数据库 vs 云服务商(Node.js场景)
Node.js开发中的常见做法
目前Node.js做文件上传的主流方案是用云服务商的对象存储服务,而非直接把文件存在数据库里,原因很实际:
- 云存储自带CDN加速,视频、图片这类静态资源加载速度快,用户体验更流畅
- 不用自行维护存储服务器,省去磁盘扩容、故障恢复等运维麻烦
- 原生支持分片上传、断点续传等刚需功能,处理大文件(比如几十G的视频)比自研逻辑靠谱得多
- 有成熟的Node.js SDK可用,比如对接AWS S3的
aws-sdk、国内云厂商的ali-oss等,开发成本低
将文件存储在数据库是否合理?
分场景判断:
- 如果是极小量的小文件(比如几KB的配置文件、小图标),存在数据库的BLOB字段里勉强可行,但绝非最优解
- 但如果是视频、大图片、任意类型的大文件,存在数据库里完全不合理,坑点很多:
- 数据库体积会急剧膨胀,备份、迁移时耗时极长,磁盘占用容易失控
- 获取文件需走数据库查询,比直接读取云存储静态资源慢很多,拖垮系统性能
- 数据库的并发能力本就不是为承载静态资源请求设计的,高流量下极易崩溃
说白了,除非你有极特殊的场景(比如文件必须和业务数据强绑定且总量极小),否则别把大文件存进数据库。
内容的提问来源于stack exchange,提问作者Hasan Mousa
相关产品推荐
相关产品推荐

