Auto-sync: 2026-04-28 16:03
This commit is contained in:
@@ -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]]
|
||||
|
||||
Reference in New Issue
Block a user