Day 6:宏观架构与运维选型

数据备份策略、分布式数据库体系与 NoSQL 数据库

1. 数据备份与恢复策略 (权衡的艺术)

“海量数据面前,每天全量备份是不现实的。核心在于时间和空间的取舍。”
备份类型 备份内容 恢复速度 空间占用
完全备份 (Full) 备份整个数据库 最快 (只需这一个包) 最大
增量备份 (Incremental) 仅备份上一次备份后发生变化的数据 最慢 (需要全备 + 沿途所有增备包) 最小
差异备份 (Differential) 备份上一次完全备份后发生变化的所有数据 中等 (全备 + 最新的一个差备包) 中等
经典真题演练

场景:系统周日进行完全备份,周一至周六每天进行差异备份。如果在周四上午硬盘损坏,管理员应如何加载备份进行恢复?

答案:加载周日的完全备份,以及周三的差异备份。
解析:差异备份的特点是“打包自上次全备以来的所有变化”。因此周三凌晨的差异包已经包含了周一、周二、周三的所有数据变动。恢复时只需首尾相加,不需要中间的过渡包。

2. 分布式数据库体系

“分布式数据库的最高境界:让用户感觉不到它是分布式的,就像在用单机一样(透明性)。”

四大透明性 (由高到低)

表的分片方式 (数据怎么切碎)

水平分片 (按“行”切)

以元组(行)为单位进行划分。例如:将北京客户的整行数据放 A 机房,广州客户的放 B 机房。

垂直分片 (按“列”切)

以属性(列)为单位进行划分。例如:将用户的“基本信息”放一处,“隐私信息”放另一处。(注意:切开的每一块必须都包含主键,以便日后连接还原)

考场直觉判断

题:用户编写程序时,不需要知道某张表的数据到底是“按行切”存在了多台服务器上,还是“按列切”存在了多台服务器上,这属于什么透明性?

答案:分片透明性。
解析:只要题干中强调了对“切割规则(按行/按列)”的隐藏,就是考分片透明性。如果题干强调的是“不知道在哪个服务器”,则是考位置透明性。

3. NoSQL 非关系型数据库选型

“传统关系型数据库在海量高并发面前显得笨重,NoSQL 牺牲了部分严谨性,换来了极致的速度和灵活性。”
💡 架构师实战抉择:
如果要开发一个大型内容社区,帖子内容长短不一,且后期极有可能频繁增加新字段(如打赏数、点赞列表)。
选型建议:首选 MongoDB。因为它是文档型数据库,格式自由,完美契合“海量且结构不固定”的业务需求,无需像 MySQL 那样痛苦地修改表结构(ALTER TABLE)。