db-readings
数据库相关的论文笔记
分布式理论-自问自答
- GFS阅读问题
为什么存储三个副本?而不是两个或者四个?
Chunk的大小为何选择64MB?这个选择主要基于哪些考虑?
GFS主要支持append,overwrite操作比较少。为什么这样设计?如何基于一个只支持Append操作的文件系统构建分布式表格系统Bigtable?
为什么要将数据流和控制流分开?如果不分开,如何实现Append流程?
GFS有时会出现重复记录或者padding,为什么?
Lease是什么?在GFS起什么作用?它与heartbeat有何区别?
GFS append过程中如果Secondary出现故障,如何处理?如果Primary出现故障,如何处理?
GFS Master需要存储哪些信息?Master数据结构如何设计?
假设服务一千万个文件,每个文件1GB,Master中存储的元数据大概占用多少内存?
Master如何实现高可用性?负载的影响因素有哪些?如何计算一台机器的load值?
Master新建chunk时如何选择ChunkServer?如果新机器上线,load值特别低,是否需要有些特殊考虑?
如果某台ChunkServer报废,GFS如何处理?
如果ChunkServer下线后过一会重新上线,GFS如何处理?
如何实现分布式文件系统的快照操作?
ChunkServer数据结构如何设计?
磁盘可能出现“位翻转”错误,ChunkServer如何应对?
ChunkServer重启后可能有一些过期的chunk,Master如何能够发现?
- MapReduce阅读问题
MapReduce和MPP架构的主要区别在哪里?
如何采用MapReduce实现分布式排序?需要考虑什么问题?
如何设计Map Worker存储中间结果的数据结构?
Reduce Worker执行过程中如果数据量超过内存怎么处理?
Master数据结构如何设计?
如何实现Map任务本地化?
Master如何切分任务?
为什么要有backup task?
- Bigtable阅读问题
GFS可能出现重复记录或者padding,Bigtable如何处理这种情况使得对外提供强一致性模型?
为什么Bigtable设计成Root、Meta、User三级结构,而不是两级或者四级结构?
读取某一行用户数据,最多需要几次请求?分别是什么?
如何保证同一个tablet不会被多台机器同时服务?
Tablet在内存中的数据结构如何设计?
如何设计SSTable的存储格式?
minor、merging、major这三种compaction有什么区别?
Tablet Server的缓存如何实现?
如果tablet出现故障,需要将服务迁移到其它机器,这个过程需要排序操作日志。如何实现?
如何使得tablet迁移过程停服务时间尽量短?
tablet分裂的流程是怎样的?
tablet合并的流程是怎样的?