Tarantool: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Quedafoe (обсуждение | вклад) Добавлена информация о коннекторах которые поддерживаются для tarantool, а так же ссылка на определение шардирования(сегментирования) |
|||
(не показано 8 промежуточных версий 7 участников) | |||
Строка 1: | Строка 1: | ||
{{Карточка программы |
{{Карточка программы |
||
| name = Tarantool |
| name = Tarantool |
||
| logo = Logo- |
| 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 = |
| latest release version = 3.1.0 |
||
| latest release date = |
| 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''' — |
'''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> |
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> |
В 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 | |
---|---|
Тип | 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.
Обзор
[править | править код]База данных
[править | править код]Язык запросов:
Технологии хранения данных:
- 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]
Примечания
[править | править код]- ↑ NoSQL matters Cologne 2013 Day2 Track3 05 Konstantin Osipov . Дата обращения: 18 мая 2018. Архивировано 12 марта 2017 года.
- ↑ Tarantool в Badoo: хранение истории посещений. Доклад Антона Поварова на Tarantool Meetup . Дата обращения: 18 мая 2018. Архивировано 19 апреля 2021 года.
- ↑ Архивированная копия . Дата обращения: 18 мая 2018. Архивировано 16 мая 2018 года.
- ↑ HighLoad++ Awards: награда, которую деплоили, деплоили и наконец задеплоили . habr.com. Дата обращения: 10 декабря 2018. Архивировано 9 декабря 2018 года.
- ↑ Главный архитектор СУБД Tarantool ушел из Mail.ru и заявил о «распаде команды» . CNews.ru. Дата обращения: 1 января 2020. Архивировано 1 января 2020 года.
Ссылки
[править | править код]