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

软考高级架构师-6.5-NoSQL数据库-超详细讲解+精简总结

6.5-  NoSQL数据库 - 特点、分类、体系框架

总结:

1、概念: NoSQL泛指非关系型的数据库,主要为了满足大数据、分布式系统和动态数据模型等现代应用场景的需求。
2、特点:易扩展性、高性能、灵活的数据模型、高可用性
3、分类:列式存储数据库、键值对存储数据库(Redis)、文档型数据库(MongoDB)、图数据库
4、体系框架:数据持久层(内存、硬盘)、数据分布层(动态部署)、数据逻辑层、接口层。

一、特点

1. 易扩展性(Scalability)

        NoSQL支持 水平扩展,通过添加服务器提升容量和性能,而非依赖单一服务器。其 分布式架构 能在多个节点间分散存储和计算,适合大规模数据处理。

示例:Cassandra (一个分布式列式数据库)在社交平台上存储用户帖子,随着用户增长,自动将数据分布到多个服务器,确保快速访问。

2. 高性能(High Performance)

        NoSQL数据库通过简化模型和去除复杂的关系操作,通常在大数据场景下提供更高的读写性能。例如,Redis基于内存工作,读写速度极快,适合缓存和实时处理任务。

举例:Redis 是一个基于内存的键值对存储数据库,在线游戏中,Redis可以用来存储玩家的排行榜数据,由于其高性能,排行榜的更新和查询可以在毫秒级完成,确保玩家实时看到排名变化。

3. 灵活的数据模型

        无固定表结构:数据结构不固定,可以灵活变化,且可以随意添加修改字段,适合处理快速变化的业务需求。

4. 高可用性和容错性

        NoSQL通过 自动分片和数据复制 实现高可用性,即使某个节点故障,数据可从其他节点恢复,确保系统持续运行。其 分布式架构 提供了强大的容灾恢复能力,特别是跨数据中心的多副本策略。

示例:Couchbase支持数据复制和自动故障恢复。当节点故障时,它会自动切换到其他节点,确保广告系统等应用不中断。

二、分类

     根据数据存储结构的不同,NoSQL数据库大致可以分为以下四类

NoSQL类型数据结构特点示例产品
列式存储数据库列(列族)存储数据按列存储,适合海量分布式数据,支持快速查询和大规模数据分析Cassandra, HBase, Scylla
键值存储数据库键-值对使用哈希表存储,读写速度快,适合简单数据存储;不擅长复杂查询Redis, DynamoDB, Riak, Voldemort
文档型数据库JSON/BSON等文档格式存储半结构化数据,支持嵌套结构,适合处理复杂的数据,如网页和内容管理系统MongoDB, CouchDB, SequoiaDB
图数据库节点-边模型通过图结构存储和管理数据,擅长处理数据关系,适合社交网络、推荐系统等场景Neo4j, ArangoDB, JanusGraph

1、列式存储数据库

  • 特点:数据按列存储,而不是按行存储。适合处理海量分布式数据。键指向多个列,列由列家族组织。
  • 应用场景:高效处理大规模数据的查询,特别是在分布式环境下。
  • 代表产品:Cassandra、HBase、Riak。
用户ID  列:        1, 2, 3, 4
姓名  列:          Alice, Bob, Charlie, Diana
年龄  列:          25, 30, 22, 28

2、键值对存储数据库

  • 特点:通过哈希表存储键值对,键指向一个特定数据。结构简单,易于部署,但在只对部分值查询时效率较低。
  • 应用场景:缓存、会话管理、用户偏好存储等场景。
  • 代表产品:Tokyo Cabinet/Tyrant、Redis、Voldemort、Oracle BDB。
"session1": {"user": "Alice", "cart": ["book", "pen"], "total": 35.0}
"session2": {"user": "Bob", "cart": ["laptop", "mouse"], "total": 950.0}

3、文档型数据库

  • 特点基于键值存储,但允许存储更复杂的嵌套数据,如JSON。适合处理半结构化数据。
  • 应用场景:复杂数据查询与管理,如网页内容存储、内容管理系统等。
  • 代表产品:CouchDB、MongoDB、SequoiaDB。
{"user_id": "1","name": "Alice",
},
{"user_id": "2","address": {"city": "San Francisco"}
}

4、图数据库

  • 特点:采用图结构存储数据,能够有效处理节点及其之间的复杂关系。通常用于建模社交网络、生物信息网络等需要复杂关系表示的数据。
  • 应用场景:社交网络、推荐系统、路径优化等。
  • 代表产品:Neo4J、InfoGrid、Infinite Graph。

三、体系框架

         NoSQL数据库的整体框架分为4层: 数据持久层 数据分布层 数据逻辑模型层 接口层 ,它们共同协作,提供灵活的存储和访问方式。各层次功能如下:
  1. 数据持久层:定义数据的存储方式,有基于内存、硬盘、内存+硬盘结合、可插拔存储形式。

    • 基于内存:速度最快,但易丢失数据。
    • 基于硬盘:保存久但速度较慢。
    • 内存+硬盘结合:兼具速度和数据安全。
    • 可插拔:提供灵活的存取机制。
  2. 数据分布层:定义数据的分布方式,主要支持:

    • CAP模型:实现水平扩展。
    • 多数据中心:支持跨数据中心的平稳运行。
    • 动态部署:可在运行时动态添加或删除节点。
  3. 数据逻辑层:描述数据的逻辑表现形式,抽象数据模型。

  4. 接口层:为应用提供多种接口,支持Rest、Thrift、Map/Reduce、Get/Put、特定语言API等,使数据调用更加灵活方便。

这种分层架构提供了极大的灵活性,不同NoSQL数据库可以在各层面支持多种特性。

四、适用场景

NoSQL 数据库在以下这几种情况比较适用:
● 数据模型比较简单;
● 需要灵活性更强的 IT 系统;
● 对数据库性能要求较高;
● 不需要高度的数据一致性;
对于给定 key, 比较容易映射复杂值的环境

http://www.mrgr.cn/news/57320.html

相关文章:

  • Python 应用可观测重磅上线:解决 LLM 应用落地的“最后一公里”问题
  • 航空航天学院静变电源,机库直线加电电源装置供飞机通电启动
  • Linux 局域网中使用NTP配置时间服务
  • Java 泛型 Lambda 表达式
  • FileLink内外网文件交换——致力企业高效安全文件共享
  • conda 容器学习笔记之一 -- 基础环境配置
  • arp代答观察
  • 驱动开发系列23 - tasklet用法介绍
  • 如何将logism电路转为verilog(一)
  • 【建议收藏】大数据Flink入门专栏-v1.0,配套B站视频教程1小时速通
  • 【MyBatis】MyBatis-config标签详解
  • [COCI2015-2016#7] Prosti
  • 正则中的字符集
  • LeetCode 110. 平衡二叉树
  • 滑动窗口与TCP的缓冲区(buff)的关系
  • 四向车西门子PLC1200脉冲控制伺服与总线型控制方式思考
  • 【排序】快排思想以及例子
  • JavaScript 第30章:综合项目
  • “摄像机”跟随及攻击抖动实现
  • Linux基础IO
  • Android Handler(Looper.getMainLooper()),Kotlin
  • priority_queue (优先级队列的使用和模拟实现)
  • K折交叉验证代码实现——详细注释版
  • IPC 信号-Signal Linux环境
  • 栈的顺序存储总览
  • 关于风险系统解读最全最专业文章:一篇文章讲透风险,跨学科搞懂风险游戏规则,风险信任风险主观性客观性风险本质人格特质与风险态度技术风险系统风险社会新产品风险