Skip to content

A key/value database for the Phoenix Golang Meetup's Build a Database Server challenge.

License

Notifications You must be signed in to change notification settings

ChristianAlexander/kvdb

Repository files navigation

KVDB

A key/value database for the Phoenix Golang Meetup's Build a Database Server challenge.

Heavily inspired by chapter 7 of Martin Kleppmann's Designing Data-Intensive Applications book.

Structure

  • cmd - TCP and HTTP frontends for the DB
  • commands - Implementations of execuatable and undoable actions
  • protobuf - Protobuf implementations of store persistence
  • stores - Stuff to do with storage
  • transactors - Implementation of a transaction orchestrator

Isolation

This DB implmements serializable isolation with a 2-phase lock.

Binary Log

This DB has a protobuf binary log for disk persistence.

See Also

"Transactions: myths, surprises and opportunities" - Martin Kleppmann at Strange Loop

Command Pattern - Wikipedia

Protocol Buffers

Varint - Go Standard Library

About

A key/value database for the Phoenix Golang Meetup's Build a Database Server challenge.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published