BoJack is a single-node key-value store written in Crystal. It has since been built out to additionally support Python, Ruby, and Elixir.
- Source Code
- https://github.com/marceloboeira/bojack[01]
- Developer
- Country of Origin
- DE
- Start Year
- 2016 [07]
- Project Type
- Open Source
- Written in
- Crystal
- Inspired By
- Redis
- Operating System
- Linux
- License
- MIT License
BoJack is a single-node key-value store written in Crystal. It has since been built out to additionally support Python, Ruby, and Elixir.
History[02]
The systems was started by Marcelo Boeira in 2016 as a learning vehicle for understanding NoSQL database systems.
Concurrency Control[03]
BoJack does not provide any kind of concurrency control. Concurrent client requests are handled by the Crystal language's concurrent Channel class.
Data Model[01]
BoJack's data model relies on a key/value store which maps string keys to string array values.
Logging[04]
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 Interface[05]
Bojack provides a standard command-line interface for starting the server and connecting clients.
Citations
7 sources- GitHub - marceloboeira/bojack: 🐴 The unreliable key-value store · GitHub github.com
- https://medium.com/@marceloboeira/why-you-should-build-your-own-nosql-database-9bbba42039f5 medium.com
- Channel::Unbuffered(T) - github.com/crystal-lang/crystal crystal-lang.org
- bojack/src/bojack/logger.cr at master · marceloboeira/bojack · GitHub github.com
- GitHub - marceloboeira/bojack: 🐴 The unreliable key-value store · GitHub github.com
- bojack/src/bojack/memory.cr at master · marceloboeira/bojack · GitHub github.com
- chore: Bootstrap BoJack :horse: github.com