NoSQL基本内容

第一章 NoSQL

1.1 什么是NoSQL

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

1.2 NoSQL的类别

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

说明:这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。

Key/Value模型对于IT系统来说优势在于简单、易部署。

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

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

优势:快速查询。

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

列存储数据库

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

应用:分布式文件系统。

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

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

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

文档型数据库

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

应用:Web应用。

产品:CouchDB,==MongoDB==。

优势:查询效率较高。

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

图形数据库

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

应用:社交网络。

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

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

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

1.3 NoSQL适应场景

1、数据模型比较简单

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

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

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

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

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

7、数据缓存

1.4 在分布式数据库中CAP原理

1.4.1 传统的ACID是什么

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

  1. A (Atomicity) 原子性

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

  2. C (Consistency) 一致性

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

  3. I (Isolation) 隔离性

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

  4. D (Durability) 持久性

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

1.4.2 CAP

C 强一致性

A 可用性

P 分区容错性

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

CA 传统sql数据库

AP 大多数网站架构的选择

CP nosql数据库

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

image-20200701101040717

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

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

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

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

1.5 什么是BASE

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

基本可用(==B==asically ==A==vailable) 软状态(==S==oft state) 最终一致(==E==ventually consistent)

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

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

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

相关文章

vulnhub靶场之Five86-2

一.环境搭建 1.靶场描述 Five86-2 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing. The ultimate goal of this challenge is to get root and to read the one and only flag. Linux skills and fa…

2024年阿里云幻兽帕鲁Palworld游戏服务器优惠价格表

自建幻兽帕鲁服务器租用价格表,2024阿里云推出专属幻兽帕鲁Palworld游戏优惠服务器,配置分为4核16G和4核32G服务器,4核16G配置32.25元/1个月、10M带宽66.30元/1个月、4核32G配置113.24元/1个月,4核32G配置3个月339.72元。ECS云服务…

Java项目实战--瑞吉外卖DAY03

目录 P22新增员工_编写全局异常处理器 P23新增员工_完善全局异常处理器并测试 p24新增员工_小结 P27员工分页查询_代码开发1 P28员工分页查询_代码开发2 P22新增员工_编写全局异常处理器 在COMMON新增全局异常捕获的类,其实就是代理我们这些controlle。通过aop把…

【C语言】深入理解指针(3)数组名与函数传参

正文开始——数组与指针是紧密联系的 (一)数组名的理解 (1)数组名是数组首元素的地址 int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *parr &arr[0]; 上述代码通过&arr[0] 的方式得到了数组第一个元素的地址,…

基于DataKit迁移MySQL到openGauss

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

RTP工具改进(五)--使用qt

前篇 第四篇 RTP工具改进(四) - rtmp协议推送 前面使用的工具一直为mfc,今天将使用qt 来做界面,使用qt 来进行程序和协议的编写,qt部分目前还不包括rtp ps流和rtmp,暂时只有rtp 直接传输,关于rtmp协议和ps流协议&…

MySQL--创建数据表(5)

创建 MySQL 数据表需要以下信息: 表名表字段名定义每个表字段的数据类型 语法 以下为创建 MySQL 数据表的 SQL 通用语法: CREATE TABLE table_name (column1 datatype,column2 datatype,... );参数说明: table_name 是你要创建的表的名称…

“海洋天堂——助成长计划”走进安徽省科学技术馆

为了助力困境儿童、青少年有效地参与社会生活,培养他们团队精神,引导他们掌握社会规则,增强自信,合肥市庐阳区为民社会工作服务中心于2024年1月24日上午,组织有四名老师带领18名困境儿童、青少年,通过徒步、…

使用PHP自定义一个加密算法,实现编码配合加密,将自己姓名的明文加密一下

<meta charset"UTF-8"> <?phpfunction customEncrypt($lin, $key mySecretKey){// 定义一个简单的替换规则$li array(L > M, I > Y, Y > O, A > N, E > Q, );$yan ;for($i 0; $i < strlen($lin); $i){$char $lin[$i];if(isset($li[…

Self-Attention 和 Multi-Head Attention 的区别——附最通俗理解!!

文章目录 前言 一、简要介绍 二、工作流程 三、两者对比 四、通俗理解 前言 随着Transformer模型的迅速普及&#xff0c;Self-Attention&#xff08;自注意力机制&#xff09;和Multi-Head Attention&#xff08;多头注意力机制&#xff09;成为了自然语言处理&#xff08;NLP…

sqli-labs靶场第七关

7、第七关 id1 --单引号报错,id1" --双引号不报错,可以判断是单引号闭合 id1) --也报错&#xff0c;尝试两个括号闭合&#xff0c;id1)) --不报错 接下来用脚本爆库 import stringimport requestsnumbers [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] letters2 list(string.ascii_…

1.【Vue3】前端开发引入、Vue 简介

1. 前端开发引入 1.1 前端开发前置知识 通过之前的学习&#xff0c;已经通过 SpringBoot 和一些三方技术完成了大事件项目的后端开发。接下来开始学习大事件项目的前端开发&#xff0c;前端部分借助两个框架实现&#xff1a; Vue3&#xff08;一个 JS 框架&#xff09;基于 …

一篇博客读懂排序

目录 一、常见的排序 二、冒泡排序 2.1基本思想&#xff1a; 2.2代码&#xff1a; 三、插入排序 3.1基本思想&#xff1a; 3.2思路讲解&#xff1a; 3.3代码&#xff1a; 3.4时间复杂度&#xff1a; 四、希尔排序 4.1基本思路&#xff1a; 4.2思路讲解&#xff1a;…

openssl3.2 - 测试程序的学习 - test\acvp_test.c

文章目录 openssl3.2 - 测试程序的学习 - test\acvp_test.c概述笔记要单步学习的测试函数备注END openssl3.2 - 测试程序的学习 - test\acvp_test.c 概述 openssl3.2 - 测试程序的学习 将test*.c 收集起来后, 就不准备看makefile和make test的日志参考了. 按照收集的.c, 按照…

IPv6报文格式(全网最详细)

IPv6报文格式 报文格式 图1 IPv6报文头格式 表1 IP头字段解释 字段长度含义Version4比特 4&#xff1a;表示为IPV4&#xff1b;6&#xff1a;表示为IPV6。Traffic class8比特流量类别。该字段及其功能类似于IPv4的业务类型字段。该字段以区分业务编码点&#xff08;DSCP&…

C语言——操作符详解2

目录 0.过渡0.1 不创建临时变量&#xff0c;交换两数0.2 求整数转成二进制后1的总数 1.单目表达式2. 逗号表达式3. 下标访问[ ]、函数调用( )3.1 下标访问[ ]3.2 函数调用( ) 4. 结构体成员访问操作符4.1 结构体4.1.1 结构体的申明4.1.2 结构体变量的定义和初始化 4.2 结构体成…

房产信息网源码,房产系统,二手房小程序源码,租房小程序系统楼盘系统房产经纪人系统

房产门户系统、多城市房产网、房产小程序 房产网系统、地方房产门户信息网 带im即时通讯聊天 二手房 租房 楼盘 置业顾问 经纪人 腾房云房产网 分为单城市版本 和多城市版本 多城市 自动定位当前城市 每个分站对应独立管理员分站管理 thinkphpuniapp 独立开源

【开源】基于JAVA语言的二手车交易系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 二手车档案管理模块2.3 车辆预约管理模块2.4 车辆预定管理模块2.5 车辆留言板管理模块2.6 车辆资讯管理模块 三、系统设计3.1 E-R图设计3.2 可行性分析3.2.1 技术可行性分析3.2.2 操作可行性3.2.3 经济…

02-opencv-上

机器视觉概述 机器视觉是人工智能正在快速发展的一个分支。简单说来&#xff0c;机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品(即图像摄取装置&#xff0c;分CMOS和CCD两种)将被摄取目标转换成图像信号&#xff0c;传送给专用的图像处理系统&…

[Python图像处理] 使用OpenCV创建深度图

使用OpenCV创建深度图 双目视觉创建深度图相关链接双目视觉 在传统的立体视觉中,两个摄像机彼此水平移动,用于获得场景上的两个不同视图(作为立体图像),就像人类的双目视觉系统: 通过比较这两个图像,可以以视差的形式获得相对深度信息,该视差编码对应图像点的水平坐标的…