MongoDB、Redis、elasticSearch、hbase的对比
MongoDB、Redis、elasticSearch、hbase的对比
MongoDB
优点:
(1) 最大的特点是表结构灵活可变,字段类型可以随时修改。
(2) 插入数据时,不必考虑表结构的限制。
(3) 不需要定义表结构这个特点给表结构的修改带来了极大的方便。
缺点
给多表查询、复杂事务等高级操作带来了阻碍
适用场景
(1) MongoDB很适合那些表结构经常改变,数据的逻辑结构没又没那么复杂不需要多表查询操作,数据量又比较大的应用场景。
(2) 例如,有一个游戏应用,需要存储每个用户的信息,用户分为法师、战士等具有不同属性的角色,技能装备,MongoDB只需要一张便就行了
Redis
优点
(1) key-value存储所带来的简单和高性能了
(2) 纯内存查询,查询速度远远高于MongoDB这类常规数据库的读写性能
(3) 支持持久化,list、set、String、zset、hashmap多种数据结构
(4) 是key-value数据库中功能最全面、最简单易用的一款数据库
缺点
(1) 给复杂查询带来了很多局限
(2) 查询都需要依赖key,所以大大限制了多列查询,区段查询等复杂的查询
(3) 因为是基于内存查询的,所以限制了可存储的数据量,限制了Redis在数据规模很大的应用场景中
应用场景
(1) 由于Redis牺牲了常规数据库中的数据表、复杂查询等功能,换来了很大的性能的提升
(2) 适合对读写性能极高,且数据表结构简单,查询条件简单的应用场景
ElasticSearch
优点
(1) 其实就是一个搜索引擎,底层是lucene,支持全文搜索
(2) 能够满足国内大多数人的全文搜索的需求,百度、Google就是使用es做的全文搜索
(3) es可以为你自动建立索引,实现高性能的复杂聚合查询
(4) 在复杂的查询也能够达到不错的性能,让开发者不用为如何建立索引而头痛了
缺点
最明显的就是字段类型无法修改、写入性能较低、高性能资源消耗
应用场景
es的全文搜索使他称为构建搜索引擎的利器,除此之外,es适合复杂的聚合查询,这一特点还使得es非常适合做数据分析使用
hbase
优点
(1) 继承了hadoop项目的优点,适合对海量数据的支持
(2) 极强的横向扩展能力
(3) 使用廉价的PC机就能够搭建起海量数据处理的大数据集群
缺点
对数据的读取带来了局限,只有同一列族的数据才能够放在一起,而且所有的查询都必须依赖于key,这就使得很多复杂的查询难以实现
应用场景
(1) 由于列式存储的能力带来了海量数据的容纳能力,因此非常适合数据量极大、查询条件简单、列与列之间联系不大的场景
(2) eg:搜索引擎使用的网页数据库
(3) hbase是一款很重的产品,依赖很多hadoop组件,如果数据规模规模不大,没必要使用hbase,MongoDB就完全可以满足需求
MongoDB、Redis、elasticSearch、hbase的适用场景:
(1) 如果你对数据的读写要求极高,并且你的数据规模不大,也不需要长期存储,选redis;
(2) 如果你的数据规模较大,对数据的读性能要求很高,数据表的结构需要经常变,有时还需要做一些聚合查询,选MongoDB;
(3) 如果你需要构造一个搜索引擎或者你想搞一个看着高大上的数据可视化平台,并且你的数据有一定的分析价值或者你的老板是土豪,选ElasticSearch;
(4) 如果你需要存储海量数据,连你自己都不知道你的数据规模将来会增长多么大,那么选HBase。
MongoDB、Redis、elasticSearch、hbase的对比的更多相关文章
- Mongodb和Hbase的对比
Mongodb和Hbase的对比 1.Mongodb bson文档型数据库,整个数据都存在磁盘中,hbase是列式数据库,集群部署时每个familycolumn保存在单独的hdfs文件中. 2.Mon ...
- 一文教您如何通过 Docker 快速搭建各种测试环境(Mysql, Redis, Elasticsearch, MongoDB) | 建议收藏
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...
- 基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具(Mongo2Es)
基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具 支持一对一,一对多,多对一和多对多的数据传输方式. 一对一 - 一个mongodb的collection对应一 ...
- 基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册
项目地址:https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register 通过 vue-cli3.0 + ...
- MongoDB Redis
MongoDB Redis设置用户名密码了吗?看看shodan这款邪恶的搜索引擎吧!~ 早上看新闻的时候看到了个醒目的新闻 开源中国:MongoDB 赎金事件持续发酵,究竟是谁之过?博客园:Mon ...
- 数据库们~MySQL~MongoDB~Redis
mysql基础 mysql进阶 python操作mysql MongoDB Redis
- Cannot sending data from mongodb into elasticsearch using logstash
Question: Hi all, i have an issue when i try to get data from mongodb to elasticsearch using logstas ...
- Mac下docker搭建lnmp环境 + redis + elasticsearch
之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发.测试.生产环境由于软件版本或者配置不一致产生的问题, 今年准 ...
- nginx+play framework +mongoDB+redis +mysql+LBS实战总结
nginx+play framework +mongoDB+redis +mysql+LBS实战总结(一) 使用这个样的组合结构已经很久了,主要是实现web-server,不是做网站,二是纯粹的数据服 ...
随机推荐
- GreatSQL特性介绍及前景展望 | 数据技术嘉年华2021分享PPT发布
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 全 ...
- HTTP的三次握手和四次挥手,以及DNS流程解析
首先模拟一个场景:你在浏览器输入自己想要访问的地址,浏览器发送请求到服务端,服务端进行响应,浏览器进行数据页面渲染,从而你得到自己想要访问地址的页面 总体流程图: DNS:可以认为域名与对应的ip转化 ...
- mybatis 13: 一对多关联查询
业务背景 根据客户id查询客户基本信息,以及客户存在的订单信息 两张数据表 客户表 订单表 实体类 客户实体类:Customer private Integer id; private String ...
- Reader和Writer区别final.finally.finalize区别
Reader和Writer是字符操作流,Writer是输出的,而Reader是输入的. 首先找到一个文件,比如:File file=new File("."+File.separa ...
- [Blender] Blender 获取 Instance 的信息
最近希望用 Blender 生成 Instance 的能力,将生成的导入游戏引擎中来渲染.Instance Rendering 是个好东西,特别是针对大场景,渲染成批的基本相同的物体的时候非常有用. ...
- 妙啊!纯 CSS 实现拼图游戏
本文,将向大家介绍一种将多个 CSS 技巧运用到极致的技巧,利用纯 CSS 实现拼图游戏. 本技巧源自于 Temani Afif 的 CodePen CSS Only Puzzle game.一款完全 ...
- 第三十八篇:vue3路由
好家伙,水博客怎么说 1.0.安装:简简单单的淘宝镜像安装 装一下淘宝镜像(一般都有) npm install -g cnpm --registry=https://registry.npm.taob ...
- OpenDrop 这样的应用程序以及与当今流行的替代品的比较
由安全移动网络实验室 OpenDrop 创建的用 Python 编写的开放 Apple AirDrop 实现是一个命令行工具,允许直接通过 Wi-Fi 在设备之间共享文件.它的独特之处在于它与 App ...
- docker可视化
可视化第一种方式 Portainer(不是最佳选择但先用这个) docker run -d -p 8088:9000 \ #docker run 启动:通过内网9000端口,外网8088端口:rest ...
- SpringMVC 07: WEB-INF下的资源访问 + SpringMVC拦截器
WBE-INF目录下的资源访问 项目配置和Spring博客集(指SpringMVC 02)中配置一样 出于对网站资源的安全性保护,放在WBE-INF目录下的资源不可以被外部直接访问 在WEB-INF/ ...