NoSQL数据库介绍

目录

一、发展历史

二、什么是NoSQL?

三、为什么使用NoSQL?

四、NoSQL vs. RDBMS

五、NoSQL的四种类型

键值存储

文档存储

列式存储

图形存储

六、NoSQL的优缺点

七、NoSQL的特点

灵活的可扩展性

灵活的数据模型

与云计算紧密融合

大数据量,高性能

高可用


一、发展历史

        NoSQL 一词最早出现于 1998 年,是 Carlo Strozzi 开发的一个轻量、开源、不提供 SQL 功能的关系数据库。

        2009 年,Last.fm 的 Johan Oskarsson 发起了一次关于分布式开源数据库的讨论,来自 Rackspace 的 Eric Evans 再次提出了 NoSQL 的概念,这时的 NoSQL 主要指非关系型、分布式、不提供 ACID 的数据库设计模式。

        2009 年在亚特兰大举行的"no:sql(east)“讨论会是一个里程碑,其口号是"select fun, profit from real_world where relational=false”。因此,对 NoSQL 最普遍的解释是"非关联型的",强调 Key-Value Stores 和文档数据库的优点,而不是单纯的反对 RDBMS。

二、什么是NoSQL?

        NoSQL(Not Only SQL),意思是"不仅仅是 SQL",指的是非关系型数据库,是对不同于传统的关系型数据库的数据库管理系统的统称。

        NoSQL 用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

        NoSQL不是反对“SQL”语言,只是简单表示和RDBMS的不同。

        大多数起源于互联网企业,更适应互联网业务。

        大多是开源免费的,但可能缺乏完善的文档和服务。

        NoSQL数据库会采用非关系型的数据模型。弱化模式或者表结构,弱化完整性约束,弱化甚至取消事务机制。

        可能无法支持,或者不能完整的支持SQL语句。

        目的是实现强大的分布式部署能力--- 一般包括分区容错性、伸缩性和访问效率(可用性)等。

        不同类型的关系型或者NoSQL数据库侧重点不同,因此,不能简单地说谁更优秀。

三、为什么使用NoSQL?

        随着互联网的飞速发展与普及,网民上网冲浪时所产生数据也逐日增多,从 GB 到 TB 到 PB。这些数据有很大一部分都是由关系型数据库管理系统(RDBMS)来进行处理的。

        由于关系型数据库的范式约束、事务特性、磁盘 IO 等特点,若服务器使用关系型数据库,当有大量数据产生时,传统的关系型数据库已经无法满足快速查询与插入数据的需求。NoSQL 的出现解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,获取性能上的提升。但是,在某些特定场景下 NoSQL 仍然不是最佳人选,比如一些绝对要有事务与安全指标的场景。

        NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至 2009 年趋势越发高涨。NoSQL 的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

四、NoSQL vs. RDBMS

五、NoSQL的四种类型

  • 键值存储

        特点:键值数据库就像传统语言中使用的哈希表。通过 Key 添加、查询或者删除数据。

        优点:查询速度快。

        缺点:数据无结构化,通常只被当作字符串或者二进制数据存储。

        应用场景:内容缓存、用户信息比如会话、配置信息、购物车等,主要用于处理大量数据的高访问负载。

        NoSQL 代表:Redis、Memcached…

  • 文档存储

        特点:文档数据库将数据以文档的形式储存,类似 JSON,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。

        优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构。

        缺点:查询性能不高,缺乏统一的查询语法。

        应用场景:日志、 Web 应用等。

        NoSQL 代表:MongoDB、Elasticsearch、CouchDB…

  • 列式存储

        特点:列存储数据库将数据储存在列族(Column Family)中,将多个列聚合成一个列族,键仍然存在,但是它们的特点是指向了多个列。举个例子,如果我们有一个 Person 类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。

        优点:列存储查找速度快,可扩展性强,更容易进行分布式扩展,适用于分布式的文件系统,应对分布式存储的海量数据。

        缺点:查询性能不高,缺乏统一的查询语法。

        应用场景:日志、 分布式的文件系统(对象存储)、推荐画像、时空数据、消息/订单等。

        NoSQL 代表:HBase、ClickHouse、Cassandra …

  • 图形存储

        特点:图形数据库允许我们将数据以图的方式储存。

        优点:图形相关算法。比如最短路径寻址,N 度关系查找等。

        缺点:很多时候需要对整个图做计算才能得出需要的信息,分布式的集群方案不好做,处理超级节点乏力,没有分片存储机制,国内社区不活跃。

        应用场景:社交网络,推荐系统等。专注于构建关系图谱。

        NoSQL 代表:Neo4j、Infinite Graph…

六、NoSQL的优缺点

  • 优点

        高可扩展性

        没有标准化

        分布式计算

        有限的查询功能(到目前为止)

        低成本

  • 缺点

        最终一致是不直观的程序

        架构的灵活性,半结构化数据

        没有复杂的关系

  • 总结

        NoSQL 数据库在以下几种情况下比较适用:

        数据模型比较简单

        需要灵活性更强的 IT 系统

        对数据库性能要求较高

        不需要高度的数据一致性

        对于给定的 Key,比较容易映射复杂值的环境

七、NoSQL的特点

  • 灵活的可扩展性

        传统的关系型数据库由于自身设计机理的原因,通常很难实现“横向扩展” 在面对数据库负载大规模增加时,往往需要通过升级硬件来实现“纵向扩展” NoSQL数据库在设计之初就是为了满足”横向扩展”的需求,因此天生具备良好的水平扩展能力。

  • 灵活的数据模型

        关系数据库具有规范的定义,遵守各种严格的约束条件。这种做法虽然保证了业务系统对数据一致性的需求,但是过于死板的数据模型,也意味着无法满足各种新兴的业务需求。相反,NoSQL数据库采用健/值、列族等非关系模型,允许在一个数据元素里存储不同类型的数据。

  • 与云计算紧密融合

        云计算具有很好的水平扩展能力,可以根据资源使用情况进行自由伸缩,各种资源可以动态加人或退出,NoSQL数据库可以凭信自身良好的横向扩展能力,充分自由利用云计算基础设施,很好地融人到云计算环境中,构建基于NoSQL的云数据库服务。

  • 大数据量,高性能

        nosql数据库都有着非常亮的读写性能,特别是在大数据量之下 一样也衷现的非常的优界,这主要得益于它的无关系性,数据库的结构简单。

        通常的nosql使用Query Cache。nosql的Cache是记录级的,是一种细粒度的Cache,所以说,nosql从这个方面来说的话,性能就要高了很多了。

  • 高可用

        高可用也是nosql很明显的一个特点,nosql在不太响性能的情况之下,就能够非常方便的实现高可用架构,通过模型的话也可以实现高可用。

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

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

相关文章

【Java程序设计】【C00324】基于Springboot的高校疫情防控管理系统(有论文)

基于Springboot的高校疫情防控管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校疫情防控系统,本系统有管理员、学校管理员、学院管理员、教师以及学生五种角色; 管理员&#x…

MySQL 的数据库操作,利用Spring Boot实现MySQL数据库的自动创建

执行 show databases; 命令可以查看当前数据库的所有数据库。 注意在 MySQL 客户端执行 SQL 语句的时候要带上分号 ; 并按下 enter 键,不然 MySQL 会认为你还没有输入完,会换一行继续等待你输入。 OK,像上面截图中的 information_schema、mys…

第二周opencv

一、边缘检测算子 边缘检测算子是用于检测图像中物体边界的工具。边缘通常表示图像中灰度值或颜色发生显著变化的地方。边缘检测有助于识别图像中的物体形状、轮廓和结构。这些算子通过分析图像的灰度或颜色梯度来确定图像中的边缘。 1、Roberts 算子 通过局部差分计算检测边缘…

(PWM呼吸灯)合泰开发板HT66F2390-----点灯大师

前言 上一篇文章相信大家已经成为了点灯高手了,那么进阶就是成为点灯大师 实现PWM呼吸灯 接下来就是直接的代码讲解了,不再讲PWM原理的 这里部分内容参考了另一个博主的文章 合泰杯——合泰单片机工程7之PWM输出 如果有小伙伴不理解引脚设置和delay函数…

华为数通方向HCIP-DataCom H12-821题库(单选题:501-520)

第501题 三台交换机运行RSTP协议,拓扑和配置情况如图所示。那么以下关于根桥的描述,正确的是哪一项? A、根桥是SWA B、根桥是SWB C、根桥是SWC D、根桥无法确定 参考答案:A 第502题 在华为设备中,以下哪一个命令可以实现BFD与静态默认路由联动? A、ip route-static 0.…

mysql数据库优化及sql调优,Java后端社招面试经历

Redis 什么是Redis?Redis的数据类型?使用Redis有哪些好处?Redis相比Memcached有哪些优势?Memcache与Redis的区别都有哪些?Redis是单进程单线程的?一个字符串类型的值能存储最大容量是多少?Redis的持久化机制是什么?各自的优缺点?Redis常见性能问题和解决方案:redis过…

docker容器配置mysql5.7主从复制

介绍 本文将通过docker创建3个mysql数据库容器,实现数据库主从复制功能,三个数据库容器分别为主库mysql-master:3307,从库mysql-slave-01:3308,mysql-slave-02:3309。使用的是mysql5.7版本 1. 拉取mongo镜像 docker pull mysql…

【网络那些事】

【云计算】 云计算:把计算资源放在某个地方,并通过互联网暴露出来,让用户可以按需使用计算资源的方式,就是所谓的云计算 云计算的三种服务: 云平台专业名词 日常叫法 亚马逊云叫法 云服务器 ECS (Elas…

循环结构:for循环,while循环,do-while,死循环

文章目录 for循环for案例:累加for循环在开发中的常见应用场景 whilewhile循环案例: for和while的区别:do-while三种循环的区别小结死循环 快捷键 ctrlaltt for循环 看循环执行多少次,就看有效数字有几个 快捷键 fori 示例代码&am…

Vuepress的使用

介绍 将markdown静态资源转换成html。 动态资源的转换还有很多,为什么要使用Vuepress? 目录分析 项目配置 详情 具体配置请看文档 插件配置 vuepress-theme-vdoing 主题插件 npm install vuepress-theme-vdoing -D先安装依赖配置主题 使用vuep…

论文设计任务书学习文档|基于智能搜索引擎的图书管理系统的设计与实现

文章目录 论文(设计)题目:基于智能搜索引擎的图书管理系统的设计与实现1、论文(设计)的主要任务及目标2、论文(设计)的主要内容3、论文(设计)的基本要求4、进度安排论文(设计)题目:基于智能搜索引擎的图书管理系统的设计与实现 1、论文(设计)的主要任务及目标 …

报错:板端IP与PC的IP相同

报错: 配置 实际上我配置并没有错。 服务器IP(就是本机)、板端IP、网关。 解决 我网卡配置了多个IP。一番删除添加还是报错。 于是点击服务器IP,换成别的,再换回来,可以了:

【大数据架构(3)】Lambda vs. Kappa Architecture-选择你需要的架构

文章目录 一. Data Processing Architectures1. Lambda Architecture1.1. 架构说明a. Data Ingestion Layerb. Batch Layer (Batch processing)c. Speed Layer (Real-Time Data Processing)d. Serving Layer 1.2. Lambda Architecture的优缺点1.3. 使用案例 2. Kappa Architect…

HTML+CSS+JS:花瓣登录组件

效果演示 实现了一个具有动态花朵背景和简洁登录框的登录页面效果。 Code <section><img src"./img/background.jpeg" class"background"><div class"login"><h2>Sign In</h2><div class"inputBox"…

重拾前端基础知识:CSS3

重拾前端基础知识&#xff1a;CSS3 前言边框圆角阴影图片 背景渐变文本字体多列动画与过渡2D 转换3D 转换过渡动画 网格布局弹性盒子&#xff08;重点&#xff09;父元素设置子元素设置 响应式设计设置 Viewport构建响应式网格视图12栅格媒体查询 案例讲解图片按钮分页 浏览器支…

【MATLAB】SVMD_ MFE_SVM_LSTM 神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 SVMD_MFE_SVM_LSTM神经网络时序预测算法结合了单变量分解&#xff08;SVMD&#xff09;、多尺度特征提取&#xff08;MFE&#xff09;、聚类后展开支持向量机&#xff08;SVM&#xff09;…

rhcsa(rh134)

shell 查看用户shell a、如下查看/etc/shells文件列出了系统上所有可用的 shell&#xff08;具体的可用的 shell 列表可能会因不同的红帽版本和配置而有所不同&#xff09; &#xff08;如下图/etc/shells文件包含/bin/tmux并不意味着tmux是一个shell。实际上&#xff0c;/etc/…

CSS:弹性盒子Flexible Box布局

CSS:Flexible Box弹性盒子布局 一、flex布局原理 ​ flex是flexible Box的缩写,意为 ”弹性布局“&#xff0c;用来为盒状模型提供最大的灵活性&#xff0c;任何一个容器都可以指定为flex布局。 当我们的父盒子设置为flex布局之后&#xff0c;子元素的 float 、clear 和 vert…

4核8G服务器并发数多少?性能如何?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

WPF应用程序使用MVVM模式

文章目录 一、前言二、正文&#xff1a;模式 - WPF应用程序使用MVVM设计模式2.0 一些术语2.1 秩序与混乱2.2 MVVM模式的演变2.3 为何WPF开发者喜爱MVVM2.4 Demo应用程序2.5 路由命令逻辑2.6 ViewModel类层次结构2.7 ViewModelBase类2.8 CommandViewModel类2.9 MainWindowViewMo…