For engineers seeking a fast, memory-efficient database/data engine,
Rapto provides transposition-heuristic storage, low memory footprint and high-performance querying.
This repository is about Rapto server. Clients are put in specific repositories and are divided by language.
Rapto is built on several pillars that set it apart from other data engines.
Its core principles are footprinting, speed, minimalism, and security:
- Footprinted
- Memory control is a key component. Memory usage is monitored during each operation to ensure efficient and predictable behavior.
- Fast
- Rapto offers competitive latency compared to other in-memory key-value databases, making it suitable for high-performance scenarios.
- Minimal
- The code base is small, well-documented, and efficient, prioritizing clarity without compromising capabilities.
- Secure
- Written entirely in Zig, Rapto leverages the language's security and reliability features, making it a great candidate for use in distributed systems. These features make Rapto a choice for high-reliability professional contexts, now and in the future.
Valid benchmarks are available through Rapto clients.
Internal tests focusing exclusively on query resolution within the engine have shown latencies in the range of ~3 to ~6 microseconds.
However, these results are not publicly verified and should be considered indicative only.
This section is about the server building and usage.
The only dependencies are libc
and lz4
.
Rapto is only compatible with Linux/Unix-like systems.
The code is compiled using the Zig build system. Version 0.14.0+ is required.
Note
Release modes are not included in the build file. In different contexts you can choose the appropriate one.
For high performance contexts it is recommended to use the -OReleaseFast
parameter.
Example: zig build -OReleaseFast
The result will be a executable rapto
in zig-out folder.
To use the executable with the various options it is better to consult /docs/usage and /docs/README.md
Example: ./rapto server --name mydb --db-size 150000 --save 300 100 --addr 127.0.0.1:30000
The documentation are provided in /docs/README.md file.