Go to file
R. Tyler Croy 5581fe0d3a
Implement some Connection category commands
2019-01-06 16:53:13 -08:00
acceptance Implement some Connection category commands 2019-01-06 16:53:13 -08:00
contrib Refactor out the Epoll shim and incorporate async-ada as well. 2019-01-06 11:19:30 -08:00
docs Regenerate documentation 2018-12-18 16:14:52 -08:00
obj Implement some Connection category commands 2019-01-06 16:53:13 -08:00
src Implement some Connection category commands 2019-01-06 16:53:13 -08:00
.gitignore Ignore some auto-generated files in the root directory 2018-12-24 14:28:40 -08:00
.gitmodules Refactor out the Epoll shim and incorporate async-ada as well. 2019-01-06 11:19:30 -08:00
Makefile Always regenerate the gnattest harness just to be sure it always works 2019-01-06 12:37:50 -08:00
README.adoc Implement some Connection category commands 2019-01-06 16:53:13 -08:00
mozzoni.gpr Refactor out the Epoll shim and incorporate async-ada as well. 2019-01-06 11:19:30 -08:00

README.adoc

<html lang="en"> <head> </head>

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 womens movement in Italy.

Hacking

Mozzoni is built with Ada 2012, a modern and type-safe language. If youre 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

Table 1. Keys
Command Status

DEL

🐸

DUMP

EXISTS

🐸

EXPIRE

EXPIREAT

KEYS

MIGRATE

MOVE

OBJECT

PERSIST

PEXPIRE

PEXPIREAT

PTTL

RANDOMKEY

RENAME

RENAMENX

RESTORE

SORT

TOUCH

TTL

TYPE

UNLINK

WAIT

SCAN

Table 2. Strings
Command Status

APPEND

BITCOUNT

BITFIELD

BITOP

BITPOS

DECR

DECRBY

GET

🐸

GETBIT

GETRANGE

GETSET

INCR

INCRBY

INCRBYFLOAT

MGET

MSET

MSETNX

PSETEX

SET

🐸

SETBIT

SETEX

SETNX

SETRANGE

STRLEN

Table 3. Connection
Command Status

AUTH

ECHO

🐸

PING

🐸

QUIT

🐸

SELECT

SWAPDB

Benchmarking

Mozzoni uses the redis-benchmark tool to verify its 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.

</html>