Fetching the latest programs, projects, and workspace data.

Lighting fast in-memory DBMS with JIT onboard
Showing 3 of 3 projects. Click any project card for scope, mentors, and proposal studio.
Mentors: Student: Anastasiy Belyaev
<p>Tarantool’s team has released a new C++ connector, which is based on compile-time MsgPack encoder/decoder. Reaching the limits of C++, this library is really state of the art, eliminating any possible overheads. The project idea aims related to it is: Complete providing support of Tarantool features (pushes and SQL statements)</p>
Mentors: Student: Georgiy Lebedev
<p>Tarantool's SQLite-derivative VM code for SQL engine known as 'vdbe' is creating a performance bottleneck: self-execution of the main part of the VM's opcode dispatcher is mostly half of total CPU time.</p> <p>My proposal is to implement an embedded LLVM JIT engine solution which would replace part of vdbe responsible for DQL. In the future perspective, vdbe could be completely migrated to this engine. This solution is anticipated to give 20% performance boost for DQL compared to vdbe.</p> <p>The goal of this project is to develop the solution described in the proposal, making it scalable, and integrate it with vdbe, afterwards benchmark it and compare its performance to that of original vdbe.</p>
Mentors: Student: Anastasia Neklepaeva
<p>Tarantool uses SQL VM with conventional interpretation technique: loop over instruction, inside which dispatching switch-case executes logic of current opcode. Beyond introduction of JIT to SQL subsystem there are multiple smaller improvements which might be developed for SQL virtual machine:</p> <ul> <li>merge CHECKs bytecode into a monolithic program;</li> <li>add VDBE assembler;</li> <li>use threaded interpretation. The easiest approach in its implementation is 'threaded-code'. Threaded code is a programming technique where the code has a form that essentially consists entirely of calls to subroutines. It is often used in compilers, which may generate code in that form or be implemented in that form themselves. The code may be processed by an interpreter or it may simply be a sequence of machine code call instructions. Another optimization is instruction merging: a sequence of opcodes is replaced by a single mega opcode. There is a proposal to create a single VDBE running all the CHECK constraints.</li> </ul>