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.[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] Примечания
Ссылки
|