73 lines
3.1 KiB
Markdown
73 lines
3.1 KiB
Markdown
---
|
||
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]]
|