Partition 在三周里各指一件事
Week 7、Week 9 和 Week 10 都会出现 Partition 这个词,三处说的事情互相没有关系。官方目前只写了 final written examination,题型和时长还没有公布,所以下面用 practice question 的场景来区分这些词,不代表本期一定这样考。
Week 7 讲数据仓库的表设计,Partitioning 指把一张表按行或按列切成若干子集,放到靠近使用者的地方,比如北方客户和南方客户的记录分开存。Week 10 讲分布式数据库时,把同一个动作叫 fragmentation,这两个词可以当作一件事来记。
Week 9 的 Partitioner 属于 MapReduce,它处理的对象是键值对。Mapper 输出键值对之后,Partitioner 用 hash(key) mod R 算出每个键进哪个 Reduce task,R 是 Reduce task 的数量。R 等于 4 时,哈希值 31 和 19 除以 4 都余 3,两个键都进 3 号 task,但它们仍然是两个独立的键组,各算各的结果。Partitioner 只决定去向,求和、取最大值由 Reducer 完成。
Network partition 是 Week 10 的词,指站点之间的网络断了,两边无法交换消息。CAP 里的 P,也就是 Partition tolerance,讨论的就是网络断开时系统的行为。
Replication 每周问的问题不同
Replication 在每一周都是多存一份副本,三周的题目分别问它能不能恢复数据、要占多少份存储、网络断开时会怎样。
Week 6 有一个场景:主服务器和同楼的备用机持续同步,有人误删了数据,删除操作已经同步到备用机。这时切换到备用机也找不回那些记录,只能用误删之前做好的备份,而备份之后产生的新数据可能缺失。主机坏了由备用机接管,这个动作叫 failover,它解决服务中断;数据的旧状态要靠备份恢复。
Week 9 的 HDFS 题目要算数量。Replication factor 等于 3 表示每个块一共存 3 份,这个数已经包含原来那一份。一个 321 MB 的文件按 64 MB 分块,前 5 块存 320 MB,剩下 1 MB 也要占第 6 块,所以是 6 个逻辑块,乘以 3 得到 18 个块实例。
Week 10 的题目问网络断开以后的取舍。一道 practice question 里,售票系统在两个站点各存一份数据,还剩 1 个座位,两地网络断了。如果两边都按自己手上的副本确认订单,同一个座位就会卖给两个人;要守住一个座位只卖一次,就要让其中一个站点暂时不能确认订单。副本本身解决不了这个取舍。
CIA 和 CAP 都有一个 A
Week 6 的 CIA 和 Week 10 的 CAP 都有 Availability,判断条件不同。CIA 的 Availability 是授权用户需要时能用上系统,服务器故障、数据库连不上就属于这一项。CAP 的 Availability 是每个请求都能得到响应,这个响应可以是一个旧值。
CIA 的 Integrity 管数据有没有被未授权地改动,CAP 的 Consistency 管不同站点同一时刻看到的数据是否相同,这两个词也要分开判断。
有一道 Week 10 的 practice question 把两套放在一起:网络断开期间,两个副本都继续回应请求,其中一个返回了旧值,没有任何未授权用户读取或修改数据。继续回应说明这些请求优先保住了 CAP 的 Availability,旧值说明 Consistency 有问题。题目没有未授权访问或改动的证据,所以不能判定 Confidentiality 被破坏;同样,没有未授权改动也证明不了 CAP 的 Consistency 还在。
同一周另一道题走的是 CIA:有人用偷来的应用账号读了私密发票,改了付款指令,随后服务器故障,数据库连不上。读发票、改指令和服务器故障依次对应 Confidentiality、Integrity 和 Availability。账号是偷来的,所以这个人登录成功也不算获得授权。
Partial 的两种用法
Week 3 的 partial 用在超类型和子类型上:completeness 是 partial 时,一个超类型实例可以不属于任何子类型,它的相对词是 total,Week 10 叫它 complete。






