Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)

9,363 views

Published on

Tarantool - отечественная Opensource NoSQL база данных.

В докладе мы обсудим:
- Какое место занимают NoSQL базы данных в highload проектах?
Почему и для чего вам стоит NoSQL решения?
Какие NoSQL решения вы можете использовать?
- Рассмотрим, что из себя представляет Tarantool 1.6 - база данных и сервер приложений в одном лице.
Какие основные особенности Tarantool как NoSQL базы данных?
Lua как встроенный язык сервера приложений.
- Посмотрим, как можно начать использовать Tarantool в своих проектах, и сделаем первые шаги.
Как установить Tarantool.
Первый запуск и основы конфигурирования.
Модель данных.
Как создавать и работать с хранилищем данных.
Как использовать пакеты tarantool.
- Узнаем об интересных модулях и фичах Tarantool
Чем полезен application server
Tarantool http
Tarantool queue
- Познакомимся с сообществом Tarantool opensource
Почему сообщество - это важно?
Чем полезны opensource проекты начинающему разработчику?

Published in: Engineering
  • Be the first to comment

Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)

  1. 1. Осваиваем Tarantool Шадрин Евгений
  2. 2. Что такое NoSQL? • Не только SQL • Простота масштабирования • Производительность в конкретных задачах • Удобство и простота использования
  3. 3. Мир NoSQL
  4. 4. Выбор решения • Не стоит изобретать велосипед • Исходите из задачи • Опирайтесь на опыт других • Выбирайте, что знаете
  5. 5. Использование NoSQL • «Кэширование» данных memcached ● Большие объемы данных Hbase • Сервисы очередей redis • Платформы для статистики и обработки данных redis • Удобный бекенд для хранения mongoDB
  6. 6. Tarantool A NoSQL database running in a Lua application server try.tarantool.org
  7. 7. Особенности Tarantool • Все данные в памяти • Документно-ориентированная модель данных • Вторичные индексы • Транзакции • Легковесные потоки • Работа с сетью и файлами
  8. 8. script.lua #!/usr/bin/tarantool -- This is lua script function hw(a, b) print (a.hello..b.world) end b = {} a = { hello = 'Hello ' } b['world'] = 'world!' hw(a, b)`
  9. 9. #!/usr/bin/tarantool -- Tarantool init script local log = require('log') local console = require('console') local server = require('http.server') local HOST = 'localhost' local PORT = 8008 box.cfg { log_level = 5, slab_alloc_arena = 1, } console.listen('127.0.0.1:33013') if not box.space.users then s = box.schema.space.create('users') s:create_index('primary', {type = 'tree', parts = {1, 'NUM'}}) end init.lua
  10. 10. function handler(self) local id = self:cookie('tarantool_id') local ip = self.peer.host local data = '' log.info('Users id = %s', id) if not id then data = 'Welcome to tarantool server!' box.space.users:auto_increment({ip}) id = box.space.users:len() return self:render({ text = data}): setcookie({ name = 'tarantool_id', value = id, expires = '+1y' }) else local count = box.space.users:len() data = 'You id is ' .. id .. '. We have ' .. count .. ' users' return self:render({ text = data }) end end httpd = server.new(HOST, PORT) httpd:route({ path = '/' }, handler) httpd:start()
  11. 11. Lua • Простой • Структуры данных – таблицы • Быстрый luajit (luafun) • Удобная интеграция с С • tarantool – Lua интерпретатор
  12. 12. tarantool> • /usr/bin/tarantool • tarantool> print(‘Ola lua’) Стартовый скрипт init.lua • /usr/bin/tarantool init.lua Запуск
  13. 13. box.cfg box.cfg { log_level = 5, slab_alloc_arena = 1, } Пакет box box.cfg, box.info, box.slab, box.stat
  14. 14. box.cfg tarantool> box.cfg --- - snapshot_count: 6 slab_alloc_arena: 1 background: false snapshot_period: 3600 log_level: 5 snap_dir: . wal_dir: . ...
  15. 15. box.info tarantool> box.info.pid --- - 17922 ... tarantool> box.info.version --- - 1.6.5-98-ge279a5f ... tarantool> box.info.uptime --- - 143 ... tarantool> box.info.status --- - running ...
  16. 16. Модель данных
  17. 17. База данных if not box.space.users then s = box.schema.space.create('users') s:create_index('primary', {type = 'tree', parts = {1, 'NUM'}}) end box.space.users:auto_increment({ip}) local count = box.space.users:len()
  18. 18. Lua application server ● https://github.com/tarantool ● tarantool http ● tarantool queue ● try.tarantool.org ● Rocks репозиторий
  19. 19. Пакеты console = require('console') log = require('log') console.listen('127.0.0.1:33013') log.info('Tarantool start') Консоль администратора --------------------------- $ rlwrap telnet 0 33013 Trying 0.0.0.0... Connected to 0. Escape character is '^]'. Tarantool 1.6.5-98-ge279a5f (Lua console) type 'help' for interactive help
  20. 20. Tarantool http local server = require('http.server') httpd = server.new(HOST, PORT) httpd:route({ path = '/' }, handler) httpd:start() return self:render({ text = data}): setcookie({ name = 'tarantool_id', value = id, expires = '+1y' })
  21. 21. Tarantool http ● Сервер ● Клиент ● Куки ● Lua внутри Template
  22. 22. #!/usr/bin/tarantool -- Tarantool init script local log = require('log') local console = require('console') local server = require('http.server') local HOST = 'localhost' local PORT = 8008 box.cfg { log_level = 5, slab_alloc_arena = 1, } console.listen('127.0.0.1:33013') if not box.space.users then s = box.schema.space.create('users') s:create_index('primary', {type = 'tree', parts = {1, 'NUM'}}) end init.lua
  23. 23. function handler(self) local id = self:cookie('tarantool_id') local ip = self.peer.host local data = '' log.info('Users id = %s', id) if not id then data = 'Welcome to tarantool server!' box.space.users:auto_increment({ip}) id = box.space.users:len() return self:render({ text = data}): setcookie({ name = 'tarantool_id', value = id, expires = '+1y' }) else local count = box.space.users:len() data = 'You id is ' .. id .. '. We have ' .. count .. ' users' return self:render({ text = data }) end end httpd = server.new(HOST, PORT) httpd:route({ path = '/' }, handler) httpd:start()
  24. 24. Пакеты • json • fiber • yaml • digest • socket • msgpack • fio • net.box
  25. 25. Fibers • Модель green threads • Быстро создаются • Хорошая производительность переключения fiber.create() fiber.sleep() fiber_object:cancel() fiber.time()
  26. 26. Документация • tarantool.org (documentation, downloads) • Поддержка большинства unix подобных систем (buildbot), сопровождение пакетов • Связь с разработчиками
  27. 27. Opensource
  28. 28. Итоги ● Своя сфера применения ● Инструмент разработки – это важно ● Идея и цель – важнее ● tarantool – совсем не сложный
  29. 29. Спасибо за внимание! shadrin.e@gmail.com

×