架构师备考-非关系型数据库

基础理论

CAP 理论

  • C(Consistency)一致性。一致性是指更新操作成功并返回客户端完成后,所有的节点在同一时间的数据完全一致,与ACID 的 C 完全不同。
  • A (Availability)可用性。可用性是指服务一直可用,而且是正常响应时间
  • P(Partition tolerance)分区容错性。分区容错性是指分布式系统在遇到某节点或网络区分故障的时候,仍然能够对外提供满足一致性和可用性的服务。
  • CA:优先保证一致性和可用性,放弃分区容错性。
    • 缺点:不再是分布式系统
  • CP:优先保证一致性和分区容错性,放弃可用性。
    • 缺点:牺牲用户体验
  • AP:优先保证可用性和分区容错性,放弃一致性。
    • 全局数据的不一致性

BASE 理论

  • 基本可用(Basically Available):指分布式系统在出现不可预知故障的时候,允许牺牲部分可用性。允许分区失败的情形出现
  • 软状态(soft state)
    • 硬状态:数据库状态一直保持数据库一致性
    • 软状态:状态可以有一段时间不同步
  • 最终一致性(Eventuallyconsistent):系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。

NOSQL 特点

        NOSQL 数据库的主要特点包括:易拓展、高性能处理大数据量的数据、灵活的数据模型、高可用

  • 易拓展:去掉了关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。
  • 大数据量,高性能:NoSQL 数据库都具有非常高的读写性能,尤其在大数据量下。这得益于它的无关系性,数据库的结构简单。
  • 灵活的数据模型:NoSQL 无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式
  • 高可用:NoSQL 在不太影响性能的情况下,就可以方便的实现高可用的架构,有些产品通过复制模型也能实现高可用。

NOSQL与SQL 比

特征

SQL 数据库

NOSQL 数据库

数据类型

结构化

非结构化

数据一致性

强一致性

弱一致性

事务

高事务性

弱事务性

拓展性

一般

数据容量

有限数据

海量数据

标准化

技术支持

可维护性

复杂

复杂

NOSQL 体系框架

  • NOSQL 分为 4层,分别是数据持久层、数据分布层、数据逻辑模型层、接口层
  • 数据持久层:定义了数据的存储形式
    • 内存:最快,但可能造成数据丢失
    • 硬盘:保存很久,但存取慢于内存
    • 内存和硬盘接口
    • 定制可插拔:保证了数据存取具有较高的灵活性
  • 数据分布层:定义了数据是如何分布的
    • CAP 支持,可用于水平拓展
    • 多数据中心支持,可以保证在横跨多数据中心时也能够平稳运行
    • 动态部署支持,可以在运行着的集群中动态地添加或删除节点
  • 数据逻辑模型层:数据的逻辑表现形式
  • 接口层:为上层应用提供了方便的数据调用接口
    • Rest:一种软件架构风格,它定义了一组用于分布式系统的架构原则
    • Thrift:一个由Apache开发的跨语言的服务部署框架
    • Map/Reduce:一种编程模型,用于大规模数据集(大规模数据集)的并行运算
    • Get/Put:Get/Put 是一种简单的键值存储操作接口,其中"Get"用于检索数据,"Put"用于存储数据
    • 特定语言API:许多NoSQL数据库为特定编程语言提供了专用的API

NOSQL 适用场景

  • 数据模型比较简单
  • 需要灵活性更强的IT 系统
  • 对数据库性能要求较高
  • 不需要高度的数据一致性
  • 对于给定key,比较容易映射复杂值的环境

NOSQL 数据库分类

        NOSQL 数据库主要分为4类,分别是:键值对数据库、列式存储数据库、文档型数据库、图数据库

键值对数据库

  • 键值存储的典型数据结构一般为数据链表:先通过Hash 算法得出 Hashcode,找到数组的某一个位置,然后插入链表。
  • 这类数据库主要会用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据。
  • Key-Value 模型对于IT 系统来说,其优势在于简单、易部署。但是如果数据库管理员只对部分值进行查询或更新的时候,Key-Value 就显得效率低下了。
  • 典型应用
    • 涉及频繁读写、拥有简单数据模型的应用
    • 内容缓存、比如会话配置文件、参数、购物车等
    • 存储配置和用户信息的移动应用
  • 优点:拓展性好、灵活性好、大量写操作时性能高
  • 缺点:无法存储结构化信息,条件查询效率较低
  • 相关产品:redis、Memcached

列式存储数据库

  • 列式数据库是按数据库记录的列来组织和存储数据的,数据库中每个表由一组页链的集合组成,每条页链对应表中的一个存储列。
  • 这类数据库通常用来应对分布式存储的海量数据。键仍然存在,但是他们的特点是指向了多个列。这些列是由列家族来安排的。
  • 典型应用
    • 数据分析:列式数据库非常适合进行数据分析和数据仓库应用,尤其是涉及大量聚合操作的场景。
    • 大数据处理:用于处理大规模分布式数据集,如日志分析、用户行为分析等。
    • 实时查询:在需要快速响应的实时分析系统中,列式数据库可以提供高效的查询性能。
    • 分布式存储:在需要高可用性和容错能力的分布式系统中,列式数据库因其设计而具有优势。
  • 优点:
    • 查询性能:对于读取大量数据中的少数几列的场景,列式数据库可以显著提高查询性能,因为它只需要读取相关的列而不是整行数据。
    • 压缩率高:由于同一列的数据类型相同,列式数据库通常可以实现更高的数据压缩率,从而减少存储空间和I/O操作。
    • 可扩展性:列式数据库通常设计为分布式系统,易于水平扩展,可以处理不断增长的数据量。
    • 容错性:许多列式数据库支持数据复制和分区,提高了系统的容错能力和可用性。
  • 缺点:
    • 写入性能:由于数据是按列存储的,对于涉及多列的写入操作,列式数据库可能不如行式数据库高效。
    • 事务支持:大多数列式数据库不支持复杂的事务操作,这对于需要强事务一致性的应用来说可能是一个限制。
    • 数据更新:对于频繁的数据更新操作,列式数据库可能不如行式数据库高效,因为更新操作可能需要重写整列数据。
    • 复杂查询:虽然列式数据库在聚合查询方面表现优异,但对于涉及多表连接的复杂查询,其性能可能不如行式数据库。
  • 相关产品:Apache Cassandra、Apache HBase、Google Bigtable

文档型数据库

  • 该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。
  • 典型应用:存储、索引并管理面向文档的数据或者类似的半结构化数据。比如用于后台具有大量读写操作的网站、使用JSON 数据结构的应用、使用嵌套结构等非规范化数据的应用程序
  • 优点:
    • 性能好(高并发)、灵活性高、复杂度低、数据结构灵活
    • 提供嵌入式文档功能,将经常查询的数据存储在同一个文档中。既可以根据键来构建索引,也可以根据内容构建索引
  • 缺点:缺乏统一的查询语法
  • 相关产品:MongoDB、Lucene、Elasticserach

图数据库

  • 图形结构的数据库同其他采用行列以及刚性结构的SQL 数据库不同,它使用灵活的图形模型,并且能够拓展到多个服务器上。
  • NOSQL 没有标准的查询语言,因此进行数据库查询需要指定数据模型。
  • 许多NoSQL 数据库都有REST 式的数据接口或者查询API。适合存储通过图进行建模的数据,列如社交网络数据、生物信息网络数据、交通网络数据等。

  • 典型应用:专门用于处理具有高度相互关联关系的数据,比较适合于社交网络、模式识别、依赖分析、推荐系统以及路径寻找等问题

  • 优点:灵活性高、支持复杂的图形算法、可用于构建复杂的关系图谱

  • 缺点:复杂度高、只能支持一定的数据规模

  • 相关产品:Neo4J、InfoGrid、Infinite Graph

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

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

相关文章

奥云学院应邀参加“第二届中国县域经济投资高峰论坛”

论坛聚焦战略,县域经济迎来新机遇 10月28日,由中国投资协会主办的第二届中国县域经济投资高峰论坛在北京盛大召开。本次论坛以“产业资本助力县域经济高质量发展”为主题,汇聚政府、企业、金融机构和学术专家等多方资源,集中探讨…

飞牛NAS docker compose环境下自建远程桌面服务:rustdesk

🛩️前言 由于国内向日葵、todesk等应用的日渐模糊,恰巧我们已经实现了ipv6的内网穿透,而且在国内ipv6的延迟极低,加上本次介绍的开源远程桌面项目Rustdesk,简直是绝配。 这个项目比较简单,话不多说&…

算法:查找

算法 1. 顺序查找和折半查找1.1 顺序查找1.2 折半查找1.3 索引顺序查找 2. 树表查找2.1 查找2.2 插入 3. 哈希表及哈希查找3.1 哈希造表3.2 处理冲突开放定址法链地址法 3.3 哈希查找 查找是非数值数据处理中一种基本运算,查找运算的效率与查找表所采用的数据结构和…

Istio基本概念及部署

一、Istio架构及组件 Istio服务网格在逻辑上分为数据平面和控制平面。 控制平面:使用全新的部署模式:Istiod,这个组件负责处理Sidecar注入,证书颁发,配置管理等功能,替代原有组件,降低复杂度&…

OpenCV视觉分析之目标跟踪(8)目标跟踪函数CamShift()使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 找到物体的中心、大小和方向。 CamShift(Continuously Adaptive Mean Shift)是 OpenCV 中的一种目标跟踪算法&#xff0…

gradlew命令打包报错:malformed input off : 50, length : 1

Execution failed for task :app:mapǧ��Ѫսƪ_officialOfficialReleaseSourceSetPaths. > Could not resolve all files for configuration :app:ǧ��Ѫսƪ_officialOfficialReleaseRuntimeClasspath. > Failed to trans…

[云] 大数据分析栈(Big Data Analytics Stack)+ Apache Hadoop分布式文件系统(HDFS)+Apache Spark

任务概述 本次作业旨在帮助你理解大数据分析栈(Big Data Analytics Stack)的工作原理,并通过实际操作加深认识。你将搭建Apache Hadoop分布式文件系统(HDFS)作为底层文件系统,并将Apache Spark作为执行引擎…

ESP8266 自定义固件烧录-Tcpsocket固件

一、固件介绍 固件为自定义开发的一个适配物联网项目的开源固件,支持网页配网、支持网页tcpsocket服务器配置、支持串口波特率设置。 方便、快捷、稳定! 二、烧录说明 固件及工具打包下载地址: https://download.csdn.net/download/flyai…

新能源汽车空调压缩机:科技驱动的冷暖核心

一、新能源汽车空调系统概述 新能源汽车空调系统在车辆中起着至关重要的作用,它直接影响着驾乘人员的舒适度。新能源汽车空调系统主要由制冷系统、加热系统、送风系统、操纵控制系统和空气净化系统等组成。 制冷系统通常由电动压缩机、冷凝器、压力传感器、电子膨…

Leetcode 213. 打家劫舍 II 动态规划

原题链接&#xff1a;Leetcode 213. 打家劫舍 II class Solution { public:int rob(vector<int>& nums) {int n nums.size();if (n 1)return nums[0];if (n 2)return max(nums[0], nums[1]);// 如果偷了第一家&#xff0c;就不能偷最后一家int dp[n - 1];dp[0] …

助力AI智能化时代:全国产化飞腾FT2000+/64+昇腾310B服务器主板

在信息技术快速发展的今天&#xff0c;服务器作为数据处理和存储的核心设备&#xff0c;肩负着越来越重要的使命。全国产化的服务器主板&#xff0c;采用飞腾FT2000/64核处理器&#xff0c;搭配华为昇腾310的AI芯片&#xff0c;提供卓越的性能与可靠性。 核心配置&#xff0c;强…

IO 多路复用技术:原理、类型及 Go 实现

文章目录 1. 引言IO 多路复用的应用场景与重要性高并发下的 IO 处理挑战 2. IO 多路复用概述什么是 IO 多路复用IO 多路复用的优点与适用场景 3. IO 多路复用的三种主要实现3.1 select3.2 poll3.3 epoll三者对比 4. 深入理解 epoll4.1 epoll 的三大操作4.2 epoll 的核心数据结构…

大学英语神器:让GPT帮助你攻克完型填空和阅读理解

这里写目录标题 0、前言一、再来十篇完型填空和阅读理解第一部分&#xff1a;操作指南1.访问链接&#xff1a;ChatGPT 4o国内直接访问地址&#xff1a;https://share.xuzhugpt.cloud/2.上plus的车 第二部分&#xff1a;实操展示①完型填空②阅读理解 二、用户体验 0、前言 学习…

masm汇编debug调试1~100求和

计算123...100并把结果放到寄存器AX里 assume cs:codecode segment start:mov ax,0mov cx,100 s:add ax,cxloop smov ax,4c00hint 21hcode ends end start 效果演示&#xff1a;

LeetCode3226题. 使两个整数相等的位更改次数(原创)

【题目描述】 给你两个正整数 n 和 k。 你可以选择 n 的 二进制表示 中任意一个值为 1 的位&#xff0c;并将其改为 0。 返回使得 n 等于 k 所需要的更改次数。如果无法实现&#xff0c;返回 -1。 示例 1&#xff1a; 输入&#xff1a; n 13, k 4 输出&#xff1a; 2 解释&am…

ubuntu 异常 断电 日志 查看

sudo less /var/log/syslog 搜 Linux version

Python:入门基础

目录 常量和表达式 变量 变量的语法 变量的类型 动态类型特性 注释的使用 输入和输出 通过控制台输出 通过控制台输入 运算符 算术运算符 关系运算符 逻辑运算符 赋值运算符 常量和表达式 print是Python中的一个内置函数&#xff0c;使用print函数可以将数据打印…

ChatGPT 高级语音模式已登陆 Windows 和 Mac 平台,对话更自然

OpenAI ChatGPT 高级语音模式已登陆 Windows 和 Mac 平台&#xff0c;对话更自然&#xff0c;拟态更逼真 OpenAI 于10月31日正式宣布&#xff0c;ChatGPT 的高级语音模式&#xff08;Advanced Voice Mode&#xff0c;简称 AVM&#xff09;现已登陆 Windows 和 Mac 平台。基于最…

【深度学习】InstantIR:图片高清化修复

InstantIR——借助即时生成参考的盲图像修复新方法 作者:Jen-Yuan Huang 等 近年来,随着深度学习和计算机视觉技术的飞速发展,图像修复技术取得了令人瞩目的进步。然而,对于未知或复杂退化的图像进行修复,仍然是一个充满挑战的任务。针对这一难题,研究者们提出了 Insta…

【深度学习】实验 — 动手实现 GPT【三】:LLM架构、LayerNorm、GELU激活函数

【深度学习】实验 — 动手实现 GPT【三】&#xff1a;LLM架构、LayerNorm、GELU激活函数 模型定义编码一个大型语言模型&#xff08;LLM&#xff09;架构 使用层归一化对激活值进行归一化LayerNorm代码实现scale和shift 实现带有 GELU 激活的前馈网络测试 模型定义 编码一个大…