Tarantool: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Добавлена информация о коннекторах которые поддерживаются для tarantool, а так же ссылка на определение шардирования(сегментирования)
 
(не показано 8 промежуточных версий 7 участников)
Строка 1: Строка 1:
{{Карточка программы
{{Карточка программы
| name = Tarantool
| name = Tarantool
| logo = Logo-tarantool-black-font.svg
| logo = Logo-Tarantool-2023.png
| screenshot =
| screenshot =
| caption =
| caption =
| genre = [[NoSQL]]
| genre = [[NoSQL]]
| author = [[VK (компания)|VK]]
| author = [[VK (компания)|VK Tech]]
| developer = [[VK (компания)|VK]]
| developer = [[VK (компания)|VK Tech]]
| programming language = [[Си (язык программирования)|Си]]
| programming language = [[Си (язык программирования)|Си]]
| operating system = [[Linux]], [[FreeBSD]], [[macOS]]
| operating system = [[Linux]], [[FreeBSD]], [[macOS]]
| released = 2008
| released = 2008
| latest release version = 2.7.2
| latest release version = 3.1.0
| latest release date = 21 апреля 2021 года
| latest release date = 2024-04-17
| license = [[Лицензия BSD|Упрощенная BSD]]
| license = [[Лицензия BSD|Упрощенная BSD]]
| website = {{URL|https://www.tarantool.io/}}
| website = {{URL|https://www.tarantool.io/}}
}}
}}
'''Tarantool''' — это платформа [[Резидентная база данных|in-memory]] вычислений с гибкой схемой данных для эффективного создания высоконагруженных приложений. Включает в себя [[База данных|базу данных]] и [[сервер приложений]] на [[Lua]].
'''Tarantool''' — платформа [[Резидентная база данных|in-memory]] вычислений с гибкой схемой данных для эффективного создания высоконагруженных приложений. Включает в себя [[База данных|базу данных]] и [[сервер приложений]] на [[Lua]].


Обладает высокой скоростью работы по сравнению с традиционными СУБД, обладая теми же свойствами: [[:en:Persistence (computer science)|персистентности]], [[транзакционность|транзакционности]] [[ACID]], [[Репликация (вычислительная техника)|репликации]] master-slave, master-master.
Обладает высокой скоростью работы по сравнению с традиционными СУБД, обладая теми же свойствами: [[:en:Persistence (computer science)|персистентности]], [[транзакционность|транзакционности]] [[ACID]], [[Репликация (вычислительная техника)|репликации]] master-slave, master-master.
Строка 129: Строка 129:


Модули доступные из репозитория tarantool/rocks:
Модули доступные из репозитория tarantool/rocks:
* vshard — шардирование и репликация данных для горизонтального масштабирования сервиса
* vshard — [[Сегментирование (базы данных)|шардирование]] и репликация данных для горизонтального масштабирования сервиса
* avro-schema — валидация и преобразование сложных структур данных
* avro-schema — валидация и преобразование сложных структур данных
* date — манипуляция с датой и временем
* date — манипуляция с датой и временем

== Коннекторы ==
Tarantool имеет [[API]] и официальные коннекторы для языков [[Си (язык программирования)|C]], [[Java]], [[Go]], [[Python]], а так же коннекторы для других языков, которые поддерживаются сообществом.


== История ==
== История ==
Строка 137: Строка 140:
[[Mail.ru]], крупная интернет-компания в России, начала проект в 2008 году с вложения средств и поиска программистов. В качестве руководителя проекта наняли бывшего [[технический директор|технического директора]] из [[MySQL]].
[[Mail.ru]], крупная интернет-компания в России, начала проект в 2008 году с вложения средств и поиска программистов. В качестве руководителя проекта наняли бывшего [[технический директор|технического директора]] из [[MySQL]].


Tarantool стал частью самого портала Mail.ru и сейчас используется для динамического контента: сеансов пользователей, мгновенных сообщений и прочего, а также используется в качестве слоя кэширования для традиционных реляционных баз данных, таких как [[MySQL]] или [[PostgreSQL]].<ref>[http://vimeo.com/66713654 NoSQL matters Cologne 2013 Day2 Track3 05 Konstantin Osipov]</ref>
Tarantool стал частью самого портала Mail.ru и сейчас используется для динамического контента: сеансов пользователей, мгновенных сообщений и прочего, а также используется в качестве слоя кэширования для традиционных реляционных баз данных, таких как [[MySQL]] или [[PostgreSQL]].<ref>{{Cite web |url=http://vimeo.com/66713654 |title=NoSQL matters Cologne 2013 Day2 Track3 05 Konstantin Osipov |access-date=2018-05-18 |archive-date=2017-03-12 |archive-url=https://web.archive.org/web/20170312195343/https://vimeo.com/66713654 |deadlink=no }}</ref>


В 2014 году Tarantool также был принят социальными сетями [[Badoo]] и [[Одноклассники (социальная сеть)|Одноклассники]].<ref>[https://www.youtube.com/watch?v=O-MGE3wHkqs Tarantool в Badoo: хранение истории посещений. Доклад Антона Поварова на Tarantool Meetup]</ref>
В 2014 году Tarantool также был принят социальными сетями [[Badoo]] и [[Одноклассники (социальная сеть)|Одноклассники]].<ref>{{Cite web |url=https://www.youtube.com/watch?v=O-MGE3wHkqs |title=Tarantool в Badoo: хранение истории посещений. Доклад Антона Поварова на Tarantool Meetup |access-date=2018-05-18 |archive-date=2021-04-19 |archive-url=https://web.archive.org/web/20210419231857/https://www.youtube.com/watch?v=O-MGE3wHkqs |deadlink=no }}</ref>


В июне 2014 года исследователи из [[Политехнический институт Коимбры|Политехнического института Коимбры]] и [[Университет Коимбры|Университета Коимбры]] (Португалия) провели первый официальный независимый тест производительности систем [[NoSQL]], которые включали в том числе и Tarantool. Испытания использовали стандартный [[YCSB-тест]], а конкуренцию Tarantool составляли другие системы NoSQL: [[Cassandra]], [[HBase]], [[Oracle NoSQL]] ([[:en:Oracle NoSQL Database|англ.]]), [[Redis]], [[Voldemort]] ([[:en:Voldemort (distributed data store)|англ.]]), [[Scalaris]], [[Elasticsearch]], [[MongoDB]] и [[OrientDB]].<ref>http://airccse.org/journal/ijdms/papers/6314ijdms01.pdf</ref>
В июне 2014 года исследователи из [[Политехнический институт Коимбры|Политехнического института Коимбры]] и [[Университет Коимбры|Университета Коимбры]] (Португалия) провели первый официальный независимый тест производительности систем [[NoSQL]], которые включали в том числе и Tarantool. Испытания использовали стандартный [[YCSB-тест]], а конкуренцию Tarantool составляли другие системы NoSQL: [[Cassandra]], [[HBase]], [[Oracle NoSQL]] ([[:en:Oracle NoSQL Database|англ.]]), [[Redis]], [[Voldemort]] ([[:en:Voldemort (distributed data store)|англ.]]), [[Scalaris]], [[Elasticsearch]], [[MongoDB]] и [[OrientDB]].<ref>{{Cite web |url=http://airccse.org/journal/ijdms/papers/6314ijdms01.pdf |title=Архивированная копия |access-date=2018-05-18 |archive-date=2018-05-16 |archive-url=https://web.archive.org/web/20180516160919/http://airccse.org/journal/ijdms/papers/6314ijdms01.pdf |deadlink=no }}</ref>


В 2018 году руководитель команды разработки ядра Tarantool Константин Осипов стал лауреатом премии [[HighLoad|HighLoad++ Awards]].<ref>{{Cite web|url=https://habr.com/article/429962/|title=HighLoad++ Awards: награда, которую деплоили, деплоили и наконец задеплоили|publisher=habr.com|lang=ru|accessdate=2018-12-10}}</ref> В сентябре 2019 года он покинул команду проекта в Mail.ru, создав собственную ветку разработки.<ref>{{Cite web|url=https://www.cnews.ru/news/top/2019-09-09_iz_mailru_ushel_sozdatel_samogo|title=Главный архитектор СУБД Tarantool ушел из Mail.ru и заявил о «распаде команды»|publisher=CNews.ru|accessdate=2020-01-01}}</ref>
В 2018 году руководитель команды разработки ядра Tarantool Константин Осипов стал лауреатом премии [[HighLoad|HighLoad++ Awards]].<ref>{{Cite web|url=https://habr.com/article/429962/|title=HighLoad++ Awards: награда, которую деплоили, деплоили и наконец задеплоили|publisher=habr.com|lang=ru|accessdate=2018-12-10|archive-date=2018-12-09|archive-url=https://web.archive.org/web/20181209221811/https://habr.com/article/429962/|deadlink=no}}</ref> В сентябре 2019 года он покинул команду проекта в Mail.ru, создав собственную ветку разработки.<ref>{{Cite web|url=https://www.cnews.ru/news/top/2019-09-09_iz_mailru_ushel_sozdatel_samogo|title=Главный архитектор СУБД Tarantool ушел из Mail.ru и заявил о «распаде команды»|publisher=CNews.ru|accessdate=2020-01-01|archive-date=2020-01-01|archive-url=https://web.archive.org/web/20200101082615/https://www.cnews.ru/news/top/2019-09-09_iz_mailru_ushel_sozdatel_samogo|deadlink=no}}</ref>


== Примечания ==
== Примечания ==

Текущая версия от 10:07, 18 июля 2024

Tarantool
Логотип программы 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
  • документо-ориентированные запросы на языке Lua

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

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

Для хранения данных используются таплы (кортежи). Это массив с данными, которые не типизированы. Кортежи или таплы объединяются в спейсы. Спейс – это аналог из мира 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).

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

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

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

  • 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 форматом данных
  • decimal — арифметика с десятичной плавающей точкой (например, денежная)
  • 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 — манипуляция с датой и временем

Коннекторы

[править | править код]

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]

Примечания

[править | править код]
  1. NoSQL matters Cologne 2013 Day2 Track3 05 Konstantin Osipov. Дата обращения: 18 мая 2018. Архивировано 12 марта 2017 года.
  2. Tarantool в Badoo: хранение истории посещений. Доклад Антона Поварова на Tarantool Meetup. Дата обращения: 18 мая 2018. Архивировано 19 апреля 2021 года.
  3. Архивированная копия. Дата обращения: 18 мая 2018. Архивировано 16 мая 2018 года.
  4. HighLoad++ Awards: награда, которую деплоили, деплоили и наконец задеплоили. habr.com. Дата обращения: 10 декабря 2018. Архивировано 9 декабря 2018 года.
  5. Главный архитектор СУБД Tarantool ушел из Mail.ru и заявил о «распаде команды». CNews.ru. Дата обращения: 1 января 2020. Архивировано 1 января 2020 года.