BoJack is a single-node key-value store written in Crystal. It has since been built out to additionally support Python, Ruby, and Elixir.
The systems was started by Marcelo Boeira in 2016 as a learning vehicle for understanding NoSQL database systems.
Command-line / Shell
Bojack provides a standard command-line interface for starting the server and connecting clients.
Not Supported
BoJack does not provide any kind of concurrency control. Concurrent client requests are handled by the Crystal language's concurrent Channel class.
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.
Custom
BoJack uses Crystal's default hash table to store its data as key-value pairs.
In-Memory
As BoJack is a key-value store, SQL joins are not supported.
Key/Value
BoJack's data model relies on a key/value store which maps string keys to string array values.
Shared-Everything
Heaps
https://github.com/marceloboeira/bojack
Marcelo Boeira
DE
2016
Open Source
Crystal
Crystal, Elixir, Python, Ruby
Redis
Linux
MIT