SarDB(Search-and-Recommend Database)
This DB is a simple search-and-recommend oriented distributed database (maybe) for education purpose or just entertainment, which is forked from VLDB Summer School 2021 labs, which is base on TinySQL and TinyKV by PingCAP.
Since the project is in the early stage of development, there is currently no detailed introduction doc. I referenced VLDB Summar School 2021 Labs' doc as below.
I know that the code of the current project mainly comes from TinySQL-TinyKV, and I will do my best to add my own ideas to this project.
This project is just buit for Graduation Project, which can't be guaranteed to be stable, so don't use it in any production.
VLDB Summer School 2021 Labs
Introduction
This is the labs of VLDB Summer School 2021. The target is to build 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.
Labs
There are 4 labs in this course.
- Lab 1, implement the storage and log layer in TinyKV.
- Lab 2, implement the transaction layer in TinyKV.
- Lab 3, implement the Percolator protocol.
- Lab 4, implement the SQL execution layer.
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/vldbss-2021/vldb-2021-labs-{{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
Rather than a course, you can try TinyKV by deploying a real cluster, and interact with it through TinySQL.
Build
cd tinykv
make kv
It builds the binary of tinykv-server
and tinyscheduler-server
to bin
dir.
cd tinysql
make server
It buillds the binary of tinysql-server
to bin
dir.
Deploy By Hand
Put the binary of tinyscheduler-server
, tinykv-server
and tinysql-server
into a single dir.
Under the binary dir, run the following commands:
mkdir -p data
./tinyscheduler-server
./tinykv-server -path=data
./tinysql-server --store=tikv --path="127.0.0.1:2379"
Deploy Use Cluster Command
See TinyUp.