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

redis nosql

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中,围绕查询对数据模型进行建模,即首先确定应用程序查询,然后对其进行数据建模。

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

redis nosql

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SVN更新数据和提交数据的几个疑问

有以下几个问题: 1.我检出一份副本到本地,修改了几个文件,然后我提交到SVN服务器中,此时服务器是如何更新有关的数据的呢?是不是把原来旧的文件数据删除了,保存最新提交的数据呢? 2.假设我修改…

html转pdf后 框会消失,html或其它文件转pdf弹出打开保存框

第一步:下载wkhtmktopdf软件,安装在指定的目录,如:C:\htmlToPdf\wkhtmltopdf,第二步:把安装好的wkhtmltopdf文件目录加到环境变量Path路径中,public void convertFile(){HttpURLConnection con …

SVN常见问题解答

参加:https://subversion.apache.org/faq.zh.html

用python画一只可爱的皮卡丘_用python画一只可爱的皮卡丘实例

效果图#!/usr/bin/env python # -*- coding:utf-8 -*- from turtle import *绘制皮卡丘头部def face(x,y): """画脸""" begin_fill() penup() # 将海龟移动到指定的坐标 goto(x, y) pendown() # 设置海龟的方向 setheading(40) circle(-150, 69)…

heroku_将应用程序集成为Heroku附加组件

herokuHeroku是流行的“平台即服务”提供商,它为供应商提供了作为附件提供的选项。 Heroku客户可以以多种方式使用附加组件,但是典型的情况是“启动数据库”,“启动MQ”或“启动日志记录解决方案”。 将附加组件添加到您的帐户后,…

请把下面的列表转换为html,在python中将列表转换为HTML表的最简单方法是什么?...

我会把你的问题分成两部分:给定一个“平面列表”,生成一个子列表列表,其中子列表具有给定的长度,并且整个列表可以按“行主要”顺序(第一个和第三个示例)或“列主要”(第二个示例)排列给定一个包含字符串项的子列表列表&#xff0…

MySQL命令之mysqldump -- 数据库备份程序

文章目录命令介绍常用选项参考示例将指定数据表的数据导出为 SQL 脚本文件和文本文件将指定的多个数据表的数据导出为 SQL 脚本文件和文本文件将指定数据库导出到脚本文件中将指定的多个数据库导出到脚本文件中将指定的表导出到脚本文件中将指定数据库中的多个表的数据导出到指…

vivado 仿真_提高Vivado效率一种自研工具介绍

在之前本公众号写过两篇关于工具更新对仿真调试提高效率的文章,《【干货】推荐一款FPGA仿真调试鸟枪换炮的工具!》以及《NCVerilogSimVisionVivado仿真环境搭建》,详细描述了Linux环境下仿真环境搭建可以缩短五倍以上的仿真时间。本文仍是实验…

spark应用程序_Sparklens:Spark应用程序优化工具

spark应用程序Sparklens是带有内置Spark Scheduler模拟器的Spark分析工具:它使您更容易理解Spark应用程序的可扩展性限制。 它有助于了解给定Spark应用程序使用提供给它的计算资源的效率。 它已在Qubole实施并维护。 它是开源的( Apache License 2.0 &am…

html图片自适应浏览器高度,css如何高度自适应浏览器高度?

高度自适应就是高度能跟随浏览器窗口的大小改变而改变,典型的运用在一些后台界面中上面一栏高度固定用作菜单栏或导航栏,下面一栏高度自适应用于显示内容。在IE7及chrome、firefox等浏览器中,高度自适应可以利用绝对定位来解决。但一个元素是…

Windows下Maven的下载、安装及IntelliJ IDEA集成配置

文章目录下载和安装 Maven创建本地仓库配置本地仓库路径配置环境变量IDEA 中配置 Maven 的本地仓库解决IntelliJ IDEA 创建Maven项目速度慢问题下载和安装 Maven 下载地址:https://maven.apache.org/download.cgi 压缩包下载后,将压缩包解压到合适的位置…

gis里创建要素面板怎么打开_【从零开始学GIS】ArcGIS中的绘图基本操作(二)

大家好,我是肝教程肝到熊猫眼的三三。本系列教程的发布,受到了很多同学的鼓励,大家在后台或微信上表达出对教程的喜爱,这便是更新教程的最大动力。上回教程讲解了“GIS基本操作”、“创建文档&加载数据”、“创建GIS数…

openjdk 编译_使用OpenJDK 11运行JAXB xjc编译器

openjdk 编译如文章“ 要从Java 11中删除的API ”所述,JDK 11不再包括 JAXB实现。 在本文中,我将结合使用JAXB ( 用于XML绑定的Java体系结构 ) 参考实现提供的xjc编译器和OpenJDK 11,将XML模式文件编译成Java类。 在J…

四川巴中中学2021高考成绩查询,巴中市高中排名(2021巴中市中学前十排名)

四川省的巴中市在我国全部革命史上面拥有超逸影响力,而且这所大城市也有着着悠长的历史时间。大城市内创立的普通高中不计其数,在其中四所普通高中成绩显著。而且这四所普通高中全是省部级示范性初中。1、通江中学在四川省巴中市漂亮的通江县&#xff0c…

unbantu上python安装步骤_如何在Ubuntu中安装Python 3.6?

Python是增长最快的主要通用编程语言。原因有很多,比如它的可读性和灵活性,易于学习和使用,可靠和高效。 有两个主要的Python版本被使用- 2和3 (Python的现在和未来);前者将看不到新的主要版本,而后者正在积极开发中,在…

IntelliJ IDEA for Mac的安装目录

点击显示包内容,就可以打开 IDEA 的安装目录了,如下图所示: 安装目录路径如下: /Applications/IntelliJ IDEA.app/Contents

spring序列化_使用@JsonIdentityInfo的Spring自定义序列化器

spring序列化介绍 Spring中从JSON到JSON的序列化/反序列化已广泛用于基于Spring的现代应用程序中。 它基于杰克逊。 Jackson可以轻松地将任何POJO序列化为JSON,反之亦然。 这段代码写得很好。 我从来没有遇到任何问题。 涉及自定义序列化程序时,将变得更…

阐述计算机网络的作用答案,计算机网络习题及答案(50页)-原创力文档

计算机网络习题及答案第一章 计算机网络的基本概念一、选择题√1、完成路径选择功能是在 OSI 模型的( )。A.物理层 B.数据链路层 C. 网络层 D.运输层2、在 TCP/IP 协议簇的层次中,保证端-端的可靠性是在哪层上完成的?()A. 网络接口层 B.互连层 C.传输层 …

python func_Python functool module

1.functools.partial(func,*args,**keywords) 实现 def partial(func, *args, **keywords):def newfunc(*fargs, **fkeywords): newkeywordskeywords.copy() newkeywords.update(fkeywords)return func(*args, *fargs, **newkeywords) newfunc.funcfunc newfunc.argsargs newfu…

IntelliJ IDEA for Mac中的Maven操作窗口详解

文章目录简介操作按钮详解Reload All Maven ProjectsGenerate Sources and Update Folders For All ProjectsDownload Sources and/or DocumentationAdd Maven ProjectsRun Maven BuildExecute Maven GoalToggle Offline ModeToggle Skip Tests ModeShow Dependencies布局展示模…