【软考数据库】第九章 非关系型数据库NOSQL

news2024/9/25 19:18:19

目录

9.1 概述

9.2 理论基础

9.3 分区方法

9.4 存储分布

9.5 查询模型

9.6 存储模式


前言:

笔记来自《文老师软考数据库》教材精讲,精讲视频在b站,某宝都可以找到,个人感觉通俗易懂。

9.1 概述

  • 传统的关系数据库在应付Web 2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站方面已经显得力不从心,暴露了很多难以克服的问题,主要包括以下几个方面。
    1)对数据库高并发读写的需求;
    2)对海量数据的高效率存储和访问的需求;
    3)对数据库的高可扩展性和高可用性的需求。

9.2 理论基础

  •  CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、Availability (可用性)、Partition tolerance (分区容错性),三者最多只能得其二。
  • 一致性(C): 在分布式系统中的所有数据备份,在同一时刻是否同样的值。 (等同于所有节点访问同一份最新的数据副本)
  • 可用性 (A): 在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
  • 分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
  • 由于CAP 理论的存在,为了提高性能,出现了ACID 的一种变种BASE: Basically Available(基本可用),Soft state (软状态) 和 Eventually consistent (最终一致性)。
  • Base理论核心思想是:既然无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。
  • 基本可用:系统出现了不可预知的故障,但相比较于正常系统还是能用的。
  • 软状态:允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。
  • 最终一致性:系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值。
  • 具体地说,如果选择了CP (一致性和分区容忍性),那么就要考虑ACID 理论如果选择了AP (可用性和分区容忍性)那么就要考虑BASE 系统。如果选择了CA(一致性和可用性),那么在网络发生分区的时候,将不能进行完整的操作。

9.3 分区方法

(1)内存缓存:缓存技术可以看成一种分区。内存中的数据库系统将使用频率最高的数据复制到缓存中,加快了数据给用户传递的速度,同时也大大减轻了数据库服务器的负担。
(2)集群:数据库服务器集群在为用户提供服务时的透明性(用户感觉数据像是在同一个地2是另外一个对数据进行分区的方法。
(3)读写分离: 指定一台或多台主服务器,所有或部分的写操作被送至此,同时再设一定数量的副本服务器用以满足读请求。
(4)范围分割技术/分片(sharding): 指对数据按照如下方式进行分区操作,即对数据的请求和更新在同一个结点上,并且对于分布在不同服务器上的数据存储和下载的量大致相同。

9.4 存储分布

  1. 行存储和列存储:两者之间的主要区别在于,行存储将每条记录的所有字段的数据聚合存储而列存储将所有记录中相同字段的数据聚合存储。行存储主要适用于OLTP,或者更新操作,尤其是插入、删除操作频繁的场合: 而列存储主要适用于OLAP,数据仓库,数据挖掘等查询密集型应用。
  2. 带有局部性群组的列存储:是指根据需要将原来不存储在一起的数据,以列族为单位存储至单独的字表中。如用户对网站排名、语言等分析信息感兴趣,那么可以将这些列族放在单独的子表减少无用信息读取,改善存取效率。
  3. LSM-Tree:日志结构合并树,与前面介绍的存储结构有所不同,前面的存储结构在描述如何序列化逻辑数据结构,而LSM-Tree 描述的则是为了满足高效、高性能、安全地读写的要求,如何有效地利用内存和磁盘存储。主要用于解决日志记录索引的问题

9.5 查询模型

  1. 结合SQL 数据库:一个最直接的方式是通过将NOSQL 数据库拷贝到关系数据库或者文本数据库来提供查询能方。
  2. 分散/集合本地搜索:一些NOSQL数据库提供本地数据库内的索引和查询处理机制。在这种情况下,我们可以让查询处理器将查询广播到DHT(分散哈希表)中的所有节点,在每个节点上将会执行查询,并将结果送回到查询处理器,然后查询处理器将结果聚集成一个单一响应。
  3. 分布式B十树:其基本思路是为了定位B+树的根节点哈希要搜索的属性。根节点的“值”包含其孩子节点的ID。
  4. 前缀哈希表/分布式Trie:前缀哈希表 (Prefix Hash Table, PHT,又名分布式Trie) 目的是一个树形数据结构。在这个树形结构中,从根节点到叶子的每一条路径上均包含了键值的前缀,并且每个Trie中的节点都包含了它是谁的前缀的所有数据。

9.6 存储模式

其他存储模式:
(1)多值数据库:是分布式数据库系统的重要分支。它速度快,体积小,比关系数据库便宜,很快得到了认可。它提供了一个通用的数据集成与访问平台,屏蔽了现有各数据库系统不同的访问方法和用户界面,给用户呈现出一个访问多种数据库的公共接口。多值数据库系统使用的多个异构的数据源之间可以共享它们相互依赖的数据,并具有相互操作的能力。常见的多值数据库有Rocket U2, Extensible Storage Engin (ESE/NT)、OpenInsight 和OpenQM等。
(2)时间序列与流数据库:时间序列数据库是指具有处理时间序列数据,能对时间数据数组建立索引的优化数据库系统。流数据库又被称为实时数据库,这是一种使用实时处理数据的方式来处理状态不断变化的数据库系统。对时间序列的数据库提出实时的处理要求,那么时间数据库就是流数据库。常见的时间序列数据库InfluxDB、OpenTSDBo。
(3)网格和云数据库:是基于网格计算或者云计算的数据库。


【软考数据库】第一章 计算机系统基础知识
【软考数据库】第二章 程序语言基础知识
【软考数据库】第三章 数据结构与算法
【软考数据库】第四章 操作系统知识
【软考数据库】第五章 计算机网络
【软考数据库】第六章 数据库技术基础
【软考数据库】第七章 关系数据库
【软考数据库】第八章 数据库SQL语言

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

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

相关文章

Listener监听器,实现一个显示在线用户人数

Listener监听器,实现一个显示在线用户人数 每博一文案 关于后半身,脾气越温,福报越深。 师傅说:惜命最好的方式不是养生,而是管好自己的情绪。 坏毛病都是惯出来的,但好脾气都是磨出来的,与人生…

《小钊记》项目启动前期工作相关记录:VUE、powerdesigner建模、虚拟机密码重置、代码生成

目录 VUE镜像基本命令vue 不是内部或外部命令路径配置路由 powerdesigner 建模栏位添加注释id设置自增导出sql 虚拟机root密码重置(centos7)生成代码工具安装EasyCode插件连接数据库生成代码可以自定义模板复制现有的模板,在其基础上进行改造…

MathType7简体中文版数学公式编辑器下载安装教程

MathType一款专业的数学公式编辑器,理科生专用的必备工具,可应用于教育教学、科研机构、工程学、论文写作、期刊排版、编辑理科试卷等领域。2018年2月,MathType 7简体中文版正式发布,给用户带来全新的体验。MathType 是Windows和M…

二分查找的两种形式(C++实现)

现在有一个这样的问题需要求解 题目要求:给定一个n个元素的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1 示例 输入: nums [-1,0,3,5,9,12] …

解密银行客户经理展业利器系列一:商机共享、创收增长

2023年银行业面临存款、贷款、利润三大变局,与此同时,商业银行的数字化转型正延展至前台建设,期望通过科技手段布局应对,数字化重装身处一线的客户经理,带动单位时间创收提升,更有力地支撑银行业务战略发展…

数字设计小思 - 谈谈复位那些事

写在前面 本系列整理数字系统设计的相关知识体系架构,为了方便后续自己查阅与求职准备。在FPGA和ASIC设计中,对于复位这个问题可以算是老生常谈了,但是也是最容易忽略的点。本文结合FPGA的相关示例,再谈一谈复位。 (本…

带着Java基础对比学习C#基本语法

文章目录 一.引包二.构造函数三.析构函数四.C#数据类型1.值类型2.引用类型分类 五.加框(boxing)和消框(unboxing)六.运算符七.控制语句八.类的继承九.方法参数的种类十. 操作符重载十一.this关键字十二.类的多态十三.抽象类和抽象方法十四.密封类和密封方法十五.接口…

Web3中文|乱花渐欲meme人眼,BRC-20总市值逼近10亿美元

现在的Web3加密市场,用“乱花渐欲meme人眼”来形容再合适不过了。 何为meme? “meme”这个词大概很多人都不知道如何正确发音,并且一看到它就会和狗狗币Dogecoin等联系在一起。那它究竟从何而来呢? Meme:[mi:m]&#x…

算法:迷宫问题

描述 定义一个二维数组 N*M ,如 5 5 数组下所示: int maze[5][5] { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或…

JVM致命错误日志(hs_err_pid.log)分析

当jvm出现致命错误时&#xff0c;会生成一个错误文件 hs_err_pid<pid>.log&#xff0c;其中包括了导致jvm crash的重要信息&#xff0c;可以通过分析该文件定位到导致crash的根源&#xff0c;从而改善以保证系统稳定。当出现crash时&#xff0c;该文件默认会生成到工作目…

vue项目部署后提示用户有新版本

你可能在浏览器见到过上面这种UI&#xff0c;这是在vue项目重新build在服务端部署后&#xff0c;浏览器刷新页面弹出的提示&#xff0c;这时如果用户点击更新就会重载页面&#xff0c;清除之前的缓存获取最新内容。 这是怎样发生的呢&#xff1f;你可能会想到下面的方式&#x…

基于深度学习的美颜SDK技术研究报告

在美颜SDK中&#xff0c;深度学习技术的应用尤为突出。本文将从深度学习技术的角度&#xff0c;分析美颜SDK的实现原理与优化技巧。 一、在美颜SDK中的具体应用 1、人脸检测 深度学习技术可以通过训练神经网络&#xff0c;从而实现高效准确的人脸检测。 2、人脸关键点检测 …

一图看懂 dotenv 模块:从.env文件中读取键值对,并将其设置为环境变量,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 dotenv 模块&#xff1a;从.env文件中读取键值对&#xff0c;并将其设置为环境变量&#xff0c;资料整理笔记&#xff08;大全&#xff09; 摘要模块图类关系图模块全展开【…

01-数据操作+数据预处理

1.n维数组&#xff0c;也称为张量&#xff08;tensor&#xff09;&#xff1a;tensor和ndarray没有本质区别。tensor是有数学上的严格定义&#xff0c;ndarray是计算机描述的&#xff1b;张量表示一个由数值组成的数组&#xff0c;这个数组可能有多个维度&#xff1b; 无论使用…

线程初探——生产者、消费者模式

线程初探——生产者、消费者模式 文章目录 线程初探——生产者、消费者模式生产者消费者模式结构以及问题解决问题 helllo&#xff0c;大家好&#xff0c;这里是追風者频道。今天我们来聊一聊生产者、消费者模式。后期需要采用该模式来进行协议栈抓包架构的搭建&#xff0c;通过…

电脑ppt录制微课软件哪个好 电脑ppt录制微课的方法

如今线上课程已经逐渐成为线下课程的补充&#xff0c;拓宽知识面&#xff0c;让学生能够学到更多知识。微课是线上课程里比较方便观看的一类&#xff0c;制作起来也很便捷&#xff0c;很多人会直接用ppt来制作微课&#xff0c;简单快速又能传播知识。今天就来分享一下电脑ppt录…

AUTOSAR入门

简介 AUTOSAR&#xff08;AUTomotive Open System ARchitecture&#xff09;是一种汽车软件架构标准&#xff0c;由德国大陆、博世、宝马等汽车及零部件制造商共同发起&#xff0c;拥有广泛的行业参与。其目标是为了解决汽车电子和软件系统日益复杂的问题&#xff0c;提高可重…

思科模拟器 | 访问控制列表ACL实现网段精准隔绝

文章目录 一、ACL工作原理二、ACL分类初步介绍三、标准ACL1、标准ACL的决策过程2、标通配符掩码关键字3、标准ACL网络拓扑4、标准ACL演示5、实战讲解 四、扩展ACL1、基础语法明细2、扩展ACL示例3、扩展ACL网络拓扑4、实战讲解 五、总结与提炼 一、ACL工作原理 ACL&#xff08;A…

大数据任务调度和数据同步组件初探

本文个人博客地址 背景 数据从最原始的状态&#xff0c;可能是一个 excel&#xff0c;一个文本&#xff0c;或者是来自业务数据库的数据&#xff0c;格式各种各样&#xff0c;落地到数据仓库、数据湖中&#xff0c;数据的同步过程 是必不可少的 图片来源 传统的数据同步方式…

如何解决IP能ping通但无法上网的问题?

当我们在网络环境中遇到无法上网的问题时&#xff0c;可能会尝试使用ping命令来测试网络连接是否正常。如果ping测试成功&#xff0c;说明我们的IP地址能够和网络中其他设备进行通信&#xff0c;但是无法上网。这种情况下&#xff0c;我们需要采取一些措施来解决这个问题。本文…