• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
 Tarantool_qs
 

Tarantool_qs

on

  • 1,043 views

 

Statistics

Views

Total Views
1,043
Views on SlideShare
538
Embed Views
505

Actions

Likes
0
Downloads
8
Comments
0

3 Embeds 505

http://techforum.mail.ru 494
http://www.techforum.mail.ru 10
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

     Tarantool_qs Tarantool_qs Presentation Transcript

    • Tarantool/Qs,… или об очередях в Tarantoolе Константин Осипов, kostja@tarantool.org
    • 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://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
    • СПАСИБО! Константин ОсиповПрограммист, tarantool.org kostja@tarantool.org