kvdb

package module
v0.0.0-...-b4eea1d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 31, 2018 License: MIT Imports: 1 Imported by: 0

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Command

type Command interface {
	Execute(ctx context.Context) error
	Undo(ctx context.Context) error
	ShouldAutoTransact() bool
}

Command is a thing to do.

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL