5581fe0d3a | ||
---|---|---|
acceptance | ||
contrib | ||
docs | ||
obj | ||
src | ||
.gitignore | ||
.gitmodules | ||
Makefile | ||
README.adoc | ||
mozzoni.gpr |
README.adoc
Mozzoni
Mozzoni aims to be a fast and safe NoSQL data service.
Mozzoni is named after Anna Maria Mozzoni an italian feminist and arguably the founder of the women’s movement in Italy.
Hacking
Mozzoni is built with Ada 2012, a modern and type-safe language. If you’re unfamilar with the language refer to Getting Started with Ada. While developing Mozzoni can be done from the command line, much of its development happens using the GNAT Programming Studio.
To get started clone the repository with:
git clone --recursive https://git.brokenco.de/rtyler/mozzoni.git
Many of the tasks for building, testing, etc, are driven through the
Makefile
. Execute make
to print out the available targets and their help
information.
Building: make build
Verifying: make check
While make check
runs all the tests available, two other targets can be used
for more granular testing. make unit
will run the GNATtest cases. make
acceptance
will run the Python-based black-box acceptance tests which verify
the client-facing behavior of Mozzoni.
Compatibility
Mozzoni aims to be protocol compatible with redis and the tables below document the current command compatibility.
Caution
|
Some error strings and codes may differ between Mozzoni and redis |
Command | Status |
---|---|
|
🐸 |
|
❌ |
|
🐸 |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
Command | Status |
---|---|
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
🐸 |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
🐸 |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
|
❌ |
Command | Status |
---|---|
|
❌ |
|
🐸 |
|
🐸 |
|
🐸 |
|
❌ |
|
❌ |
Benchmarking
Mozzoni uses the redis-benchmark
tool to verify it’s compatibilty and
relative performance to redis-server
. The tool is available in the
redis-tools
package for Debian, or can be quickly built from source by cloning
the redis source code.
Below are some results which are manually kept up to date and may not represent the latest performance of Mozzoni.
SET
./redis-benchmark -t set -e
Mozzoni
====== SET ======
100000 requests completed in 1.08 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.22% <= 1 milliseconds
99.75% <= 2 milliseconds
99.98% <= 3 milliseconds
100.00% <= 3 milliseconds
92678.41 requests per second
Redis
====== SET ======
100000 requests completed in 0.82 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.93% <= 1 milliseconds
100.00% <= 1 milliseconds
121951.22 requests per second
`
PING
./redis-benchmark -t ping -e
Mozzoni
====== PING_INLINE ======
100000 requests completed in 0.75 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.51% <= 1 milliseconds
99.98% <= 2 milliseconds
100.00% <= 2 milliseconds
133333.33 requests per second
====== PING_BULK ======
100000 requests completed in 0.73 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.86% <= 1 milliseconds
99.98% <= 2 milliseconds
100.00% <= 2 milliseconds
136986.30 requests per second
Redis
====== PING_INLINE ======
100000 requests completed in 0.73 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.80% <= 1 milliseconds
100.00% <= 1 milliseconds
136798.91 requests per second
====== PING_BULK ======
100000 requests completed in 0.70 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.95% <= 1 milliseconds
100.00% <= 1 milliseconds
143472.02 requests per second
Getting Started with Ada
The easiest way to get started with Ada, is to download the entire toolchain from libre.adacore.com, including the compiler and GNAT Programming Studio.
Debian users should be able to install the gnat-8
and gprbuild
packages.