Auto-sync: 2026-04-28 16:03

This commit is contained in:
2026-04-28 16:03:03 +08:00
parent f8b421ece6
commit 365caa800a
48 changed files with 1942 additions and 1249 deletions

View File

@@ -1,89 +1,72 @@
---
title: "Multi-Database Architecture"
type: concept
tags:
- AWS
- Database
- Architecture
- Microservices
sources:
- ctp-topic-51-architecting-with-aws-purpose-built-databases
last_updated: 2026-04-23
---
## Definition
多数据库混合架构(Multi-Database Architecture是指在单一应用中根据各部分的数据特征选用不同类型专用数据库的架构模式以实现最优的数据层性能
## Core Principle
每个数据模型应使用最适合它的数据库类型:
- **关系型数据** → 关系型数据库Aurora / RDS
- **高频读取** → 内存缓存ElastiCache
- **无结构键值** → 键值数据库( DynamoDB
- **高度互连** → 图数据库Neptune
## Real-World Case Studies
### Duolingo 案例(来源:[[ctp-topic-51-purpose-built-databases]]
| 数据类型 | 数据库 | 选型原因 |
|---------|--------|---------|
| 个性化学习进度 | DynamoDB | 高写入、低延迟、弹性扩展 |
| 高频词/短语 | ElastiCache | 微秒级读取缓存 |
| 事务数据(购买、订阅)| Aurora | ACID 强一致性、复杂查询 |
### Netflix 案例(来源:[[ctp-topic-51-purpose-built-databases]]
| 数据类型 | 数据库 | 选型原因 |
|---------|--------|---------|
| JSON 文档(用户数据、偏好)| DynamoDB | 高弹性、低延迟、JSON 原生支持 |
### Peloton 案例(来源:[[ctp-topic-51-purpose-built-databases]]
| 数据类型 | 数据库 | 选型原因 |
|---------|--------|---------|
| 实时健身反馈 | ElastiCache Redis | 微秒级响应、即时用户体验 |
## Architecture Patterns
### Cache-Aside Pattern旁路缓存
```
应用 → DynamoDB/RDS主数据库
↘ ElastiCache缓存层
```
- 读取:先查缓存,未命中则查数据库并回填缓存
- 写入:先写数据库,再失效/更新缓存
### CQRS Pattern命令查询职责分离
```
写入 → DynamoDB优化写入
读取 → DynamoDB + ElastiCache优化读取
↘ Aurora复杂查询读取
```
### Event-Driven Data Sync
```
DynamoDB Streams → Lambda → Aurora
→ Lambda → Elasticsearch搜索
→ Lambda → S3归档
```
## Trade-offs
| 优势 | 挑战 |
|------|------|
| 最优性能:每个场景用最佳数据库 | 复杂度:多数据库运维成本 |
| 弹性扩展:各层独立扩展 | 一致性:跨数据库事务管理 |
| 成本优化:按需选择规格 | 学习曲线:团队需掌握多种数据库 |
| 容错隔离:单库故障不扩散 | 数据迁移:服务间数据同步 |
## Aliases
- Polyglot Persistence
- 多数据库混合架构
- 数据库混合部署
- Database Polyglot
- Mixed Database Architecture
## Related Concepts
- [[Purpose-Built-Databases]]:多数据库架构的基础——专用数据库选型原则
- [[Amazon-DynamoDB]]:多数据库架构中的键值/文档数据存储
- [[Amazon-ElastiCache]]:多数据库架构中的缓存层组件
- [[Amazon-Aurora]]:多数据库架构中的关系型事务数据存储
- [[Amazon-Neptune]]:多数据库架构中的图数据存储
- [[Amazon-Timestream]]:多数据库架构中的时序数据存储
- [[DBA-Role-Evolution]]:云时代 DBA 需要掌握多数据库架构设计能力
---
title: "Multi-Database Architecture"
type: concept
tags:
- AWS
- Database
- Architecture
- Polyglot
sources:
- ctp-topic-51-architecting-with-aws-purpose-built-databases
last_updated: 2026-04-28
---
## Overview
多数据库混合架构(Polyglot Persistence是一种架构模式在同一个应用系统中根据不同数据类型和访问模式选择多个专用数据库组合使用而非依赖单一数据库
## Aliases
- Polyglot Persistence
- Multi-Database Architecture
- Polyglot Database Architecture
## Core Pattern
为正确的工作选择正确的工具:
- **事务数据** → 关系型数据库Aurora/RDS
- **高频缓存** → 内存数据库ElastiCache Redis
- **灵活文档** → 文档数据库DocumentDB
- **图关系** → 图数据库Neptune
- **时序数据** → 时序数据库Timestream
## Real-World Case Study: Duolingo
Duolingo 的多数据库架构:
```
┌─────────────────────────────────────────────────┐
│ Duolingo App │
└──────────────────────┬────────────────────────┘
┌─────────────┼─────────────┐
▼ ▼ ▼
┌──────────┐ ┌───────────┐ ┌──────────┐
│DynamoDB │ │ElastiCache│ │ Aurora │
│ │ │ (Redis) │ │ │
│个性化数据 │ │高频词/短语 │ │事务数据 │
│ │ │ │ │(支付/账户)│
└──────────┘ └───────────┘ └──────────┘
```
- **DynamoDB**:用户个性化学习数据,高并发读写
- **ElastiCache Redis**:高频词/短语缓存,减少数据库访问
- **Aurora**:支付、用户账户等强一致性事务
## Benefits
- **性能最优**:每个数据层使用专门优化的引擎
- **成本效率**:按需选择,避免为不需要的功能付费
- **扩展灵活**:各数据库独立扩展,互不干扰
- **技术适配**:最合适的技术栈解决最合适的场景
## Challenges
- **运维复杂度**:多数据库意味着多套运维工具和技能
- **数据一致性**:跨数据库的分布式事务处理
- **团队技能**DBA 需要掌握多种数据库技术
- **连接管理**:应用层需要管理多个数据库连接池
## Connections
- [[Purpose-Built-Databases]]:多数据库架构是专用数据库理念的组织形式
- [[DBA-Role-Evolution]]:多数据库架构要求 DBA 具备更广的技术视野
- [[Duolingo]]Duolingo 是多数据库混合架构的经典生产案例
- [[Netflix]]Netflix 也采用多数据库架构支撑大规模流媒体平台
## Referenced In
- [[ctp-topic-51-architecting-with-aws-purpose-built-databases]]