数据存储
核心原理与架构设计
存储层的重要性与核心挑战
存储层是大数据系统的基础与性能瓶颈所在,其设计直接决定系统能否支撑 PB 级数据处理。设计的最大挑战是"容量-性能-成本的不可能三角":
- **追求容量** → 成本上升
- **追求性能** → 容量受限
- **控制成本** → 性能或容量受影响
因此,设计需兼顾技术前瞻性,避免未来高成本的架构重构。
存储抽象
数据仓库
数据湖
一个集中式存储库,允许以任意规模存储所有结构化和非结构化数据。数据湖侧重于ODS的层管理,由于数据湖没有固定的结构,可以使用数据湖来存储大量的原始数据。通过一个数据湖中间层以支持ODS层之后不同方式的使用或处理
常见的实现形式为表格式,只负责依照某种格式存储到存储系统中,再由独立的查询引擎实现读取数据查询
湖仓一体
业界主流有两种做法:
- 将数据仓库构建在数据湖之上
- 数据仓库与数据湖独立,二者通过消息通道进行数据同步
数据平台
提供了可互操作的工具的生态系统,与核心数据存储层紧密结合。
数据湖可以看作是一种开放的数据平台
存储系统
数据库
分布式存储
文件存储
- 本地磁盘
- NAS
- 云文件系统
块存储
- RAID
- SAN
- 云虚拟块存储
- VPS本地实例卷
对象存储
核心特征
- 键值存储:对象存储使用键值对来存储数据对象。
- 不可变性:一旦写入,对象变为不可更改,要修改数据必须重写整个对象。
- 无随机写入或追加操作:对象不支持随机写入或追加操作,只能作为字节流一次性写入。
- 范围请求:支持通过范围请求进行随机读取。
- 无服务器:作为"无服务器"服务,工程师不需要管理底层服务器集群或磁盘。
- 并行流写入和读取:支持在多个磁盘上进行高性能的并行流写入和读取。
- 跨可用区存储:数据通常保存在多个可用区,提高数据的耐用性和可用性。
- 可扩展存储空间:存储空间高度可扩展,几乎无限制。
主要优点
- 简化管理:无需管理底层硬件,工程师可以直接管理和使用存储服务。
- 高可用性和耐用性:数据保存在多个可用区,降低数据丢失的风险。
- 弹性扩展:存储和处理能力可以根据需求灵活扩展,适应大流量和并行处理需求。
- 成本效益:按需付费,避免了提前为硬件做计划的成本,对预算有限的小型组织尤为有利。
- 分离计算和存储:允许使用短暂的计算集群处理数据,进一步优化资源利用。
- 大数据支持:适用于处理大数据,支持大规模并行处理和存储。
- 无限存储:存储空间几乎无限,工程师可以快速存储大量数据,不受物理硬件限制。
- 数据持久性:数据写入后不可更改,确保数据的持久性和完整性。
分布式文件系统
HDFS(Hadoop分布式文件系统)
HDFS是为大数据批处理场景设计的分布式文件系统,特点包括:
- 支持PB级批量处理、顺序写入、扩展性强
- 采用主从架构,NameNode管理元数据,DataNode存储数据块
- 不适合小文件存储(小文件会占用大量NameNode内存)和低延迟访问
- 常用于离线分析、数据湖底层存储
NoSQL存储
主要类型与特点
- **HBase**:基于HDFS的列式存储,支持高并发读写和毫秒级查询
- **MongoDB**:文档数据库,支持半结构化数据和复杂查询
- **Cassandra**:分布式列式存储,具有高可用性和线性扩展能力
- **适用场景**:实时计算、日志存储、用户特征存储等
列式分析数据库
主要特点
- 查询优化、压缩率高、支持并行分析
- 针对OLAP场景优化,支持复杂聚合查询
- 代表产品:ClickHouse、Doris、Kudu等
- 常用于BI分析、指标计算、数据仓库查询层
流式存储
像Apache Kafka这样的分布式、可扩展的流框架现在允许极长的流数据保留。Kafka通过将旧的、不经常访问的消息推送到对象存储中来支持无限期的数据保留
区块链
存储设计的六大考量
1. 可扩展性与成本弹性
架构应支持线性扩容,避免迁移与重构。扩容应为低成本操作,可利用公有云弹性资源。
2. 多样化数据类型支持
- **结构化数据**:列式存储(Parquet、ORC、Kudu)
- **半结构化数据**:文档数据库(MongoDB)、数据湖
- **非结构化数据**:对象存储或分布式文件系统
3. 分层存储策略
数据按访问频率分为:热、温、冷、归档。各层采用不同技术与成本结构,实现总体最优。
4. 数据生命周期管理
自动迁移与清理过期数据,冷数据采用高压缩、低成本存储。
5. 读写模式优化
- **批处理场景**:列式存储 + 分区分桶 + 向量化计算
- **流式场景**:写优化系统(HBase、Kafka、LSM-Tree)
- **交互式查询**:内存计算 + 物化视图 + 预计算
6. 成本与可运维性控制
成本由硬件、软件、运维三部分构成。运维复杂度(如扩容、迁移、故障恢复)是隐性成本的主要来源。安全合规设计需从第一天考虑(加密、权限、审计等)。
主流存储方案对比
| 类型 | 代表技术 | 特点 | 适用场景 |
|---|---|---|---|
| 分布式文件系统 | HDFS | 支持PB级批量处理、顺序写入、扩展性强;小文件性能差 | 离线分析、数据湖底层 |
| NoSQL存储 | HBase、MongoDB、Cassandra | 高并发写入、实时查询、支持半结构化数据 | 实时计算、日志、特征存储 |
| 列式分析数据库 | ClickHouse、Doris、Kudu | 查询优化、压缩率高、支持并行分析 | OLAP、BI、指标分析 |
| 对象存储 | OSS、S3 | 弹性扩展、低成本、支持多数据类型 | 冷数据、归档、数据湖核心 |
设计思想与趋势
数据目录
一个集中存储元数据的平台,用于管理和查询整个组织的数据。它与各种系统集成,跨运营和分析数据源工作,提供数据脉络和关系,并允许用户编辑数据描述。数据目录通常提供一个中央场所,用户可以查看、查询和存储元数据
数据共享
允许组织和个人与特定实体共享特定的数据和精心定义访问权限
模式
数据的预期形式是什么?文件的格式是什么?是结构化的、半结构化的,还是非结构化的?预计有哪些数据类型?数据如何融入一个更大的层次结构?它是否通过共享键或其他关系与其他数据相连?
计算与存储分离
将数据存储系统(如对象存储、数据湖)与计算资源(如虚拟机、容器、数据处理引擎)分离管理和运行。数据存储在一个独立的存储系统中,而计算资源可以根据需要动态分配和释放,处理存储中的数据
数据存储生命周期
| 对比项 | 热数据 | 暖数据 | 冷数据 |
|---|---|---|---|
| 访问 | 很频繁 | 不频繁 | 不频繁 |
| 存储开销 | 昂贵 | 中等 | 便宜 |
| 检索费用 | 便宜 | 中等 | 昂贵 |