Categorygithub.com/christianalexander/kvdb
repositorypackage
0.0.0-20181031032348-b4eea1d2a940
Repository: https://github.com/christianalexander/kvdb.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

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