AITC Wiki

大数据的存储与处理

Storage and Treatment of Big Data

大数据的存储与处理

English version: Storage and Treatment of Big Data

本讲涵盖大数据系统的两大支柱:数据如何存储(关系型与非关系型数据库)以及计算资源如何交付(云部署与服务模式)。

讲次概览

本讲在原始大数据技术与实际落地之间建立桥梁,重点讨论:

  1. 数据库范式 — 关系型(SQL)与非关系型(NoSQL)的区别及适用场景。
  2. 云计算 — 部署模式(公有云、私有云、混合云)与服务模式(SaaS、PaaS、IaaS)。

关系型数据库(SQL)

关系型数据库将数据组织为(行与列),并通过外键定义表之间的关系。它使用 SQL(结构化查询语言)进行查询与操作。

核心特征

  • 结构化模式:数据必须符合预定义的表结构与类型。
  • ACID 保证:确保原子性、一致性、隔离性和持久性。
  • 强关联性:表之间通过主键/外键建立关系。

常见系统

系统典型应用场景
MySQLWeb 应用、LAMP 技术栈
PostgreSQL复杂查询、地理空间数据
Microsoft SQL Server企业级 Windows 环境
Oracle大规模企业系统
Microsoft Access小型桌面应用

何时使用

  • 数据完整性和复杂事务至关重要时。
  • 实体之间的关系明确且稳定时。
  • 需要强大的查询能力(JOIN、聚合、窗口函数)时。

Warning

当数据量或写入吞吐量超出单台服务器承载能力时,RDBMS 的水平扩展会变得困难。这正是 NoSQL 的用武之地。


非关系型数据库(NoSQL)

NoSQL 数据库旨在解决传统 RDBMS 在处理非结构化半结构化大数据时的可扩展性与性能瓶颈。它们以牺牲部分 ACID 保证为代价,换取水平扩展能力和模式灵活性。

四大类型

类型数据模型最适用场景典型产品
键值存储键-值对字典缓存、会话管理、简单查询Redis、DynamoDB、Riak、Memcached
列式存储按列而非按行存储数据分析查询、OLAP、批量快速读取HBase、Cassandra、Bigtable
文档存储灵活的文档(JSON、XML、BSON)内容管理、用户画像、产品目录MongoDB、CouchDB、DocumentDB
图数据库节点、边、属性社交网络、推荐引擎、欺诈检测Neo4j、InfiniteGraph、OrientDB

键值存储(Key-Value Store)

最简单的 NoSQL 模型。每个数据项以属性名(键)和对应值的形式存储。

# 概念示例
user_session = {
    "session_001": {"user_id": 42, "login_time": "2025-04-20T09:00:00Z"},
    "session_002": {"user_id": 7,  "login_time": "2025-04-20T09:15:00Z"}
}

Info

Amazon DynamoDB 是 AWS 推出的托管键值与文档数据库。Redis 则被广泛用于内存缓存场景。

列式存储(Column-Store)

与面向行的数据库(OLTP)不同,列式存储将数据保存在列的集合中(OLAP)。这显著提升了分析查询性能,因为系统只需读取与查询相关的列。

示例:一个包含 1 亿行、100 列的数据库(共 100 GB)。

  • 查询:男性的平均年龄是多少?
  • 行式数据库需读取:100 GB
  • 列式数据库仅需读取 agegender 两列:2 GB
对比维度行式存储(OLTP)列式存储(OLAP)
存储方式整行数据存放在同一个磁盘块每列数据分别存放在不同块
最适用事务处理、频繁更新分析统计、批量聚合
典型读取模式查询少量行、多列查询大量行、少量列
代表产品MySQL、PostgreSQL、OracleHBase、Cassandra、ClickHouse

文档数据库(Document Database)

以灵活的文档(通常为 JSON)代替固定的行来存储数据。一组文档构成一个集合

{
  "_id": "user_001",
  "name": "Tom",
  "age": 28,
  "skills": ["Python", "SQL", "Cloud"],
  "address": {"city": "Suzhou", "zip": "215123"}
}

Info

MongoDB 使用 BSON(Binary JSON)存储文档,相比纯 JSON 支持更丰富的数据类型。

图数据库(Graph Database)

节点(实体)、(关系)和属性(特征)来表示数据,特别适合深度关系遍历。

  • 节点:对象或实例(相当于关系型数据库中的一行)。
  • :具有方向和类型的关系。
  • 属性:附加在节点或边之上的信息。

应用场景:在社交网络中,通过遍历边来查找”朋友的朋友”,避免昂贵的 JOIN 操作。


云计算

云计算通过将计算资源靠近数据、采用弹性资源供给(根据需求自动扩缩容),彻底改变了企业存储、访问和处理数据的方式。

部署模式

模式所有权访问方式最适用场景
公有云第三方厂商(AWS、Azure、GCP)互联网,按量付费初创企业、负载波动大、成本敏感
私有云单一组织(自建或托管)内部网络强监管行业、需要完全数据控制权
混合云公有云 + 私有云组合混合访问突发流量、敏感数据留本地、通用负载上云

服务模式

云服务通常被可视化为三层栈:越往上,厂商托管的内容越多。

模式用户管理厂商管理典型示例
SaaS无需管理(直接使用应用)全部:应用、数据、运行时、中间件、操作系统、网络、存储Gmail、Dropbox、Salesforce、Google Workspace
PaaS应用、数据运行时、中间件、操作系统、网络、存储Heroku、Google App Engine、AWS Elastic Beanstalk
IaaS操作系统、中间件、运行时、应用、数据网络、存储、虚拟化、服务器AWS EC2、Azure VMs、DigitalOcean、Linode

SaaS — 软件即服务

通过互联网交付完整应用,通常以订阅或按量付费形式提供。

  • 优势:零安装、集中更新、任何设备可访问。
  • 局限:厂商锁定、定制化受限、数据存放在第三方服务器。

PaaS — 平台即服务

提供托管开发平台,使团队无需维护底层基础设施即可构建和部署应用。

  • 优势:缩短上市时间、自动扩缩容、降低运维负担。
  • 局限:运行时约束、数据安全顾虑、可能受限于厂商专有 API。

IaaS — 基础设施即服务

按需交付原始计算资源。最灵活,但也需要最多管理。

  • 优势:对全栈的完全控制、高度可扩展、用多少付多少。
  • 局限:需要内部 DevOps 能力、多租户安全风险、用户需自行维护操作系统补丁。

如何选择?

需要开箱即用的应用?          → SaaS
需要部署代码但不想管操作系统?  → PaaS
需要对服务器和操作系统完全控制? → IaaS

要点总结

主题核心要点
关系型数据库结构化、ACID、SQL、擅长事务处理
NoSQL可扩展、模式灵活、针对特定数据模型优化(键值、列式、文档、图)
云部署模式公有云(成本)、私有云(控制)、混合云(兼顾)
云服务模式SaaS(用)、PaaS(建)、IaaS(控)

相关概念

来源资料