数据库相关对比

MYSQL Oracle

关系型数据库。
结构化数据,也是最常用的数据库。比如用户账号、权限

  1. 数据通常需要做结构化查询,比如join
  2. 数据的规模、增长的速度通常是可以预期的
  3. 事务性、一致性

MongoDB

key-value型,根据key查询速度快
NoSQL适合存储非结构化数据,如网络文章、评论

  1. 数据通常用于模糊处理,如全文搜索、机器学习
  2. 数据是海量的,而且增长的速度是难以预期的,
  3. 根据数据的特点,NoSQL数据库通常具有无限(至少接近)伸缩性
  4. 按key获取数据效率很高,但是对join或其他结构化查询的支持就比较差

Redis

key-value型,根据key查询速度快
内存数据库,也可以存储到磁盘。
适用于热点数据缓存以及共享,比如token权限信息、系统字典信息等。

ElasticSearch

非关系型数据库
ELK
使用倒排索引,每个字段都被索引且可用于搜索,在海量数据下近实时实现近秒级的响应,基于Lucene的开源搜索引擎,为搜索引擎(全文检索,高亮,搜索推荐等)提供了检索的能力。

适用于日志等的数据分析,关键词查询。
GitHub(开源代码管理),搜索上千亿行代码
电商网站,检索商品

ES可以作为检索层与MYSQL作为基础存储层进行组合使用。