课程名称:Spring Cloud 进阶 Alibaba 微服务体系自媒体实战
课程章节: 第5章 Admin 平台运营管理中心服务
主讲老师: 风间影月
课程内容
历史数据快照:比如在电商系统里用户购买一个商品,都会涉及到订单,那么在用户下单购买的时候,该订单对应的商品数据就是此时此刻的数据,该商品数据不会随着商户的更改而更改,这就是快照数据。比如今天用户购买价格是100块钱,明天涨价10块钱,那么用户在查看订单的时候,价格就应该是下单的价格,这些都是快照数据。而快照数据对于每个用户来说有很多,所以往往把他们剥离出来放到MongoDB中去。
用户浏览记录:用户在电商系统会浏览很多商品,那么如果存到数据库,那么该张表的数据就是指数级增长了,db压力相当大,所以可以剥离放入到mongodb中。
客服聊天记录:虽然我们对外称聊天记录不存保存,但是我们还是会存储一下,而聊天记录都是非关键数据,哪怕没有也无所谓,所以完全可以放到mongodb中去。
能不能把这些数据都存redis中呢?
不行,因为redis数据保存到内存,内存很贵的,如果你们公司老板土豪,可以无限购买内存的话,无所谓。但是需要考虑内存成本的时候,这就需要使用mongodb了。
所以说,Redis主要用来分摊读压力,提供缓存机制。而MongoDB为数据库分摊大数据量的存储压力,此外这些都是非核心业务数据,哪怕全部丢失了,也无所谓,不会造成整个系统崩溃。
MongoDB的使用场景
MongoDB除课程上使用的一些场景外,外有一下几个场景:
mongodb的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。mongo适用于以下场景:
a.网站数据:mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
b.缓存:由于性能很高,mongo也适合作为信息基础设施的缓存层。在系统重启之后,由mongo搭建的持久化缓存可以避免下层的数据源过载。
c.大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比较贵,在此之前,很多程序员往往会选择传统的文件进行存储。
d.高伸缩性的场景:mongo非常适合由数十或者数百台服务器组成的数据库。
e.用于对象及JSON数据的存储:mongo的BSON数据格式非常适合文档格式化的存储及查询。