7. Очереди: введение
● СУБД — пионер технологии очередей
● Транзакции необходимы, но не достаточны
● Очереди — основа High Availability и Scalability
8. Очереди: за и против
+ Клиент и сервер полностью «развязаны»
+ Состояние задачи всегда известно
+ Применимо для Load Balancing
+ Поддержка приоритетов
- доп. сущность
- больше операций на задачу
9. Очереди в Web Apps
● Рассылка email
● Сжатие картинок
● Наш use case: avatar prefetching:
10. Tarantool: «очередной» тюнинг
● Развитые Lua процедуры:
–box.fiber, box.cfg, box.space
● Специализированные средства IPC
–box.ifc.channel
● Специализированные структуры данных
– частичные и bitmap индексы
11. Queue API
● За основу взято API beanstalkd
● queue.put(), take(), ack(), delete(), release()
● Учитывает важные вопросы управления очередью:
– Приоритеты
– Таймауты
– Poisoned tasks
12. «Зависшие» задачи
● box.fiber.id(): идентификатор сессии
● Box.fiber.take() присваивает задаче id сессии
● Background fiber находит и удалаятет «зависшие» задачи
13. Ожидание в очереди
● box.ifc.channel(): обмен сообщениями между
процедурами
● channel:put(), channel:get()
● channel:is_full(), channel:has_waiters()
14. Системные каналы
● Оповещают о системных событиях
● on_connect, on_disconnect,
on_snapshot
● pay per use
15. Частичные индексы
● index.type = HASH|TREE
● index.where = lua_function
● Содержит лишь данные,
удовлетворяющие предикату
16. Заключение
● Tarantool/Box — high-performance data
engine
● Tarnatool/Lua — building block для ваших
highload задач
● Tarantool — наш взгляд на то, какой должна
быть удобная СУБД
17. Ссылки
http://github.com/mailru/tarantool - исходный код
http://github.com/mailru/tntlua - репозиторий хранимых процедур
http://nosql-databases.org - обзор альтернатив NoSQL
http://groups.google.com/group/tarantool-ru - список рассылки
http://tarantool.org/dist/ - всегда свежие .tar.gz и .rpm
http://habrahabr.ru/blogs/nosql - NoSQL на хабре
kostja.osipov@gmail.com
http://tarantool.org
18. СПАСИБО!
Константин Осипов
Программист, tarantool.org
kostja@tarantool.org