ANN RediSQL, a Redis module that embed SQLite


#1

Hi Everybody,

I would like to thanks everybody in this great community that make me understand several important concept in my journey of building rediSQL.

At the very beginning rediSQL was written in C, however when I tried to upgrade the code in something more performant using multiple thread I hit some memory bug that I wasn’t able to figure out.
Since Rust was suppose to prevent this kind of problem I decide to give a shot to the language and it turns out that I really enjoy it.

I was able to successfully complete the project to a level that I am confident to share.

I would love any feedback and criticism on the code, it is my very first Rust program and obviously there are some issues.

Just a couple of words about the project.

RediSQL is a redis module (a custom logic that runs inside Redis, a very spread NoSQL DB, cache layer, etc…) that embeds SQLite3.

For now there are very few functions implemented, you can create an in-memory database (REDISQL.CREATE_DB DB_NAME) and execute statement against a database (REDISQL.EXEC DB_NAME “CREATE TABLE example (a INT, b INT);”)

I was able to dedicate a specific thread to the execution of the statements in order to don’t block the main redis execution thread.

On my dated hardware I was able to saturate the capacity of SQLite3 reaching a total of roughly 50k insertions per second, sustained for quite a while, completely in line with my expectation.

There are a bunch of optimization opportunities that I haven’t implement yet since I would like early feedback.

If anybody is interested in the project it is hosted on github: https://github.com/RedBeardLab/rediSQL

I would really love some sort of feedback on the rust code, I am aware that is not the best rust that could be written but I believe that I hit a sweet spot between time constraint, learning process and code maintainability, but I actually suspect to be wrong :smile:

Thanks again :slight_smile:

Simone


Unable to exploit all the cores, suggestions?