Tarantool

Last updated
Tarantool
Original author(s) VK Tech
Developer(s) VK Tech
Initial release2008
Stable release
2.10.4 / November 11, 2022 (2022-11-11)
Repository
Written in C
Operating system Linux, FreeBSD, macOS
Available in English
Type NoSQL
License Simplified BSD
Website www.tarantool.io

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 and a Lua application server.

Contents

Tarantool maintains data in memory and ensures crash resistance with write-ahead logging 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. 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 social network services Badoo and Odnoklassniki (the latter is affiliated with Mail.Ru since 2010). [3] [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. 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, 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. [6]

In 2017 Tarantool introduced an optional on-disk storage engine which allows databases larger than memory size. [7]

In 2019 Tarantool introduced an optional SQL interface which complies with most of the mandatory features of the official SQL standard. [8]

Distribution

Tarantool comes as part of the official distributions for some Linux distros such as Debian, Fedora or Ubuntu. [9] [10] [11] 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. [12]

Related Research Articles

<span class="mw-page-title-main">Linux distribution</span> Operating system based on the Linux kernel

A Linux distribution is an operating system made from a software collection that includes the Linux kernel, and often a package management system. Linux users usually obtain their operating system by downloading one of the Linux distributions, which are available for a wide variety of systems ranging from embedded devices and personal computers to powerful supercomputers.

<span class="mw-page-title-main">MySQL</span> SQL database engine software

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 organizes data into one or more data tables in which data may be related to each other; these relations help structure the data. SQL is a language that programmers use to create, modify and extract data from the relational database, as well as control user access to the database. In addition to relational databases and SQL, an RDBMS like MySQL works with an operating system to implement a relational database in a computer's storage system, manages users, allows for network access and facilitates testing database integrity and creation of backups.

<span class="mw-page-title-main">PostgreSQL</span> Free and open-source relational database management system

PostgreSQL, also known as Postgres, is a free and open-source relational database management system (RDBMS) emphasizing extensibility and SQL compliance. It was originally named POSTGRES, referring to its origins as a successor to the Ingres database developed at the University of California, Berkeley. In 1996, the project was renamed to PostgreSQL to reflect its support for SQL. After a review in 2007, the development team decided to keep the name PostgreSQL and the alias Postgres.

<span class="mw-page-title-main">Exim</span> Mail transfer agent (written 1995)

Exim is a mail transfer agent (MTA) used on Unix-like operating systems. Exim is a free software distributed under the terms of the GNU General Public License, and it aims to be a general and flexible mailer with extensive facilities for checking incoming e-mail.

In computing, a solution stack or software stack is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications. Applications are said to "run on" or "run on top of" the resulting platform.

<span class="mw-page-title-main">LAMP (software bundle)</span> Acronym for a common web hosting solution

LAMP is an acronym denoting one of the most common software stacks for many of the web's most popular applications. However, LAMP now refers to a generic software stack model and its components are largely interchangeable.

<span class="mw-page-title-main">CNR (software)</span>

CNR, or One-Click & Run, was a free one-click software delivery service that was created to make finding and installing Linux software easier. It assisted the user in finding and installing software on their computer, and sat dormant in the system tray when not in use.

Microsoft SQL Server is a proprietary relational database management system developed by Microsoft. As a database server, it is a software product with the primary function of storing and retrieving data as requested by other software applications—which may run either on the same computer or on another computer across a network. Microsoft markets at least a dozen different editions of Microsoft SQL Server, aimed at different audiences and for workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users.

<span class="mw-page-title-main">RDM Server</span>

RDM Server is an embeddable, heterogeneous, client/server database management system supporting both C/C++ and SQL APIs for programming flexibility. The databases can be disk resident and/or memory resident. RDM Server implements multi-user locking, hot database backup, and a fully ACID-compliant transaction logging system with automatic crash recovery. It is currently supported on many 32- and 64-bit enterprise and embedded operating systems. The database library can optionally be run in-process with the application, eliminating client/server remote procedure calls.

An embedded database system is a database management system (DBMS) which is tightly integrated with an application software; it is embedded in the application. It is a broad technology category that includes:

Empress Embedded Database is a relational database management system that has been embedded into applications, including medical systems, network routers, nuclear power plant monitors, satellite management systems. Empress is an ACID compliant relational database management system (RDBMS) with two-phase commit and several transaction isolation levels for real-time embedded applications. It supports both persistent and in-memory storage of data and works with text, binary, multimedia, as well as traditional data.

DAViCal is a server for calendar sharing. It is an implementation of the CalDAV protocol which is designed for storing calendaring resources on a remote shared server. Although the events are stored in a SQL database the information between client and server is transferred in the iCalendar format.

awesome (window manager) Window manager for X Window System

awesome is a dynamic window manager for the X Window System developed in the C and Lua programming languages. Lua is also used for configuring and extending the window manager. Its development began as a fork of dwm. It aims to be extremely small and fast, yet extensively customizable. It makes it possible for the user to manage windows with the use of keyboard.

GIS Live DVD is a type of the thematic Live CD containing GIS/RS applications and related tutorials, and sample data sets. The general sense of a GIS Live DVD is to demonstrate the power of FLOSS GIS and encourage users to start on FLOSS GIS. However, a disc can be used for GIS data processing and training, too. A disc usually includes some selected Linux-based or Wine (software)-enabled Windows applications for GIS and Remote Sensing use. Using this disc the end users can execute GIS functions to get experience in free and open source software solutions or solve some simple business operations. The set-up and the operating behaviour of the applications can also be studied prior to building real FLOSS GIS-based systems. Recently a LiveDVD image is stored and booted from USB.

Amazon Relational Database Service is a distributed relational database service by Amazon Web Services (AWS). It is a web service running "in the cloud" designed to simplify the setup, operation, and scaling of a relational database for use in applications. Administration processes like patching the database software, backing up databases and enabling point-in-time recovery are managed automatically. Scaling storage and compute resources can be performed by a single API call to the AWS control plane on-demand. AWS does not offer an SSH connection to the underlying virtual machine as part of the managed service.

Linux on IBM Z or Linux on zSystems is the collective term for the Linux operating system compiled to run on IBM mainframes, especially IBM Z / IBM zSystems and IBM LinuxONE servers. Similar terms which imply the same meaning are Linux/390, Linux/390x, etc. The three Linux distributions certified for usage on the IBM Z hardware platform are Red Hat Enterprise Linux, SUSE Linux Enterprise Server, and Ubuntu.

Orthanc is a standalone DICOM server. It is designed to improve the DICOM flows in hospitals and to support research about the automated analysis of medical images. Orthanc lets its users focus on the content of the DICOM files, hiding the complexity of the DICOM format and of the DICOM protocol. It is licensed under the GPLv3.

Lightning Memory-Mapped Database (LMDB) is a software library that provides an embedded transactional database in the form of a key-value store. LMDB is written in C with API bindings for several programming languages. LMDB stores arbitrary key/data pairs as byte arrays, has a range-based search capability, supports multiple data items for a single key and has a special mode for appending records (MDB_APPEND) without checking for consistency. LMDB is not a relational database, it is strictly a key-value store like Berkeley DB and dbm.

Zstandard, commonly known by the name of its reference implementation zstd, is a lossless data compression algorithm developed by Yann Collet at Facebook. Zstd is the reference implementation in C. Version 1 of this implementation was released as open-source software on 31 August 2016.

Kea is an open-source DHCP server developed by the Internet Systems Consortium, authors of ISC DHCP, also known as DHCPd. Kea and ISC DHCP are both implementations of the Dynamic Host Configuration Protocol, a set of standards established by the Internet Engineering Task Force (IETF). Kea software is distributed in source code form on GitHub, from various ISC sites, and through a number of operating system packages. Kea is licensed under the Mozilla Public License 2.0.

References

  1. Gornyy, Alexander (11 May 2016). "Tarantool 1.6: NoSQL база данных и application server в одном флаконе". Mail.Ru Group.
  2. Osipov, Konstantin. "Tarantool persistent in-memory queues". NoSQL matters.
  3. Povarov, Anton. "Tarantool в Badoo: хранение истории посещений". Badoo Development.
  4. "DST completes purchase of Odnoklassniki.ru, exits Nasza-Klasa.pl". TechCrunch. 31 August 2010.
  5. Popescu, Alex; Bacalu, Ana-Maria. "Tarantool/Silverbox: Another In-Memory Key-Value Store from Mail.Ru". MyNoSQL.
  6. "Tarantool User Guide".
  7. "Storing data with Vinyl". Tarantool.
  8. "User's Guide / SQL". Tarantool.
  9. "Package: Tarantool". Debian.
  10. "Package: tarantool In-memory database with Lua application server". Fedora.
  11. "Package: tarantool In-memory database with Lua application server". Ubuntu.
  12. "Tarantool Rocks". Tarantool. Retrieved 30 December 2016.