Tarantool

Last updated
Tarantool
Original author(s) VK Tech
Developer(s) VK Tech
Initial release2008
Stable release
3.3.0 / November 29, 2024 (2024-11-29)
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, Golang, 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 that includes the Linux kernel for its kernel functionality. Although the name does not imply product distribution per se, a distro, if distributed on its own, is often obtained via a website intended specifically for the purpose. Distros have been designed for a wide variety of systems ranging from personal computers to servers and from embedded devices to 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 object 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. PostgreSQL features transactions with atomicity, consistency, isolation, durability (ACID) properties, automatically updatable views, materialized views, triggers, foreign keys, and stored procedures. It is supported on all major operating systems, including Windows, Linux, macOS, FreeBSD, and OpenBSD, and handles a range of workloads from single machines to data warehouses, data lakes, or web services with many concurrent users.

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

A LAMP is one of the most common software stacks for the web's most popular applications. Its generic software stack model has largely interchangeable components.

A Debian Pure Blend is a project completely inside of Debian targeting a server or a desktop installation in very broad and general terms.

<span class="mw-page-title-main">PulseAudio</span> Sound server for Unix-like operating systems

PulseAudio is a network-capable sound server program distributed via the freedesktop.org project. It runs mainly on Linux, including Windows Subsystem for Linux on Microsoft Windows and Termux on Android; various BSD distributions such as FreeBSD, OpenBSD, and macOS; as well as Illumos distributions and the Solaris operating system. It serves as a middleware in between applications and hardware and handles raw PCM audio streams.

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.

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:

<span class="mw-page-title-main">WeeChat</span> IRC client

WeeChat is a free and open-source Internet Relay Chat client that is designed to be light and fast. It is released under the terms of the GNU GPL-3.0-or-later and has been developed since 2003.

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, though has differed considerably since. 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 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 is a lossless data compression algorithm developed by Yann Collet at Facebook. Zstd is the corresponding reference implementation in C, 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.