Tarantool
   HOME

TheInfoList



OR:

Tarantool is an in-memory computing platform 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 stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases s ...
and a
Lua Lua or LUA may refer to: Science and technology * Lua (programming language) * Latvia University of Agriculture * Last universal ancestor, in evolution Ethnicity and language * Lua people, of Laos * Lawa people, of Thailand sometimes referred t ...
application server. 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 crash ...
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 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 relational database ...
. Open-source contributors have been active especially in the area of external-language connectors for C,
Perl Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it also referred to its redesigned "sister language", Perl 6, before the latter's name was offic ...
,
PHP PHP is a general-purpose scripting language geared toward 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 Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
,
Ruby A 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 ...
, and
node.js Node.js is an open-source server environment. Node.js is cross-platform and runs on Windows, Linux, Unix, and macOS. Node.js is a back-end JavaScript runtime environment. Node.js runs on the V8 JavaScript Engine and executes JavaScript code o ...
. 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 Badoo is a dating-focused social network founded by Russian entrepreneur Andrey Andreev in 2006. It is headquartered in Limassol, Cyprus and London, United Kingdom,Odnoklassniki Odnoklassniki ( rus, Одноклассники, t=Classmates) is a social network service used mainly in Russia and former Soviet Republics. The site was developed by Albert Popkov and launched on March 4, 2006. The website currently has more ...
(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 crash ...
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 transmission has finished. A name used for asynchronous I/O in the Windows API is overlappe ...
. 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 style of computer multitasking in which the operating system never initiates a context switch from a running process to another process. Instead, in order to run multiple ...
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 for ...
, hash, bitmap, and R-tree (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 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, Fedora or
Ubuntu Ubuntu ( ) is a Linux distribution based on Debian and composed mostly of free and open-source software. Ubuntu is officially released in three editions: '' Desktop'', ''Server'', and ''Core'' for Internet of things devices and robots. All ...
. 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