Tarantool_qs

1,523 views
1,515 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,523
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tarantool_qs

  1. 1. Tarantool/Qs,… или об очередях в Tarantoolе Константин Осипов, kostja@tarantool.org
  2. 2. Quiz: что вы знаете о Tarantool● Какие есть типы данных?● Какие есть типы индексов?● Как делаются бэкапы?● В чём главное отличие от Redis?
  3. 3. Tarantool: главные факты● In memory, write ahead logged● Безразмерные пространства кортежей● HASH, TREE индексы● Lua процедуры● Replication & Backup
  4. 4. Архитектура сервера
  5. 5. Архитектура сервера
  6. 6. Очереди: введение● СУБД — пионер технологии очередей● Транзакции необходимы, но не достаточны● Очереди — основа High Availability и Scalability
  7. 7. Очереди: за и против+ Клиент и сервер полностью «развязаны»+ Состояние задачи всегда известно+ Применимо для Load Balancing+ Поддержка приоритетов- доп. сущность- больше операций на задачу
  8. 8. Очереди в Web Apps● Рассылка email● Сжатие картинок● Наш use case: avatar prefetching:
  9. 9. Tarantool: «очередной» тюнинг● Развитые Lua процедуры: –box.fiber, box.cfg, box.space● Специализированные средства IPC –box.ifc.channel● Специализированные структуры данных – частичные и bitmap индексы
  10. 10. Queue API● За основу взято API beanstalkd● queue.put(), take(), ack(), delete(), release() ● Учитывает важные вопросы управления очередью: – Приоритеты – Таймауты – Poisoned tasks
  11. 11. «Зависшие» задачи● box.fiber.id(): идентификатор сессии● Box.fiber.take() присваивает задаче id сессии● Background fiber находит и удалаятет «зависшие» задачи
  12. 12. Ожидание в очереди● box.ifc.channel(): обмен сообщениями между процедурами● channel:put(), channel:get()● channel:is_full(), channel:has_waiters()
  13. 13. Системные каналы● Оповещают о системных событиях● on_connect, on_disconnect, on_snapshot● pay per use
  14. 14. Частичные индексы● index.type = HASH|TREE● index.where = lua_function● Содержит лишь данные, удовлетворяющие предикату
  15. 15. Заключение● Tarantool/Box — high-performance data engine● Tarnatool/Lua — building block для ваших highload задач● Tarantool — наш взгляд на то, какой должна быть удобная СУБД
  16. 16. Ссылки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 на хабре kostja.osipov@gmail.com http://tarantool.org
  17. 17. СПАСИБО! Константин ОсиповПрограммист, tarantool.org kostja@tarantool.org

×