This year at the Percona Live Data Performance Conference, I'll be discussing Tarantool. Tarantool is an open source Lua application server integrated with a database management system that incorporates the LuaJIT "Just In Time" compiler, Lua libraries for most common applications, and the Tarantool database server which is an established NoSQL database management system.
My talk is Tarantool: A Lua-Based Database Engine and In-Memory Data Grid, and will focus on a task queue application using Tarantool as an application server and a database.
Tarantool, the project I joined in 2010, endorses the open source values not only with its source code (its 2-clause BSD license), but also in the governance of the trademark, and in working with the contributors. Tarantool is an attempt at a few big ideas that have been emerging for quite a while:
- It's an in-memory database. More and more workloads are fitting in memory and can be served with in-memory databases. This lowers latency, and makes it more predictable, at a lower cost.
- It's built around a shared-nothing architecture to perform better on current and future hardware that is massively parallel.
- It's one of the few databases following the tenets of Michael's Stonebrakiner paper The End of an Architectural Era (It’s Time for a Complete Rewrite).
- It's highly extensible. Tarantool has pluggable storage, making it relatively easy to add custom storage engines. It has a public programming API which we use to implement many of the features of the project.
The team and myself have always had the focus on production-quality software. Mail.Ru, the founder of the project and its anchor customer, has thousands of instances in production use, many of which are on mission critical business paths. Perhaps, if put into a single sentence, Tarantool is an attempt to apply good engineering to some of the past decade's great ideas from the open source and academic communities.
We have placed ourselves quite a bit apart from other databases by the way we make database technology available to the end user. From a user perspective, Tarantool is not a database management server—it's a programming language. Tarantool is a Lua execution environment and is fully compatible with Lua syntax, packages and tools. A typical application for Tarantool puts the custom business logic first, and a persistent and replicated state second.
In a typical deployment, Tarantool does not just replace another database, but instead a custom C++ application server with its database backend (whatever that backend may be). Some users compare Tarantool to Redis, others to RabbitMQ, and others use Tarantool to replace multiple overloaded MySQL instances.
To see my talk, register for Percona Live Data Performance Conference 2016. Use the code "FeaturedTalk" and receive $100 off the current registration price!