使用SQLite数据库的Django图片售卖网站生产部署问题咨询
生产部署相关问题解答
SQLite在生产环境的问题
- SQLite是轻量文件型数据库,仅支持单线程写入,高并发场景下会直接触发数据库锁,导致所有写入请求(订单提交、支付回调、用户信息修改等)超时失败,对交易类站点影响极大,只要日活超过100就很容易触发这个问题。
- 生产级数据库必备的权限管控、自动备份、故障恢复能力SQLite都不具备,一旦数据库文件损坏,几乎不可能完整恢复数据,会直接造成用户、订单、资产数据丢失。
- 后续如果要做集群部署、读写分离扩展,SQLite完全不支持,到时候再迁移到MySQL/PostgreSQL的成本会很高。
图片存储方案选择
- 初期业务量小的情况下,完全可以把整站和图片都放在同一台主机,不用额外采购单独的存储主机,只要把静态资源访问规则配置好,就能正常对外提供服务,和本地运行的逻辑基本一致。
- 非常不建议把图片二进制内容存在数据库里,不管用不用单独存储主机,都应该把图片存到服务器磁盘,数据库仅存储图片的路径、售价、权限、所有者这类元数据。否则数据库体积会快速膨胀,查询效率大幅下降,用户下载时还要多一层数据库读取逻辑,响应速度会慢很多。
- 等到后续访问量上涨,单台服务器带宽扛不住多人同时下载,或者图片总容量超过单台磁盘上限的时候,再迁移到单独的存储节点即可,初期不用提前投入冗余成本。
内容的提问来源于stack exchange,提问作者Novartis Nk
相关产品推荐
相关产品推荐

