2017 ááœááºá áá»áœááºá¯ááºááá¯á·ááẠAlfa-Bank á áááºážááŸá®ážááŒáŸá¯ááºááŸá¶ááŸá¯áá¯ááºáááºážá á¡áá±á¬ááºážá¡áááºááá¯ááºáᬠá¡áááá¡áá»ááºá¡áá»á¬ááᯠááœá¶á·ááŒáá¯ážááá¯ážáááºá
á±ááẠááŒáá¯ááºááá¯ááºááŸá¯áá
áºáá¯ááᯠá¡ááá¯ááºááá²á·ááŒá®áž (HighLoad++ 2018 ááœáẠáááºážááŸá®ážááŒáŸá¯ááºááŸá¶ááŸá¯áá¯ááºáááºážá á¡áááá¡áá»ááºá¡áá»á¬áá»áá±á¬ á¡á
á®áááºáá¶á
á¬ááŸáá·áºá¡áá° á¡áá¯ááºá
áááºáá²á·áááºá
ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ áá¯ááºáááºážá
ááºá¡ááœááºážá á
áá
áºááẠááŒá±á¬ááºážáá²áá¬ááŒá®áž áá¯ááºáá±á¬ááºááá¯ááºá
áœááºážáá»á¬áž áááŸááá¬áᬠáá
áºáá»áááºáá»áááºááœáẠáá»áœááºá¯ááºááá¯á·ááẠáááá»á
áœá¬áááºááŸááºáá¬ážáá±á¬ á¡áá¯ááºáá»á¬ážááᯠááŒá±ááŸááºážááẠáááºáá®ážáá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážáá±á¬á·ááºáá²ááẠáá
áºá
á¯á¶áá
áºáá¬ááᯠáá¯á¶áá±á¬ááºáá²á¡ááŒá
ẠááŒá±á¬ááºážáá²áá±ááŒá±á¬ááºáž ááááŸáááá¯ááºááá«áááºá áááºááá¯ááºááá¯ááŸá±á¬ááºááŸá¯ááŒáá·áº ááŒáá·áºáá±áá¬ážáá±á¬ á¡ááºááºáá®áá±ážááŸááºážáá»á¬ážááᯠáááºáá±á¬ááºáááºá¡ááœáẠá
áá
áº. áá»áœááºá¯ááºááá¯á· áááŸááá²á·áá±á¬ á¡ááœá±á·á¡ááŒá¯á¶ááẠáá¯ááºáá¯ááºá¡áá
áºá á¡ááŒá±áá¶ááᯠááŒá
áºáá±á«áºá
á±áááº-
TDG áááá¯áá¬ááŸáá·áº ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºáááºážá
ááºá¡ááœááºáž áá»áœááºá¯ááºááá¯á·áá±á¬ááºááŸááá¬áá±á¬ ááŒá±ááŸááºážáááºážáá»á¬ážá¡ááŒá±á¬ááºáž ááŒá±á¬ááŒááá¯áááºá áááºááá¯ááºáá±á¬ááºááá¯ááºá
áœááºážááᯠááááºáááºáá±ážááŒá®áž áá»áœááºá¯ááºááá¯á·ááá¯ááºáá¯ááºááẠááŒá®ážááŒáá·áºá
á¯á¶áá±á¬ááŒá±ááŸááºážáá»ááºáááºáá±á¬ááºááŸá¯á¡ááœáẠá¡ááŒá±áá¶ááŒá
áºáá¬ááá¯ááºáá¯á¶ááᯠááŒáááá¯áá«áááºá
áááá¯áá¬á¡áá áá»áœááºá¯ááºááá¯á·ááẠá
áá
áºá¡á¬áž áá®ážááŒá¬ážááœá²áá¬ážáááºá á¡áááºážááá¹ááá»á¬ážáá
áºáá¯á
á®ááẠááŒá¿áá¬á¡áá»áá¯ážáá»áá¯ážááᯠááŒá±ááŸááºážááẠáá¬áááºááŸááááºá áááºáááºáá±ááá·áº á¡ááá®áá±ážááŸááºážáá
áºáá¯ááẠáá
áºáᯠááá¯á·ááá¯áẠáá
áºáá¯áááºááá¯áá±á¬ á¡áááºážááá¹áá¡áá»áá¯ážá¡á
á¬ážáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºá á¡á
á¯á¡ááœá²á·áá
áºáá¯ááœáẠá¡áá»áá¯ážá¡á
á¬ážáá°á á¡áááºážááá¹ááá»á¬ážá
áœá¬ ááŸáááá¯ááºáááº-
connector
Connector ááẠááŒááºáááá¹áá¬ááŸáá·áº áááºááœááºááŸá¯á¡ááœáẠáá¬áááºááŸááá«áááºá áááºážááá¬áááºááŸá¬ áá±á¬ááºážááá¯áá»ááºááᯠáááºáá¶áááºá ááœá²ááŒááºážá áááºááŒá¬áááºááŒá áºááŒá®áž áááºážááẠá¡á±á¬ááºááŒááºáá«áá ááá¯á·áá±á¬áẠááá·áºááœááºážááá·áº áááá¯áááºáá¬ááá¯á· á á®áá¶áá±á¬ááºááœááºáááºá¡ááœáẠáá±áá¬ááᯠáá±ážááá¯á·áá«á HTTPá SOAPá Kafkaá FIX áá±á¬áºáááºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· áá¶á·ááá¯ážáá«áááºá áááá¯áá¬ááá¬ááẠáááŒá¬áá®áá¬ááá·áº IBM MQ á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááŒáá·áº áá±á¬áºáááºá¡áá áºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠááá¯ážááŸááºážá áœá¬ ááá·áºááœááºážááá¯ááºá á±áááºááŒá áºáááºá áá±á¬ááºážááá¯áá»ááºááᯠááœá²ááŒááºážá áááºááŒá¬ááŒááºáž áá¡á±á¬ááºááŒááºáá«áá áá»áááºáááºáááááá¬ááẠá¡ááŸá¬ážá¡ááœááºážáá áºáᯠááŒááºáá±ážáááá·áºáááºá ááá¯ááºáá«áá áááºážááẠáááºážááá±á¬ááºáááºáá¯ááºáá±á¬ááºáá±á ááºá¡ááœááºáž á¡ááŸá¬ážá¡ááœááºážáá áºáá¯ááŒá áºááœá¬ážáá²á·áá»áŸááºááẠáá±á¬ááºážááá¯áá»ááºááᯠá¡á±á¬ááºááŒááºá áœá¬áá¯ááºáá±á¬ááºááŒá®ážááŒá áºááŒá±á¬ááºáž áá¯á¶á·ááŒááºáááºááŒá áºáááºá áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáááºááá¯á·áááºáá¯ááºááááºááᯠááááá±á¬ á áá áºáá»á¬ážááŒáá·áº áá¯ááºáá±á¬ááºáááºá¡ááœáẠá€á¡áá¬ááẠá¡áá°ážáá¯ááºáá±á¬ááºáá²á·ááẠ- ááá¯á·ááá¯áẠááá·áºáá»ááºáááºá¡áá±ááŸáá·áºá áááºážááᯠááŒááºážááŒááºážáááºáááºáá¯ááºáá«á áá±áá¬ááá¯á¶ážááŸá¯á¶ážá á±áááºá ááŒá¯ááŒááºáá±ážáááºážá á®ááᯠá¡áá¯á¶ážááŒá¯áááº- á¡áá¬ááá¹áá¯ááẠáááºážáá²ááá¯á· áŠážá áœá¬áá±á¬ááºááŸáááŒá®áž á¡á±á¬ááºááŒááºá áœá¬áá¯ááºáá±á¬ááºááŒááºážááᯠáááºááŸá¬ážááŒá®ážáá±á¬ááºááŸáᬠáááºážááᯠáááºááŸá¬ážááá¯ááºáá«á á á®áá¶ááá·áºááœá²áá°ááẠááŒá¯ááŒááºááŸá¯áááºážá á®ááœáẠáá»ááºááŸááá±áá±á¬ á¡áá¬áá»á¬ážá¡ááŒá±á¬ááºáž ááááá±ážáá»ááºáá»á¬ážááᯠáááºáá¶áááŸáááá¯ááºááŒá®áž áá±á¬á·ááºáá²á¡ááŸá¬ážá¡ááœááºáž ááá¯á·ááá¯áẠáá¬á·ááºáá²áá»áá¯á·ááœááºážááŸá¯ááᯠáááºááŸá¬ážááŒá®ážáá±á¬ááºá áááºá ááºážááŒáá·áºáá«á
áááá¯áááºáᬠááá·áºááœááºážááŒááºážá
Input áááá¯áááºáá¬ááẠáááá±áá¡ááºá¹áá«áááºáá»á¬ážááŸáá·áºá¡áá® áááŸááá¬áá±á¬áá±áá¬áá»á¬ážááᯠá¡áá»áá¯ážá¡á á¬ážááœá²áᬠááá·áºáá»á±á¬áºáá±á¬ áááá¯áááºáá¬áá»á¬ážááᯠáá±á«áºááá¯áááºá Handlers áá»á¬ážááẠsandbox ááœááºá¡áá¯ááºáá¯ááºáá±á¬ Lua áá¯ááºááŒá áºáá±á¬ááŒá±á¬áá·áº áááºážááá¯á·ááẠá áá áºááá¯ááºáá±á¬ááºááŸá¯ááᯠáááááá¯ááºá á±ááá¯ááºáá«á á€á¡ááá·áºááœááºá áá±áá¬ááᯠááá¯á¡ááºáá±á¬áá¯á¶á á¶ááá¯á· áá»áŸá±á¬á·áá»ááá¯ááºááŒá®áž ááá¯á¡ááºáá«á ááá¯á¡ááºáá±á¬ áá¯áá¹áááá±áááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºááá·áº áááºáááá¯áá¯ááºáá±á¬ááºá áá¬áá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážááᯠá áááºááá¯ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá Tarantool Data Grid ááœááºáááºáá±á¬ááºáá¬ážáá±á¬ MDM (Master Data Management) áá¯ááºáá¯ááºááœáẠáá¯á¶ážá áœá²áá°á¡áá áºááá¯ááá·áºááœááºážáá±á¬á¡áá«á áá±á¬ááºážááá¯áá»ááºááá¯ááºáá±á¬ááºááŸá¯ááᯠááŸá±ážááœá±ážá á±áááºá¡ááœáẠáá®ážááŒá¬ážáá¯ááºáá±á¬ááºá áá¬áá áºáá¯á¡ááŒá ẠááœáŸá±áá±á¬ááºááŸááºáááºážáá áºáá¯áááºáá®ážááŒááºážááᯠáá»áœááºá¯ááºááá¯á·á áááºáá¯ááºáá±á¬ááºáá«áááºá sandbox ááẠáá±áá¬áááºááŸá¯ááŒááºážá ááŒá±á¬ááºážáá²ááŒááºážááŸáá·áº áá±á«ááºážááá·áºááŒááºážá¡ááœáẠáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáááºá ááá¯ááŸá±á¬ááºááŸá¯á¡áá»áá¯ážá¡á á¬ážááŸáá·áº ááááºáá»á¬ážá á á¯á ááºážááŸá¯á á¡áááºážááá¹áá¡á¬ážáá¯á¶ážááœáẠáá¯ááºáá±á¬ááºááá¯ááºááẠ(ááŒá±áá¯á¶/áá»áŸá±á¬á·áá»)á
ááá¯ááºááœááºáá°áá»á¬ážááᯠááá¯ááºáá»á¬ážááœáẠáá±á¬áºááŒááá¯ááºáááº-
sum.lua
local x, y = unpack(...)
return x + y
ááá¯á·áá±á¬áẠááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááœáẠááŒá±ááŒá¬áá¬ážáááº-
functions:
sum: { __file: sum.lua }
áá¬ááŒá±á¬áá·áº Lua Lua ááẠá¡ááœááºááá¯ážááŸááºážáá±á¬áá¬áá¬á áá¬ážááŒá áºáááºá áá»áœááºá¯ááºááá¯á·áá¡ááœá±á·á¡ááŒá¯á¶ááá¯á¡ááŒá±áá¶á áááºážááá¯ááááŸáááŒá®ážáá±á¬áẠáá¬áá®á¡áááºážáááºá¡ááŒá¬ááœááºá áá°áá»á¬ážááẠáááºážááá¯á·áááŒá¿áá¬ááá¯ááŒá±ááŸááºážáá±ážááá·áºáá¯ááºááᯠá áááºáá±ážáá¬ážááŒáááºá áááºážááá¯á·ááẠááá±á¬áºáááºááŸááºááẠdeveloper áá»á¬ážáá¬ááá á¥ááá¬á¡á¬ážááŒáá·áº áá±á·áá¬áá°áá»á¬ážááŒá áºáááºá ááá¯á·á¡ááŒááºá jit compiler ááŒá±á¬áá·áº Lua ááẠá¡ááœááºáá»ááºááŒááºá áœá¬ á¡áá¯ááºáá¯ááºáá«áááºá
ááá¯ááŸá±á¬ááºááŒááºáž
Storage ááẠá¡ááŒá²áááºážáá±áá¬ááᯠááááºážáááºážáá«áááºá áááááºážáááºážáá®á áá±áá¬ááᯠdata schema ááŸáá·áºááá¬ážáááºá
á
áºáá±ážáááºá áááºáááºážááá¯áá±á¬áºááŒááẠáá»áœááºá¯ááºááá¯á·ááẠááá¯ážáá»á²á·áá±á¬áºáááºááᯠá¡áá¯á¶ážááŒá¯áááºá
{
"name": "User",
"type": "record",
"logicalType": "Aggregate",
"fields": [
{ "name": "id", "type": "string"},
{"name": "first_name", "type": "string"},
{"name": "last_name", "type": "string"}
],
"indexes": ["id"]
}
á€áá±á¬áºááŒáá»ááºá¡áá±á«áº á¡ááŒá±áá¶á DDL (Data Definition Language) ááᯠTarantula DBMS á¡ááœáẠá¡ááá¯á¡áá»á±á¬áẠáá¯ááºáá±ážáá«áááºá
Asynchronous áá±áᬠáá°ážáá°ááŸá¯ááᯠáá¶á·ááá¯ážáá¬ážááẠ(áá áºááŒáá¯ááºáááºáááºáž ááá·áºááœááºážááẠá¡á á®á¡á ááºáá»á¬áž ááŸááááº)á
á¡ááœááºáááá¯áááºáá¬
áá áºáá«áá áºáá¶ááœáẠáá±áá¬á¡áá áºáá»á¬ážáá±á¬ááºááŸááá¬ááŒááºážááŸáá·áºáááºáááºá ááŒááºááá¯á¶ážá áœá²áá°áá»á¬ážá¡á¬áž á¡ááŒá±á¬ááºážááŒá¬ážááẠááá¯á¡ááºáááºá á€áááºááœááºáá»ááºá¡ááœááºá Output áááá¯áááºáá¬á¡áááºážááá¹ááááºáž ááŸááá«áááºá áá±áá¬ááᯠááááºážáááºážááŒá®ážáá±á¬ááºá áááºážááᯠáááºááá¯ááºáᬠááá¯ááºááœááºáá°áᶠáá±ážááá¯á·ááá¯ááºááẠ(á¥ááá¬á á á¬ážáá¯á¶ážáá° ááá¯á¡ááºááá·áº áá¯á¶á á¶ááá¯á· áá°áá±á¬ááºáá¬áááº) - ááá¯á·áá±á¬áẠáá±ážááá¯á·áááºá¡ááœáẠáá»áááºáááºáááááá¬ááá¯á· áá±ážááá¯á·ááá¯ááºáááºá ááŒá¯ááŒááºáá±ážáááºážá á®ááᯠá€áá±áá¬ááœááºáááºáž á¡áá¯á¶ážááŒá¯áááº- á¡áá¬ááá¹áá¯ááᯠáááºáá°áá»áŸ áááºááá¶áá«áá á á®áá¶ááá·áºááœá²áá°á áá±á¬ááºá០áááºááŒáá¯ážá á¬ážááá¯ááºáááºá
á¡ááá¯ááºážá¡áá¬
áá»áááºáááºáááááá¬á á¡áááºáááá¯áááºáá¬ááŸáá·áº á¡ááœááºáááá¯áááºáá¬ááá¯á·á á¡áááºážááá¹ááá»á¬ážááẠááá¯ááºáá¶áá²á·ááŒá
áºááŒá®áž áá»áœááºá¯ááºááá¯á·á¡á¬áž á¡ááá¯ááŸááá±á¬á¡áááºážááá¹áá¡áá»áá¯ážá¡á
á¬ážááá¯ááœáá·áºáá¬ážááŒááºážááŒáá·áº á¡ááá®áá±ážááŸááºážááŒá
áºáááºá¡áá
áºáá»á¬ážááᯠááá·áºááœááºážáá¯á¶ááŒáá·áº á
áá
áºá¡á¬áž áá±ááŒááºáá®á¡ááá¯ááºáž á¡ááá¯ááºážá¡áá¬á¡áá áá»á²á·ááœááºááá¯ááºá
á±áá«áááºá ááá¯ááŸá±á¬ááºááŸá¯ááᯠá¡áá»á¬ážááá¯áẠáá»áááºááŸááááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áááºá
Data Properties
á¡áá¬ááá¹áá¯áá»á¬ážááẠá¡ááœááºááŒá®ážáá¬ážááá¯ááºááŒá®áž á¡ááŒá¬ážá¡áá¬áá»á¬ážáá«áááºáááºá virtual bucket áá áºáá¯ááœáẠá¡áá¬ááá¹áá¯áá áºáá¯á¡á¬áž ááŸá®ááá¯ááŸá¯á¡á¬ážáá¯á¶ážááᯠááááºážáááºážááŒááºážááŒáá·áº áá±áá¬ááᯠáá±á«ááºážááá·áºááŒááºážááŸáá·áº á¡ááºááááºáá¯ááºááŒááºážá á¡ááºáááºááŒá áºááŸá¯ááᯠáá»áœááºá¯ááºááá¯á·á¡á¬ááá¶áá«áááºá áááºážááẠáá¯ááºááá¯ááºážááá¯ááºáá¬áá¬áá¬áá»á¬ážá áœá¬ááœáẠá¡áá¬ááá¹áá¯ááᯠâáá»á¶á·ááŸá¶á·â ááŒááºážá០áá¬ážáá®ážáá±ážáááºá
áá¬ážááŸááºážááᯠáá¶á·ááá¯ážáá±ážáááº- á¡áá¬ááá¹áá¯áá áºáá¯á á¡ááºááááºáá áºáá¯á á®ááẠáá¬ážááŸááºážá¡áá áºáá áºáá¯ááᯠáááºáá®ážáá±ážáᬠáá»áœááºá¯ááºááá¯á·ááẠá¡áá»áááºá¡ááá¯ááºážá¡ááŒá¬ážáá áºáá¯áá°ááŒá®áž ááá¯á¡áá»áááºá ááá¹áá¬ááŒá®ážááᯠáááºááá¯á·ááŒááºááá¯ááºáááºááᯠááŒáá·áºááŸá¯ááá¯ááºáá«áááºá ááŸááºáá»á¬ážáá±á¬áááá¯ááºážááŒá±á¬ááºážáááá¯á¡ááºáá±á¬áá±áá¬á¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá¬ážááŸááºážá¡áá±á¡ááœááºááá¯ááá·áºáááºááá¯ááºááẠááá¯á·ááá¯áẠáá áºáá¯áá¬ááááºážáááºážáá¬ážááá¯ááºááẠ- áá±á¬ááºáá¯á¶ážáá áºáᯠ- ááá¯ááá¯áááºááŸá¬á á¡áá»áá¯á·áá±á¬á¡áá»áá¯ážá¡á á¬ážá¡ááœááºáá°ááœá²ááá¯ááááºááá¯ááºáá«á áááºááẠáááá¯ááºážááᯠá¡áá»áááºá¡á¬ážááŒáá·áºáááºáž ááá·áºáááºááá¯ááºáááº- á¥ááá¬á 1 ááŸá áºáááºááŒá®ážáá±á¬ á¡áá»áá¯á·áá±á¬á¡áá»áá¯ážá¡á á¬ážá á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá»ááºáá«á ááááºážáááºážááŒááºážááá¯áááºáž áá¶á·ááá¯ážáá±ážáááº- áá»áœááºá¯ááºááá¯á·ááẠáááºááŸááºáá¬ážááá·áº á¡áá»áááºááẠááá¯áá±á¬ááºážáá±á¬ á¡áá¬ááá¹áá¯áá»á¬ážááᯠááœáŸáá·áºáááºááá¯ááºááŒá®áž á¡á á¯á¡áá±ážá¡ááœááºáž áá±áá¬ááœááºáá»á¬áž áááºážáá±ážá á±áá«áááºá
áá¬áááºáá»á¬ážááá¯
á áááºáááºá á¬ážá áá¬áá±á¬ááºážááá·áº á¡ááºá¹áá«áááºáá»á¬ážáá²ááœááºá á¡áá»áááºááá¬ážá¡ááá¯ááºážá á¡áá¯á¶ážááŒá¯áá°ááá±á¬ááºážááá¯áá»ááºá¡á ááá¯á·ááá¯áẠsandbox á០áááá¯ááááºááŒáá·áº áá¯ááºáá±á¬ááºá áá¬áá»á¬ážááᯠá áááºáá¯ááºáá±á¬ááºááá¯ááºáááºááᯠáááááŒá¯ááá·áºáááº-
áá®áá±áá¬ááŸá¬ áá±á¬ááºááẠá¡áááºážááá¹ááá
áºáá¯ááŒá
áºáá²á· á¡ááŒá±ážááá¬ážáá«á á€á¡áááºážááá¹áááẠááá¯ááºáá¶áá²á·ááŒá
áºááŒá®ážá á€á¡áááºážááá¹ááá«ááŸááá±á¬ áá±á¬ááºáááºá¡ááá®áá±ážááŸááºážááŒá
áºáááºáá»á¬ážááᯠááá¯á¡ááºáááᯠá¡á
á¯á¡áá±ážááá¯á· ááá·áºááá¯ááºáááºá á¡ááŒá±ážááá¬ážááá¬áááºááŸá¬ á¡áá¯ááºáá»á¬ážááᯠááŒá®ážááŒá±á¬ááºáááºááŒá
áºáááºá áá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºážá sandbox á០áá¯ááºáá±á¬ááºá
áá¬á¡áá
áºáá»á¬ážááᯠáááºáá®ážááá¯ááºáááºá áááºážááá¯á·ááᯠááá¯ááŸá±á¬ááºááŸá¯ááœáẠáááºážá
á®ááá¬ážááœáẠááááºážáááºážáá¬ážááŒá®áž á¡ááŒá±ážááá¬ážááœáẠááœááºáá»ááºáááºá á€á¡áá¯ááºá¡áá»áá¯ážá¡á
á¬ážááᯠJob áá¯áá±á«áºáááºá áá»áœááºá¯ááºááá¯á·ááœáẠTask áá¯áá±á«áºáá±á¬ á¡áá¯ááºá¡áá»áá¯ážá¡á
á¬ážáá
áºáá¯áááºáž ááŸáááẠ- áááºážááá¯á·ááẠá¡áá»áááºááá¬ážáá
áºáᯠ(cron syntax ááá¯áá¯á¶ážá) ááá¯á·ááá¯áẠáááºááá¯á¡á¬ážááœáẠáá¯ááºáá±á¬ááºááá·áº á¡áá¯á¶ážááŒá¯áá°áááºááŸááºáá¬ážáá±á¬ á¡áá¯ááºáá»á¬ážááŒá
áºáááºá ááá¯áá²á·ááá¯á·áá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá
áááºáááºááŸáá·áº ááŒá±áá¬áá¶ááẠáá»áœááºá¯ááºááá¯á·ááœáẠá¡áááºááŒá±áá±á¬ á¡áá¯ááºáááºáá±áá»á¬áá
áºáá¯ááŸááááºá á€áá¯ááºáá±á¬ááºáá»ááºááᯠáááŸáááá¯ááºá
á±áááºá¡ááœááºá áááºááẠá¡áá»áááºááá¬ážáá±ážááœá²áá°á¡áááºážááá¹áááᯠááœáá·áºáá¬ážááá«áááºá á€á¡áááºážááá¹áááœáẠááŒááºáááºáá
áºáá¯áá«ááŸááá±á¬ááŒá±á¬áá·áº áááºážááẠá¡ááá¯ááºážá¡áá¬áá
áºáá¯á¡áá áááá¯á¡ááºáá±á áá
áºáá»áááºáááºážááŸá¬áááºá á¡ááŒá¬ážáá±á¬ á¡áááºážááá¹ááá»á¬ážáá²á·ááá¯á·áááºá ááááºáá¯ááºáááẠááŒááºážááá¯áá«á áááºážááœáẠáá¯ááºáááºážá
áááºááá·áº áá¯á¶á
á¶áá°áá
áºáᯠááŸáááá¯ááºáá«áááºá
áá áºáá¯ááºááá¬áž
á¡ááŒá¬ážá¡áááºážááá¹áááᯠlogger áá¯áá±á«áºáááºá áááºážááẠá¡á á¯á¡ááœá²á·á á¡ááœá²á·áááºá¡á¬ážáá¯á¶ážáá¶á០ááŸááºáááºážáá»á¬ážááᯠá á¯áá±á¬ááºážááŒá®áž áááºá¡ááºáá¬áá±á·á áºááŸáááá·áº áááºážááá¯á·ááᯠá¡ááºáá¯ááºáááºááŒááºážááŸáá·áº ááŒáá·áºááŸá¯ááŒááºážá¡ááœáẠá¡ááºáá¬áá±á·á áºáá áºáᯠáá±á¬ááºáá¶á·áá±ážáááºá
ááºáá±á¬ááºááŸá¯áá»á¬áž
á áá áºááẠáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáááºáá®ážááẠááœááºáá°á á±áááºáᯠááŸááºáá¬ážááá¯ááºáááºá ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááá¯ááºááœááºá sandbox ááœááºá¡áá¯ááºáá¯ááºáá±á¬á¡áá¯á¶ážááŒá¯áá°áá±ážáá¬ážáá±á¬ááá¯ááºááœááºáá°áá¶áá±ážááá¯á·ááá·áºáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááá¯áááºáááºááŸááºááá¯ááºáááºá á€ááá¯ááºááœááºááŒá±ááŸááºážáá°ááœááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááá¯ááºáᬠáá±ážááœááºážáá áºáá»áá¯ážáá»áá¯ážááᯠáá¯ááºáá±á¬ááºááŒá®áž ááááºááᯠááŒááºáá±ážááá¯ááºáááºá
áááºáá±á¬ááºááŸá¯ááᯠááœá²á·á ááºážááŸá¯ááá¯ááºááœáẠáá±á¬áºááŒáá¬ážáá«áááºá
services:
sum:
doc: "adds two numbers"
function: sum
return_type: int
args:
x: int
y: int
GraphQL API ááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±ážááŒá®áž áá¯ááºážáá±á«áºááá¯ááŸá¯á¡ááœáẠáááºáá±á¬ááºááŸá¯ááᯠáááŸááá¬áá«áááº-
query {
sum(x: 1, y: 2)
}
áá«ááᯠááá¯ááºááœááºáá°ááᯠáá±á«áºáá«áááá·áºáááºá sum
ááááºááᯠááŒááºáá±ážááá·áºá
3
Query Profileing ááŸáá·áº Metrics
á áá áºááŸáá·áº áááá¯ááá¯ááºáá±á¬ááºážááá¯ááŸá¯áá»á¬ážá áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¬ážáááºáááºá áá»áœááºá¯ááºááá¯á·ááẠOpenTracing áááá¯ááá¯áá±á¬á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá á€áááá¯ááá¯áá±á¬ááᯠáá¶á·ááá¯ážáá±ážááá·áº Zipkin áá²á·ááá¯á·áá±á¬ á€áááá¯ááá¯áá±á¬ááᯠáá¶á·ááá¯ážáá±ážááá·áº áááááá¬áá»á¬ážáᶠáá±á¬ááºážááá¯ááŸá¯ááá¯ááºáᬠá¡áá»ááºá¡áááºáá»á¬áž áá±ážááá¯á·ááá¯ááºáááºá áááºážááẠáá±á¬ááºážááá¯áá»ááºá¡á¬áž áááºááá¯á·áá¯ááºáá±á¬ááºáá²á·áááºááᯠáá¬ážáááºááá¯ááºá á±áááº-
ááá¬áá¡ááá¯ááºážá á
áá
áºááẠPrometheus ááá¯á¡áá¯á¶ážááŒá¯á Grafana ááá¯á¡áá¯á¶ážááŒá¯á ááŒááºáá¬áááºáá¬ááŒááºáá¬á¡á±á¬ááºááŒá¯áá¯ááºááá¯ááºáá±á¬ á¡ááœááºážááá¯ááºážáááºááá
áºáá»á¬ážááᯠáá±ážáá±á¬ááºáá«áááºá
áá»áá¬ážáá±ážáá«á
Tarantool Data Grid ááᯠRPM áááºáá±á·áá»áºáá»á¬áž ááá¯á·ááá¯áẠááá¯ááŸá±á¬ááºááŸá¯á០á¡áá¯á¶ážáá»ááá¯ááºááẠááá¯á·ááá¯áẠááŒáá·áºááŒá°ážááŸá¯á០á¡áá¯á¶ážáááºááŸá¯ ááá¯á·ááá¯áẠAnsible ááᯠá¡áá¯á¶ážááŒá¯á Kubernetes á¡ááœááºáááºáž áá¶á·ááá¯ážááŸá¯áááºáž ááŸááá«áááºá
Business Logic (ááœá²á·á ááºážáá¯á¶á ááá¯ááºááœááºááŒá±ááŸááºážáá±ážáá°áá»á¬áž) ááᯠUI ááŸáááá·áº ááŸááºáááºážáá¯á¶á á¶á¡ááŒá Ạááá¯á·ááá¯áẠáá»áœááºá¯ááºááá¯á·ááŸáá±ážáá¬ážáá±á¬ API ááŸáááá·áº script ááá¯á¡áá¯á¶ážááŒá¯á á¡áá¯á¶ážáá»áá¬ážáá±á¬ Tarantool Data Grid á¡á á¯á¡áá±ážááœáẠáá¯ááºáááºážááá¯ááºáᬠáá¯áá¹ááááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá·áº á¡ááá®áá±ážááŸááºážááᯠáááºáá±ážáá«áááºá
ááá°áá¬á¡áá¯á¶ážáá»ááŸá¯áá»á¬áž
Tarantool Data Grid ááᯠá¡áá¯á¶ážááŒá¯á áááºááá·áº application áá»á¬ážááᯠáááºáá®ážááá¯ááºááááºážá ááááºáá±á¬á·á áá¯ááºáááºážá¡áá»á¬ážá á¯ááẠáá±áá¬á á®ážáááºážááŸá¯ááᯠáá¯ááºáá±á¬ááºááŒááºážá ááááºážáááºážááŒááºážááŸáá·áº ááá°ááŒááºážááá¯á·ááŸáá·áº áá áºáááºážáá áºáá¯á¶ áááºá ááºáá±áá«áááºá ááá¯á·ááŒá±á¬áá·áºá á¡áááºá ááá·áºááœáẠáá¯á¶ááŒá¯á¶á áœá¬ ááááºážáááºážááŒá®áž áááºáá±á¬ááºá¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºáá±á¬ áá±áá¬á á®ážááŒá±á¬ááºáž á¡áá»á¬ážá¡ááŒá¬ážááŸááá«áá áá»áœááºá¯ááºááá¯á·ááá¯ááºáá¯ááºááẠááá·áºá¡á¬áž ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡áá»áááºáá»á¬ážá áœá¬ááᯠáááºáá¬á á±ááŒá®áž ááá·áºáá¯ááºáááºážááá¯ááºáᬠáá¯áá¹áááá±áá¡áá±á«áº á¡á¬áá¯á¶á áá¯ááºááá¯ááºáááºááŒá áºáááºá
á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠá¡áááºááŒá¶ááŒá±áá±ážááœááºááŸáá·áºáááºáááºááá·áº á¡áá»ááºá¡áááºáá»á¬ážááᯠá á¯áá±á¬ááºážááá¯áááºá ááá¯á·ááŸáᬠá¡áá¬áááºááœááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá±á¬ááºážáá¯á¶ážáááºážááŸááºážááŸá¯áá»á¬ážááŸáá·áºáááºáááºááá·áº á¡áá»ááºá¡áááºáá»á¬ážááᯠáááŸááááºááŒá áºáááºá á€ááá á¹á ááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡á±á¬ááºáá«áá¯ááºáááºážáá»á¬ážááᯠáá®ážáá±á¬ááºážááá¯ážááŒáá«áááºá
- ááœáá·áºáááºážáá±á¬áááºážááŒá áºáá»á¬ážá០á¡áá»ááºá¡áááºáá»á¬ážááᯠá á¯áá±á¬ááºážááá·áº á ááºáá¯ááºáá»á¬ážááẠáá»áœááºá¯ááºááá¯á·á áá±áá¬áááºážááŒá áºáá»á¬áž ááŒá áºáááá·áºáááºá á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ ááŒá±ááŸááºážáááºážáá»á¬áž ááá¯á·ááá¯áẠáááºááá·áºáá¬áá¬á áá¬ážááŒáá·áºáááᯠáá¯ááºáá±ážááŒááºážááŒáá·áº á€ááŒá¿áá¬ááᯠáááºááŒá±ááŸááºážááá¯ááºáá«áááºá
- ááá¯á·áá±á¬áẠTarantool Data Grid ááẠáá±áá¬ááᯠáááºáá¶ááŒá®áž ááááºážáááºážáááºááŒá áºáááºá ááá°áá®áá±á¬áááºážááŒá áºáá»á¬ážá០áá±áá¬áá±á¬áºáááºááẠááá°áá®áá«áá áá±á¬áºáááºáá áºáá¯áááºážááá¯á· ááŒá±á¬ááºážáá²ááŒááºážááᯠáá¯ááºáá±á¬ááºááá·áº Lua ááœáẠáá¯ááºáá±ážááá¯ááºáááºá á¡ááŒáá¯áá¯ááºáá±á¬ááºááŒááºážá¡ááá·áºááœááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠáááºáá±áá±á¬áááºážááŸááºážáá»ááºáá»á¬ážááᯠá á áºáá¯ááºááẠááá¯á·ááá¯áẠáá±áá¬áá±á·á áºááœáẠá á»á±ážááœááºááœááºá¡áá¯ááºáá¯ááºáá±áá±á¬ á¡á±ážáá»áá·áºáá»á¬ážá¡ááŒá±á¬ááºáž áááºáá±á¬ááºážá¡ááºááááºáá¯ááºááá¯ááºáááºá
- ááᯠááá·áºááœáẠáá±áá¬áá»á¬ážááŒáá·áºáᬠáá±áá¬ááœá±ážáá»ááºááŸá¯áá»á¬áž ááŒá¯áá¯ááºááá¯ááºááá·áº á¡á á¯á¡áá±ážáá áºáá¯ááœáẠá¡ááá¯ááºážá¡áá¬áá áºáá¯á¡áá ááŒá±ááŸááºážáá»ááºáá áºáᯠááŸáááŸáá·áºááŒá®ážááŒá áºáááºá ááá¯á·áá±á¬áẠáááºááẠáá¯ááºáá±á¬ááºáá»ááºá¡áá áºáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá±áá¬áá±á¬ááºážááá¯ááŸá¯ááŒá¯áá¯ááºááŒá®áž áá áºáá±á·áá»áŸáẠá¡áá»áá¯ážáá»á±ážáá°ážá¡ááŸááá¯á¶ážáááºážááŸááºážááŸá¯ááá¯áá±ážááá·áº áááºáá±á¬ááºááŸá¯áá áºáá¯áá±ážáá« - áááºážááẠááœá²á·á ááºážááŸá¯ááá¯ááºááœáẠá á¬ááŒá±á¬ááºážá¡áááºážáááºááŸáá·áº Lua áá¯ááºá¡áááºážááẠááá¯á¡ááºáááºááŒá áºáááºá
áá¬áááºá·áá¬áá²?
áá»áœááºá¯ááºááá¯á·á áŠážá
á¬ážáá±ážááẠá¡áá¯á¶ážááŒá¯á ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ ááœááºáá°á
á±ááẠááŒáŸáá·áºáááºáááºááŒá
áºáááºá
áá±ážáááºážáá±ážááŒá¿áá¬áá»á¬ážááá¯áááºáž áá»áœááºá¯ááºááá¯á· á¡ááœááºá¡áá±ážáá¬ážáá«áááºá áááºááŸáááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá¯á¶ááŒá¯á¶áá±ážá¡ááá·áºááŒáá·áºááŸá¯ááᯠá¡áááºááŒá¯áááºááŸáá·áº ááá¯ááºáá±ážááá¯ááºáá¬á¡áá»ááºá¡áááºá
áá
áºáá»á¬ážááŸáá·áº á¡á
áá¯ážáááááºážá¡áá»ááºá¡áááºá
áá
áºáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯ááá·áº áá±á¬á·ááºáá²áá¯ááºáá¯ááºáá»á¬ážá á¡ááá¡ááŸááºááŒá¯áááºááŸááºááá¯á¡ááºáá»ááºáá»á¬ážááŸáá·áºááá¯ááºáá®ááẠáá¯ááŸá¬ážááá¯ááºáᶠFSTEC á០á¡ááá¡ááŸááºááŒá¯áááºááŸááºááᯠáááŸááá±áá«áááºá
source: www.habr.com