1.什么是NoSql数据库?

NoSql(不仅是Sql)数据库是可水平扩展,持久存储半结构或非结构化数据并具有灵活模式的非关系数据库。 这些数据库支持多种数据模型,例如键值,文档,列族,基于图形的,内存中的等等,用于管理和访问数据。 NoSql数据库最适合用于构建现代应用程序,这些应用程序需要大数据和大量请求,高度可扩展,低延迟,高性能和灵活的数据模型,以提供出色的客户体验。

在本文中,我们将讨论NoSql数据库,Cassandra,Mongo和Redis数据库的介绍,以及何时使用这些NoSql数据库以获得更好的性能。

2. NoSql数据库的功能

2.1多种型号支持

NoSql数据库非常适合持久,管理和访问半结构化和非结构化数据。

2.2开源

大多数NoSql数据库都是开源的。 大多数云提供商通过在后台管理自动扩展,补丁更新等将这些数据库作为托管服务提供。

2.3可扩展性

通过向群集添加更多服务器,NoSql数据库可进行水平扩展,并且与可垂直扩展的关系数据库不同,该群集可分布在多个地理位置(区域)中。

2.4低延迟

由于数据复制到数据库群集上的多个节点,因此延迟很短。 延迟和一致性之间的权衡对于Web和移动软件应用程序很重要。 无论采用哪种复制方法,都将在一致性和延迟之间进行权衡。

2.5灵活架构

NoSql数据库支持具有最终一致性的灵活数据模型,并且固有地无架构。 这使NoSql数据库适合于有效存储半结构化和非结构化数据。

2.6高性能,可用和容错

在NoSql数据库中,数据被复制到群集中的多个节点以及其他区域中的群集中的节点。 此特性使NoSql数据库具有高可用性和容错能力。 没有Sql数据库针对文档,键值,列族,图等数据模型及其访问模式进行了高度优化,这些模型可提供更高的性能。

3.卡桑德拉

Apache Cassandra是一个开源,分布式,水平可伸缩,高度可用,容错和宽列NoSql数据库。 它用Java编写,是一个列族存储数据库。 Cassandra群集中的所有节点都是对等节点,并且在Cassandra中没有主从范式。 这使得cassandra高度可用,具有容错能力并且没有单点故障。 Cassandra集群可以水平扩展,并且可以分布到多个数据中心。

在cassandra中写入速度非常快,因为它不会先搜索然后再写入。 首先将数据写入提交日志 ,然后使用cassandra算法小心将数据反映到表中。 在cassandra中,围绕查询对数据模型进行建模,即首先确定应用程序查询,然后对其进行数据建模。

4. MongoDB

MongoDB是一个用C ++编写的开源,跨平台,面向文档,高度可用,可扩展且灵活的NoSql数据库。 它适用于集合和文档,并通过副本集提供高可用性。

MongoDB使用类似于JSON的文档,这些文档可以具有多种结构。 由于架构较少,因此在创建文档之前无需创建文档结构。 MongoDB使用MongoDB QL(查询语言)来访问存储在MongoDB中的数据。 MongoDB具有非常强大的聚合功能和表达性聚合框架。

5. Redis(远程字典服务器)

Redis是一个开源且可扩展的数据存储,可以用作数据库,缓存以及消息代理。 它是用ANSI C编写的。Redis是一种内存中数据存储,可以将其状态持久保存到磁盘,即使重新启动Redis节点也可以恢复其状态。 它的内存存储使其超快。

6. Cassandra vs MongoDB vs Redis

  • Cassandra以Column-Family结构存储数据,而MongoDB以JSON文档格式存储数据。
  • 在Cassandra中,不建议使用二级索引,因为它们会降低性能。 在MongoDB中,最好使用索引,以避免搜索所有文档以找到所需的文档并获得更好的性能。
  • Cassandra是实现高写入吞吐量的理想选择,但是如果您的应用程序需要很高的读取并发性,请使用MongoDB。
  • Cassandra没有主节点,所有节点都是对等节点,而在MongoDB中,只有一个主节点。
  • Cassandra最终将写入的数据复制到集群中复制因子中指定的节点数,以及不同区域中集群中的节点数。 MongoDB需要进行一些设置才能进行复制。 您可以设置辅助数据库,如果主数据库出现故障,则可以自动选择该数据库。 在MongoDB中,读取首先首先提交给主副本,然后再复制到辅助副本。
  • 在这些数据库中,您可以在每条记录上设置TTL(生存时间),因此可以在TTL到期后自动将记录逐出。
  • Redis是键值数据存储,非常有效地用作缓存来提高应用程序性能。
  • 扩展Cassandra和Mongo比Redis简单得多。
  • 在Redis中,数据存储的大小不能超过系统上的总内存空间,即RAM加交换空间。 Mongo数据库的大小没有内在限制。
  • 可以对Cassandra,MongoDB和Redis数据库进行集群,以实现高可用性,备份并增加数据存储的整体大小。
  • 如果您的应用程序需要聚合,请使用MongoDB。 如果您的应用程序需要键值临时存储,请使用Redis。 如果您的应用程序需要轻松扩展的高写入吞吐量的宽列存储,请使用Cassandra。

7.什么时候使用哪个NoSql数据库?

以下是一些使用案例,其中不同的NoSql数据库最适合并提供更好的性能。

选择以下用例的Cassandra:

  • 线性可扩展,高可用性,容错
  • 多数据中心部署
  • 很高的写入吞吐量,但读取次数较少。
  • 您想在存储的数据之上建立一个响应Swift的报告系统
  • 实时数据分析
  • 您的应用程序不需要数据库中的ACID属性
  • 您的应用程序需要与Hadoop,HBase,Spark集成

选择MongoDB用于以下用例:

  • 即时扩展
  • 基于文档的存储
  • 很高的读取并发
  • 缓存实时分析
  • 内容管理
  • 写入有效负载很高,即文档大小很大(最大16MB)
  • 在快速原型制作中非常有用
  • 适合存储大文本,视频,图像,媒体文件等。

选择以下情况的Redis DB:

  • 缓存更大的有效负载以提高应用程序的性能
  • 永久缓存到磁盘,需要在重启后恢复
  • 键值对存储
  • 需要非常高的性能
  • 临时数据存储,例如用户会话
  • 可以使用其发布/订阅模型用作消息传递队列

8. Cassandra vs Mongo vs Redis DB –摘要

了解不同的NoSql数据库对于选择适合您的应用程序需求的数据库至关重要。 根据您的应用程序使用案例选择正确的NoSql数据库。 如果您的数据关系太多并且需要ACID属性,则NoSql数据库不是一个不错的选择。 为了提高应用程序性能,请使用Redis作为缓存,因为它具有内存存储。 使用MongoDB满足内容管理和文档类型的存储需求。 将Cassandra用于高度可用的宽列存储箱。 选择正确的数据库直接影响应用程序的性能。

翻译自: https://www.javacodegeeks.com/2019/02/nosql-databases-cassandra-vs-mongo-vs-redis-db-comparison.html

NoSql数据库:Cassandra,Mongo,Redis数据库比较相关推荐

  1. redis怎么连接mysql数据库_Golang连接Redis数据库的方法

    Golang连接Redis数据库 golang连接数据库,这里博主推荐使用go-redis这个库,理由很简单(连接数据库的操作类似在数据库里面输入命令) go-redis的安装方式 go get -v ...

  2. linux 进入redis 数据库,Linux下Redis数据库的安装方法与自动启动脚本分享

    安装Redis (1) 下载Redis wget http://redis.googlecode.com/files/redis-2.2.11.tar.gz tar xzvf redis-2.2.11 ...

  3. Redis数据库的使用

    目录 Redis数据库的安装 Redis数据库的基本操作 Redis数据库的备份与恢复 Redis的端口转发 Redis数据库的安装 yum install gcc-c++ #安装gcc编译器 wge ...

  4. redis nosql_NoSql数据库:Cassandra,Mongo,Redis数据库比较

    redis nosql 1.什么是NoSql数据库? NoSql(不仅是Sql)数据库是可水平扩展,持久存储半结构或非结构化数据并具有灵活模式的非关系数据库. 这些数据库支持多种数据模型,例如键值,文 ...

  5. NoSQL数据库-MongoDB和Redis

    NoSQL数据库-MongoDB和Redis   发布于2012-12-20,来源:比特网   1NoSQL简述 CAP(Consistency,Availabiity,Partitiontolera ...

  6. redis数据库NoSQL的介绍安装和使用

    Redis使用 redis介绍 什么是NoSQL NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题.目前一些主流的NOSQL产品: NoSQL数据库的分类 ...

  7. NoSQL数据库之Redis数据库:Redis的介绍与安装部署(redis-2.8.19/3.2.5)

     NoSQL(NoSQL = Not Only SQL),它指的是非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的w ...

  8. SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.

    SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis. 特性 替代 Redis 数据库, Redis 的 100 倍容量 LevelDB 网络支持, 使用 C/C++ ...

  9. Nosql之Redis的概念介绍+安装配置+Redis数据库基本操作

    文章目录 关系数据库与非关系型数据库介绍 关系数据库 非关系型数据库 非关系型数据库产生背景 Redis介绍 Redis 简介 Redis 优点 Redis安装部署 Redis数据库的基本操作 set ...

最新文章

  1. Python黑帽编程2.4 流程控制
  2. Android 5.0新特性ToolBar
  3. swift_016(Swift 的闭包)
  4. golang类型断言的使用(Type Assertion)
  5. 老板怒了,“我们赚钱你们花钱,还总出毛病!”
  6. 【报告分享】迈向万亿市场的直播电商-毕马威+阿里研究院.pdf(附下载链接)...
  7. react 实用项目分享-mock server
  8. 自定义SharePoint Webservice
  9. PDE7 wave equation: intuition
  10. [Hive]Hive表文件压缩介绍
  11. SQL Server 2008文件与文件组的关系
  12. Matlab图例设置
  13. C语言素数ns流程图,请各位大神帮个忙,画个NS流程图,,急!!!
  14. 超火的微信渐变国旗头像,一键生成!!
  15. Go --- html/template模板包的使用
  16. Harmony OS har包生成和使用技巧
  17. spyder/conda安装包报错:conda info could not be constructed. KeyError: ‘pkgs_dirs‘
  18. html网页制作看板娘原理,给网站添加 网页看板娘 效果 给网页添加一个可爱的小萝莉...
  19. html5/css实现字体上划线
  20. 如何手动制作透明的图片相框 可以供android使用

热门文章

  1. P2278-[HNOI2003]操作系统【堆】
  2. 牛客练习赛 60(待补E-长链剖分或者dsu)
  3. 【区间DP】摆渡线路(2017 特长生 T4)
  4. 17、mysql中的存储过程的应用
  5. Spark SQL(三)之视图与执行SQL
  6. 接口方法上的注解无法被@Aspect声明的切面拦截的原因分析
  7. MySQL nullif()函数
  8. Spring JSR-250 注释
  9. JDK 5 ~ 10 新特性倾情整理
  10. 我们在进行着一场拔河比赛……