BoJack

BoJack is a single-node key-value store written in Crystal, largely inspired by Redis.

History

The systems was started by Marcelo Boeira in 2016 as a learning vehicle for understanding the development of NoSQL database systems, such as Redis. Originally written for Crystal, it has since been built out to additionally support Python, Ruby, and Elixir with help from Mauricio Antunes, Hugo Abonizio, and Vitalii Elenhaupt.

Checkpoints

Not Supported

Concurrency Control

Not Supported

BoJack does not provide any kind of concurrency control. Concurrent client requests are handled by the Crystal language's concurrent Channel class, which is an abstraction of threads.

Data Model

Key/Value

BoJack's data model relies on a key/value store which maps string keys to string array values.

Foreign Keys

Not Supported

As BoJack is a key-value store, SQL joins are not supported.

Indexes

Not Supported

Logging

Command Logging

Bojack logs, in addition to errors, individual commands for any client action, along with the date and time of interaction, and the client's address and port. This includes anytime a client connects, or a key is set, updated, or deleted.

Query Compilation

Not Supported

Query Interface

Command-line / Shell

Bojack provides a standard command-line interface for starting the server and connecting clients.

Storage Architecture

In-Memory

Storage Model

Custom

BoJack uses Crystal's default in-memory hash table to store its data as key-value pairs.

Storage Organization

Heaps

Stored Procedures

Not Supported

System Architecture

Shared-Everything

People Also Viewed

BoJack Logo
Website

https://github.com/marceloboeira/bojack

Source Code

https://github.com/marceloboeira/bojack

Developer

Marcelo Boeira

Country of Origin

DE

Start Year

2016

Project Type

Open Source

Written in

Crystal

Supported languages

Crystal, Elixir, Python, Ruby

Inspired By

Redis

Operating Systems

Linux

Licenses

MIT

People Also Viewed