An in-memory database similar to Redis, built using Elixir.
Information
AllyDB is a database that is built using Elixir.
It is mostly a learning project, but I will try to make it as usable as possible.
However, if you want to learn how to build a similar project, you can use this project as a reference.
Roadmap
- Basic key value store
- Lists
- Usage Guide
- Persistence
- Hashes
- Sets
- Sorted Sets
- Pub/Sub
Performance Roadmap
(?) means that the item is an idea, but it is unclear how it will be implemented, or how the implementation will look like.
- Better usage of OTP (?)
- Better usage of ETS (?)
- Optimize persistence (?)
Development Roadmap
- Testing
- Improve the naming of things in the code
Usage
Environment Variables
Name | Description | Default |
---|---|---|
ALLYDB_PORT |
The port on which the server will listen | 4000 |
PERSISTENCE_LOCATION |
The location where the database will be persisted | allydb.tab |
PERSISTENCE_INTERVAL |
The interval at which the database will be persisted | 3000 |
LOG_PERSISTENCE_LOCATION |
The location where the log file will be stored | allydb.log |
Installation
Using Docker
You can use the docker image to run the database.
You can also build the project from source.
You can find the documentation here.
Example Usage
Basic Key Value Store
The database is persisted to an append only log file. This means that the database can be restored to a previous state.
The database is also persisted on a regular interval, in case something happens to the log file.
The interval can be configured using the PERSISTENCE_INTERVAL
environment variable. The default value is 3000ms
.
License
AllyDB is licensed under the Apache License 2.0. You can find the license here.
Leave A Comment