15
Tarantool: chats & comets Константин Осипов

Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

  • Upload
    ontico

  • View
    2.274

  • Download
    6

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

Tarantool: chats & comets

Константин Осипов

Page 2: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

СУБД Tarantool: обзор• 100% данных в оперативной

памяти

• постоянная копия данных на диске

• гибкая модель данных

• есть репликация и бэкап

• хранимые процедуры на Lua

• memcached протокол и binary протокол

Page 3: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

О чём этот доклад• о том, как сделать онлайн чат на Tarantool и Node.JS

• краткий обзор Tarantool

• возможности версии 1.4.4

• обзор 1.4.5

• описание системы дискового хранилища

Page 4: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

Модель данных Tarantool• HASH, TREE индексы

• multipart, unique, non-unique индексы

• STRING, NUM, NUM64 типы

Page 5: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

Tarantool: примерRedis Tarantool (Lua)

redis.set(key, value) box.insert(space, key, value)

redis.get(key) box.select(space, 0, key, value)

redis.getset(key, newkey) box.update(space, key, '=p', 0, newkey)

redis.incr(key) box.update(space, key, '+p', 1, 1)

redis.lpush(key, value) box.update(space, key, '!p', 1, value)

redis.rpush(key, value) You guess it...

Page 6: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

Что нового в 1.4.4Скорость:

• 70+% ускорение INSERT, UPDATE, DELETE

• новый UPDATE O(n), n — количество полей → большие кортежи, быстро

• incremental rehash в HASH индексах

• более компактные TREE индексы

• hardware crc32 (Intel SSE 2.0)

Page 7: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

Inc. Rehash: эффект

Page 8: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

Память: 1 млн кортежей

Page 9: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

Производительность

Page 10: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

Что нового в 1.4.4 (2)Новые возможности:

• поддержка 64-бит чисел в Lua и индексах

• INSERT/DELETE/APPEND полей в кортеже

• .deb и .rpm пакеты

Page 11: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

Tarantool в Debian “Sid”Спасибо Dmitry E. Oboukhov!

Мы ищем мейнтенеров дляSuSE и Fedora

Page 12: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

It's going on in the kitchenНовые возможности 1.4.5:

• Darwin port (Mac OS X)

• HA кластер

• Транзакции

• множество улучшений текущих возможностей

• WebScale & DevNullScale

Page 13: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

Планы на 1.5

• Дисковое хранилище

• Авторизация

• Master-master репликация

• Синхронная репликация

Page 14: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

Disk store для хранения Comet

• Начало каждого кортежа хранится в памяти

• Хвост хранится в B-tree на диске, с использованием кэша

Преимущества:

• Гарантированное время ответа для актуальных данных

• Кэширование исторических данных

• В связке с nginx/node.js — система хранения чатов

Page 15: Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)

Спасибо!