NoSQL(非关系型数据库)

目录

前言:

一、NoSQL的类别

1.1 键值(key-value)存储数据库

1.2 列存储数据库

1.3 文档型数据库

1.4 图形数据库

二、NoSQL适应场景

三、在分布式数据库中的CAP原理

3.1 传统的ACID

3.2 CAP

四、什么是BASE


前言:

        NoSQL(Not Only SQL)即不仅仅是SQL,泛指非关系型的数据库,它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。

一、NoSQL的类别

1.1 键值(key-value)存储数据库

说明:这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据,Key/Value模型对于IT系统来说优势在于简单、易部署。

应用:内容缓存,主要用于处理大量数据的高访问负载。

产品:Tokyo Cabinet/Tyrant、==Redis==、Voldemort、Berkeley DB。

优势:快速查询。

劣势:存储数据的结构化较低。

1.2 列存储数据库

说明:这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列,这些列是由列家族来安排的。

应用:分布式文件系统。

产品:Cassandra,==HBase==,Riak。

优势:查找速度快,可扩展性强,更容易进行分布式扩展。

劣势:功能较低,具有局限性。

1.3 文档型数据库

说明:该类型的数据模型 是版本化的文档,半结构化的文档以特定的格式存储,如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。

应用:Web应用。

产品:CouchDB,==MongoDB==。

优势:查询效率较高。

劣势:数据结构复杂,缺乏统一查询语法。

1.4 图形数据库

说明:图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST格式的数据接口或者查询API。

应用:社交网络。

产品: ==Neo4j==,InfoGrid,Infinite Graph。

优势:利用图结构相关算法。

劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

二、NoSQL适应场景

1、数据模型比较简单

2、需要灵活性更强的IT系统

3、对数据库性能要求较高

4、不需要高度的数据一致性

5、对于给定的key,比较容易映射出复杂的关系和环境

6、取最新的数据(排行)

7、数据缓存

三、在分布式数据库中的CAP原理

3.1 传统的ACID

关系型数据库遵循ACID规则,事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:

  1. A (Atomicity) 原子性

    指事务里的所有操作要么都成功,要么都失败。事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

  2. C (Consistency) 一致性

    指数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。

  3. I (Isolation) 隔离性

    指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。

  4. D (Durability) 持久性

    是指一旦事务提交后,它所做的修改将会永久的保存在数据库中,即使出现宕机也不会丢失。

3.2 CAP

C 强一致性

A 可用性

P 分区容错性

CAP 理论是指在分布式存储系统中,最多只能实现上述两点。由于当前的网络硬件存在延迟丢包等问题,所以分区容忍性是我们必须要实现的。所以我们只能在一致性和可用性之间进行权衡,没有任何的SQL系统能够兼顾这三点。

CA 传统sql数据库

AP 大多数网站架构的选择

CP nosql数据库

注意:在做分布式架构的时候必须做出取舍。==一致性和可用性之间取一个平衡==。对于大多数web应用,其实并不需要强一致性。因此牺牲C换取P,这是目前分布式数据库产品的方向。

CAP理论的核心是:个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。

  • CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。

  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

四、什么是BASE

BASE 是为了解决关系型数据库强一致性引起的问题而导致可用性降低而提出的解决方案.

基本可用(Basically Available)

软状态(Soft state)

最终一致(Eventually consistent)

它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观。

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

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

相关文章

深入理解Istio服务网格(一)数据平面Envoy

一、服务网格概述(service mesh) 在传统的微服务架构中,服务间的调用,业务代码需要考虑认证、熔断、服务发现等非业务能力,在某种程度上,表现出了一定的耦合性 服务网格追求高级别的服务流量治理能力,认证、熔断、服…

基于NSGA-II的深度迁移学习

深度迁移学习 迁移学习是一种机器学习技术,它允许一个预训练的模型被用作起点,在此基础上进行微调以适应新的任务或数据。其核心思想是利用从一个任务中学到的知识来帮助解决另一个相关的任务,即使这两个任务的数据分布不完全相同。这种方法…

idea修改项目git地址

大家好,今天给大家分享的知识是如何在idea中修改项目的git地址。 一、修改地址 首先我们先找到菜单栏中Git选项,然后点击管理远程(Manage Remote) 之后双击origin之后就可以定义名称或者URL了。

边缘计算网关在智能制造中有哪些应用?-天拓四方

在智能制造和工业生产环境中,数据已经成为新的生产要素,工业生产对实时性、灵活性和智能化也提出了更高的要求。而在这个过程中,边缘计算网关发挥着不可或缺的作用。它作为设备层与网络层之间的关键桥梁,确保了数据的实时、高效处…

SpringCloud-生产者和消费者

一、生产者和消费者的定义 在 Spring Cloud 中,术语 "生产者" 和 "消费者" 用于描述微服务架构中的两种基本角色。 角色定义生产者 Provider生产者是提供具体服务或功能的模块。它将业务逻辑封装成服务,供其他模块调用。生产者向服…

有趣的CSS - 鼠标悬浮线条动态变化

鼠标悬浮线条动态变化 整体效果核心代码html 代码:css 部分代码: 完整代码如下html 页面:css 样式:页面渲染效果: 整体效果 这个链接悬浮效果主要用 css3 的 animation 属性配合 :hover 伪选择器来实现的。 此效果可以…

Rust 本地文档的使用:rustup doc

Rust 是一种系统级编程语言,以其安全性、速度和内存控制能力而闻名。为了方便开发者更好地了解并利用 Rust 标准库和工具链中的功能,Rust 提供了一种内置的文档浏览方式——通过 rustup doc 命令。 安装 rustup 在查阅 Rust 文档之前,确保你…

08:LED点阵

LED点阵 1、什么是LED点阵2、如何驱动LED点整3、原理图分析4、74HC595的接法分析5、74HC595芯片分析6、编程实践(全屏点亮) 1、什么是LED点阵 如图为16x16的LED点阵,每一个点里面都有一个LED灯 上图为一个8x8点阵LED原理图(横向为…

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(一)

原文:Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 机器学习海啸 2006 年,Geoffrey Hinton 等人发表了一篇论文,展示了如何训练一个能够以最先进的精度…

CodeFuse成功支持通义千问算法大赛,评测方案已开源

前段时间, 首届通义千问AI挑战赛成功举办,CodeFuse 为大赛提供技术支持,模型微调框架 MFTCoder 和 CodeFuseEval 评测框架为大赛保驾护航,助力大赛圆满完成。我们基于leetcode 阿里和蚂蚁最新面试题库建设了“模型赛马”在线打榜的…

【GAMES101】Lecture 15 全局光照

本节继承上一节的难度并继续加深,讲这个BRDF,然后理解反射方程和渲染方程,最终实现全局光照,以下内容很抽象……如果想要深入理解建议到隔壁基于物理着色:BRDF - 知乎 (zhihu.com)或者多看几遍视频,我也是回…

VScode+PlatformIO 物联网Iot开发平台环境搭建

1.vscode (1)安装platformIO插件 (2)新建项目或导入已有的arduino项目 Name:需要填写你项目的名称; Board:点开是一个下拉框,但是可以输入你想要的开发板,这里选择&quo…