Skip to content

A hobby distributed OLTP SQL database management system for learning purposes

License

Notifications You must be signed in to change notification settings

dr0pdb/icecanedb

Repository files navigation

IcecaneDB

CI Go Report Card Go Doc PkgGoDev Release

A hobby Distributed OLTP SQL database management system written in Go. This is being developed with a motive to learn about distributed systems and databases.

Note: The project is under development and isn't ready.

Progress

Approximate progress of the project.

Server

  • Storage engine
  • Raft
  • MVCC transactions
  • Key value service

Client

  • Lexer & Parser
  • Table encoding
  • Query planner
  • Query execution
  • Query optimization

Common

  • Unit testing

Features

TODO: List of features

Architecture

The project is divided into two main parts:

  1. Server
  2. Client

The server is a grpc service exposing a transactional key value storage layer. The server receives grpc calls from the client and serves them. It also communicates with the other servers for replication using the Raft consensus protocol. The server contains a LSM storage layer for persisting data to disk.

The client is responsible for most of the heavy lifting. It provides a REPL for the user to enter their SQL queries. It then executes those queries and uses the server as the storage medium.

TODO: More details, diagrams and blog posts.

About

A hobby distributed OLTP SQL database management system for learning purposes

Topics

Resources

License

Stars

Watchers

Forks

Languages