Tarantool
Initial release | 2008 |
---|---|
Stable release | 1.6.7
/ November 17, 2015 |
Repository | |
Written in | C |
Operating system | Linux, FreeBSD, OS X |
Available in | English |
Type | NoSQL database |
License | Simplified BSD |
Website | tarantool |
Tarantool is an open-source NoSQL database management system and Lua application server. It maintains databases in memory and ensures crash resistance with write-ahead logging. It includes a Lua interpreter and interactive console but also accepts connections from programs in several other languages.
History
Mail.Ru, the largest Internet company in Russia [citation needed], started the project in 2008 by supplying funds and programmers. For a project head it hired a former technical lead from MySQL. Open-source contributors have been active especially in the area of external-language connectors for C, Perl, PHP, Python, Ruby, and node.js
Tarantool became part of the Mail.Ru backbone, used for dynamic content such as user sessions, unsent instant messages, task queues, and a caching layer for traditional relational databases such as MySQL or PostgreSQL.[1] [2]
By 2014 Tarantool had also been adopted by the Badoo and Odnoklassniki social network services.[3]
In June 2014 researchers from the Polytechnic Institute of Coimbra and the University of Coimbra (Portugal) conducted the first formal independent performance test of NoSQL systems that included Tarantool. The tests used the standard YCSB benchmark and the other NoSQL systems were Cassandra, HBase, Oracle NoSQL, Redis, Voldemort, Scalaris, Elasticsearch, MongoDB, and OrientDB.[4]
Properties
All data is maintained in memory (RAM), with data persistence ensured by write-ahead logging and snapshotting, and for those reasons some industry observers have compared Tarantool to Membase.[5] Replication is asynchronous and failover (getting one Tarantool server to take over from another) is possible either from a replica server or from a "hot standby" server.
There are no locks. Tarantool uses Lua-style coroutines and asynchronous I/O. The result is that application programs or stored procedures must be written with cooperative multitasking in mind, rather than the more popular preemptive multitasking.
For database storage the basic unit is a tuple. Tuples in tuple sets handle the same role as rows in tables for relational databases, but tuples have an arbitrary number of fields, and fields do not need names. Every tuple in a database has one (unique not null) primary key and one or more secondary keys, which are enabled for immediate lookup via indexes. Supported index types are binary tree, hash, bitmap, and R-tree (spatial). Fields in a tuple are type-agnostic. Users may insert, update, delete, or select if they have been granted appropriate privileges.[6]
Distribution
Tarantool comes as part of the official distributions for some Linux distros such as Debian or Ubuntu.[7][8] The Tarantool organization also supplies downloads for other Linux distributions, OS X, and FreeBSD.
External links
References
- ^ Gorniy, Aleksandr. "Tarantool 1.6: NoSQL база данных и application server в одном флаконе" (PDF). Mail.Ru Group.
- ^ Osipov, Konstantin. "Tarantool persistent in-memory queues". NoSQL matters.
- ^ Povarov, Anton. "Tarantool в Badoo: хранение истории посещений". Badoo Development.
- ^ Abramova, Veronika; Bernardino, Jorge; Furtado, Pedro. "Experimental Evaluation of NoSQL Databases" (PDF). International Journal of Database Management Systems.
- ^ Popescu, Alex; Bacalu, Ana-Maria. "Tarantool/Silverbox: Another In-Memory Key-Value Store from Mail.Ru". MyNoSQL.
- ^ "Tarantool User Guide".
- ^ "Package: Tarantool". Debian.
- ^ "Package: tarantool In-memory database with Lua application server". Ubuntu.