跳到主要内容

C2-05-数据库与缓存体系-本章在整套-AWS-知识体系中的位置与本章与-719-道题库的关系与数据库基础与数据模型与Amazon-RDS关系数据库

本篇是《C2-05-数据库与缓存体系》的第1个分篇,主要包含:本章在整套-AWS-知识体系中的位置、本章与-719-道题库的关系、数据库基础与数据模型、Amazon-RDS关系数据库。

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 RDS42
Amazon DynamoDB36
Amazon Aurora25
Amazon Redshift18
Amazon Neptune12
Amazon ElastiCache9
Amazon DocumentDB6

注意:曝光度 ≠ 正确答案次数。

例如: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_idnameemail
1001Alicea@example.com
1002Bobb@example.com

3.6.2-orders

order_iduser_idamount
9000110018000
90002100112000

这里: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。

事务。

例如支付过程:

  1. 创建支付记录、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-AZRead Replica
主要目标High AvailabilityRead Scaling
故障切换是核心用途不是主要定义
是否分担读请求经典 Standby 不用于普通读流量
关键词failover、HAread-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。


本篇概述

  • 本篇梳理了本章在整套-AWS-知识体系中的位置相关的核心知识、适用场景与判断要点。
  • 本篇梳理了本章与-719-道题库的关系相关的核心知识、适用场景与判断要点。
  • 本篇梳理了数据库基础与数据模型相关的核心知识、适用场景与判断要点。
  • 本篇梳理了Amazon-RDS关系数据库相关的核心知识、适用场景与判断要点。

返回本章总述查看本章概述