HOME

TheInfoList



OR:

Tarantool is an in-memory
computing platform A computing platform, digital platform, or software platform is the infrastructure on which software is executed. While the individual components of a computing platform may be obfuscated under layers of abstraction, the ''summation of the requi ...
with a flexible data schema, best used for creating high-performance applications. Two main parts of it are an in-memory
database In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and a ...
and a Lua
application server An application server is a server that hosts applications or software that delivers a business application through a communication protocol. For a typical web application, the application server sits behind the web servers. An application ser ...
. Tarantool maintains data in memory and ensures crash resistance with
write-ahead logging In computer science, write-ahead logging (WAL) is a family of techniques for providing atomicity and durability (two of the ACID properties) in database systems. A write ahead log is an append-only auxiliary disk-resident structure used for cras ...
and snapshotting. It includes a Lua interpreter and interactive console, but also accepts connections from programs in several other languages.


History

Mail.Ru, one of the largest Internet companies in Russia, started the project in 2008 as part of the development of Moy Mir (My World) social network. In 2010 for a project head it hired a former technical lead from
MySQL MySQL () is an Open-source software, open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter My, and "SQL", the acronym for Structured Query Language. A rel ...
. Open-source contributors have been active especially in the area of external-language connectors for C, Golang,
Perl Perl is a high-level, general-purpose, interpreted, dynamic programming language. Though Perl is not officially an acronym, there are various backronyms in use, including "Practical Extraction and Reporting Language". Perl was developed ...
,
PHP PHP is a general-purpose scripting language geared towards web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by the PHP Group. ...
, Python,
Ruby Ruby is a pinkish-red-to-blood-red-colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapph ...
, 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. By 2014 Tarantool had also been adopted by the social network services Badoo and
Odnoklassniki Odnoklassniki (), abbreviated as OK or OK.ru, is a social networking service and online video sharing website primarily in Russia and former Soviet Republics. The site was launched on March 4, 2006 by Albert Popkov and is currently owned by VK. ...
(the latter is affiliated with Mail.Ru since 2010).


Properties

All data is maintained in memory (RAM), with data persistence ensured by
write-ahead logging In computer science, write-ahead logging (WAL) is a family of techniques for providing atomicity and durability (two of the ACID properties) in database systems. A write ahead log is an append-only auxiliary disk-resident structure used for cras ...
and snapshotting, and for those reasons some industry observers have compared Tarantool to Membase. 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 In computer science, asynchronous I/O (also non-sequential I/O) is a form of input/output processing that permits other processing to continue before the I/O operation has finished. A name used for asynchronous I/O in the Windows API is '' over ...
. The result is that application programs or stored procedures must be written with
cooperative multitasking Cooperative multitasking, also known as non-preemptive multitasking, is a computer multitasking technique in which the operating system never initiates a context switch from a running Process (computing), process to another process. Instead, in o ...
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. 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
B-tree In computer science, a B-tree is a self-balancing tree data structure that maintains sorted data and allows searches, sequential access, insertions, and deletions in logarithmic time. The B-tree generalizes the binary search tree, allowing fo ...
, hash, bitmap, and
R-tree R-trees are tree data structures used for spatial access methods, i.e., for indexing multi-dimensional information such as geographical coordinates, rectangles or polygons. The R-tree was proposed by Antonin Guttman in 1984 and has found s ...
(spatial). Fields in a tuple are type-agnostic or can have specific numeric or string data types. Users may insert, update, delete, or select if they have been granted appropriate privileges. In 2017 Tarantool introduced an optional on-disk
storage engine A database engine (or storage engine) is the underlying software component that a database management system (DBMS) uses to create, read, update and delete (CRUD) data from a database. Most database management systems include their own application ...
which allows databases larger than memory size. In 2019 Tarantool introduced an optional
SQL Structured Query Language (SQL) (pronounced ''S-Q-L''; or alternatively as "sequel") is a domain-specific language used to manage data, especially in a relational database management system (RDBMS). It is particularly useful in handling s ...
interface which complies with most of the mandatory features of the official SQL standard.


Distribution

Tarantool comes as part of the official distributions for some Linux distros such as
Debian Debian () is a free and open-source software, free and open source Linux distribution, developed by the Debian Project, which was established by Ian Murdock in August 1993. Debian is one of the oldest operating systems based on the Linux kerne ...
,
Fedora A fedora () is a hat with a soft brim and indented crown.Kilgour, Ruth Edwards (1958). ''A Pageant of Hats Ancient and Modern''. R. M. McBride Company. It is typically creased lengthwise down the crown and "pinched" near the front on both sides ...
or
Ubuntu Ubuntu ( ) is a Linux distribution based on Debian and composed primarily of free and open-source software. Developed by the British company Canonical (company), Canonical and a community of contributors under a Meritocracy, meritocratic gover ...
. The Tarantool organization also supplies downloads for other Linux distributions, OS X, and FreeBSD. Tarantool can be extended with modules installed using LuaRocks, and it includes its own selection of extension rocks.


References


External links

* {{Lua programming language Free database management systems Distributed computing architecture NoSQL NoSQL products Lua (programming language)-scriptable software Software using the BSD license