1. Tarantool 1.5:
хранение данных на диске
Konstantin Osipov,
kostja@tarantool.org
April 09th, 2013
http://techforum.mail.ru
2. Прейскурант
● Новые возможности Tarantool 1.4.9 - 62
р.
● Алгоритмы хранения данных на диске - 165 р.
● Log-structured merge trees в Tarantool - 200 р.
● Компот из сухофруктов
- 20 р.
3. ДЕЙСТВИЕ ПЕРВОЕ, Явление I
Новые возможности 1.4.9:
● 90% ускорение TREE индексов
● BITSET index
● Lua box.socket API
● on_connect/on_disconnect triggers
● См. https://launchpad.net/tarantool/1.4/1.4.9
4. BITSET index: применение
● вычисление логических выражений
● b1 & !b2 || b3 & b4
● наиболее компактный индекс по разреженным данным (1
bit per value vs 16 bytes in TREE)
● поиск по интересам, рекомендательные сети, tag clouds
6. Lua box.socket API
● LuaSocket совместимое API
● box.socket.udp(), box.socket.tcp()
● socket:recv(), send(), readline(), recvfrom(), sendto()
● cерверные сокеты: socket:bind(), socket:listen()
● встроенный асинхронный DNS resolver
● → zero-conf, proactive monitoring via UDP
● → node.js для Lua, но без callbackов!
7. Lua box.socket example
s = box.socket.tcp()
s:connect('google.com', 80)
s:send("GET / HTTP/1.0rnrn")
hdr = s:readline({ "rnrn", "nn"})
body = s:recv(parse_header(hdr).content_length)
8. Lua box.socket: выход на бис
● box.net.box: работа с удалёнными Tarantool/Box
● box.net.mysql, box.net.pg – доступ к MySQL и PostgreSQL
из хранимых процедур
● → single-round-trip database proxy and cache
16. Diskstore: крупный план
● отдельный тип хранения данных, по аналогии с MySQL
storage engine
● 0% performance overhead if not used
● .engine = MEMORY, .engine = LSM
● key/value only (no secondary keys yet)
● оптимально для 50/50 READ-WRITE workload
35. LSM-tree: применение
● Данные с разной степенью актуальности
– Ленты сообщений
– Стена в соцсети
– Чаты
– События
● Сегрегация данных
– Данные в LSM space, индекс в MEMORY space
36. Эпилог
● Tarantool/Box - *fast* in-memory database
● Идеального способа хранения данных на диске не
существует
● Плохих способов реализовано предостаточно
● LSM-деревья оптимальны для часто меняющихся данных
● in-memory + disk-store в одном продукте = возможность
тонко подстроиться под нужды конкретной задачи
38. Действующие лица
Dmitry Simonenko – клиенты, библиотеки Lua, билды
● Dmitry E. Oboukhov, – Perl monger, главный тролль
● Roman Tsisyk, – алгоритмы,
● Konstantin Osipov – продавец-кассир
● … а также актёры ведущих московских театров