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

基础理论

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

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

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

相关文章

七、k8s快速入门之资源控制器

文章目录 :star: RC:star: Deployment:three: create 和 apply的区别 :star: DaemonSet:star: job&&CronJob ⭐️ RC 1️⃣ 查看版本 kubect api-resource 或 kubect explain rs2️⃣ 编写Yaml文档 [rootmaster ~]# vim pod/rc.yaml apiVersion: extensions/v1beta1…

FreeRTOS移植到STM32F103C8T6(HAL库)

目录 一、将STM32F103ZET6代码变更成STM32F103C8T6 二、 将FreeRTOS码源添加到文件 三、代码更改适配 四、测试 一、将STM32F103ZET6代码变更成STM32F103C8T6 点击魔法棒,点击Device,选择芯片为STM32F103C8T6 进行编译,无报错无警告&am…

Nginx 的 Http 模块介绍(上)

Nginx 的 Http 模块介绍(上) 1. http 请求 11 个处理阶段介绍 Nginx 将一个 Http 请求分成多个阶段,以模块为单位进行处理。其将 Http请求的处理过程分成了 11 个阶段,各个阶段可以包含任意多个 Http 的模块并以流水线的方式处理…

六西格玛项目助力,手术机器人零部件国产化稳中求胜——张驰咨询

项目背景 XR-1000型腔镜手术机器人是某头部手术机器人企业推出的高端手术设备,专注于微创手术领域,具有高度的精确性和稳定性。而XR-1000型机器人使用的部分核心零部件长期依赖进口,特别是高精度电机、关节执行机构和视觉系统等,…

基于Python爬虫与文本挖掘的网络舆情监控系统【附源码】

基于Python爬虫与文本挖掘的网络舆情监控系统 效果如下: 系统登录界面 注册页面界面 管理员主界面 用户界面 网络舆情管理界面 看板详细页面 系统简介界面 用户主界面 网络舆情界面 研究背景 随着网络空间舆论的日益活跃,其对社会事件的影响愈发显著。…

光影重塑 艺术无界——中央美术学院国际学院与北京曦烽摄影学院联展启幕

10月28日,中央美术学院国际学院与北京曦烽摄影学院联合举办的《重塑》摄影展,在中央美术学院国际学院艺术空间启幕。展览旨在打破传统“时尚摄影”的话语界限,通过镜头展现时尚的更多维度,既关注视觉美感,更深入挖掘时…

【Linux 25】网络套接字 socket 概念

文章目录 🌈 一、IP 地址概念⭐ 1. IP 地址的作用⭐ 2. 源 IP 地址和目的 IP 地址 🌈 二、端口号概念⭐ 1. 源端口号和目的端口号⭐ 2. 端口号范围划分⭐ 3. 端口号 VS 进程 ID⭐ 4. 套接字 socket 的概念 🌈 三、传输层的典型代表协议⭐ 1. …

配置mysql 主主模式 GTID

文章目录 一、前提二、修改my.cnf主1 10.255.131.9主2 10.255.131.10 三、配置主主3.1 配置主 10.255.131.93.2 配置从 10.255.131.103.3 配置主 10.255.131.103.4 配置从 10.255.131.9 四、验证五、同步问题排查以及恢复5.1 查看同步状态5.2 查看同步是否数据一致性&#xff0…

自动化研磨领域的革新者:半自动与自动自磨机的技术突破

据QYResearch调研团队最新报告“全球半自动和自动自磨机市场报告2023-2029”显示,预计2029年全球半自动和自动自磨机市场规模将达到5.3亿美元,未来几年年复合增长率CAGR为3.5%。 图00001. 半自动和自动自磨机,全球市场总体规模 如上图表/数据…

最长方连续方波信号

更多关于刷题的内容欢迎订阅我的专栏华为刷题笔记 该专栏题目包含两部分: 100 分值部分题目 200 分值部分题目 所有题目都会陆续更新,订阅防丢失 题目描述 输入一串方波信号,求取最长的完全连续交替方波信号,并将其输出&#x…

ARB链挖矿DApp系统开发模式定制

在区块链生态中,挖矿作为一种获取加密资产的方式,越来越受到关注。ARB链凭借其高效的性能和灵活的智能合约系统,成为了开发挖矿DApp的理想平台。本文将探讨ARB链挖矿DApp的开发模式定制,包括架构设计、功能实现以及最佳实践。 ARB…

YoloV8改进策略:Block改进|RFE模块,提高小物体的识别精度|即插即用|代码+修改过程

摘要 论文介绍 本文介绍了一种基于YOLOv5的人脸检测方法,命名为YOLO-FaceV2。该方法旨在解决人脸检测中的尺度变化、简单与困难样本不平衡以及人脸遮挡等问题。通过引入一系列创新模块和损失函数,YOLO-FaceV2在WiderFace数据集上取得了优异的表现,特别是在小物体、遮挡和困…

使用 Elasticsearch 进行语义搜索

Elasticsearch 是一款功能强大的开源搜索引擎,可用于全文搜索、分析和数据可视化。传统上,Elasticsearch 以其执行基于关键字/词汇的搜索的能力而闻名,其中文档基于精确或部分关键字匹配进行匹配。然而,Elasticsearch 已经发展到支…

计算机网络:网络层 —— 虚拟专用网 VPN

文章目录 虚拟专用网 VPN 概述内联网 VPN外联网 VPN 虚拟专用网 VPN 概述 虚拟专用网(Virtual Private Network,VPN):利用公用的因特网作为本机构各专用网之间的通信载体,这样形成的网络又称为虚拟专用网。 出于安全…

C语言函数嵌套调用

函数嵌套调用就是在一个函数中调用另一个函数; 看一个例子; max2函数返回2个整数中大的一个;max4中调用max2,实现返回4个整数中最大的一个; int max2(int, int); int max4(int, int, int, int);......void CCjjyyV…

C++:继承及其相关问题

继承的定义 继承机制是⾯向对象程序设计实现代码复⽤的重要⼿段,它允许我们在保持原有类特性的基础上进⾏扩展,增加⽅法 (成员函数) 和属性 (成员变量),从而产⽣的类,这样的类称为派⽣类,也称为子类。而这样的类就成为…

Centos7.9 x86架构部署

一、部署环境 表 1‑1 环境服务版本号系统centos7.9_2009运行环境1JDK1.8_321前端WEBNginx1.14数据库postgresqlpostgresql13postgis3.1pgrouting3.1消息队列rabbitmq3.8.16运行环境2erlang23.3.3.1 二、部署JDK 2.1下载JDK安装包 官网下载JDK8 官网地址: https…

【uniapp3】分享一个自己写的h5日历组件

简言 分享一下自己基于uniapp写的日历组件。如果不太满足你的需求,可以自己改造。 日历 实现分析: 页面显示 - 分为顶部显示和日历显示,我这里做了多行和单行显示两种情况,主要是当时看着手机的日历做的,手机上的…

Nginx安装配置详解

Nginx Nginx官网 Tengine翻译的Nginx中文文档 轻量级的Web服务器,主要有反向代理、负载均衡的功能。 能够支撑5万的并发量,运行时内存和CPU占用低,配置简单,运行稳定。 写在前 uWSGI与Nginx的关系 1. 安装 Windows 官网 Stabl…

Java版企电子招标采购系统源业码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…