Project


Getting hands-on experience with state-of-the-art data systems!

Project Deadlines


Title       Due Date       Material
Project 0        02/05       Project 0 Doc
Project 1        02/19       Project 1 Doc
Project Proposal        03/01
Mid-semester Report          03/31       Report Template
Preliminary Project Report        04/27
Final Project Report        05/06

Project 0

A quick dev. project to sharpen C++ skills and to prepare for the upcoming research/dev project. For project 0, you are tasked to implement a simple zone map data structure. A zone map maintains min/max value ranges of one or more columns over contiguous sets of data blocks. The objective of the project is to implement and evaluate the performance of zonemaps with varying workloads. More information about the project can be found here.

Project 1: Row-store vs. Col-store

A project that will expose you to the two fundamental relational data system architectures (row-stores and column-stores). The objective is to deploy and experiment with a row-store system (PostgreSQL) and a column-store system (MonetDB) and compare them for different queries in order to showcase when each system should be used. More information about the project can be found here.

Class Project

Every student should complete a semester-long class project. The students can decide between a systems project and a research project.

Useful links:

System Projects

A system project sharpens your systems skills and provides background on state-of-the-art systems, data structures and algorithms. For a successful systems project you will design and implement a systems component in C or C++, and you will deal with low-level system implementation details like memory allocation and management, cache-aware processing, parallel and concurrent processing and a deeper understanding of read/write performance trade-offs, and performance scalability. Systems projects will be carried out by groups of three students.

This year we will have two topics for a systems project.

Project

Implementation of LSM-Trees

Implementation of a Bufferpool

Research Projects

A research project, on the other hand, aims at challenging the state-of-the-art. The goal is (i) either to better understand an open research problem through analysis and benchmarking, or (ii) to solve open problems through new designs and proof-of-concept implementations. The ultimate goal of a research project is to give a taste of research to students, and ideally lead to publications. When working on a research project, the student will interact with the instructor and the teaching assistants closely. Students will work in groups of three students.

We have a number of possible research topics below. The students can also propose their own project (subject to instructor's approval).

Subjects

Concurrency-Aware Graph/Tree Traversal Algorithms

Benchmarking Dual B+-trees for Near-Sorted Workloads

Data Placement Strategies in Distributed Databases

Query-driven compaction in LSM-trees

Range Deletes in LSM-Trees

SPDK application for modern NVMe Storage Devices

Implementation of a variable-size bufferpool

WOODBLOCK in Qd-tree