C2-05-数据库与缓存体系
本章目标:承接 C2-04 的存储体系,从“把数据保存下来”和“把数据组织成可查询、可更新的业务数据”之间的区别开始,建立 Database、Relational Database、SQL、NoSQL、Cache、Document Database、Graph Database、Data Warehouse 的基础模型,并系统理解 Amazon RDS、Amazon Aurora、Amazon DynamoDB、Amazon ElastiCache、Amazon DocumentDB、Amazon Neptune 之间的定位和选择方法。
1-本章在整套-AWS-知识体系中的位置
上一章解决:数据放在哪里?例如:
Object
→ S3
Block
→ EBS
File
→ EFS / FSx
但是业务数据不能只考虑:“有没有保存”;例如 GlobalShop 的订单:
Order
├── order_id
├── user_id
├── amount
├── status
├── created_at
└── items
应用还需要:按 order_id 查订单、按 user_id 查用户订单、更新订单状态、保证付款与订单修改的一致性、建立索引、并发读写、备份、高可用、扩展;这些能力属于:Database;因此:
Storage
↓
保存数据
↓
Database
↓
组织、查询、修改和管理业务数据
2-本章与-719-道题库的关系
按照本项目统一的粗略“题干 + 全部选项,每题最多计一次”的曝光统计:
| 服务 / 概念 | 题库粗略曝光 |
|---|---|
| Amazon RDS | 42 |
| Amazon DynamoDB | 36 |
| Amazon Aurora | 25 |
| Amazon Redshift | 18 |
| Amazon Neptune | 12 |
| Amazon ElastiCache | 9 |
| Amazon DocumentDB | 6 |
注意:曝光度、≠、正确答案次数;例如:ElastiCache;在这套题里经常作为:“它明明是 Cache,为什么不是 Database 题答案?”;这样的干扰项出现。所以本章重点不是背服务出现次数,而是建立:Data Model、+、Workload、+、Access Pattern、+、Availability、+、Scaling;之间的关系。
3-★★★★★-数据库基础与数据模型
3.1-Database-是什么?
Database;=;数据库;最简单地说:
Database
不是单纯“一个装数据的文件”。
它还提供一套规则和能力,
让 Application 能够高效、可靠地组织、查询、修改数据。
例如:
Application
│
│ SQL / API
▼
Database Engine
│
├── Data Model
├── Query
├── Index
├── Transaction
├── Concurrency
└── Persistence
3.2-Storage-与-Database-到底有什么区别?
例如:S3;当然可以存:orders.json;但是如果有:10 亿订单然后每秒都需要:SELECT ...、UPDATE ...、按 user_id 查、按 status 查、事务提交;仅仅把 JSON 文件放 S3,并不等于已经获得一个 Online Transaction Database。所以:
Storage
解决:
字节放在哪里
Database
解决:
业务数据如何建模、查询、修改和保证正确性
3.3-Database-Engine-是什么?
Engine; 中文:引擎;Database Engine;=;数据库引擎;例如:MySQL、PostgreSQL、MariaDB、Oracle Database、Microsoft SQL Server、IBM Db2;这些不是“一个硬盘”。它们是完整数据库软件系统。
3.4-自己在-EC2-上装数据库
最传统的云上方式:
EC2
│
├── Linux
├── MySQL
└── EBS
也就是:Database on EC2;此时你控制很多东西:OS、DB Installation、Patch、Version、Configuration、Backup、Replication、Failover、Monitoring;优点:控制能力高;缺点:运维责任大;这和前面:EC2 vs Fargate / Lambda;的抽象思路完全一致。
3.5-Managed-Database-为什么出现?
很多公司其实想要的是:“我要 MySQL / PostgreSQL,、但我不想每天维护数据库服务器。”;于是 Cloud Provider 可以帮你管理:Hardware、OS、Database Installation、Backup、Patching、Failure Detection、Recovery;这就是:Managed Database;AWS 中最重要的代表:Amazon RDS
3.6-★★★★★-Relational-Database-是什么?
Relational Database;=;关系数据库;核心数据结构通常是:Table、Row、Column;例如:
3.6.1-users
| user_id | name | |
|---|---|---|
| 1001 | Alice | a@example.com |
| 1002 | Bob | b@example.com |
3.6.2-orders
| order_id | user_id | amount |
|---|---|---|
| 90001 | 1001 | 8000 |
| 90002 | 1001 | 12000 |
这里:users.user_id;和:orders.user_id;之间就存在业务关系。
3.7-Table、Row、Column
3.7.1-Table
表;例如:users、orders、products
3.7.2-Row
行 / 记录;例如一笔订单。
3.7.3-Column
列 / 字段;例如:order_id、amount、status
3.8-Primary-Key-与-Foreign-Key
Primary Key;简称:PK; 中文:主键;用于唯一标识一条记录。例如:
order_id = 90001
Foreign Key;简称:FK; 中文:外键;用于表达表之间的关系。例如:
orders.user_id
→ users.user_id
注意:Database Key;和:KMS Encryption Key;完全不是一个概念。
3.9-★★★★★-SQL-是什么?
SQL;=;Structured Query Language、结构化查询语言;关系数据库常用 SQL。例如:
SELECT *
FROM orders
WHERE user_id = 1001;
更新:
UPDATE orders
SET status = 'PAID'
WHERE order_id = 90001;
CLF-C02 不要求写复杂 SQL。只需要知道:
SQL
→ Relational Database
→ Table / Row / Column / Relationship
3.10-Transaction-是什么?
Transaction;=;事务;例如支付过程:
- 创建支付记录、2. 扣减库存、3. 修改订单状态、4. 记录账务
业务通常希望:要么整体成功、要么整体失败 / 回滚;而不是:钱扣了、订单却没更新;这就是 Transaction 思想。
3.11-ACID-是什么?
ACID 是关系型事务里常见的四个性质:
A = Atomicity
C = Consistency
I = Isolation
D = Durability
中文:Atomicity 原子性、Consistency 一致性、Isolation 隔离性、Durability 持久性;CLF-C02 不要求深入数据库理论,但要知道:订单、支付、财务、库存;这类有明确关系和事务要求的数据,关系数据库通常很自然。
3.12-★★★★★-NoSQL-是什么?
NoSQL;常被解释为:Not Only SQL;它不是简单等于:“不能查询”;也不是:“没有结构”;更准确的学习方式:不把所有业务都强制建模为传统关系表 + Join。NoSQL 有多种模型:Key-Value、Document、Graph、Wide-column、...;AWS CLF-C02 中最核心:
DynamoDB
→ Key-Value / Document NoSQL
DocumentDB
→ Document Database
Neptune
→ Graph Database
3.13-为什么需要-NoSQL?
假设 GlobalShop 购物车:
user_id
→ cart data
访问模式很简单:
给我 user_id
→ 返回购物车
而系统可能面对:几千万用户、流量快速变化、大规模并发;如果主要需求并不是复杂 Join,可以考虑:Key-Value / NoSQL;这不是说:NoSQL 一定比 SQL 好;而是:
Workload 不同
→ Data Model 可以不同
3.14-Database-选择的第一原则:Access-Pattern
Access Pattern;=;访问模式;也就是:Application 到底怎么读写数据?例如:按订单 ID 查、按用户查最近 20 个订单、按商品 ID 读详情、按用户 ID 读购物车、查询人与人的关系、复杂 BI 聚合;不同 Access Pattern 可能对应不同数据库技术。所以:
不是先问:
AWS 哪个 Database 最强?
而是先问:
我的数据是什么,
我要怎么访问?
4-★★★★★-Amazon-RDS关系数据库
4.1-★★★★★-Amazon-RDS
[CURRENT-IN-SCOPE];正式名称:Amazon Relational Database Service;简称:Amazon RDS; 中文:Amazon 关系数据库服务
4.2-为什么叫-RDS?
Relational;=;关系型;Database;=;数据库;Service;=;服务;所以:
RDS
=
Relational Database Service
名字直接表达:AWS 托管关系数据库
4.3-RDS-到底是什么?
最简单:AWS 帮你管理关系数据库基础设施和大量日常运维工作。你仍然需要考虑:Schema、Table、Index、Query、Application Data、Database User、Business Logic;AWS 更多负责:底层基础设施、数据库软件部署、备份机制、补丁、故障检测、恢复;这就是 Shared Responsibility 在 Database 中的体现。
4.4-RDS-当前主要数据库引擎
当前 Amazon RDS(不把 Aurora 混在这张普通 RDS engine 表里)主要支持:IBM Db2、MariaDB、Microsoft SQL Server、MySQL、Oracle、PostgreSQL;而:Amazon Aurora;属于 Amazon RDS 家族中的 AWS 自研兼容型关系数据库体系,AWS 为 Aurora 提供独立 User Guide。
4.5-RDS-DB-Instance-是什么?
DB Instance;=;数据库实例;可以理解:一个正在运行的 Managed Database Environment;例如:GlobalShop Order DB、Engine: PostgreSQL、Class: ...、Storage: ...;Application 通过:Database Endpoint;连接。
4.6-GlobalShop-为什么订单适合-RDS?
订单数据通常:User、Order、Order Item、Payment、Inventory;之间存在明确关系。例如:
User
│
└── Order
│
└── OrderItem
│
└── Product
再加:Transaction、Consistency、SQL Query;所以:RDS / Aurora;是非常自然的订单数据库选择。
4.7-RDS-帮你管理什么?
相对于:MySQL on EC2;RDS 可以帮助处理很多:Provisioning、Database Software、Patch、Automated Backup、Failure Detection、Recovery、Monitoring Integration、Scaling Options;但它不是:“数据库以后完全不需要 DBA / Developer 思考”;你仍需要管理:
Data Model、Query、Index、Access、Security Configuration、Performance Design、Application Logic
4.8-RDS-Backup
Amazon RDS 提供:Automated Backups、Manual DB Snapshots、Point-in-Time Recovery;等能力。这里先建立概念:
Automated Backup
→ 系统按配置自动保留恢复能力
Manual Snapshot
→ 用户主动创建时间点快照
完整备份治理还可以结合:AWS Backup
4.9-★★★★★-RDS-Multi-AZ
Multi-AZ;=;Multiple Availability Zones、多可用区;核心目的:High Availability、Failover;经典 RDS Multi-AZ DB Instance 思路:
Application
│
▼
Endpoint
│
Primary DB
AZ-A
│
synchronous replication
│
▼
Standby DB
AZ-B
如果 Primary 出现问题:
Failover
↓
Standby 接管
4.10-Standby-是什么?
Standby;=;备用、待机;经典 Multi-AZ DB Instance 中:Standby;主要是:HA / Failover;不是为了:给 Application 分担读请求;这是考试非常重要的区别。
4.11-★★★★★-Read-Replica
Read Replica;=;只读副本 / 读取副本;核心目的:Read Scaling;架构:
Primary
/ \
/ \
▼ ▼
Read Replica Read Replica
Application 可以把:读流量;分到 Replica。
4.12-★★★★★-Multi-AZ-vs-Read-Replica
这是数据库章节最重要的对比之一。
| 能力 | Multi-AZ | Read Replica |
|---|---|---|
| 主要目标 | High Availability | Read Scaling |
| 故障切换 | 是核心用途 | 不是主要定义 |
| 是否分担读请求 | 经典 Standby 不用于普通读流量 | 是 |
| 关键词 | failover、HA | read-heavy、scale reads |
最简单:
Multi-AZ
→ 坏了怎么办?
Read Replica
→ 读太多怎么办?
4.13-一个当前-AWS-细节:不要把所有-Multi-AZ-形态混成一个
[UPDATED];现在 RDS 不只有最经典的:Multi-AZ DB instance deployment;也存在:Multi-AZ DB cluster;等形态。其中 Reader Instance / Read Replica 的能力比旧教材中的一句:“Multi-AZ 永远不能读”;要复杂。所以本教材在 CLF-C02 基础层统一采用更准确表述:
经典 Multi-AZ DB Instance 的 Standby、主要用于 HA / Failover,、不能拿 Standby 当普通 Read Replica 使用。考试如果明确说:read scaling;应关注:Read Replica;如果明确说:automatic failover / high availability;应关注:Multi-AZ
5-★★★★★-Amazon-Aurora
5.1-★★★★★-Amazon-Aurora
[CURRENT-IN-SCOPE];正式名称:Amazon Aurora;中文一般直接称:Amazon Aurora;Aurora;原本是:极光;这是产品名,不像 RDS 那样是缩写。
5.2-Aurora-到底是什么?
AWS 当前定义:Fully Managed Relational Database Engine;并且兼容:MySQL、PostgreSQL;所以:
Aurora
不是 NoSQL
Aurora
不是 MongoDB
Aurora
不是 Data Warehouse
它是:Relational Database
5.3-Aurora-与-RDS-的关系
容易出现两个错误极端。错误 1:Aurora 就是 RDS 的另一个普通第三方 Engine;不够准确。错误 2:Aurora 和 RDS 完全没关系;也不对。更好的理解:
Amazon RDS
关系数据库托管体系
│
├── MySQL
├── PostgreSQL
├── MariaDB
├── Oracle
├── SQL Server
├── Db2
│
└── Amazon Aurora
├── MySQL-compatible
└── PostgreSQL-compatible
Aurora 有自己专门设计的:Distributed Storage Architecture、Cluster、Reader / Writer
5.4-Aurora-Cluster
Aurora 的一个重要概念:DB Cluster;简化:
Aurora Cluster
│
┌────────────┴────────────┐
│ │
▼ ▼
Writer Reader
Instance Instance
│ │
└──────────┬──────────────┘
▼
Shared Cluster Storage
用户不需要像自己搭 MySQL 集群那样,自己管理底层分布式存储复制。
5.5-Writer-与-Reader
Writer;=;写入节点;负责:Read / Write;Reader;=;读取节点;用于:Read Scaling;所以 Aurora 同样体现:Write Path、Read Scaling、High Availability
5.6-Aurora-为什么经常出题?
因为它很容易和:RDS、DynamoDB、Redshift;混淆。题目看到:MySQL-compatible、PostgreSQL-compatible、relational、AWS-managed、high availability;Aurora 可能是重点候选。看到:NoSQL、key-value、serverless at any scale;应该更偏:DynamoDB
5.7-RDS-vs-Aurora
可以这样理解:
RDS
→ Managed Relational Database Service 家族
Aurora
→ AWS 自研的 MySQL/PostgreSQL-compatible
Managed Relational Database Engine
如果企业必须使用:Oracle、SQL Server、Db2、MariaDB;Aurora 显然不是对应答案。
6-★★★★★-Amazon-DynamoDB
6.1-★★★★★-Amazon-DynamoDB
[CURRENT-IN-SCOPE];正式名称:Amazon DynamoDB;它不是一个缩写。Dynamo;有:动力机 / 发电机;等含义,这里主要是产品名的一部分。DB;=;Database、数据库
6.2-DynamoDB-到底是什么?
AWS 当前定义的核心:Serverless、Fully Managed、Distributed、NoSQL Database;并提供:Key-Value、Document;数据模型。核心特征:大规模、低延迟、自动扩展能力强、不需要管理数据库服务器
6.3-DynamoDB-的核心对象
最基础:Table、Item、Attribute;例如:Cart Table;其中一条 Item:
{
"user_id": "u-1001",
"items": [
{"sku": "p-001", "qty": 2},
{"sku": "p-009", "qty": 1}
],
"updated_at": "2026-09-05T10:00:00Z"
}
这里:
Item
≈ 一条数据记录
Attribute
≈ 数据属性
6.4-DynamoDB-Primary-Key
DynamoDB 的关键概念:Primary Key;最基础可能是:Partition Key;或者:Partition Key、+、Sort Key
6.5-Partition-Key-是什么?
Partition;=;分区;Partition Key;不只是:“业务主键的另一个名字”;它还与 DynamoDB:数据如何分布;密切相关。例如:user_id;可以作为购物车表的 Partition Key。访问:
user_id = u-1001
就能定位相关数据。
6.6-Sort-Key-是什么?
Sort Key;=;排序键;Composite Primary Key:Partition Key、+、Sort Key;例如:PK: user_id、SK: created_at;可以把:同一个用户的一组数据;按照 Sort Key 组织。CLF-C02 不要求深入 Single-table Design,但要知道:DynamoDB、不是传统 Row / Foreign Key / Join 思维的直接复制。
6.7-DynamoDB-为什么适合购物车?
GlobalShop:
User
│
▼
user_id
│
▼
Shopping Cart
需求:按 user_id 快速读写、流量可能非常大、双十一瞬时增长、不需要复杂多表 Join;于是:DynamoDB;非常自然。
6.8-DynamoDB-Serverless-的含义
Serverless;不是:AWS 没有服务器;而是:用户不管理数据库服务器实例。你更关注:Table、Key、Item、Capacity Mode、Access Pattern;而不是:哪个 EC2、哪个 OS、数据库软件怎么安装
6.9-DynamoDB-Capacity-Mode
最重要的两种思路:On-Demand、Provisioned
6.9.1-On-Demand
按请求使用、适合流量不可预测、自动适应读写需求
6.9.2-Provisioned
事先配置读写 Capacity、适合可预测工作负载;CLF-C02 重点:variable traffic、unknown traffic、automatic scaling / serverless simplicity;经常与 DynamoDB On-Demand 思路相关。
6.10-★★★-DynamoDB-Global-Tables
Global Tables;=;全局表;用于:Multi-Region、多区域复制;例如 GlobalShop:
Tokyo
DynamoDB
│
├──────────────┐
▼ ▼
Virginia Frankfurt
DynamoDB DynamoDB
适合:全球低延迟访问、Multi-Region resilience;完整 Multi-Region 架构会在后面章节再深入。
6.11-★★★-DynamoDB-Streams
Streams;=;变更数据流;当 DynamoDB Item:Insert、Update、Delete;时,可以产生变化记录。典型:
DynamoDB
│
│ change
▼
DynamoDB Streams
│
▼
Lambda
例如:
订单状态变化
↓
触发后续异步处理
完整 Event-driven Architecture 会在 C2-11 继续讲。
6.12-★★-DynamoDB-TTL
TTL;=;Time To Live、生存时间;可以为数据设置:到期时间;适合:临时 Session、临时 Token 记录、过期业务数据;但不要把:TTL;理解成:Backup
6.13-★★★★★-RDS-vs-DynamoDB
| 维度 | RDS / Aurora | DynamoDB |
|---|---|---|
| 类型 | Relational | NoSQL |
| 数据模型 | Table / Relation | Key-Value / Document |
| SQL / Join | 核心能力 | 不是传统关系 Join 模型 |
| Server 管理 | AWS 托管,但有 DB Instance 概念 | Serverless |
| 典型 | 订单、财务、关系数据 | 购物车、Session、大规模 Key-Value |
| Scaling 思维 | Instance / Replica / Storage | Partition / Capacity / Serverless Scaling |
最重要:
有关系、事务、SQL
→ RDS / Aurora
Key-Value、大规模、简单访问模式
→ DynamoDB
不是绝对规则,但这是 CLF 层最重要的判断框架。
7-★★★★★-Amazon-ElastiCache
7.1-★★★★-Amazon-ElastiCache
[CURRENT-IN-SCOPE];正式名称:Amazon ElastiCache;名称可以拆成:Elastic、+、Cache; 中文:弹性缓存
7.2-★★★★★-Cache-是什么?
Cache;=;缓存;缓存的核心:把“经常使用、读取成本较高”的数据、放到更快的位置,、减少对后端系统的访问。例如:
Application
│
▼
ElastiCache
│
│ cache miss
▼
RDS
7.3-为什么-Database-前面还需要-Cache?
假设商品详情:
product_id = 12345
一秒被请求:100,000 次如果每一次都:
Application
↓
RDS
↓
复杂 Query
数据库压力会很大。可以:
第一次:
Application
↓
RDS
↓
结果放 Cache
以后:
Application
↓
Cache
↓
快速返回
7.4-Cache-Hit-与-Cache-Miss
Cache Hit;=;缓存命中;即:需要的数据在 Cache 里;Cache Miss;=;缓存未命中;即:
Cache 没有
↓
去 Database / Backend 读取
这两个词以后会经常出现。
7.5-Cache-Aside-Pattern
一个非常常见的缓存模式:
Application
│
▼
Check Cache
│
├── Hit
│ └── Return
│
└── Miss
│
▼
Database
│
▼
Put Cache
│
▼
Return
叫:Cache-Aside;CLF 不要求实现代码,但这个图能解释:为什么 ElastiCache 能降低 Database Load
7.6-ElastiCache-当前支持的引擎
当前 AWS ElastiCache 支持:Valkey、Memcached、Redis OSS;并提供:Serverless Cache、Node-based Cluster;两类运行方式。这也是一个当前状态需要注意的点:旧资料经常只写:Redis / Memcached;现在官方已经把:Valkey;列为重要引擎选项。
7.7-Redis-/-Valkey-风格与-Memcached-的基础区别
CLF-C02 不需要深挖底层协议。最基础:
7.7.1-Valkey-/-Redis-OSS
通常具备更丰富的数据结构与能力,常用于:Cache、Session、Counter、Leaderboard、Pub/Sub 等
7.7.2-Memcached
模型更简单,主要是:distributed memory cache;考试如果只是问:managed in-memory cache;服务层答案通常先看:ElastiCache;而不是强行要求选择具体 Engine。
7.8-ElastiCache-最大的理解误区
错误:
ElastiCache
=
“更快的 RDS”
不对。ElastiCache 是:In-Memory Data Store / Cache;典型架构:
Application
│
├── Cache
│ └── ElastiCache
│
└── Source of Truth Database
└── RDS / Aurora / DynamoDB 等
很多场景下:Cache、不是唯一的永久业务事实来源
7.9-Cache-Invalidation-为什么重要?
Invalidation;=;失效 / 使缓存无效;例如:商品价格:、1000 円;数据库改成:800 円但 Cache 还是:1000 円用户就可能看到旧数据。所以 Cache 不是:“加上以后系统一定更简单”;它会引入:Expiration、Invalidation、Consistency;等问题。CLF 不要求设计完整一致性方案,但需要知道:Cache、是性能优化层,、不是免费的魔法。
7.10-GlobalShop:RDS-+-ElastiCache
User
│
▼
Application
│
├─────► ElastiCache
│ │
│ │ Miss
│ ▼
└─────► Aurora / RDS
例如:商品详情、店铺配置、热门数据、Session;可以利用 Cache。
7.11-DynamoDB-与-Cache
DynamoDB 本身已经以:低延迟、大规模;为目标设计。但一些场景还可以有:DAX、DynamoDB Accelerator;作为 DynamoDB 专用的 In-Memory Acceleration。不过在这套 719 题中它并不是高频核心考点,CLF-C02 当前复习优先级明显低于:DynamoDB、ElastiCache;因此只建立概念,不深入。
8-★★★★★-DocumentDB与Neptune
8.1-★★★-Amazon-DocumentDB
[CURRENT-IN-SCOPE];正式名称:Amazon DocumentDB、(with MongoDB compatibility); 中文:Amazon 文档数据库
8.2-Document-Database-是什么?
Document;=;文档;这里不是 Word / PDF 文档。而是类似:
{
"product_id": "p-1001",
"name": "Camera",
"attributes": {
"color": "black",
"sensor": "full-frame"
},
"tags": ["camera", "pro"]
}
这种:JSON-like Document;数据模型。
8.3-为什么需要-Document-Database?
某些业务数据结构变化频繁。例如不同商品:
手机:
CPU
Memory
Screen
衣服:
Color
Size
Material
相机:
Sensor
Lens Mount
Resolution
如果所有属性都强制放进固定关系表,Schema 设计可能很复杂。Document Model 可以更加灵活。
8.4-Amazon-DocumentDB-与-MongoDB
Amazon DocumentDB 的完整产品名强调:with MongoDB compatibility;核心意思:很多 MongoDB Application Code、Driver、Tool;可以较容易迁移 / 适配。但是:MongoDB compatibility、≠、Amazon DocumentDB 就是 MongoDB Server 原封不动托管版;AWS 官方也单独维护:Compatibility、Functional Differences;文档。
所以考试层级应该记:
MongoDB-compatible;document database
→ Amazon DocumentDB
不要推导成:100% 完全相同实现
8.5-DocumentDB-vs-DynamoDB
两者都不是传统关系数据库,但定位不同。
8.5.1-DynamoDB
Serverless distributed NoSQL、Key-Value / Document、大规模 operational workload
8.5.2-DocumentDB
Managed Document Database、MongoDB compatibility、Document-oriented application;题目出现:MongoDB-compatible;是 DocumentDB 非常强的识别词。
8.6-★★★-Amazon-Neptune
[CURRENT-IN-SCOPE];正式名称:Amazon Neptune;Neptune;=;海王星;同样是产品名,不是缩写。
8.7-Graph-Database-是什么?
Graph;=;图;Graph Database;=;图数据库;它特别适合:实体之间存在大量关系、并且查询重点是“沿着关系走”;例如:
User A
│ follows
▼
User B
│ bought
▼
Product X
│ belongs_to
▼
Category Camera
8.8-Graph-中的-Node-与-Edge
最基础:
Node
→ 节点 / 实体
Edge
→ 边 / 关系
例如:
Alice ──FRIEND──► Bob
Bob ──BOUGHT──► Camera
注意:这里的:Edge;和:AWS Edge Location;不是同一个概念。
8.9-Neptune-适合什么?
AWS 官方典型场景包括:Recommendation、Fraud Detection、Knowledge Graph、Network Security、Highly Connected Data;GlobalShop 可以用于:
User
├── viewed
├── bought
├── follows
└── similar_to
│
▼
Product
如果要分析:A 用户购买了什么、A 的朋友又购买了什么、哪些商品共同被相似用户购买;Graph Model 很自然。
8.10-Neptune-vs-RDS
RDS:关系表、SQL、Join、Transaction;Neptune:Graph、Node、Edge、Relationship Traversal;关系数据库当然也能保存:relationship;但如果核心工作负载是:高连接图关系查询;Graph Database 更合适。
8.11-Neptune-vs-DocumentDB-vs-DynamoDB
DynamoDB
→ Key-Value / Document NoSQL
→ 大规模 operational access
DocumentDB
→ Document
→ MongoDB compatibility
Neptune
→ Graph
→ Highly connected relationships
这是 CLF-C02 需要建立的服务地图。
9-★★★★★-Redshift与分析型数据库
9.1-★★★★-Amazon-Redshift
[CURRENT-IN-SCOPE];Amazon Redshift;是:Fully Managed Data Warehouse;当前 AWS 还提供:Redshift Serverless;但是:Redshift;的完整深入内容属于:C2-12-数据分析与大数据.md;这里仅建立数据库体系中的位置。
9.2-OLTP-与-OLAP
理解 Redshift 最有用的两个词:
9.2.1-OLTP
Online Transaction Processing、在线事务处理;例如:创建订单、修改订单、付款、库存扣减;典型:RDS / Aurora
9.2.2-OLAP
Online Analytical Processing、在线分析处理;例如:过去三年每个国家销售额、每个品类利润率、数十亿订单聚合分析;典型:Data Warehouse、Redshift
9.3-★★★★★-RDS-vs-Redshift
这也是高频混淆。RDS:Operational Relational Database、OLTP、业务实时读写;Redshift:Data Warehouse、Analytics、大规模聚合分析;如果题目说:petabyte-scale data warehouse、BI、analytics、complex aggregation;重点考虑:Redshift;而不是:RDS
9.4-题库典型:Petabyte-scale-Data-Warehouse
题库中有典型题:petabyte-scale data warehouse、analyze its data、fully managed、no manual hardware/software management;选项包括:DocumentDB、Redshift、Neptune、ElastiCache;本质是判断:Document、Graph、Cache、Data Warehouse;不是比较谁“更高级”。需求:Data Warehouse;直接定位:Redshift
10-★★★★★-GlobalShop数据架构与扩展
10.1-Database-与-Cache-完整分层
GlobalShop 可以这样理解:
Application
│
▼
ElastiCache
│
Cache Miss
│
┌───────────┼───────────┐
│ │ │
▼ ▼ ▼
RDS/Aurora DynamoDB DocumentDB
Orders Cart Flexible Docs
│
└──────────────┐
│
▼
Analytics ETL
│
▼
Redshift
关系数据:RDS / Aurora;Key-Value:DynamoDB;Document:DocumentDB;关系网络:Neptune;Cache:ElastiCache;分析仓库:Redshift
10.2-GlobalShop-数据库业务映射
一种教学性的简化映射:
| GlobalShop 业务 | 可考虑的 AWS 服务 |
|---|---|
| 订单 / 支付 / 核心交易 | RDS / Aurora |
| 购物车 | DynamoDB |
| 大规模 Session / Key-Value | DynamoDB |
| 热门商品 Cache | ElastiCache |
| 灵活 JSON Document | DocumentDB |
| 推荐关系 / 欺诈关系 | Neptune |
| BI / 历史分析 | Redshift |
注意:这是教学架构,、不是说真实电商平台只能这样设计。真实架构会根据:规模、团队、访问模式、一致性、成本、现有技术栈;变化。
10.3-Polyglot-Persistence
Polyglot;=;多种语言 / 多种技术并存;Polyglot Persistence;可以理解:一个系统不强迫所有数据都放同一种 Database,、而是不同 Workload 使用更合适的数据存储技术。GlobalShop:
Order
→ Aurora
Cart
→ DynamoDB
Cache
→ ElastiCache
Graph
→ Neptune
Analytics
→ Redshift
现代大型系统经常是这种思路。
10.4-但不要为了“技术多”而多数据库
Polyglot Persistence 不是:服务越多越高级;每增加一种数据库,都会增加:开发成本、监控、权限、备份、一致性、数据同步、团队学习成本、故障排查复杂度;所以真实工程中还要考虑:是否真的需要;CLF-C02 主要训练:在明确需求下选择匹配服务
10.5-Scaling-Database-的几种思路
Database Scaling 可以粗略分:Vertical Scaling、Horizontal Read Scaling、Partitioning / Distributed Scaling、Caching
10.6-Vertical-Scaling
Vertical Scaling;=;纵向扩展;例如:
DB Instance
4 vCPU / 16 GB
↓
16 vCPU / 64 GB
RDS / Aurora 仍然存在:DB Instance Size;概念。
10.7-Read-Scaling
Read Scaling;=;读取扩展;例如:
Primary
│
├── Read Replica 1
├── Read Replica 2
└── Read Replica 3
把读请求分出去。RDS Read Replica、Aurora Reader 都属于这一类思路。
10.8-Distributed-/-Partition-Scaling
DynamoDB 更强调:Distributed、Partitioned、Serverless;数据根据 Key 分布,AWS 帮你管理底层大量扩展复杂度。所以:RDS;和:DynamoDB;的扩展思维并不相同。
10.9-Caching
第四个方向:不要每次都让 Database 做同样查询。于是:Database、+、ElastiCache;可以降低:Read Load、Latency
11-★★★★★-高可用安全与迁移
11.1-High-Availability-与-Database
对于数据库:High Availability;不等于:Backup;例如 RDS:
Multi-AZ
→ HA / Failover
而:
Automated Backup / Snapshot
→ Recovery
两者都重要。
11.2-Database-Backup-与-Read-Replica-不一样
Read Replica:数据持续复制、主要用于读扩展;Backup:保留可恢复历史状态;如果 Application 发出错误:
DELETE FROM orders;
Read Replica 可能也复制这个变化。Backup 可能让你:恢复到删除之前;所以:Replica、≠、Backup
11.3-RDS-Shared-Responsibility
AWS 负责很多:Physical Infrastructure、Host、Managed OS Layer、Database Installation、部分 Patch / Backup Infrastructure;客户仍负责:Database Account、Data、Schema、Query、Index、Encryption / Access Configuration、Application Security;Managed Service:
减少运维责任、≠、消灭客户责任
11.4-DynamoDB-Shared-Responsibility
DynamoDB 更 Serverless:你不管理:DB Server、OS、Cluster Node;但是仍然需要管理:Table Design、Key Design、IAM、Data、Capacity Mode / Limits、Application Access、Backup / PITR Configuration;抽象越高,客户管理的基础设施越少,但业务数据责任仍然存在。
11.5-Database-Security-在哪里继续深入?
本章只建立:Database 本身是什么;下面这些会在其他章节继续:
VPC
Security Group
Subnet
→ C2-06
IAM
→ C2-08
KMS / Encryption / Secrets Manager
→ C2-09
Monitoring
→ C2-10
不要把一章写成所有 AWS 服务的重复大全。
11.6-Database-Migration-在哪里?
题库里会出现:AWS Database Migration Service、AWS DMS;DMS;=;Database Migration Service、数据库迁移服务;它解决:数据库怎么迁移;而不是:业务数据库最终是什么;所以完整内容放:C2-14-迁移数据传输与混合云;这里只记:
RDS / Aurora / DynamoDB
→ Database Target / Platform
DMS
→ Migration
12-★★★★★-选型决策与高频错误
12.1-最重要的数据库选择树
需要 Database
│
├── 传统关系数据 / SQL / Transaction?
│ │
│ ├── 普通 Managed Relational Engines
│ │ └── RDS
│ │
│ └── MySQL/PostgreSQL-compatible AWS Engine
│ └── Aurora
│
├── Key-Value / Document NoSQL、大规模 Serverless?
│ │
│ └── DynamoDB
│
├── MongoDB-compatible Document Database?
│ │
│ └── DocumentDB
│
├── Highly Connected Graph?
│ │
│ └── Neptune
│
├── In-Memory Cache?
│ │
│ └── ElastiCache
│
└── Data Warehouse / BI / Analytics?
│
└── Redshift
12.2-高频关键词映射
relational
SQL
managed relational database
→ RDS
MySQL-compatible / PostgreSQL-compatible AWS relational engine
→ Aurora
NoSQL
key-value
serverless database
massive scale
→ DynamoDB
in-memory cache
reduce database load
low latency cache
→ ElastiCache
MongoDB-compatible
document database
→ DocumentDB
graph
highly connected data
recommendation relationship
fraud graph
→ Neptune
data warehouse
petabyte-scale analytics
BI
→ Redshift
12.3-常见错误-1:NoSQL-=-没有-Schema
不准确。NoSQL 不代表:数据随便乱写、没有设计;DynamoDB 仍然需要非常认真设计:Partition Key、Sort Key、Access Pattern、Index;DocumentDB 也有:Document Structure、Index、Query Pattern;区别是:数据模型、不是传统关系表设计的简单复制
12.4-常见错误-2:DynamoDB-=-Managed-MongoDB
错误。
DynamoDB
→ AWS serverless distributed NoSQL
Key-Value / Document
DocumentDB
→ MongoDB-compatible Document Database
看到:MongoDB;优先想到:DocumentDB
12.5-常见错误-3:Aurora-=-NoSQL
错误。Aurora 是:Relational、MySQL-compatible、PostgreSQL-compatible
12.6-常见错误-4:ElastiCache-=-永久数据库替代品
不应该这样理解。ElastiCache 的核心定位:In-Memory Cache / Data Store;典型用于:降低数据库压力、减少 Latency、保存 Session / Hot Data;很多业务仍需要:Durable Source of Truth
12.7-常见错误-5:Multi-AZ-=-Read-Scaling
经典 Multi-AZ DB Instance:主要解决 HA;Read Replica:主要解决 Read Scaling;这是考试中非常容易反着选的点。
12.8-常见错误-6:Read-Replica-=-Backup
错误。
Read Replica
→ 当前数据副本 / Read Scaling
Backup / Snapshot
→ 历史恢复点
12.9-常见错误-7:Redshift-=-更大的-RDS
Redshift 是:Data Warehouse / Analytics;而不是单纯:“RDS 容量不够了,、换一个超大 RDS。”;工作负载不同:OLTP、vs、OLAP
12.10-常见错误-8:RDS-管理一切,所以客户不用管安全
不对。Managed Database 仍有:Shared Responsibility;客户仍管理:Data、Identity、Access、Schema、Application、Configuration
13-★★★★★-GlobalShop链路与本章总结
13.1-GlobalShop-最终-Database-+-Cache-架构
Global Users
│
▼
Application Layer
│
┌─────────────────────┼─────────────────────┐
│ │ │
▼ ▼ ▼
ElastiCache DynamoDB Aurora / RDS
Hot Data / Cache Cart / KV Order / Payment
│ │
│ │
└────────── cache miss ─────────────────────┘
│
┌──────────────────┼───────────────────┐
│ │ │
▼ ▼ ▼
DocumentDB Neptune Redshift
Documents Graph Analytics
横向还有:IAM、KMS、Secrets Manager、CloudWatch、AWS Backup;后面章节继续补全。
13.2-用户访问商品页面时-Database-如何参与?
例如:GET /products/12345;可能:
Application
│
▼
ElastiCache
│
├── Hit
│ └── Return Product
│
└── Miss
│
▼
DynamoDB / RDS / DocumentDB
│
▼
Cache Result
│
▼
Return
这里:Cache、Database;是两个不同层。
13.3-用户下订单时-Database-如何参与?
User
│
▼
Order API
│
▼
Aurora / RDS
│
├── Create Order
├── Create Order Items
├── Transaction
└── Commit
成功后可以:
Event
↓
SQS / EventBridge
↓
其他服务
消息体系放在 C2-11。
13.4-双十一时-Database-层怎么思考?
不是只说:“加服务器”;要分别考虑:
Application Compute
→ Auto Scaling / ECS / Fargate
Hot Read
→ ElastiCache
Relational Read
→ Read Replica / Aurora Reader
Key-Value Traffic
→ DynamoDB Scaling / On-Demand
Analytics
→ Redshift
也就是:不同层分别扩展
13.5-本章最重要的服务表
| 服务 | 类型 | 最核心用途 |
|---|---|---|
| RDS | Managed Relational DB | 托管 MySQL/PostgreSQL/Oracle/SQL Server/MariaDB/Db2 等 |
| Aurora | Relational DB | AWS MySQL/PostgreSQL-compatible relational engine |
| DynamoDB | Serverless NoSQL | Key-Value / Document,大规模低延迟 |
| ElastiCache | In-Memory Cache | 降低后端数据库压力、低延迟 |
| DocumentDB | Document DB | MongoDB-compatible document workloads |
| Neptune | Graph DB | Highly connected data |
| Redshift | Data Warehouse | Analytics / BI / OLAP |
13.6-本章重要英文词汇
13.6.1-Database
数据库
13.6.2-Relational-Database
关系数据库
13.6.3-Database-Engine
数据库引擎
13.6.4-SQL
Structured Query Language、结构化查询语言
13.6.5-NoSQL
非传统关系型数据库体系 / Not Only SQL
13.6.6-Table
表
13.6.7-Row
行 / 记录
13.6.8-Column
列 / 字段
13.6.9-Primary-Key
主键
13.6.10-Foreign-Key
外键
13.6.11-Transaction
事务
13.6.12-Read-Replica
只读副本
13.6.13-Standby
备用实例 / 待机
13.6.14-Failover
故障切换
13.6.15-Partition-Key
分区键
13.6.16-Sort-Key
排序键
13.6.17-Cache
缓存
13.6.18-Cache-Hit
缓存命中
13.6.19-Cache-Miss
缓存未命中
13.6.20-In-Memory
内存中
13.6.21-Document-Database
文档数据库
13.6.22-Graph-Database
图数据库
13.6.23-Data-Warehouse
数据仓库
13.6.24-OLTP
Online Transaction Processing、在线事务处理
13.6.25-OLAP
Online Analytical Processing、在线分析处理
13.7-CLF-C02-层级真正应该掌握什么?
不需要深入:B-Tree 内部实现、MVCC 算法、Redo Log、WAL、数据库锁算法、DynamoDB 内部分区实现、Redis 源代码、Query Optimizer;但一定要会:
RDS 是什么
Aurora 是什么
DynamoDB 是什么
ElastiCache 是什么
DocumentDB 是什么
Neptune 是什么
Redshift 是什么
Multi-AZ vs Read Replica
SQL vs NoSQL
Database vs Cache
OLTP vs OLAP
13.8-本章压缩成一张图
AWS Data Layer
│
┌────────────┬───────────┼───────────┬────────────┐
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
Relational NoSQL Cache Document Graph
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
RDS/Aurora DynamoDB ElastiCache DocumentDB Neptune
│
▼
Analytics
│
▼
Redshift
13.9-最重要的八句话
1. RDS = Managed Relational Database Service。
2. Aurora = MySQL/PostgreSQL-compatible AWS relational database engine。
3. Multi-AZ 的核心是 High Availability / Failover。
4. Read Replica 的核心是 Read Scaling。
5. DynamoDB = Serverless Fully Managed NoSQL,核心是 Key-Value / Document。
6. ElastiCache = In-Memory Cache,用来降低 Latency 和 Database Load。
7. DocumentDB = MongoDB-compatible Document Database;Neptune = Graph Database。
8. Redshift = Data Warehouse,不是普通 OLTP RDS。
13.10-AWS-官方资料
Amazon RDS:AWS 官方文档:What is Amazon RDS?;RDS Multi-AZ:
AWS 官方文档:Configuring and managing a Multi-AZ deployment;RDS Read Replicas:
AWS 官方文档:Working with DB instance read replicas;Amazon Aurora:
AWS 官方文档:What is Amazon Aurora?;Amazon DynamoDB:
AWS 官方文档:What is Amazon DynamoDB?;DynamoDB Core Components:
AWS 官方文档:Core components of Amazon DynamoDB;Amazon ElastiCache:
AWS 官方文档:What is Amazon ElastiCache?;Amazon DocumentDB:AWS 官方文档:What is Amazon DocumentDB?
Amazon DocumentDB MongoDB Compatibility:AWS 官方文档:Amazon DocumentDB compatibility with MongoDB;Amazon Neptune:
AWS 官方文档:What is Amazon Neptune?;Amazon Redshift:AWS 官方文档:What is Amazon Redshift?
13.11-下一章
到这里:Compute、Storage、Database;已经建立。但是所有这些资源都不能悬浮在空气里。还需要解决:EC2 放在哪个网络?、Subnet 是什么?、Public / Private 是什么?、Internet 怎么进来?、Database 为什么通常不直接暴露公网?、Security Group 在哪里生效?、Route Table 怎么决定流量去哪?于是下一章正式进入:C2-06-VPC与基础网络.md;核心主线:
Network
│
├── Amazon VPC
├── CIDR
├── Subnet
├── Route Table
├── Internet Gateway
├── NAT Gateway
├── Security Group
└── Network ACL