标签搜索

nosql知识点

wehg489
2026-01-04 / 0 评论 / 3 阅读 / 正在检测是否收录...

NoSQL是考试的重点和热点,通常会与传统的SQL关系型数据库进行对比考察。

一、NoSQL概述与核心理念

  1. 定义:Not Only SQL,泛指非关系型的、分布式的数据库系统。不保证ACID特性

,旨在解决大规模数据集合、多数据种类带来的挑战,尤其是大数据应用难题。

  1. 产生背景:
    · 大数据时代的3V挑战:Volume(海量)、Velocity(高速)、Variety(多样)。
    · 关系型数据库的局限:在高并发、海量数据场景下,扩展性差(难以水平扩展)、读写性能瓶颈、僵化的表结构难以应对半结构/非结构化数据。
  2. 核心特点(与RDBMS对比):
    · 模式灵活:无需预定义固定表结构,支持动态添加字段(Schema-less)。
    · 高可扩展性:易于通过增加节点实现水平扩展。
    · 高性能:针对特定数据模型和访问模式优化,读写速度快。
    · 高可用性:通过分布式、副本机制保障。
    · 弱一致性(最终一致性):遵循BASE理论,而非ACID。
    · BASE:Basically Available(基本可用)、Soft state(软状态)、Eventually consistent(最终一致)。
  3. CAP定理(核心考点!):
    · 在分布式系统中,一致性(Consistency)、可用性(Availability) 和 分区容忍性(Partition Tolerance) 三者不可兼得,最多只能同时满足其中两项。
    · CP系统:保证一致性和分区容忍性(如:HBase, MongoDB的早期版本)。在发生分区时,可能牺牲可用性。
    · AP系统:保证可用性和分区容忍性(如:Cassandra, DynamoDB)。在发生分区时,可能返回旧数据,牺牲强一致性。
    · CA系统:单点关系型数据库,难以在分布式环境中实现。

二、NoSQL主要数据模型与代表产品(重点!)

这是分类考察的核心,必须掌握每种类型的特点、适用场景和典型产品。

数据模型 核心概念 典型产品 优点 适用场景 不适用场景
键值数据库 简单的“键-值”对存储,值可以是任意数据块。 Redis(内存型)、Memcached、DynamoDB 性能极高,结构简单,扩展容易。 会话存储、缓存、排行榜、实时配置。 复杂查询、多键事务、关系数据。
文档数据库 以文档(如JSON/BSON)为基本单位,文档内可嵌套。 MongoDB、CouchDB 模式灵活,数据结构自然,支持复杂查询(二级索引)。 内容管理、用户档案、日志数据、电商产品目录。 需要多文档事务或复杂Join的场景。
列族数据库 按“列族”存储数据,适合存储半结构化的海量数据。 HBase、Cassandra 可扩展性极好,适合海量数据存储和批量读取。 大数据分析(如Hadoop生态)、日志聚合、时间序列数据。 需要复杂事务或实时强一致性读写的场景。
图数据库 以“图”结构存储实体(节点) 和关系(边)。 Neo4j、TigerGraph 高效处理复杂关系,路径查询性能远超关系型数据库。 社交网络、推荐引擎、欺诈检测、知识图谱。 大规模数据但关系简单的场景,或需要频繁全表扫描的场景。

三、关键技术概念

  1. 分片:将数据水平拆分到多个物理节点上的技术,是实现水平扩展的基础。
  2. 复制:将数据副本存储在多台服务器上,以提高可用性和读性能。
    · 主从复制:写主,读可从。
    · 多主/对等复制:任何节点都可写,更复杂。
  3. 一致性协议:
    · 最终一致性:数据副本经过一段时间后最终达成一致。
    · 读写一致性:写后读保证读到最新数据。
    · 仲裁机制:如R + W > N(N为副本总数,R为读副本数,W为写副本数)来平衡一致性与可用性。
  4. 索引:如MongoDB的B树索引、Redis的Sorted Set等,用于加速查询。

四、应用场景与选择原则

· 何时选择NoSQL?

  1. 数据量巨大且增长迅速,需要水平扩展。
  2. 数据结构不固定,变化频繁。
  3. 应用对高性能、高并发读写有严格要求。
  4. 数据模型简单(KV)或高度关联(图),关系型数据库不擅长。
  5. 业务可以接受最终一致性。

· 何时仍选择关系型数据库?

  1. 需要复杂的事务(如银行转账)。
  2. 数据结构稳定,业务逻辑基于严格的实体关系。
  3. 需要复杂的多表关联查询和报告。
  4. 数据一致性是首要要求。

五、挑战与趋势

  1. 挑战:
    · 缺乏统一的查询语言(SQL是标准)。
    · 事务支持相对较弱(虽然MongoDB等已支持多文档事务)。
    · 技术生态和工具链不如关系型数据库成熟。
    · 对开发人员的架构设计能力要求更高。
  2. 趋势:
    · 多模数据库:一个数据库支持多种数据模型(如文档+图)。
    · NewSQL:尝试兼具NoSQL的扩展性和SQL的ACID特性(如:Google Spanner, TiDB)。
    · 云原生数据库:与云计算深度集成,按需伸缩(如:AWS DynamoDB, Azure Cosmos DB)。

备考建议

  1. 重点掌握:CAP定理、四种数据模型的对比(用表格形式记忆)、典型产品的归类与应用场景。
  2. 理解区别:深刻理解NoSQL与SQL在扩展方式(水平 vs 垂直)、一致性模型(BASE vs ACID)、模式(灵活 vs 固定)上的根本区别。
  3. 关注真题:多做历年真题中关于NoSQL的选择题和案例分析题,熟悉出题角度。
  4. 结合实际:将知识点与常见的互联网应用(如电商、社交、日志系统)联系起来,理解技术选型的逻辑。
0

评论 (0)

取消
歌曲封面
0:00