Upgrade to Pro — share decks privately, control downloads, hide ads and more …

tarantool.pdf

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for dasha dasha
December 08, 2018

 tarantool.pdf

Avatar for dasha

dasha

December 08, 2018
Tweet

Other Decks in Programming

Transcript

  1. ИСТОРИЯ • Разработчик и автор - Mail.ru Group; • Начат

    в 2008 году; • Руководитель проекта – бывший технический директор MySQL; • «Как сэкономить миллион долларов на базе данных на высоконагруженном проекте» 2
  2. “УМНЫЙ” CACHE • Писать сначала в базу, потом в кэш

    (-) • Писать сначала в кэш, потом в базу (-) • ‘Самописный’ демон, который сам пишет в базу и кеширует (+) 3
  3. ОСОБЕННОСТИ 1. Данные хранятся в оперативной памяти; 2. Открытый исходный

    код; 3. Данные защищены логом транзакций; 4. Поддерживается репликация 5. Поддерживает язык запросов SQl + LUA; 6. Tarantool-binary protocol; 7. Клиентские библиотеки на многих языках. 4
  4. ПРОИЗВОДИТЕЛЬНОСТЬ • Хранит все данные в оперативной памяти; • Производительность

    изначально существенно выше чем у традиционных СУБД; • Читает всегда из оперативной памяти 5
  5. МОДЕЛЬ ДАННЫХ • Пространства — это коллекции объектов; • Первый

    элемент кортежа — это первичный ключ; • Типы данных – числа и строки; • Можно делать выборки по отдельным атрибутам кортежа. 6
  6. ОТКАЗОУСТОЙЧИВОСТЬ • Текущее состояние фиксируется в файле ‘snapshot’ • Все

    изменения пишутся в файл ‘WAL’ (write ahead log); • Каждая запись в ’WAL’ имеет порядковый номер ‘LSN’ (log sequence number) 8
  7. ОТКАЗОУСТОЙЧИВОСТЬ • SNAP • 0.13 • Version: 1.9.2-7-g3736c37 • Instance:

    c5d1e3ac-736c-4e92-a390- 13ce02d272d0 • VClock: {1: 2949197, 2: 16387462} ХєєН%i Оzі{ШҐ (µ/э Pt*є˜ ‘\> Х ;ВHГМГЇsЎ˜ѓЖљµЎ©*Ф&•КгЧ"е”LX©€џT m1ПAючЅыя}СжЕ\’н%Фw)лз·€€лв~А›!_rFѓЂЫ©к °Q] 10
  8. LUA - ФУНКЦИИ • Есть встроенные LUA - функции для

    управления БД; • В Tarantool можно писать хранимые функции на LUA; • Можно реализовать фоновые обработчики 15 box.snapshot() box.snapshot()
  9. ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ • В качестве слоя кэширования для традиционных реляционных

    баз данных; • Для динамического контента: сеансов пользователей, мгновенных сообщений; • В 2014 году был принят социальными сетями Badoo и Одноклассники; • Обработка самых «горячих» данных Mail.Ru • Использование в биллинговых системах Мегафона 16
  10. ПЛЮСЫ • Быстрая • Дружественные разработчики tarantool ; • Удобно

    доставать данные БД; • Удобно хранить данные 18