3.8 分布式数据库
分布式数据库核心知识点详解
一、分布式数据库
定义
局部数据库位于不同的物理位置,使用一个全局的DBMS将所有局部数据库联网管理,这就是分布式数据库。
通俗理解
想象你是一家连锁超市的总部,全国有100家门店。每家门店都有自己的收银系统(局部数据库),但总部需要一个统一的系统来查看所有门店的销售数据、库存情况。这个"统一管理系统"就相当于全局DBMS,而整个连锁体系就是分布式数据库。
核心特点
- 物理分布:数据存储在多个不同的地理位置
- 逻辑统一:对用户来说,看起来就像一个完整的数据库
- 联网管理:通过计算机网络将各局部数据库连接起来
二、分片模式
分片(Sharding)是分布式数据库中数据划分的核心策略,分为水平分片和垂直分片两种方式。
1. 水平分片
定义:将表中水平的记录(行)分别存放在不同的地方。
通俗样例:
假设你有一个"学生表",里面有1000条学生记录。水平分片就是把这1000条记录按某种规则切开:
| 分片节点 | 存放的学生记录 |
|---|---|
| 节点A | 学号 001~500 的学生 |
| 节点B | 学号 501~1000 的学生 |
就像把一叠文件按序号从中间劈开,一半放左边抽屉,一半放右边抽屉。查询时系统会自动知道"学号300的学生在节点A"。
2. 垂直分片
定义:将表中垂直的列值分别存放在不同的地方。
通俗样例:
还是那个"学生表",假设表结构如下:
| 学号 | 姓名 | 性别 | 年龄 | 家庭住址 | 电话号码 | 紧急联系人 |
|---|
垂直分片会把不同的列拆分到不同节点:
| 分片节点 | 存放的列 |
|---|---|
| 节点A | 学号、姓名、性别、年龄(基本信息) |
| 节点B | 家庭住址、电话号码、紧急联系人(隐私信息) |
就像公司的组织架构:人事部管员工的基本档案,行政部管员工的住址和电话。虽然数据被拆开了,但通过学号仍能关联到同一个人。
水平分片 vs 垂直分片 对比
| 对比维度 | 水平分片 | 垂直分片 |
|---|---|---|
| 拆分方向 | 按行拆分 | 按列拆分 |
| 每张分片表结构 | 与原表相同 | 原表列的子集 |
| 数据冗余 | 无冗余 | 通常需保留主键用于关联 |
| 适用场景 | 数据量大、查询均匀分布 | 列数据量差异大、访问模式不同 |
三、分布式透明性
分布式透明性是指:对用户和应用程序而言,分布式数据库的复杂性对外部是"透明"的——你不需要知道底层是怎么运作的,就像用手机不需要知道基站是怎么工作的。
1. 分片透明性
定义:用户或应用程序不需要知道逻辑上访问的表具体是如何分块存储的。
通俗样例:
你在电商平台搜索"手机",系统返回了100个商品结果。你不需要关心这些商品数据存在哪个服务器上、是怎么切分的。你只需要输入关键词,系统自动帮你找到数据并返回结果。这就是分片透明性在起作用——你只管"查什么",系统负责"去哪查"。
2. 位置透明性
定义:应用程序不关心数据存储物理位置的改变。
通俗样例:
你用手机APP登录微信,APP只需要知道"连接微信服务器",不需要知道服务器具体在北京、上海还是深圳的机房里。即使运营商把数据中心从北京迁移到了上海,你的APP也不需要做任何修改就能继续正常使用。就像你打电话给朋友,不需要知道他换到新手机号后住在哪个区。
3. 逻辑透明性
定义:用户或应用程序无需知道局部使用的是哪种数据模型。
通俗样例:
一个大型集团总部使用的分布式数据库,总部用的是关系型数据库(表格形式),而某个分公司因为业务特殊用的是文档型数据库(类似JSON格式)。但总部下发的统一查询接口对分公司来说是无感的——分公司的人照样用同样的方式查询数据,不需要知道底层用的是表格还是文档。就像你打电话给不同国家的朋友,不管他们用iPhone还是Android,通话功能不受影响。
4. 复制透明性
定义:用户或应用程序不关心复制的数据从何而来。
通俗样例:
你访问百度首页,请求可能被分发到全国多个数据中心中的任意一个来响应。你不需要知道你的请求打到了北京机房还是广州机房的服务器上,也不需要知道这个页面是从主数据库复制过来的还是从缓存里取的。你只需要知道"打开百度就能搜到东西",至于数据从哪个副本提供服务,对用户完全透明。
四、知识点总结
| 知识点 | 核心要点 |
|---|---|
| 分布式数据库 | 多地局部数据库 + 全局DBMS统一管理 |
| 水平分片 | 按行拆分数据,各节点存不同记录 |
| 垂直分片 | 按列拆分数据,各节点存不同字段 |
| 分片透明性 | 不用关心数据怎么分块存储 |
| 位置透明性 | 不用关心数据存在哪个物理位置 |
| 逻辑透明性 | 不用关心局部用什么数据模型 |
| 复制透明性 | 不用关心数据从哪个副本提供 |
五、一句话记忆法
- 分布式数据库 = 多地存储 + 统一视图
- 水平分片 = 把表"横着切"(按行)
- 垂直分片 = 把表"竖着切"(按列)
- 四种透明性 = 用户不用管:怎么分的、存在哪、用什么模型、从哪来的

浙公网安备 33010602011771号