Tarantool

Tarantool— платформаin-memoryвычислений с гибкой схемой данных для эффективного создания высоконагруженных приложений. Включает в себябазу данныхисервер приложенийнаLua.
Обладает высокой скоростью работы по сравнению с традиционными СУБД, обладая теми же свойствами:персистентности,транзакционностиACID,репликацииmaster-slave, master-master.
Язык запросов:
Технологии хранения данных:
Для хранения данных используются таплы (кортежи). Это массив с данными, которые не типизированы. Кортежи или таплы объединяются в спейсы. Спейс – это аналог из мира SQL, таблица. Спейс это коллекция таплов, а тапл это коллекция полей.
Поля могут быть одного из следующих типов:
Кортежиорганизованы в пространства (space или таблицы). Для каждого пространства указывается технология хранения (memtx или vinyl).
Пространство должно быть проиндексировано первичным ключом. Также поддерживаются неограниченное количество вторичных ключей.
Ключ может состоять из одного и более полей.
Поддерживаемые индексы:
В качестве формата хранения и протокола передачи данных используетсяMessagePack.
База данных поддерживает асинхронную и синхронную репликацию. Репликация может быть выполнена в виде мастер-мастер.
Для разделения доступа используется традиционная модельACL. У каждого объекта есть владелец имеющий неограниченный доступ. Владелец может предоставить доступ к объекту другим пользователям или ролям. Роль это в свою очередь группа пользователей.
Список разграниченных действий:
База данных поддерживает хранимые процедуры и триггеры написанные на языкеLua.
Глобальный триггер
Триггеры для пространств (таблиц):
Для написания бизнес-логики используется языкLuaи его компиляторLuaJIT.
Сервер приложений содержит высокоуровневыйAPIдля доступа к базе данных, файловой системе, сети.
Пользователь может динамически добавлять, удалять, модифицировать функции. Для одновременного выполнения кода используетсякооперативная многозадачность.
Для расширения сервера приложений доступныLuaбиблиотеки как из репозитория tarantool/rocks так и собранные из исходников.
Список стандартных модулей tarantool-а:
Модули доступные из репозитория tarantool/rocks:
Tarantool имеетAPIи официальные коннекторы для языковC,Java,Go,Python, а так же коннекторы для других языков, которые поддерживаются сообществом.
Mail.ru, крупная интернет-компания в России, начала проект в 2008 году с вложения средств и поиска программистов. В качестве руководителя проекта наняли бывшеготехнического директораизMySQL.
Tarantool стал частью самого портала Mail.ru и сейчас используется для динамического контента: сеансов пользователей, мгновенных сообщений и прочего, а также используется в качестве слоя кэширования для традиционных реляционных баз данных, таких какMySQLилиPostgreSQL.
В 2014 году Tarantool также был принят социальными сетямиBadooиОдноклассники.
В июне 2014 года исследователи изПолитехнического института КоимбрыиУниверситета Коимбры(Португалия) провели первый официальный независимый тест производительности системNoSQL, которые включали в том числе и Tarantool. Испытания использовали стандартныйYCSB-тест, а конкуренцию Tarantool составляли другие системы NoSQL:Cassandra,HBase,Oracle NoSQL(англ.),Redis,Voldemort(англ.),Scalaris,Elasticsearch,MongoDBиOrientDB.
В 2018 году руководитель команды разработки ядра Tarantool Константин Осипов стал лауреатом премииHighLoad++ Awards.В сентябре 2019 года он покинул команду проекта в Mail.ru, создав собственную ветку разработки.