WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
Tarantool
Тип NewSQL
Автор Mail.Ru Group
Разработчик Mail.Ru Group
Написана на Си
Операционная система Linux, FreeBSD, OS X
Первый выпуск 2008
Последняя версия 1.10.2 (2018-10-13)
Тестовая версия 2.1.1
Лицензия Упрощенная BSD
Сайт tarantool.io

Tarantool представляет собой решение с открытым исходным кодом, совмещающее систему управления базой данных и неблокирующий сервер приложений на Lua.

База данных обладает высокой скоростью работы по сравнению с традиционными СУБД, обладая теми же свойствами: персистентности, транзакционности ACID, репликации master-slave, master-master.

Обзор

СУБД

Язык запросов:

  • SQL
  • документо-ориентированные запросы на языке Lua

Технологии хранения данных:

  • memtx - хранение всех данных в оперативной памяти, с дисковыми снимками данных и логом транзакций
  • vinyl - хранение данных на жестком диске, с оптимизацией для быстрой вставки данных

Единицей хранения является кортеж (tuple или строка). Кортеж состоит из одного и более полей.

Поля могут быть одного из следующих типов:

Скалярный/составнойтип 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).

Пространство должно быть проиндексировано первичным ключом. Также поддерживаются неограниченное количество вторичных ключей.

Ключ может состоять из одного и более полей.

Поддерживаемые индексы:

  • TREE (дерево) — для быстрого поиска значений и возможности итерации.
  • HASH (хеш-таблица, только для memtx) — для еще более быстрого поиска значений.
  • BITSET (битовая маска, только для memtx) — возможность поиска по битовым маскам.
  • RTREE (многомерное R*-дерево, только для memtx) — для быстрого поиска ближайших соседей (KNN) и точек в заданных многомерных параллелепипедах с заданными функциями расстояния между двумя точками.

В качестве формата хранения и протокола передачи данных используется MessagePack.

База данных поддерживает асинхронную репликацию. Репликация может быть выполнена в виде мастер-мастер.

Для разделения доступа используется традиционная модель ACL. У каждого объекта есть владелец имеющий неограниченный доступ. Владелец может предоставить доступ к объекту другим пользователям или ролям. Роль это в свою очередь группа пользователей.

Список разграниченных действий:

  • read
  • write
  • execute
  • create
  • alter
  • drop

База данных поддерживает хранимые процедуры триггеры написанные на языке Lua.

Глобальный триггер

  • box_once - первый запуск бд (бутстрап)

Триггеры для пространств (таблиц):

  • on_replace - триггер только для чтения на события вставка, обновления, удаления данных
  • before_replace - триггер с возможностью модификации событий вставки, обновления, удаления данных

Сервер приложений

Для написания бизнес-логики используется язык Lua и его компилятор LuaJIT.

Сервер приложений содержит высокоуровневое API для доступа к базе данных, файловой системе, сети.

Пользователь может динамически добавлять, удалять, модифицировать функции. Для одновременного выполнения кода используется кооперативная мультизадачность.

Для расширения сервера приложений доступны Lua библиотеки как из репозитория tarantool/rocks так и собранные из исходников.

Список стандартных модулей tarantool-а:

  • box - доступ к СУБД
  • clock - системное время
  • crypto - криптографические функции
  • csv - работа с CSV форматом данных
  • digest - хеширование строк
  • errno - доступ к переменной системных ошибок *nix
  • fiber - многопоточность и инструменты синхронизации
  • fio - работа с файловой системой, ввод/вывод
  • fun - функциональное программирование
  • iconv - работа с текстом в разных кодировках
  • json - работа с JSON форматом данных
  • log - логирование событий
  • msgpack - работа с MsgPack форматом данных
  • net.box - модуль связи tarantool-ов между собой
  • os - небольшая часть основных команд операционной системы
  • pickle - сериализация/десериализация Lua структур
  • socket - работа с сетью
  • string - утилиты для работы со строками
  • tap - фреймворк для модульного тестирования
  • uuid - работа с UUID
  • uri - работа с форматом uri
  • yaml - работа с YAML форматом данных

Модули доступные из репозитория tarantool/rocks:

  • vshard - шардирование и репликация данных для горизонтального масштабирования сервиса
  • avro-schema - валидация и преобразование сложных структур данных
  • date - манипуляция с датой и временем
  • ldecnumber - арифметика с десятичной плавающей точкой (например, денежная)

История

Mail.Ru, крупная интернет-компания в России, начала проект в 2008 году c вложения средств и поиска программистов. В качестве руководителя проекта наняли бывшего технического директора из 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]

Примечания

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии