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的对比的更多相关文章

  1. Mongodb和Hbase的对比

    Mongodb和Hbase的对比 1.Mongodb bson文档型数据库,整个数据都存在磁盘中,hbase是列式数据库,集群部署时每个familycolumn保存在单独的hdfs文件中. 2.Mon ...

  2. 一文教您如何通过 Docker 快速搭建各种测试环境(Mysql, Redis, Elasticsearch, MongoDB) | 建议收藏

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  3. 基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具(Mongo2Es)

    基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具 支持一对一,一对多,多对一和多对多的数据传输方式. 一对一 - 一个mongodb的collection对应一 ...

  4. 基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册

    项目地址:https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register 通过 vue-cli3.0 + ...

  5. MongoDB Redis

    MongoDB Redis设置用户名密码了吗?看看shodan这款邪恶的搜索引擎吧!~   早上看新闻的时候看到了个醒目的新闻 开源中国:MongoDB 赎金事件持续发酵,究竟是谁之过?博客园:Mon ...

  6. 数据库们~MySQL~MongoDB~Redis

    mysql基础 mysql进阶 python操作mysql MongoDB Redis

  7. 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 ...

  8. Mac下docker搭建lnmp环境 + redis + elasticsearch

    之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发.测试.生产环境由于软件版本或者配置不一致产生的问题, 今年准 ...

  9. nginx+play framework +mongoDB+redis +mysql+LBS实战总结

    nginx+play framework +mongoDB+redis +mysql+LBS实战总结(一) 使用这个样的组合结构已经很久了,主要是实现web-server,不是做网站,二是纯粹的数据服 ...

随机推荐

  1. CMake教程——Leeds_Garden

    本系列适合 乐于学习新知识的人 想要深入学习C++的人 赞美作者的人 系列目录 初步入门 基本操作 (更新中) 创作不易,欢迎分享,把知识分享给更多有需要的人.

  2. React生命周期和响应式原理(Fiber架构)

    注意:只有类组件才有生命周期钩子函数,函数组件没有生命周期钩子函数. 生命周期 装载阶段:constructor() render() componentDidMount() 更新阶段:render( ...

  3. Luogu1880 [NOI1995]石子合并 (区间DP)

    一个1A主席树的男人,沦落到褪水DP举步维艰 #include <iostream> #include <cstdio> #include <cstring> #i ...

  4. 延时任务-基于netty时间轮算法实现

    一.时间轮算法简介 为了大家能够理解下文中的代码,我们先来简单了解一下netty时间轮算法的核心原理 时间轮算法名副其实,时间轮就是一个环形的数据结构,类似于表盘,将时间轮分成多个bucket(比如: ...

  5. 关于Copy On Write Array List,你会安全使用么

    摘要:JDK中提供了CopyOnWriteArrayList类,简称COW.为了将读取的性能发挥到极致,CopyOnWriteArrayList读取是完全不用加锁的,并且更厉害的是:写入也不会阻塞读取 ...

  6. 最大连续子序列(简单DP实现)

    最大连续子序列 最大连续子数列和一道很经典的算法问题,给定一个数列,其中可能有正数也可能有负数,我们的任务是找出其中连续的一个子数列(不允许空序列),使它们的和尽可能大.我们一起用多种方式,逐步优化解 ...

  7. CEOI 2019 Day2 T2 魔法树 Magic Tree (LOJ#3166、CF1993B、and JOI2021 3.20 T3) (启发式合并平衡树,线段树合并)

    前言 已经是第三次遇到原题. 第一次是在 J O I 2021 S p r i n g C a m p \rm JOI2021~Spring~Camp JOI2021 Spring Camp 里遇到的 ...

  8. Codeforces Round #585 (Div. 2) E. Marbles (状压DP),BZOJ大理石(同一道题)题解

    题意 林老师是一位大理石收藏家,他在家里收藏了n块各种颜色的大理石,第i块大理石的颜色为ai.但是林老师觉得这些石头在家里随意摆放太过凌乱,他希望把所有颜色相同的石头放在一起.换句话说,林老师需要对现 ...

  9. 全链路追踪体验—最简陋TraceId的生成

    对于后端开发来说,排查问题是常有的事情.而排查问题时最常用的就是看日志,看一次调用中经过了哪些系统,是那个系统出问题了.这就需要业务日志中关联调用链的TraceId信息,从而在应用出现问题时,能够通过 ...

  10. HOSMEL:一种面向中文的可热插拔模块化实体链接工具包

    HOSMEL: A Hot-Swappable Modularized Entity Linking Toolkit for Chinese ACL 2022 论文地址:https://aclanth ...