# 客户-服务器与分布式数据库

> 计算机科学 · CIE A-Level 9618
> 来源: https://www.owlsprep.com/zh/study/cie-9618-u8-client-server-and-distributed-databases/

本主题讲解客户-服务器与分布式数据库架构的核心特性，比较两种架构的利弊，并涵盖分片、复制等核心分布式概念，帮助你备考架构评估相关的考题。

**先修:** [关系数据库基础](https://www.owlsprep.com/zh/study/cie-9618-u8-relational-databases/); [客户-服务器网络架构](https://www.owlsprep.com/zh/study/cie-9618-u3-client-server-networks/)

## 学习目标

- 区分客户-服务器与分布式数据库架构
- 比较两种架构的优缺点
- 解释分布式数据库核心概念（分片、复制、透明性）
- 为不同实际应用场景评估合适的架构

## 客户-服务器数据库架构

**客户-服务器数据库** — 一种数据库架构，整个数据库存储在单一中央服务器，最终用户客户端设备通过网络向服务器请求数据。服务器处理所有查询处理、存储和安全管理工作。

*例:* - 小型诊所的患者记录系统，托管在本地服务器，供前台和医生终端访问。

在该模型中，客户端仅负责向用户展示数据，向服务器发送请求。所有核心数据库操作都集中处理，简化了小型部署的管理工作。

**例题:** 本地一家小型咖啡烘焙商需要一个数据库来跟踪每周500笔客户订单，所有6名员工都在单个门店地点工作。请判断客户-服务器架构是否合适，并说明理由。

1. 步骤1：确定核心需求：用户数量少、单地点、预算低、管理需求简单。
2. 步骤2：匹配客户-服务器特性：集中存储易于备份，安全管理集中在一处，不会增加分布式基础设施的复杂度。
3. 步骤3：结论：客户-服务器架构是合适的。
4. 步骤4：理由：小规模和单地点意味着不需要分布式系统带来的额外成本和复杂度，客户-服务器架构符合烘焙商的需求。

> **考试提示:** 务必将架构特性与题目给出的具体用例关联，不要仅罗列通用优缺点。

## 分布式数据库架构

**分布式数据库** — 一种数据库架构，逻辑相关的数据分散在多个通过网络连接的独立节点上，对于最终用户而言共同作为单个逻辑数据库工作。

- **分片**：将表拆分为块：水平拆分（按行）或垂直拆分（按列），每个块存储在不同节点
- **复制**：在多个节点存储相同数据的副本，提升可用性，减少访问时间
- **透明性**：对用户隐藏数据分布，用户可以像查询单个集中式数据库一样查询系统

**例题:** 请解释为什么分片分布式数据库适合存储全球在线流媒体服务的用户观看偏好数据。

1. 步骤1：按地理区域对数据分片，使得每个用户的观看数据存储在离他们位置最近的节点上。
2. 步骤2：这减少了跨网络流量，降低查询延迟，提升终端用户加载个性化推荐的性能。
3. 步骤3：分片还有助于符合区域数据法规要求，因为用户数据可以存储在要求的地理边界内。
4. 步骤4：服务可以通过为新区域添加新节点轻松扩展，无需重组整个数据库。

## 比较与用例选择

| 特性 | 客户-服务器 | 分布式数据库 |
| --- | --- | --- |
| 可扩展性 | 受单服务器容量限制 | 可扩展性高，可轻松添加新节点 |
| 可用性 | 存在单点故障 | 可用性高，复制可避免停机 |

**考试命令词**

本主题常见考题指令有明确的考试要求：

- **Compare** — 说明两种架构的相同点和关键差异，并结合题目上下文作答 *(比较适合小型本地企业的架构)*

- **Justify** — 给出明确理由，将你所选架构的特性与用例需求关联起来 *(证明你为全球银行选择的架构的合理性)*

**例题:** 一家全球金融科技公司需要一个满足99.99%在线时间、为15个国家用户提供低延迟访问的数据库。比较客户-服务器和分布式架构的适用性。

1. 步骤1：明确需求：高可用性、全局低延迟、高可扩展性。
2. 步骤2：评估客户-服务器架构：客户-服务器存在单点故障，无法满足99.99%在线时间要求。远离中心服务器的用户会有高延迟，无法扩展支持数百万全球并发用户。
3. 步骤3：评估分布式架构：分布式数据库在多个区域的节点间复制数据，因此如果一个节点故障，其他节点可以提供数据，满足可用性要求。用户连接到最近的节点获得低延迟，还可以添加新节点支持业务增长。
4. 步骤4：结论：分布式架构是合适的选择。

## 常见错误

- **错误做法:** 将多个客户端连接到单个服务器与分布式数据库混淆
  - 原因: 分布指的是数据库本身的存储位置，不是有多少个客户端连接它。多个客户端不会让系统变成分布式。
  - 正确做法: 记住：客户-服务器数据库可以有数千个客户端，但只要所有数据都在一台中央服务器上，它仍然是客户-服务器架构。
- **错误做法:** 认为分布式数据库总是比客户-服务器好
  - 原因: 分布式数据库存在跨节点事务协调的额外开销，对于小规模、单地点用例来说，比客户-服务器更慢、更昂贵。
  - 正确做法: 始终根据用例评估适用性，而不是只看技术本身：对于小规模部署，客户-服务器通常是更好的选择。
- **错误做法:** 认为分片和复制是互斥的
  - 原因: 大多数生产级分布式数据库同时使用两种技术来平衡性能和可用性。
  - 正确做法: 你可以对数据分片将其分散到不同节点，然后将频繁访问的分片复制到多个节点提升性能。
- **错误做法:** 声称客户-服务器数据库总是比分布式数据库安全性低
  - 原因: 客户-服务器系统的集中式数据存储更便于为小型团队实施一致的安全策略和访问控制。
  - 正确做法: 安全性取决于实现：对于小规模部署，由于集中管理更简单，客户-服务器通常更安全。
- **错误做法:** 忘记提及透明性对用户的好处
  - 原因: 许多考生只描述透明性是什么，不说明它为什么是分布式数据库的有用特性。
  - 正确做法: 务必补充说明，透明性简化了用户交互，因为用户查询数据库时不需要知道数据存储在哪里。

## 速查表

| 架构 | 核心结构 | 核心优势 | 核心劣势 | 最佳适用场景 |
| --- | --- | --- | --- | --- |
| 客户-服务器 | 所有数据在1台中央服务器，多个客户端访问 | 管理简单，成本低，易于实现ACID合规 | 存在单点故障，可扩展性有限 | 小型企业、单地点团队 |
| 分布式 | 数据拆分/复制到多个节点 | 高可用性、可扩展、全局延迟低 | 管理复杂，成本更高，存在一致性权衡 | 全球应用、大型多区域用户群体 |

## 下一步

理解这两种核心数据库架构为CIE A-Level 9618中更高级的数据库主题打下基础。这些知识通常会与事务管理、云数据库部署和大规模数据系统设计的考题结合，比较类题目经常出现在试卷2中。掌握两种架构之间的利弊权衡可以帮助你在评估类题目中拿到满分，这类题目占数据库部分分数的很大比例。

- [事务与并发控制](https://www.owlsprep.com/zh/study/cie-9618-u8-transactions-and-concurrency-control/)
- [算法设计与问题求解](https://www.owlsprep.com/zh/study/cie-9618-u9-overview/)
- [计算思维基础](https://www.owlsprep.com/zh/study/cie-9618-u9-computational-thinking-fundamentals/)

---

来自 [OwlsPrep](https://www.owlsprep.com) —— A-Level / IB / AP / IGCSE 免费学习指南，依据官方考纲编写。原页面：https://www.owlsprep.com/zh/study/cie-9618-u8-client-server-and-distributed-databases/
