Quiz: что вы знаете о Tarantool
● Какие есть типы данных?
● Какие есть типы индексов?
● Как делаются бэкапы?
● В чём главное отличие от Redis?
Tarantool: главные факты
● In memory, write ahead logged
● Безразмерные пространства кортежей
● HASH, TREE индексы
● Lua процедуры
● Replication & Backup
Архитектура сервера
Архитектура сервера
Очереди: введение
● СУБД — пионер технологии очередей● Транзакции необходимы, но не достаточны● Очереди — основа High Availability и Scalability
Очереди: за и против
+ Клиент и сервер полностью «развязаны»
+ Состояние задачи всегда известно
+ Применимо для Load Balancing
+ Поддержка приоритетов
- доп. сущность
- больше операций на задачу
Очереди в Web Apps● Рассылка email
● Сжатие картинок
● Наш use case: avatar prefetching:
Tarantool: «очередной» тюнинг
● Развитые Lua процедуры:
– box.fiber, box.cfg, box.space● Специализированные средства IPC
– box.ifc.channel● Специализированные структуры данных
– частичные и bitmap индексы
Queue API
● За основу взято API beanstalkd
● queue.put(), take(), ack(), delete(), release()
● Учитывает важные вопросы управления очередью:
– Приоритеты
– Таймауты
– Poisoned tasks
«Зависшие» задачи
● box.fiber.id(): идентификатор сессии
● Box.fiber.take() присваивает задаче id сессии
● Background fiber находит и удалаятет «зависшие» задачи
Ожидание в очереди
● box.ifc.channel(): обмен сообщениями между процедурами
● channel:put(), channel:get()
● channel:is_full(), channel:has_waiters()
Системные каналы
● Оповещают о системных событиях● on_connect, on_disconnect,
on_snapshot● pay per use
Частичные индексы
● index.type = HASH|TREE● index.where = lua_function● Содержит лишь данные,
удовлетворяющие предикату
Заключение● Tarantool/Box — high-performance data
engine● Tarnatool/Lua — building block для ваших
highload задач● Tarantool — наш взгляд на то, какой должна
быть удобная СУБД
Ссылки
http://tarantool.org
http://github.com/mailru/tarantool - исходный кодhttp://github.com/mailru/tntlua - репозиторий хранимых процедурhttp://nosql-databases.org - обзор альтернатив NoSQLhttp://groups.google.com/group/tarantool-ru - список рассылкиhttp://tarantool.org/dist/ - всегда свежие .tar.gz и .rpmhttp://habrahabr.ru/blogs/nosql - NoSQL на хабре
Recommended