/distributed-txn

Primary LanguageGoApache License 2.0Apache-2.0

Distributed Transaction Labs

Introduction

This is the labs of distributed transaction. The target is to build the transaction protocol of a distributed database.

There are several modules in a distributed database.

  • TinyKV, the storage engine of the system.
  • TinyScheduler, it is used to manager and schedule TinyKV cluster.
  • TinySQL, the SQL layer of TinyKV engine.

Course

You can find some material of distributed database in reading list.

The course of VLDBSS 2021(in Chinese) may help you with this lab.

Labs

There are 2 labs in this course.

  • Lab 1, implement the transaction layer in TinyKV.
  • Lab 2, implement the Percolator protocol.

The code is separated into 2 parts, TinyKV and TinyScheduler is in tinykv, and TinySQL is in tinysql.

You need to follow the order in the labs chapter. You may learn more from the README files in TinyKV and TinySQL.

Autograding

The details of classroom usage can be found in the classroom doc.

Autograding is a workflow which can automatically run test cases. However there are some limitations in Github classroom, in order to make golang works and run it in our self-hosted machines, you need to overwrite the workflow generated by Github classroom and commit it.

cp scripts/classroom.yml .github/workflows/classroom.yml

If you don't use GitHub classroom, just fork this repo, work in your repo, test locally and send a email with your repository address to us after complete some or all the tasks.

Getting started

First, please clone the repository with git to get the source code of the project.

git clone https://github.com/tiny-talent/distributed-txn-{{username}}.git

Then make sure you have installed go >= 1.13 toolchains. You should also have installed make. Now you can run make under tinykv or tinysql dir to check that everything is working as expected. You should see it runs successfully.

Deploy a cluster

To deploy a cluster, you need to complete tinykv course, which contains a Multi-raft lab and integrated with scheduler.