当前位置: 首页 > news >正文

软考-系统架构设计师 NoSQL数据库详细讲解

个人博客:blogs.wurp.top

一、NoSQL数据库概述:为什么需要NoSQL?

1. 关系型数据库的瓶颈

关系型数据库(RDBMS)在Web 2.0时代面临巨大挑战:

  • 高并发读写:互联网应用的用户量巨大,每秒读写请求可能高达数万次。
  • 海量数据存储:需要处理PB级别的数据,单机无法存储和扩展。
  • 高可扩展性与高可用性:系统需要7x24小时在线,并能轻松水平扩展。
  • 灵活的数据模型:半结构化和非结构化数据(如社交网络、用户画像)难以用固定的表结构表示。

2. NoSQL的定义与核心思想

  • NoSQL:最初意为 “Not Only SQL”(不仅仅是SQL),表明它是对传统关系型数据库的补充,而非替代。
  • 核心思想牺牲关系型数据库的强一致性和事务特性,换取高可扩展性、高性能和高可用性。

3. NoSQL与SQL的对比(必考)

特性关系型数据库 (SQL)NoSQL数据库
数据模型结构化,基于表和模式(Schema)非结构化/半结构化,灵活的模式
事务特性ACID事务遵循BASE理论,弱一致性(最终一致性)
扩展方式垂直扩展(Scale-up),升级硬件水平扩展(Scale-out),增加节点
查询语言标准化的SQL非SQL,使用特定的API
架构目标数据一致性和完整性高可用性和分区容错性

二、CAP定理与BASE理论:NoSQL的理论基石

1. CAP定理(分布式系统的“黄金法则”)

对于一个分布式计算系统,不可能同时满足以下三点:

  • C - 一致性 (Consistency):所有节点在同一时间看到的数据是完全相同的。(等同于原子性或线性一致性)
  • A - 可用性 (Availability):每个请求都能收到一个(非错误)响应,但不保证它包含最新的写入。
  • P - 分区容错性 (Partition Tolerance):系统在遇到任何网络分区故障时,仍然能够对外提供满足一致性和可用性的服务。

架构师决策:在分布式系统中,网络分区(P)是必然要面对的,因此必须在C和A之间做出权衡

  • CP系统:优先保证一致性和分区容错性。当网络分区发生时,会拒绝写入或部分读取请求,牺牲可用性。代表:MongoDB, HBase, Redis(集群模式)
  • AP系统:优先保证可用性和分区容错性。当网络分区发生时,系统继续提供服务,但返回的数据可能不是最新的(最终一致)。代表:Cassandra, DynamoDB, CouchDB
  • CA系统:单机关系型数据库(如MySQL主从架构中的主库)。在分布式系统中几乎不存在。

2. BASE理论(对ACID的补充)

BASE是Basically Available(基本可用),Soft state(软状态),Eventually consistent(最终一致性)的缩写。它是AP系统的一种实践。

  • 基本可用:系统出现不可预知的故障时,允许损失部分可用性(如响应时间增加、功能降级)。
  • 软状态:允许系统中的数据存在中间状态,并且认为该中间状态的存在不会影响系统的整体可用性。
  • 最终一致性:经过一段时间后,所有数据副本最终会达到一致的状态。这是大多数NoSQL数据库的默认一致性策略。

三、NoSQL数据库的主要类型(必考)

根据数据模型,NoSQL数据库分为四大类,架构师需要根据业务场景进行选择。

1. 键值数据库 (Key-Value Store)

  • 数据模型:简单的Key -> Value映射。Value是二进制大对象,数据库不关心其内容结构。
  • 特点:极其简单,读写性能非常高。
  • 典型应用会话存储、用户配置、购物车、缓存
  • 代表产品
    • Redis内存型键值数据库,支持丰富的数据结构(String, List, Set, Hash等),性能极高。也可持久化。
    • Memcached:纯内存缓存系统,比Redis更简单。
    • Amazon DynamoDB:托管的键值和文档数据库。

2. 文档数据库 (Document Store)

  • 数据模型:存储半结构化的文档,如JSON、BSON、XML。文档内部有结构,数据库可以对其内容进行索引和查询。
  • 特点:模式灵活,无需预定义表结构,适合业务快速迭代。API友好,与面向对象编程模型契合。
  • 典型应用内容管理系统、用户档案、博客平台、电商产品目录
  • 代表产品
    • MongoDB最流行的文档数据库。使用BSON格式,支持丰富的查询语言和二级索引。
    • CouchDB:使用HTTP/JSON API,支持多版本并发控制。

3. 列族数据库 (Column-Family Store / Wide-Column Store)

  • 数据模型:类似于一个嵌套的Map:Row Key -> (Column Family -> (Column Qualifier -> Value))。可以理解为一张可以动态增加列的超大表。
  • 特点:非常适合大规模数据分析存储海量数据。擅长按列进行压缩和查询。
  • 典型应用日志系统、推荐系统、物联网(IoT)、数据仓库
  • 代表产品
    • Apache HBase:基于Google Bigtable论文,构建在HDFS之上,为Hadoop生态系统提供随机实时读写能力。
    • Apache Cassandra:基于Amazon Dynamo的分布式设计和Google Bigtable的数据模型。无单点故障,写性能极高。

4. 图数据库 (Graph Database)

  • 数据模型:使用结构进行存储。包含节点(实体)、(关系)和属性
  • 特点:专门用于处理高度互连数据的查询。传统关系数据库的多表连接查询在此类场景下性能极差。
  • 典型应用社交网络、欺诈检测、知识图谱、推荐引擎、网络与IT基础设施管理
  • 代表产品
    • Neo4j最主流的图数据库,使用Cypher查询语言。
    • TigerGraph:支持大规模分布式图计算。

四、NewSQL:对NoSQL的演进

  • 定义:一类现代关系数据库管理系统,旨在为OLTP读写工作负载提供与NoSQL系统相同的可扩展性,同时仍然保持传统数据库的ACID事务保证。
  • 目标兼具SQL的强一致性和NoSQL的水平扩展能力
  • 代表产品Google Spanner, TiDB, CockroachDB
  • 架构师视角:当业务既需要强一致性事务,又面临海量数据和高并发时,NewSQL是一个重要的技术选型方向。

五、软考考点总结与应用

  1. 选择题

    • 直接考查NoSQL的定义特点(与SQL的对比)。
    • 考查CAP定理的含义,以及CP/AP系统的代表产品。
    • 考查BASE理论的三个组成部分。
    • 区分四大类NoSQL数据库的数据模型、特点和应用场景
    • 考查NewSQL的概念和目标。
  2. 案例分析题

    • 题目给出一个高并发、海量数据的业务场景(如“社交平台”、“物联网数据平台”、“电商网站”)。
    • 问题:请为该场景设计数据存储方案,并说明理由。
    • 答题套路
      1. 分析业务需求:数据量?并发量?一致性要求?数据模型?
      2. 技术选型与理由
        • 用户会话、热点数据缓存 -> Redis (键值)
        • 商品信息、文章内容、用户档案(结构灵活) -> MongoDB (文档)
        • 海量日志、传感器数据(写多读少,分析为主) -> HBase / Cassandra (列族)
        • 社交关系、好友推荐、路径规划 -> Neo4j (图)
        • 核心交易、账务系统(需要强ACID) -> 仍使用关系型数据库或NewSQL (如TiDB)
      3. 阐述权衡:根据CAP定理,说明你的选择在C、A、P之间是如何权衡的。
  3. 论文题

    • 可能围绕“论NoSQL技术在某某高并发系统中的应用”、“分布式系统数据一致性设计与实践”、“数据存储技术选型之道”等主题。
    • 写作时,可以详细论述:
      • 你为何要引入NoSQL(解决了RDBMS的什么痛点)。
      • 你如何根据不同的业务子场景,混合使用多种数据库(多模架构),并说明它们如何协同工作。
      • 你在保证最终一致性方面做了哪些设计(如通过消息队列异步同步、使用版本戳解决冲突等)。
      • 在数据迁移、应用改造过程中遇到的挑战和解决方案。

总结

对于软考架构师,掌握NoSQL的关键在于:

  • 理解理论驱动:深刻理解CAP定理BASE理论是进行技术选型的根本依据。
  • 精通分类与场景:清晰掌握四大类型NoSQL的特点和最佳应用场景,能够进行精准的技术选型
  • 具备权衡思维:明白在分布式系统中没有“银弹”,任何选择都是一致性、可用性、性能、扩展性之间的权衡。
  • 拥抱混合架构:现代系统架构往往是混合持久化的,即关系型、NoSQL、缓存等多种数据存储技术并存,架构师需要具备规划和集成这些技术的能力。
http://www.dtcms.com/a/427305.html

相关文章:

  • 钢铁厂设备健康监测系统:AIoT技术驱动的智慧运维革命​
  • Elasticsearch集群监控信息(亲测)
  • TARA (威胁分析与风险评估) 学习笔记
  • 网站集成微信登陆如何选择大良网站建设
  • 鸿蒙:使用Image组件展示相册图片或rawfile图片
  • ubuntu系统当前的时间和时区
  • 图解式部署:WSL2 中 Dify 本地化安装与访问故障排查指南
  • ABAP+新值过长,仅可以传输255个元素
  • 顺序队列与环形队列的基本概述及应用
  • 数组的三角和
  • 文创产品设计的目的和意义岳阳优化营商环境
  • Spring Boot 内置日志框架 Logback - 以及 lombok 介绍
  • 网站优化塔山双喜百度关键词快速排名方法
  • 第十二届全国社会媒体处理大会笔记
  • FFmpeg暂停、逐帧和音量
  • QT中的QTimer.singleShot()函数
  • TCP/IP 四层模型协作流程详解
  • windows显示驱动开发-调试间接显示驱动程序(一)
  • MySQL MVCC:通过 ReadView与 undolog版本链 分析读提交RC和可重复读RR的原理
  • STM32-USB_OTG_FS 与 USB_OTG_HS 的核心区别
  • 输入框内容粘贴时 nbsp; 字符净化问题
  • 网站建设要做哪些黑龙江牡丹江双鸭山伊春推广
  • 软考 系统架构设计师系列知识点之杂项集萃(163)
  • matlab cell 数据转换及记录
  • 涡度通量数据风浪区分析:涡度通量Footprint时空动态分析等析等
  • 【软考网工笔记】第五章(12)【补充】IP子网划分VLSM CIDR
  • 探秘最长连号序列:线性扫描算法与竞赛实战(洛谷P1420)
  • 网站建设计划方案网站内容管理系统(cms)
  • 做项目搭建网站 构建数据库asp影楼网站数据库用什么软件
  • 网站建立的优点如何确保网站安全