--- 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 需要掌握多数据库架构设计能力