Skip to content

Latest commit

 

History

History
45 lines (32 loc) · 1.8 KB

README.md

File metadata and controls

45 lines (32 loc) · 1.8 KB

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.