NoSQL数据库介绍

news2025/2/25 15:51:00

目录

一、发展历史

二、什么是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.coloradmin.cn/o/1473693.html

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

相关文章

算法为什么难=》领悟学习方法论

原文参考:为什么算法这么难???_过程_逻辑_时候 广大码农同学们大多都有个共识,认为算法是个硬骨头,很难啃,悲剧的是啃完了还未必有用——除了面试的时候。实际工程中一般都是用现成的模块&…

基于uniapp大学生社团活动管理系统python+java+node.js+php微信小程序

uni-app框架:使用Vue.js开发跨平台应用的前端框架,编写一套代码,可编译到Android、小程序等平台。 语言:pythonjavanode.jsphp均支持 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 运行软件:idea/eclipse/vscod…

Flutter Version Manager (FVM): Flutter的版本管理终极指南

Flutter笔记 Flutter Version Manager (FVM) - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/136300307 my-websit…

数据湖delta lake

Table of Content1. 课程2. 前置技能3. 一、数据湖概念[了解] 3.1. 1.1 企业的数据困扰 3.1.1. 困扰一:互联网的兴起和数据孤岛3.1.2. 困扰二:非结构化数据3.1.3. 困扰三:保留原始数据3.1.4. 补充:什么是结构化? 3.1.4…

React_使用es5和es6语法渲染和添加class

React入门 //react的核心库 <script src"https://cdn.jsdelivr.net/npm/react17/umd/react.development.js"></script> //react操作dom的核心库&#xff0c;类似于jquery <script src"https://cdn.jsdelivr.net/npm/react-dom17/umd/react-dom.…

大型电商日志离线分析系统(一)

一、项目需求分析 某大型网站日志离线分析系统 1.1 概述 该部分的主要目标就是描述本次项目最终七个分析模块的页面展示。 1.2 工作流 在我们的demo展示中&#xff0c;我们使用jqueryecharts的方式调用程序后台提供的rest api接口&#xff0c;获取json数据&#xff0c;然后…

探索2024年3月5-7日第12届国际生物发酵展-聚力微特电机

参展企业介绍 威海聚力微特电机股份有限公司成立于2004年5月&#xff0c;位于山东省威海市。是一家专业研发、生产和销售电机、液压站、机床冷却泵和电动板手的企业。主要产品有异步感应变频调速电机、永磁同步调速电机、油泵电机、铣头电机、高速电主轴、伺服力矩电机、节能型…

WPF 【十月的寒流】学习笔记(2):MVVM中是怎么实现通知的

文章目录 前言相关链接代码仓库项目配置代码初始代码ViewPersonViewModel 尝试老办法通知解决方案ObservableCollectionBindingListICollectionView 总结 前言 我们这次详细了解一下列表通知的底层是怎么实现的 相关链接 十月的寒流 MVVM实战技巧之&#xff1a;可被观测的集合…

Unity发布webgl获取浏览器的URL

Unity发布webgl获取浏览器的URL Unity发布webgl之后获取浏览器的url 在unity中创建文件夹Plugins&#xff0c;然后添加添加文件UnityGetBrowserURL.jslib var GetUrlFunc {//获取地址栏的URLStringReturnValueFunction: function () {var returnStr window.top.location.hre…

2024.2.25 模拟实现 RabbitMQ —— 网络通信设计(服务器)

目录 引言 约定应用层的通信协议 自定义应用层协议 Type Length PayLod 实现 Broker Server 类 属性 与 构造 启动 Broker Server 停止 Broker Server 处理客户端连接 读取请求 与 写回响应 根据请求计算响应 清除 channel 引言 生产者 和 消费者 都是客户端&…

STC-ISP原厂代码研究之 V3.7d汇编版本

最近在研究STC的ISP程序&#xff0c;用来做一个上位机烧录软件&#xff0c;逆向了上位机软件&#xff0c;有些地方始终没看明白&#xff0c;因此尝试读取它的ISP代码&#xff0c;但是没有读取成功。应该是目前的芯片架构已经将引导代码放入在了单独的存储块中&#xff0c;而这存…

硬盘无法格式化?正确格式化方法看这!(新版)

“我的电脑用了很久了&#xff0c;我想将它格式化&#xff0c;但是在操作时却提示硬盘无法格式化。这该怎么解决呢&#xff1f;应该怎么进行正确的格式化操作呢&#xff1f;” 在使用电脑时&#xff0c;有时候我们或许会因为各种原因想对硬盘进行格式化操作。但是在实际操作中&…

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

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

Oracle内存计算应用模式

前言 内存计算是利用内存来加速数据访问和应用的性能&#xff0c;并降低应用开发复杂度的技术。近十年来&#xff0c;随着软硬件技术的发展和用户需求的成熟&#xff0c;内存计算技术已经得到了广泛地应用。 Oracle在内存计算领域具有非常重要的地位&#xff0c;这主要得益于…

leetcode移动零

leetcode移动零 Given an integer array nums, move all 0’s to the end of it while maintaining the relative order of the non-zero elements. Note that you must do this in-place without making a copy of the array. Example 1: Input: nums [0,1,0,3,12] Output…

北斗卫星赋能,宠物定位新篇章—追踪宠物,不再是难题

北斗卫星赋能&#xff0c;宠物定位新篇章—追踪宠物&#xff0c;不再是难题 随着社会的快速发展与科技的不断进步&#xff0c;人们的生活方式也在不断改变。宠物已经成为越来越多家庭的重要成员&#xff0c;在这个宠爱宠物的时代&#xff0c;如何确保宠物的安全&#xff0c;特…

ChatGPT学习第三周

&#x1f4d6; 学习目标 ChatGPT在各行各业的应用 探索ChatGPT在不同领域&#xff08;如教育、客户服务等&#xff09;的实际应用案例。 ChatGPT的局限性和挑战 讨论ChatGPT面临的挑战&#xff0c;包括偏见、误解及其限制。 ✍️ 学习活动 学习资料 《人工智能通用大模型(…

【ArcGIS】基本概念-空间参考与变换

ArcGIS基本概念-空间参考与变换 1 空间参考与地图投影1.1 空间参考1.2 大地坐标系&#xff08;地理坐标系&#xff09;1.3 投影坐标系总结 2 投影变换预处理2.1 定义投影2.2 转换自定义地理&#xff08;坐标&#xff09;变换2.3 转换坐标记法 3 投影变换3.1 矢量数据的投影变换…

同源不同页面之间的通信,SharedWorker使用

同源不同页面之间的通信&#xff0c;SharedWorker使用 描述实现结果 描述 同源不同页面之间的通信&#xff0c;使用SharedWorker&#xff0c;或者使用全局方法通信&#xff0c;这里使用SharedWorker来实现 mdn地址&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/A…

【Vue】组件通信2

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue ⛺️稳中求进&#xff0c;晒太阳 v-model原理 原理&#xff1a; v-model本质是一个语法糖&#xff0c;例如在输入输入框上&#xff0c;就是value属性和input数据的合写&#xff08;注…