Tarantool | |
---|---|
Тип | NoSQL |
Автор | VK Tech |
Разработчик | VK Tech |
Написана на | Си |
Операционные системы | Linux, FreeBSD, macOS |
Первый выпуск | 2008 |
Последняя версия | 3.1.0 (2024-04-17) |
Репозиторий | github.com/tarantool/tar… |
Лицензия | Упрощенная BSD |
Сайт | tarantool.io |
Tarantool — платформа in-memory вычислений с гибкой схемой данных для эффективного создания высоконагруженных приложений. Включает в себя базу данных и сервер приложений на Lua.
Обладает высокой скоростью работы по сравнению с традиционными СУБД, обладая теми же свойствами: персистентности, транзакционности ACID, репликации master-slave, master-master.
Язык запросов:
Технологии хранения данных:
Для хранения данных используются таплы (кортежи). Это массив с данными, которые не типизированы. Кортежи или таплы объединяются в спейсы. Спейс – это аналог из мира SQL, таблица. Спейс это коллекция таплов, а тапл это коллекция полей.
Поля могут быть одного из следующих типов:
Скалярный/составной | тип MsgPack | тип Lua | Пример |
---|---|---|---|
скалярный | nil | «nil» | msgpack.NULL |
скалярный | булевый | «boolean» | true |
скалярный | строковый | «string» | «A B C» |
скалярный | целочисленный | «number» | 12345 |
скалярный | с плавающей точкой двойной точности | «number» | 1.2345 |
составной | ассоциативный массив | «table» со строковыми ключами | {«a»: 5, «b»: 6} |
составной | массив | «table» с числовыми ключами | [1, 2, 3, 4, 5] |
составной | массив байт | «cdata» |
Кортежи организованы в пространства (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.[1]
В 2014 году Tarantool также был принят социальными сетями Badoo и Одноклассники.[2]
В июне 2014 года исследователи из Политехнического института Коимбры и Университета Коимбры (Португалия) провели первый официальный независимый тест производительности систем NoSQL, которые включали в том числе и Tarantool. Испытания использовали стандартный YCSB-тест, а конкуренцию Tarantool составляли другие системы NoSQL: Cassandra, HBase, Oracle NoSQL (англ.), Redis, Voldemort (англ.), Scalaris, Elasticsearch, MongoDB и OrientDB.[3]
В 2018 году руководитель команды разработки ядра Tarantool Константин Осипов стал лауреатом премии HighLoad++ Awards.[4] В сентябре 2019 года он покинул команду проекта в Mail.ru, создав собственную ветку разработки.[5]