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.
You can find some material of distributed database in reading list.
The course of VLDBSS 2021(in Chinese) may help you with this lab.
There are 2 labs in this course.
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.
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.
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.
To deploy a cluster, you need to complete tinykv course, which contains a Multi-raft lab and integrated with scheduler.