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.
Bojack provides a standard command-line interface for starting the server and connecting clients.
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.
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.
BoJack uses Crystal's default in-memory hash table to store its data as key-value pairs.
As BoJack is a key-value store, SQL joins are not supported.
BoJack's data model relies on a key/value store which maps string keys to string array values.