MongoDB
是什么:
一个以JSON为数据模型的文档非关系型数据库
优点:
(1)最大的特点是表结构灵活可变,字段类型可以随时修改。
(2)插入数据时,不必考虑表结构的限制。
(3)不需要定义表结构这个特点给表结构的修改带来了极大的方便。
(4)原生的高可用与易扩展
缺点
给多表查询、复杂事务等高级操作带来了阻碍
应用场景
游戏场景,存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询
物流场景,存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
社交场景,存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
物联网场景,存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
视频直播,使用 MongoDB 存储用户信息、礼物信息等
适用场景
(1) MongoDB很适合那些表结构经常改变,数据的逻辑结构没又没那么复杂不需要多表查询操作,数据量又比较大的应用场景。
(2) 例如,有一个游戏应用,需要存储每个用户的信息,用户分为法师、战士等具有不同属性的角色,技能装备,MongoDB只需要一张便就行了
Redis
是什么:
是以key-value形式存储,和传统的关系型数据库不一样.不一定遵循传统数据库的一些基本要求.(非关系型的,分布式的,开源的,水平可拓展的)
优点
(1)对数据高并发读写(直接是内存中进行读写的)
(2)对海量数据的高效率存储和访问
(3)对数据的可拓展性和高可用性.
(4)单线程操作,每个操作都是原子操作,没有并发相关问题(redis 6)
缺点
(1) redis(ACID处理非常简单) 无法做太复杂的关系数据库模型
(2) 查询都需要依赖key,所以大大限制了多列查询,区段查询等复杂的查询
(3) 因为是基于内存查询的,所以限制了可存储的数据量,限制了Redis在数据规模很大的应用场景中
应用场景
redis定位是缓存, 提高数据读写速度, 减轻对数据库存储与访问压力
(1) 由于Redis牺牲了常规数据库中的数据表、复杂查询等功能,换来了很大的性能的提升
(2) 适合对读写性能极高,且数据表结构简单,查询条件简单的应用场景
ElasticSearch
是什么:
ElasticSearch是一个基于Lucene的搜索引擎
优点
(1) Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。
(2) Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。
(3) es可以为你自动建立索引,实现高性能的复杂聚合查询
(4) Elasticsearch 采用 Gateway 的概念,使得完备份更加简单
缺点
最明显的就是字段类型无法修改、写入性能较低、高性能资源消耗
应用场景
1>海量数据分析引擎 2>站内搜索引擎 3>数据仓库