页面加载中
博客快捷键
按住 Shift 键查看可用快捷键
ShiftK
开启/关闭快捷键功能
ShiftA
打开/关闭中控台
ShiftD
深色/浅色显示模式
ShiftS
站内搜索
ShiftR
随机访问
ShiftH
返回首页
ShiftL
友链页面
ShiftP
关于本站
ShiftI
原版/本站右键菜单
松开 Shift 键或点击外部区域关闭
互动
最近评论
暂无评论
标签
寻找感兴趣的领域
暂无标签
    0
    文章
    0
    标签
    8
    分类
    10
    评论
    128
    功能
    深色模式
    标签
    JavaScript12TypeScript8React15Next.js6Vue10Node.js7CSS5前端20
    互动
    最近评论
    暂无评论
    标签
    寻找感兴趣的领域
    暂无标签
      0
      文章
      0
      标签
      8
      分类
      10
      评论
      128
      功能
      深色模式
      标签
      JavaScript12TypeScript8React15Next.js6Vue10Node.js7CSS5前端20
      随便逛逛
      博客分类
      文章标签
      复制地址
      深色模式
      AnHeYuAnHeYu
      Search⌘K
      博客
        暂无其他文档

        7、NoSQL数据库与数据仓库

        March 23, 20246 分钟 阅读3 次阅读

        一、知识点

        1. NoSQL数据库概述

        NoSQL(Not Only SQL)是指非关系型的数据库,用于解决传统关系数据库在大数据、高并发、灵活数据模型等场景下的局限性。

        NoSQL的四大分类:

        类型

        特点

        典型产品

        适用场景

        键值存储

        基于哈希表,key唯一,value无结构

        Redis, Memcached, DynamoDB

        缓存、会话管理、配置存储

        列族存储

        按列族存储,适合稀疏表,支持动态列

        HBase, Cassandra

        大数据分析、日志存储、时序数据

        文档存储

        存储JSON/BSON文档,支持嵌套结构

        MongoDB, CouchDB

        Web应用、内容管理、用户资料

        图数据库

        以节点、边、属性表示数据,高效处理关系

        Neo4j, JanusGraph

        社交网络、推荐系统、知识图谱

        NoSQL的特点(对比关系数据库):

        • 灵活的数据模型:无需预定义 schema,可动态添加字段。

        • 水平扩展:通过分片(sharding)可轻松扩展到成百上千台节点。

        • 高并发读写:牺牲强一致性(通常提供最终一致性),换取高吞吐量。

        • 无复杂关联:通常不支持多表连接,更适合单表查询。

        • BASE 理论:基本可用(Basically Available)、软状态(Soft state)、最终一致性(Eventually consistent),替代 ACID。

        2. 数据仓库概述

        数据仓库(Data Warehouse,DW)是面向主题、集成、非易失、时变的数据集合,用于支持管理决策。

        核心特征:

        • 面向主题:围绕业务主题(如销售、客户)组织数据,而非应用。

        • 集成:从多个异构数据源(关系数据库、日志文件等)抽取、清洗、转换后加载。

        • 非易失:数据一旦写入,通常不修改,只追加和查询。

        • 时变:保存历史数据,可追溯时间变化。

        数据仓库架构:

        • ETL(抽取、转换、加载) 进行清洗、转换,加载到数据仓库。

        • 数据存储:通常采用维度建模(星型模型、雪花模型)。

        • 元数据管理:记录数据来源、转换规则等。

        • 前端展示:报表、OLAP分析、数据挖掘。

        OLAP(联机分析处理):

        • 支持多维分析操作:上卷(roll-up)、下钻(drill-down)、切片(slice)、切块(dice)、旋转(pivot)。

        • 数据存储方式:MOLAP(多维数组)、ROLAP(关系表)、HOLAP(混合)。

        事实表与维度表:

        • 事实表:存储可度量的数值(如销售额、数量),包含指向维度表的外键。

        • 维度表:存储描述性属性(如时间、产品、客户),用于分组、筛选。

        3. NoSQL 与数据仓库的关系

        • 不同目的:NoSQL 主要应对 OLTP 的高并发、灵活数据模型;数据仓库主要服务于 OLAP 分析决策。

        • 可结合使用:将 NoSQL 中的数据通过 ETL 导入数据仓库进行分析;或使用数据仓库作为 NoSQL 的历史数据归档。


        二、具体事例

        事例1:NoSQL 选型(社交网络)

        某社交平台需要存储用户关系(谁关注谁)、用户动态(时间线)、点赞记录。

        • 用户关系:适合用图数据库(Neo4j),便于查询“朋友的朋友”等复杂关系。

        • 用户动态:适合用文档数据库(MongoDB),每条动态可包含文本、图片、位置等嵌套结构。

        • 点赞计数:适合用键值存储(Redis),实时读写高频。

        事例2:数据仓库维度建模(电商销售)

        事实表:销售事实(销售ID,日期维度ID,产品维度ID,客户维度ID,销售额,数量)

        维度表:

        • 日期维度(日期ID,年,季度,月,日)

        • 产品维度(产品ID,产品名称,类别,价格)

        • 客户维度(客户ID,姓名,城市,等级)

        典型查询:统计 2024 年第一季度每个产品类别的总销售额。

        sql

        SELECT p.类别, SUM(f.销售额)FROM 销售事实 fJOIN 日期维度 d ON f.日期维度ID = d.日期IDJOIN 产品维度 p ON f.产品维度ID = p.产品IDWHERE d.年 = 2024 AND d.季度 = 1GROUP BY p.类别;

        事例3:ETL 过程

        从业务数据库(MySQL)抽取订单数据 → 清洗(去除无效订单,统一日期格式) → 转换(计算总价,映射维度ID) → 加载到数据仓库的事实表。


        最后更新于 May 7, 2026
        On this page
        暂无目录