初识NOSQL

发布于:2025-09-03 ⋅ 阅读:(15) ⋅ 点赞:(0)

1. NOSQL简介

Oracle NoSQL 数据库简介

核心特性

  1. 横向可扩展的分布式存储

    • 专为键值对数据设计,支持大规模数据存储和高并发访问。
    • 通过增加硬件资源(如节点)实现性能线性扩展,满足吞吐量需求。
  2. 高性能与低延迟

    • 提供 低延迟高吞吐量 的数据读写能力。
    • 可预测的数据一致性(取决于存储配置),确保关键业务场景的可靠性。
  3. 高可用性(HA)

    • 设计为高可用架构,减少单点故障风险,支持自动故障转移和数据冗余。
  4. 灵活的持久性保证

    • 支持用户定义的读/写性能级别,提供可调整的持久性策略(如同步/异步写入)。

技术架构
  1. 底层存储引擎

    • 基于 Oracle Berkeley DB Java Edition,提供高效、可靠的键值存储能力。
  2. 数据模型

    • 键值对存储:数据以表或键值对形式存储,支持简单的 CRUD 操作(创建、读取、更新、删除)。
  3. 分布式架构

    • 数据分片(Sharding)和自动负载均衡,支持跨数据中心部署和动态扩展。

适用场景
  • 高吞吐量应用:如实时推荐系统、物联网(IoT)数据处理、在线广告投放等。
  • 低延迟需求:适用于需要快速响应的场景(如金融交易、实时分析)。
  • 云原生应用:支持弹性伸缩和分布式部署,适配云计算环境。
  • 混合架构:可部署在传统三层架构(Web 服务器、应用服务器、后端数据库)中,作为后端数据库或与关系型数据库协同工作。

部署与集成
  1. 安装位置

    • 推荐部署在应用服务器后方,或直接作为后端数据库使用。
  2. 驱动程序支持

    • 提供 Java 驱动程序(.jar 文件),通过网络请求与数据库交互。
    • 开发者可通过 Java API 实现数据操作(如 Put、Get、Delete)。
  3. 云服务支持

    • 通过 Oracle NoSQL Database Cloud Service 提供托管服务,简化集群管理、监控和扩展。

如需进一步了解 Oracle NoSQL 数据库的特定功能(如一致性配置、云服务部署细节),可参考官方文档或联系 Oracle 技术支持
oracle开发官方文档主要操作
oracle概念文档


2.关系型数据库与非关系数据库的区别


关系型数据库与**非关系型数据库(NoSQL)**的核心区别总结,涵盖数据模型、扩展性、事务支持、查询语言、适用场景等方面:

1. 核心特性对比

特性 关系型数据库(RDBMS) 非关系型数据库(NoSQL)
数据模型 二维表结构(行和列)组织数据,所有数据必须符合预定义的模式(Schema)。 采用灵活的数据模型,如键值对、文档、列族、图等,支持动态模式(Schema-less)或无模式设计。
数据一致性 遵循 ACID 原则(原子性、一致性、隔离性、持久性),保证强一致性。 通常遵循 BASE 原则(基本可用、软状态、最终一致性),优先保证高可用性和性能,允许短暂的不一致。
查询语言 使用 SQL(结构化查询语言),支持复杂查询(如 JOIN、子查询)。 通常使用特定 API 或类 SQL 语言,查询能力受限,但灵活性高(如 MongoDB 的 JSON 查询语法)。
扩展方式 垂直扩展(提升单机硬件性能),扩展性有限,难以应对海量数据。 水平扩展(通过添加节点实现分布式存储),天然支持大规模数据和高并发场景。
事务支持 支持完整的 ACID 事务,适合需要强一致性的业务(如金融交易)。 通常仅支持部分事务特性(如单文档原子操作),更适合最终一致性场景(如实时分析、缓存)。
适用场景 金融系统、ERP、CRM 等需要复杂事务和强一致性的场景。 社交媒体、物联网、实时分析等需要高可用性、高扩展性和灵活数据模型的场景。

2. 技术实现差异

2.1 存储引擎

  • 关系型数据库

    • 采用 B+树索引(如 InnoDB 的聚簇索引),优化复杂查询。
    • 严格遵循 WAL(Write-Ahead Logging) 机制,确保事务持久性。
  • 非关系型数据库

    • 文档数据库:使用 BSON/JSON 格式存储(如 MongoDB)
    • 键值数据库:内存哈希表 + 持久化方案(如 Redis)
    • 列族数据库:LSM 树结构(如 Cassandra)
    • 图数据库:原生图存储引擎(如 Neo4j)

2.2 分布式能力

  • 关系型数据库
    • 分布式支持较弱,需通过分库分表或集群(如 Oracle RAC)实现扩展,复杂度高。
  • 非关系型数据库
    • 天然支持分布式架构,通过 分片(Sharding)数据冗余 实现高可用性和负载均衡(如 Cassandra、MongoDB)。

3. 典型应用场景

关系型数据库
  • 金融系统:银行交易、账户余额更新,需强一致性。
  • 企业资源计划(ERP):涉及复杂的业务逻辑和事务处理。
  • 客户关系管理(CRM):管理结构化客户数据,需复杂查询。
非关系型数据库
  • 社交媒体:处理海量用户数据和高并发请求(如 Twitter 的用户关系存储)。
  • 物联网(IoT):存储传感器产生的非结构化日志数据(如时序数据库)。
  • 实时分析:快速处理和分析海量数据(如日志分析、推荐系统)。

4. 优缺点对比

类别 关系型数据库 非关系型数据库
优点 - 数据一致性高
- 支持复杂查询
- 成熟的生态系统
- 权限控制完善
- 高可扩展性
- 灵活数据模型
- 高性能读写
- 低成本(开源方案多)
缺点 - 扩展性受限
- 模式修改成本高
- 海量数据性能下降
- 高并发场景瓶颈
- 数据一致性较弱
- 查询能力受限
- 无标准化语言
- 不适合复杂事务处理

5. 如何选择?

  • 选择关系型数据库

    • 需要强一致性(如金融交易)。
    • 数据结构固定且复杂(如 ERP 系统)。
    • 需要复杂查询和事务支持。
  • 选择非关系型数据库

    • 数据量大且增长迅速(如 IoT 日志)。
    • 需要高可用性和水平扩展(如社交网络)。
    • 数据结构灵活多变(如用户配置存储)。

  • 关系型数据库 是结构化数据的“传统王者”,适合需要强一致性和复杂事务的场景。
  • 非关系型数据库 是大数据时代的“灵活新秀”,擅长处理海量、非结构化数据和高并发场景。
  • 混合使用:实际中,两者常结合使用(如 MySQL + Redis 缓存),发挥各自优势。

3.NOSQL理论基础

1. CAP 理论

CAP 定理(Consistency, Availability, Partition Tolerance)是分布式系统设计的核心理论,由 Eric Brewer 提出,具体定义如下:

特性 定义 典型场景
一致性(C) 所有节点在同一时间看到相同的数据(强一致性)。 银行转账、金融交易等需要实时数据同步的场景。
可用性(A) 每个请求都能收到非错误的响应(高可用性)。 社交媒体、电商网站等需要持续服务的场景。
分区容错性(P) 网络分区(节点间通信中断)时,系统仍能继续运行。 云原生架构、跨数据中心部署等必然面临网络分区的场景。

CAP 的核心矛盾

  • CAP 三者不可兼得:在分布式系统中,必须在一致性(C)和可用性(A)之间做出权衡,因为分区容错性(P)是分布式系统的必然要求(无法避免网络故障)。
  • 典型选择
    • CP 系统:优先保证一致性和分区容错性,牺牲可用性(如 MongoDB、HBase)。
    • AP 系统:优先保证可用性和分区容错性,牺牲一致性(如 Cassandra、DynamoDB)。

实际案例

  1. CP 系统(牺牲可用性,保证一致性)

    • 场景:银行账户余额更新。
    • 行为:当网络分区发生时,系统会阻止写操作,直到分区恢复,确保所有节点的数据一致。
    • 缺点:用户可能无法完成交易,但数据不会出错。
  2. AP 系统(牺牲一致性,保证可用性)

    • 场景:电商秒杀活动。
    • 行为:网络分区时,允许用户继续下单,但可能出现短暂的数据不一致(如库存超卖)。
    • 缺点:需通过异步补偿(如事后对账)解决不一致问题。

2. BASE 理论

BASE 理论(Basically Available, Soft State, Eventually Consistent)是 NoSQL 数据库对 CAP 理论的灵活实践,强调 最终一致性高可用性,适用于大规模分布式场景。

特性 定义 典型场景
基本可用(BA) 在网络故障或负载激增时,允许损失部分功能(如降级、限流),但核心功能可用。 双 11 促销期间,购物车服务降级,但下单功能保持可用。
软状态(SS) 允许系统存在中间状态(如数据延迟同步),但最终会达成一致。 微信充话费时,余额扣减后,话费到账可能存在短暂延迟。
最终一致性(EC) 系统在一段时间后自动修复数据不一致,达到最终一致状态。 分布式数据库通过异步复制和冲突解决机制实现最终一致性。
BASE 的核心思想
  • 容忍短暂不一致:通过异步处理和延迟同步,降低对实时一致性的依赖。
  • 优先可用性:在分区发生时,系统仍能响应请求,后续通过补偿机制修复数据。
实际案例
  1. 电商平台的“基本可用”

    • 场景:双 11 期间,系统限制非核心功能(如商品评价、收藏夹),但允许用户下单。
    • 实现:通过限流、服务降级等手段,确保核心交易链路的可用性。
  2. 微信充话费的“软状态”

    • 场景:用户提交充值后,系统先返回“处理中”,等待异步同步完成后通知“充值成功”。
    • 实现:允许余额和话费系统存在短暂不一致,最终通过后台任务同步数据。
  3. NoSQL 数据库的“最终一致性”

    • 场景:Cassandra 中的读写操作允许配置一致性级别(如 QUORUM)。
    • 实现:在分区期间,允许部分节点响应读请求,后续通过反熵(Anti-Entropy)机制修复数据。

以下是 BASE 理论中最终一致性的五种主要变体 的详细介绍,以表格形式呈现:

变体名称 定义 实例场景
因果一致性 若进程A更新数据后通知进程B,则进程B后续访问该数据时能获取到A的最新值;与A无因果关系的进程C则不受此限制。 社交平台动态更新:用户A更新了个人资料(如头像),用户B在看到A的动态后,能立即看到新头像;但用户C未关注A,则可能暂时看到旧头像,直到系统同步完成。
读己之所写 用户更新数据后,自身始终能读取到最新值(不会看到旧数据),但其他用户可能暂时看到旧数据。 电商用户信息修改:用户修改了收货地址后,立即在订单页面查看,系统返回新地址;但其他用户(如客服)可能暂时看到旧地址,后续自动同步。
会话一致性 在同一用户会话中,数据读取保持一致(如连续操作均看到最新数据),但不同会话间可能不一致。 购物车操作:用户A在浏览器会话中修改了购物车商品数量,后续页面均显示最新数量;若用户A新开浏览器会话,可能看到旧数量,需重新登录同步。
单调读 用户多次读取数据时,看到的版本不会倒退(即数据版本单调递增,不会从新版本回到旧版本)。 新闻阅读:用户首次读取新闻为版本1,刷新后看到版本2,再次刷新不会返回版本1,确保阅读体验连贯。
单调写 用户对同一数据的写操作顺序在所有副本中保持一致(后续写操作不会覆盖之前的操作,且按顺序执行)。 订单提交:用户A先提交订单1,再提交订单2,系统确保订单2的版本号高于订单1;即使网络分区,订单2不会覆盖订单1,最终按顺序同步。

关键说明

  1. 因果一致性:强调事件间的因果关系,是其他变体的基础(如读己之所写可视为因果一致性的特例)。
  2. 读己之所写:保障用户自身操作的体验,避免“修改后看不到新数据”的问题。
  3. 会话一致性:聚焦单个用户会话,适合需要会话状态的场景(如Web应用)。
  4. 单调读/写:确保数据操作的顺序性,避免数据混乱(如消息顺序、订单状态)。
  5. 共同目标:所有变体均通过短暂不一致+最终同步,实现高可用性和性能,符合 BASE 理论的核心思想。

3. CAP 与 BASE 的对比

特性 CAP 理论 BASE 理论
核心目标 强调分布式系统的三难抉择(C、A、P 无法同时满足)。 强调高可用性和最终一致性,接受短暂不一致。
适用场景 金融交易、强一致性要求高的场景(CP 系统);高并发、弱一致性要求的场景(AP 系统)。 大数据、云原生、高可用性要求的场景(如社交网络、物联网)。
典型技术 MySQL(CA 系统)、MongoDB(CP 系统)、Cassandra(AP 系统)。 Cassandra、DynamoDB、Redis(支持最终一致性模式)。
权衡策略 CP vs AP:在分区时选择牺牲可用性或一致性。 BA + EC:通过降级和服务限制保证可用性,最终达成一致性。

4. NoSQL 数据库的 CAP/BASE 实践

不同 NoSQL 数据库根据 CAP/BASE 理论设计了不同的权衡策略:

1. CP 系统(强一致性优先)
  • MongoDB

    • 一致性:主从复制中,写操作默认同步到大多数副本(W=majority)。
    • 可用性:在分区期间,主节点不可用时,选举新主节点(Primary)以恢复服务。
    • 适用场景:需要强一致性的业务(如订单管理、库存系统)。
  • HBase

    • 一致性:基于 HDFS 的强一致性写入。
    • 可用性:RegionServer 故障时,通过 Region 重新分配恢复服务。
    • 适用场景:大数据分析、实时查询。
2. AP 系统(高可用性优先)
  • Cassandra

    • 一致性:允许配置一致性级别(如 ONE、QUORUM、ALL)。
    • 可用性:分区期间,任何节点均可响应读写请求。
    • 适用场景:高写入吞吐量的场景(如日志存储、物联网数据)。
  • DynamoDB

    • 一致性:支持最终一致性读和强一致性读(通过 ReadAfterWrite 参数)。
    • 可用性:跨区域部署,自动故障转移。
    • 适用场景:全球分布的高可用服务(如 AWS 服务)。
3. 混合策略(CA 系统)
  • 传统 RDBMS(如 MySQL、PostgreSQL)
    • 一致性:ACID 事务保障强一致性。
    • 可用性:单点故障时服务不可用(除非启用主从复制)。
    • 适用场景:本地部署的高一致性业务(如财务系统)。

5. 如何选择 CAP/BASE 策略

业务需求 推荐策略 典型数据库
强一致性 CP 系统(牺牲可用性) MongoDB、HBase、MySQL(主从强同步)
高可用性 AP 系统(牺牲一致性) Cassandra、DynamoDB、Redis(最终一致性模式)
混合需求 根据场景动态调整(如 MySQL + Redis 缓存) MySQL + Redis、MongoDB + Kafka 异步同步
大规模分布式场景 AP 系统 + 最终一致性机制 Cassandra、Couchbase、Amazon DynamoDB

  • CAP 理论 是分布式系统设计的基石,决定了系统在一致性、可用性和分区容错性之间的权衡。
  • BASE 理论 是 CAP 的灵活实践,通过 基本可用最终一致性 适应大规模分布式场景。
  • NoSQL 数据库 根据业务需求选择 CP 或 AP 策略,例如:
    • CP 系统:适合金融、强一致性场景。
    • AP 系统:适合高并发、弱一致性场景。
  • 实际应用 中,通常结合 CAP 和 BASE 的优势,通过分层架构(如 MySQL + Redis)或混合部署(如 MongoDB + Kafka)实现最佳平衡。

网站公告

今日签到

点亮在社区的每一天
去签到