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 проекты начинающему разработчику?
7. Особенности
Tarantool
• Все данные в памяти
• Документно-ориентированная
модель данных
• Вторичные индексы
• Транзакции
• Легковесные потоки
• Работа с сетью и файлами
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. 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.
12. Lua
• Простой
• Структуры данных – таблицы
• Быстрый luajit (luafun)
• Удобная интеграция с С
• tarantool – Lua интерпретатор
18. База данных
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()
23. #!/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
24. 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()