/training-plan

电子科技大学分布式存储与计算实验室新生训练计划

MIT LicenseMIT

DSCLab 新生培养计划

培养方向:分布式数据库研发

培养目标:

  1. 具备一定的软件工程能力
  2. 掌握基础数据结构和数据库关键技术
  3. 掌握分布式原理和应用开发

技能培养:

C++ / JAVA / GO 任选一门主力学习, Python 选修

  1. Git、Stencil、Visio 、Docker 等工具的使用
  2. 软件工程能力(代码规范、协作开发、UML 的使用、代码测试、文档撰写)
  3. Research、Presentation 能力

时间安排表:

  • 第一学期
Week Point Detail Project
1 Database & Data Storage Introduction 数据库架构和数据存储方向介绍
2 Transaction & Concurrency Control 并发控制与事务恢复介绍
3 Query Optimization 查询优化介绍
4 Big Data Computing 大数据计算介绍
5 CMU-Buffer Pool 以个人为单位,实现一个buffer pool,并测试其性能及内存占用。并撰写相关文档 项目地址
6-7 CMU-Extendible Hash Index 以个人为单位,在buffer pool的基础上,实现一个Hash Index,并测试其性能及内存占用。并撰写相关文档 项目地址
8-9 CMU-Execution 了解 SQL Engine 组件及功能,学习 SQL 解析流程及抽象语法树。学习执行算子,如 Join, Agg, Scan 的不同实现。了解基本的查询优化方法,了解 Volcano 及 Vectorized 执行器架构 撰写相关文档
实现数据库的执行器。项目地址
10-11 CMU-Concurrency-Control 理解事务的概念及产生原因、理解ACID特性
并发控制(乐观、悲观)
数据持久化和故障恢复(日志、检查点、快照)
撰写相关文档
基于锁实现数据库的并发控制,要求保证事务的ACID特性 项目地址
12 DataMining 数据预处理(滤波、插值、降维)
关联分析 
图挖掘,序列模式挖掘
1. 整理相关算法说明文档
2. 使用现有工具库分析图数据中的重要节点、社团关系等,并对结果进行展示
 项目地址
13 DeepLearning 分类算法(KNN、贝叶斯、SVM、决策树)
聚类算法(kmeans、DBSCAN)
常用模型(CNN、RNN、LSTM)
1. 整理相关算法说明文档
 2. 使用机器学习和深度学习方法实现手写数字识别
3. 空气质量数据集进行预处理,使用深度学习方法,实现空气质量预测
项目地址
14 NLP Attention机制、Transformer、GAN
自然语言处理基础:分词、去除停用词、命名实体识别、预训练模型
1. 使用NLP工具实现命名实体识别
2. 搭建模型,实现情感分析
项目地址
15 TinyKV-Standalone KV 分布式相关概念、时钟
CAP、BASE
拜占庭问题
Zab
Gossip
实现单机的kv server
Project1 StandaloneKV
16 TinyKV Raft KV 2A 实现基础Raft协议
(1)Leader 选举
(2)日志复制
(3)RawNode 接口
Project2 RaftKV
17 TinyKV Raft KV 2B 在 Raft 之上搭建一个容错的 KV 服务器
(1)PeerStorage
(2)Raft ready process
Project2 RaftKV
18 TinyKV Raft KV 2C 增加 raftlog GC 和 snapshot 的支持
(1)Raft快照实现
(2)raftstore
Project2 RaftKV
19-20 TinyKV Raft KV 3A&3B 基于multi-raft实现可扩展的key-value server
(1)对 Raft 算法实现成员变更和领导者变更
(2)在 raftstore 上实现Conf change和 region split
(3)引入 scheduler
Project3 MultiRaftKV
21 TinyKV Trasaction 分布式事务(2PC / 3PC)
基于Percolator实现分布式事务,分析Percolaor的优缺点
Project 4 Transactions
22 TinySQL Simple explanation of SQL and relational algebra 学习SQL语法及关系代数模型
Table Codec
Project 1: Relational Algebra
23 TinySQL Parser TinySQL解析器 Project 2: Parser
24 TinySQL DDL Data Definition Language (DDL) Project 3: DDL
25 TinySQL Optimizer Part1 搜索框架 System R 和 Cascades Project 4: TinySQL Optimizer
26 TinySQL Optimizer Part2 代价估算以及统计信息以及 Join Reorder Project 4: TinySQL Optimizer
27 TinySQL Executor Part1 执行模型:火山模型和向量化 Project 5: TinySQL Executor
28 TinySQL Executor Part2 Hash Join Project 5: TinySQL Executor
29 TinySQL Executor Part3 Hash Aggregate Project 5: TinySQL Executor
30 TinySQL Percolator 实现协调者Percolator协议和完成SQL调用模块 Project 6: TinySQL Percolator

说明:整个学习流程的作业和文档需要在实验室 Github 仓库里面提交,每个 Project 会事先建立好框架,每个同学按照框架进行代码和文档的撰写。并且在代码过程中抽象公共代码库方便后续同学的使用,且需做好 todo-list,方便功能的完善。

如何提交作业

  1. 第一次提交作业的时候请先 fork 当前项目到自己的仓库

  2. 在自己的仓库里面进行作业的更新

    以第一次作业为例,比如你 fork 之后你的代码地址为 git@github.com:ehds/training-plan.git

    1. 克隆仓库到本地:

      git clone git@github.com:ehds/training-plan.git

    2. 进入当前实验文件夹Week1-Databse-Introduction

      cd Week1-Databse-Introduction

    3. 新建一个自己的文件夹,名字+实验名称,参考 Example

      cp -r Example DongShengHe-Week1

      完善实验文档 Markdown 文件

    4. add 作业内容

      git add .

    5. commit 修改

      git commit -m "message" (message使用英文填写你所做的修改)如 git commit -m “complete week1 experiment

    6. push 分支

      git push origin master

  3. 提交 PR

    在 Gihub 仓库界面新建一个 pull request 到实验室仓库

  4. 审核与修改

    待审核人审核后,根据修改意见进行修改,待通过后即可

如何提问

大家遇到问题首先合理利用搜索引擎,网络上可能已经存在比较完美的解决方案

在向同学和老师提问的时候,请先描述问题出现的背景和出现问题的状况,这样更加有利于问题的解决。

请参考提问的智慧。