The project I’ve been working on in the last several months is a general-purpose DBMS engine written in Rust from scratch.

General-purpose DBMS provides transaction support with ACID properties (atomicity, consistency, isolation, durability), support for a certain query language to perform data manipulation, provides reliability and fault tolerance. It consists of such parts as query parser, query optimizer, execution engine, storage engine, transaction journal, different kinds of caches (for data, for parsed queries, etc.), and things to support transaction isolation, like locking and MVCC (https://en.wikipedia.org/wiki/Multiversion_concurrency_control).

Even if your target is the simplest DBMS which supports above-mentioned functions, it is a…

I’d like to describe an asynchronous logger library implemented for rust. Its goal is to make logging operation as fast as possible, so the decision was made to try implementing it with lock-free queue, but with limited capacity and occasional blocking because from the following three strategies: to wait, to lose data, or run out of memory, the first is preferable. The idea is described below, and the implementation is available here: https://crates.io/crates/async_logger

The idea.

In short, having a buffer of a certain fixed size we can use an atomic integer to reserve space in the buffer by incrementing the…

stencillogic stencillogic

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store