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在不太响性能的情况之下,就能够非常方便的实现高可用架构,通过模型的话也可以实现高可用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫中的单线程、多线程问题(文末送书)

前言 在使用爬虫爬取数据的时候,当需要爬取的数据量比较大,且急需很快获取到数据的时候,可以考虑将单线程的爬虫写成多线程的爬虫。下面来学习一些它的基础知识和代码编写方法。 一、进程和线程 进程可以理解为是正在运行的程序的实例。进…

【沐风老师】3DMAX快速布尔插件使用方法讲解

3DMAX快速布尔插件FastBool使用教程 3DMAX快速布尔插件FastBool,是一个基于布尔运算的小型但功能非常强大的插件。工作方便快捷。 【版本要求】 3dMax2017-2024(不仅限于此范围) 【安装方法】 该插件无需安装,使用时直接拖动插件…

使用 Verilog 做一个可编程数字延迟定时器 LS7211-7212

今天的项目是在 Verilog HDL 中实现可编程数字延迟定时器。完整呈现了延迟定时器的 Verilog 代码。 所实现的数字延迟定时器是 CMOS IC LS7212,用于生成可编程延迟。延迟定时器的规格可以在这里轻松找到。基本上,延迟定时器有 4 种操作模式:…

深度学习目标检测】二十、基于深度学习的雾天行人车辆检测系统-含数据集、GUI和源码(python,yolov8)

雾天车辆行人检测在多种场景中扮演着至关重要的角色。以下是其作用的几个主要方面: 安全性提升:雾天能见度低,视线受阻,这使得驾驶者和行人在道路上的感知能力大大降低。通过车辆行人检测技术,可以在雾天条件下及时发现…

振弦采集仪在桥梁岩土工程中的应用与效果评价

振弦采集仪在桥梁岩土工程中的应用与效果评价 河北稳控科技振弦采集仪是一种用于结构动力测试的仪器,也可以应用于桥梁和岩土工程中。其主要作用是通过测量结构的振动特性,分析结构的动态行为,评估结构的健康状况和性能。 在桥梁工程中&…

【非比较排序】计算排序算法

目录 CountSort计数排序 整体思想 图解分析 代码实现 时间复杂度&优缺分析 CountSort计数排序 计数排序是一种非比较排序,不需要像前面的排序一样去比较。 计数排序的特性总结: 1. 计数排序在数据范围集中时,效率很高,但…

【element+vue】点击加号增加一行,点击减号删除一行

代码实现&#xff1a; 页面部分&#xff1a; vueelement 备注&#xff1a;v-if “i>0” &#xff08;保证第一行不出现减号&#xff09; <div v-for"(item,i) in studentList"><el-form-item label"学生:" prop"name"><el-i…

基于Java SSM框架实现家庭食谱管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现家庭食谱管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个家庭食谱管理系统 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论…

智慧公厕:打造智慧城市环境卫生新标杆

随着科技的不断发展和城市化进程的加速推进&#xff0c;智慧城市建设已经成为各地政府和企业关注的焦点。而作为智慧城市环境卫生管理的基础设施&#xff0c;智慧公厕的建设和发展也备受重视&#xff0c;被誉为智慧城市的新标杆。本文以智慧公厕源头厂家广州中期科技有限公司&a…

Ubuntu22.04环境下载安装中文搜狗输入法

0、查看CPU系统架构 确定架构后&#xff0c;下载对应的安装包&#xff0c;否则无法正常安装应用程序 1、进入搜狗拼音输入法官网&#xff0c;下载搜狗输入法 搜狗输入法-首页搜狗拼音输入法官网下载&#xff0c;荣获多个国内软件大奖的搜狗拼音输入法是一款打字更准、词库更大…

2024年【安全员-A证】考试及安全员-A证模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-A证考试根据新安全员-A证考试大纲要求&#xff0c;安全生产模拟考试一点通将安全员-A证模拟考试试题进行汇编&#xff0c;组成一套安全员-A证全真模拟考试试题&#xff0c;学员可通过安全员-A证模拟考试全真模…

【Python数据分析系列】多个dataframe写入同一个excel文件(案例源码)

一、引言 将多个DataFrame写入同一个excel文件中&#xff0c;每个DataFrame作为一个sheet&#xff0c;可以使用pandas库中的ExcelWriter类。这个类可以在一个Excel文件中创建多个sheet&#xff0c;并将不同的数据写入这些sheet中。本文演示如何将多个DataFrame写入同一个CSV文件…

抖音视频评论抓取软件|视频批量下载

抖音视频评论采集软件是一款基于C#开发的高效、便捷的工具&#xff0c;旨在为用户提供全面的数据采集和分析服务。该软件不仅支持通过关键词进行搜索抓取&#xff0c;还能够通过分享链接进行单个视频的抓取和下载&#xff0c;让用户轻松获取抖音视频评论数据。 &#x1f50d; …

uniapp 安卓GPS定位原生插件

插件介绍 安卓GPS定位插件&#xff0c;支持获取定位权限&#xff0c;获取上一次的定位信息&#xff0c;持续定位监听&#xff0c;取消定位监听&#xff0c;可返回详细街道信息 插件地址 安卓GPS定位插件&#xff0c;支持持续定位监听&#xff0c;支持返回详细街道信息 - DCl…

springboot003图书个性化推荐系统的设计与实现(源码+调试+LW)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SpringBoot的图书个…

web安全学习笔记【17】——信息打点(7)

信息打点-APP资产&知识产权&应用监控&静态提取&动态抓包&动态调试 #知识点&#xff1a; 1、业务资产-应用类型分类 2、Web单域名获取-接口查询 3、Web子域名获取-解析枚举 4、Web架构资产-平台指纹识别 ------------------------------------ 1、开源-CMS指…

切比雪夫(最小区域法)球拟合算法

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 本期话题&#xff1a;切比雪夫&#xff08;最小区域法&#xff09;球拟合算法 相关背景和理论 点击前往 主要介绍了应用背景和如何转化成线性规划问题 球拟合输入和输…

【Python笔记-设计模式】命令模式

一、说明 命令模式是一种行为设计模式&#xff0c;旨在对命令的封装&#xff0c;根据不同的请求将方法参数化、延迟请求执行或将其放入队列中&#xff0c;且能实现可撤销操作。 (一) 解决问题 将请求发送者和接受者解耦&#xff0c;请求发送者只需知道如何发送请求&#xff…

【力扣hot100】刷题笔记Day14

前言 又是新的一周&#xff0c;快乐的周一&#xff0c;快乐地刷题&#xff0c;今天把链表搞完再干活&#xff01; 114. 二叉树展开为链表 - 力扣&#xff08;LeetCode&#xff09; 前序遍历 class Solution:def flatten(self, root: Optional[TreeNode]) -> None:if not r…

Ubontu更换软件包源库来提高下载速度

对于 apt-get update 运行缓慢的问题&#xff0c;您可以尝试更换软件包源库来提高下载速度。在 Debian 系统中&#xff0c;可以通过编辑 /etc/apt/sources.list 文件来更改软件包源 1、打开 /etc/apt/sources.list 文件&#xff1a;使用文本编辑器&#xff08;例如 vi、nano 或…