mysql,es,mongodb,redis区别与应用场景
mysql为sql型数据库
es,mongodb,redis为nosql型数据库
主要用于存储有结构的数据
MySQL是典型的SQL代表,在数据结构比较固定,对数据完整性有严格要求的地方应该使用MySQL,例如商品库存,用户积分,用户个人信息等地方.
主要用于缓存
Redis是键值对存储系统,通过Key进行数据的操作,通常是将数据存储在内存中,当然也可以做持久化,但是通常也没有太多必要,用来做数据持久化的数据库很多,而且比它好用,所以Reids通常用来做数据的缓存.因为是通过key进行数据的操作,并且存储在内存中,所以操作速度非常快,但是你也别往里面存很多数据,并且数据也要设置一个过期时间.
Redis通常用来存储用户登录信息,例如token,根据明确id值查询的并且可能再同一个时间段内会被反复读取的数据.
主要用于处理复杂类型的搜索
ES可以用于做一些低质量,大数据记录的检索功能,所谓低质量就是这些数据并不是要求很严密的或者说实时的,ES数据被称为准实时,也就是离实时数据还有不少差距.类似于信息检索,用户日志检索,商品检索数据可以放在ES中.
主要用于处理存在大量数据,且这些数据没同一结构,但是要求查询性能高,例如扫码记录;做一个活动可能瞬间生成几百万条记录,此时对这些记录进行查询如果用mysql就非常慢
鉴于MongoDB的这些特性,它可以用来处理大量的低价值数据,并且对数据处理性能要求比较高,而且还可能存在数据结构需要高度的伸缩性.
通俗来说,就是处理一些数据量多,而且数据相关度不高,不存在需要很高的准确性(例如实时的库存),数据格式可能会有变化,并且还对数据的操作要求响应比较快.那么哪些场景符合这些特征了?
例如:用户评论,评分,商品详情,这类信息.