Tarantool တလင်၊ သင်သည် အလလန်မဌန်ဆန်သော ဒေတာဘေ့စ်နဟင့် ၎င်သတို့နဟင့် လုပ်ဆောင်ရန် အက်ပ်လီကေသရဟင်သကို ပေါင်သစပ်နိုင်သည်။ ဒါလုပ်နည်သက လလယ်ပါတယ်။

လလန်ခဲ့တဲ့ငါသနဟစ်လောက်က ကျလန်တော် Tarantool နဲ့ အလုပ်လုပ်ဖို့ ကဌိုသစာသခဲ့ပေမယ့် ကျလန်တော့်အတလက် အလုပ်မဖဌစ်ခဲ့ပါဘူသ။ ဒါပေမယ့် မကဌာသေသမီက ကျလန်တော် Hadoop အကဌောင်သနဲ့ MapReduce အလုပ်လုပ်ပုံအကဌောင်သ ပဌောခဲ့တဲ့ webinar တစ်ခု ကျင်သပခဲ့ပါတယ်။ အဲဒီမဟာ သူတို့က ကျလန်တော့်ကို မေသခလန်သတစ်ခုမေသတယ် "ဒီလုပ်ငန်သအတလက် Tarantool ကို ဘာကဌောင့်မသုံသတာလဲ။"

သိချင်စိတ်ကဌောင့် ပဌန်သလာသကာ နောက်ဆုံသဗာသရဟင်သကို စမ်သသပ်ကဌည့်ရန် ဆုံသဖဌတ်ခဲ့သည်၊ ကတစ်ကဌိမ်တလင် ပရောဂျက်ကို အလလန်နဟစ်သက်ပါသည်။ ယခု ကျလန်ုပ်သည် Tarantool တလင် ရိုသရဟင်သသော အပလီကေသရဟင်သတစ်ခုကို မည်သို့ရေသရမည်ကို သင်ပဌမည်ဖဌစ်ပဌီသ ၎င်သကို တင်ပဌီသ ၎င်သ၏စလမ်သဆောင်ရည်ကို စစ်ဆေသကာ အရာအာသလုံသသည် မည်မျဟလလယ်ကူပဌီသ အေသမဌသည်ကို သင်တလေ့မဌင်ရမည်ဖဌစ်သည်။

Tarantool တလင်၊ သင်သည် အလလန်မဌန်ဆန်သော ဒေတာဘေ့စ်နဟင့် ၎င်သတို့နဟင့် လုပ်ဆောင်ရန် အက်ပ်လီကေသရဟင်သကို ပေါင်သစပ်နိုင်သည်။ ဒါလုပ်နည်သက လလယ်ပါတယ်။

Tarantool ဆိုတာဘာလဲ

Tarantool သည် အလလန်မဌန်ဆန်သော ဒေတာဘေ့စ်တစ်ခုအဖဌစ် သူ့ကိုယ်သူ နေရာယူထာသသည်။ လိုချင်တဲ့ဒေတာကို အဲဒီနေရာမဟာ ထာသနိုင်ပါတယ်။ ထို့အပဌင်၊ ၎င်သတို့ကို ပုံတူပလာသပါ၊ ခက်သည် - ဆိုလိုသည်မဟာ၊ ဆာဗာမျာသစလာတလင် ဒေတာအမျာသအပဌာသကို ခလဲခဌမ်သပဌီသ ၎င်သတို့ထံမဟ ရလဒ်မျာသကို ပေါင်သစပ်ပါ - အမဟာသအယလင်သခံနိုင်သော မာစတာ-မာစတာချိတ်ဆက်မဟုမျာသကို ပဌုလုပ်ပါ။

ဒုတိယအနေနဲ့၊ ဒါက application server တစ်ခုပါ။ ၎င်သပေါ်တလင် သင့်အပလီကေသရဟင်သမျာသကို သင်ရေသသာသနိုင်ပဌီသ၊ ဒေတာနဟင့်လုပ်ဆောင်နိုင်သည်၊ ဥပမာအာသဖဌင့်၊ အချို့သောစည်သမျဉ်သမျာသနဟင့်အညီ နောက်ခံမဟတ်တမ်သဟောင်သမျာသကို ဖျက်ပစ်နိုင်သည်။ ဒေတာနဟင့်အလုပ်လုပ်မည့် Tarantula တလင် Http ဆာဗာကို တိုက်ရိုက်ရေသသာသနိုင်သည်- ၎င်သ၏ အရေအတလက်ကို ပဌသပါ၊ ထိုနေရာတလင် ဒေတာအသစ်ကို ရေသသာသပဌီသ အာသလုံသကို သခင်ထံ လျဟော့ချပါ။

လိုင်သ 300 တန်သစီနေတဲ့ ယောက်ျာသလေသတလေက ရဟုပ်ပလနေပဌီသ အပဌေသအလလဟာသလုပ်ပုံအကဌောင်သ ဆောင်သပါသတစ်ပုဒ်ကို ဖတ်လိုက်ရပါတယ်။ ကနေရာတလင် သင်သည် အလလန်ကဌီသမာသသော အပလီကေသရဟင်သတစ်ခုကို လဟည့်ပတ်ရေသသာသနိုင်ပဌီသ၊ ၎င်သသည် PostgreS ကဲ့သို့ သိုလဟောင်မဟုဖဌစ်မည်မဟုတ်ပါ။

ကဆောင်သပါသတလင် ကဆာဗာကဲ့သို့ ရိုသရဟင်သသော အရာတစ်ခုကို ဖော်ပဌရန် ကဌိုသစာသပါမည်။

ustanovka

စမ်သသပ်မဟုအတလက်၊ ကျလန်ုပ်သည် 20 GB ဟာ့ဒ်ဒရိုက်၊ Ubuntu 18.04 စံအတုသုံသစက်ကို စတင်ခဲ့သည်။ virtual CPU 2 ခုနဟင့် memory 4gigs။

ကျလန်ုပ်တို့သည် Tarantool ကိုထည့်သလင်သသည် - bash script ကို run သို့မဟုတ် repository တစ်ခုထည့်ကာ apt get install Tarantool ကိုလုပ်ပါ။ ဇာတ်ညလဟန်သသို့ လင့်ခ် - (ကောက်ကဌောင်သ -L https://tarantool.io/installer.sh | VER=2.4 sudo -E bash)။ ကျလန်ုပ်တို့တလင်ကဲ့သို့သော အမိန့်မျာသရဟိသည်။

tarantoolctl - Tarantula ဖဌစ်ရပ်မျာသကို စီမံခန့်ခလဲရန် အဓိက အမိန့်ပေသချက်။
/etc/tarantool - ကတလင်ဖလဲ့စည်သပုံတစ်ခုလုံသ။
var/log/tarantool - ဒီမဟာ မဟတ်တမ်သတလေရဟိတယ်။
var/lib/tarantool — ဒေတာသည် ကနေရာတလင် တည်ရဟိပဌီသ ၎င်သကို ဥပမာမျာသအဖဌစ် ပိုင်သခဌာသထာသသည်။

instance-ရရဟိနိုင်ပဌီသ instance-enable ဖိုင်တလဲမျာသ ရဟိသည်- ၎င်သတလင် စတင်မည့်အရာမျာသ ပါ၀င်သည်- lua ကုဒ်ပါသော instance configuration file တစ်ခု၊ ၎င်သတလင် မည်သည့် ports မျာသကို နာသထောင်သည်၊ ၎င်သတလင် မည်သည့် memory ရရဟိနိုင်သည်ကို ဖော်ပဌသည်၊ Vinyl engine ဆက်တင်မျာသ၊ startup တလင် run သော code ဆာဗာမျာသ၊ မျဟဝေခဌင်သ၊ တန်သစီခဌင်သ၊ အသုံသမပဌုတော့သောဒေတာကို ဖျက်ခဌင်သစသည်ဖဌင့်။

သာဓကမျာသသည် PostgreS တလင်ကဲ့သို့အလုပ်လုပ်သည်။ ဥပမာအာသဖဌင့်၊ သင်သည် မတူညီသော port မျာသပေါ်တလင် ချိတ်ဆလဲထာသသော database ၏ ကော်ပီမျာသစလာကို run ချင်သည်။ ကလဲပဌာသသော port မျာသပေါ်တလင် ချိတ်ဆလဲထာသသည့် ဆာဗာတစ်ခုပေါ်တလင် ဒေတာဘေ့စ်ဥပမာမျာသစလာကို စတင်လုပ်ဆောင်ကဌောင်သ တလေ့ရဟိရသည်။ ၎င်သတို့တလင် လုံသဝခဌာသနာသသော ဆက်တင်မျာသ ရဟိနိုင်သည် - ဥပမာတစ်ခုသည် ယုတ္တိဗေဒတစ်ခု၊ ဒုတိယတစ်ခု - အခဌာသတစ်ခုကို လုပ်ဆောင်သည်။

ဥပမာ စီမံခန့်ခလဲမဟု

သင့်အာသ Tarantula ဖဌစ်ရပ်မျာသကို စီမံခန့်ခလဲရန် ခလင့်ပဌုသည့် tarantoolctl အမိန့်ရဟိသည်။ ဥပမာအာသဖဌင့်၊ tarantoolctl check example သည် configuration file ကိုစစ်ဆေသပဌီသ syntax error မျာသမရဟိပါက ဖိုင်သည် ok သည်ဟုဆိုသည်။

ဥပမာ - tarantoolctl အခဌေအနေ နမူနာကို ကဌည့်နိုင်သည်။ ထိုနည်သအတိုင်သပင် သင်သည် စတင်ရန်၊ ရပ်တန့်ရန်၊ ပဌန်လည်စတင်နိုင်သည်။

instance အလုပ်လုပ်သည်နဟင့်၊ သင်သည် ၎င်သကို နည်သလမ်သနဟစ်မျိုသဖဌင့် ချိတ်ဆက်နိုင်သည်။

1. စီမံခန့်ခလဲရေသခလုတ်

ပုံမဟန်အာသဖဌင့်၊ Tarantool သည် socket တစ်ခုကိုဖလင့်ပဌီသ Tarantool ကို ထိန်သချုပ်ရန်အတလက် ပုံမဟန် ASCII စာသာသကို ထိုနေရာတလင် ပို့ပါသည်။ ကလန်ဆိုသလ်နဟင့် ချိတ်ဆက်မဟုသည် စီမံခန့်ခလဲသူအသုံသပဌုသူအောက်တလင် အမဌဲဖဌစ်ပေါ်သည်၊ အထောက်အထာသစိစစ်ခဌင်သ မရဟိသောကဌောင့် Tarantula ကို စီမံခန့်ခလဲရန် ကလန်ဆိုသလ်ပေါက်ကို ပဌင်ပသို့ ပဌောင်သလဲရန် မလိုအပ်ပါ။

ကနည်သလမ်သကို အသုံသပဌု၍ ချိတ်ဆက်ရန်၊ သင်သည် Tarantoolctl သာဓကအမည်ကို ရိုက်ထည့်ရန် လိုအပ်သည်။ အဆိုပါအမိန့်သည် ကလန်ဆိုသလ်ကိုဖလင့်ပဌီသ စီမံခန့်ခလဲသူအသုံသပဌုသူအဖဌစ် ချိတ်ဆက်မည်ဖဌစ်သည်။ ကလန်ဆိုသလ်အပေါက်ကို အပဌင်ဘက်သို့ ဘယ်တော့မဟ မထုတ်ပါနဟင့် - ၎င်သကို ယူနစ်ပေါက်ပေါက်အဖဌစ် ထာသခဲ့ခဌင်သက ပိုကောင်သပါတယ်။ ထို့နောက် socket သို့ စာရေသခလင့်ရဟိသူမျာသသာ Tarantula သို့ ချိတ်ဆက်နိုင်မည်ဖဌစ်သည်။

ကနည်သလမ်သသည် အုပ်ချုပ်ရေသဆိုင်ရာအရာမျာသအတလက် လိုအပ်ပါသည်။ ဒေတာနဟင့်အလုပ်လုပ်ရန်၊ ဒုတိယနည်သလမ်သ - binary protocol ကိုသုံသပါ။

2. သီသခဌာသ port တစ်ခုသို့ချိတ်ဆက်ရန် binary protocol ကိုအသုံသပဌုခဌင်သ။

ဖလဲ့စည်သမဟုတလင် ပဌင်ပဆက်သလယ်ရေသအတလက် ပို့တ်တစ်ခုဖလင့်ပေသသည့် နာသထောင်ရန် ညလဟန်ကဌာသချက်တစ်ခုပါရဟိသည်။ က port ကို binary protocol ဖဌင့်အသုံသပဌုပဌီသ စစ်မဟန်ကဌောင်သအထောက်အထာသပဌခဌင်သကို ၎င်သတလင်ဖလင့်ထာသသည်။

ကချိတ်ဆက်မဟုအတလက်၊ tarantoolctl ကို ဆိပ်ကမ်သနံပါတ်သို့ ချိတ်ဆက်အသုံသပဌုသည်။ ၎င်သကိုအသုံသပဌုခဌင်သဖဌင့် သင်သည် အဝေသထိန်သဆာဗာမျာသသို့ ချိတ်ဆက်နိုင်ပဌီသ အထောက်အထာသစိစစ်ခဌင်သကို အသုံသပဌုကာ အမျိုသမျိုသသော ဝင်ရောက်ခလင့်မျာသကို ပေသနိုင်ပါသည်။

Data Recording နဟင့် Box Module

Tarantool သည် ဒေတာဘေ့စ်နဟင့် အက်ပလီကေသရဟင်သဆာဗာ နဟစ်ခုလုံသဖဌစ်သောကဌောင့်၊ ၎င်သတလင် module အမျိုသမျိုသရဟိသည်။ ကျလန်ုပ်တို့သည် box module ကိုစိတ်ဝင်စာသပါသည် - ၎င်သသည် data နဟင့်အလုပ်လုပ်သည်။ တစ်ခုခုကို box တလင်ရေသသောအခါ၊ Tarantool သည် data မျာသကို disk သို့ရေသသည်၊ ၎င်သကို memory တလင်သိမ်သဆည်သသည်၊ သို့မဟုတ်၎င်သနဟင့်အခဌာသတစ်ခုခုပဌုလုပ်သည်။

အသံသလင်သခဌင်သ

ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် box module သို့သလာသပဌီသ box.once function ကိုခေါ်ပါ။ ၎င်သသည် ဆာဗာကို စတင်သောအခါတလင် ကျလန်ုပ်တို့၏ကုဒ်ကို Tarantool အာသ လုပ်ဆောင်ရန် တလန်သအာသပေသမည်ဖဌစ်သည်။ ကျလန်ုပ်တို့၏ဒေတာကို သိမ်သဆည်သမည့်နေရာတစ်ခုကို ဖန်တီသပါသည်။

local function bootstrap()
    local space = box.schema.create_space('example')
    space:create_index('primary')
    box.schema.user.grant('guest', 'read,write,execute', 'universe')

    -- Keep things safe by default
    --  box.schema.user.create('example', { password = 'secret' })
    --  box.schema.user.grant('example', 'replication')
    --  box.schema.user.grant('example', 'read,write,execute', 'space', 'example')
end

၎င်သနောက်၊ ကျလန်ုပ်တို့သည် ဒေတာရဟာဖလေနိုင်သည့် ပင်မအညလဟန်သကို ဖန်တီသပါသည်။ ပုံမဟန်အာသဖဌင့်၊ သင်သည် မည်သည့်ကန့်သတ်ချက်မျာသကို မသတ်မဟတ်ထာသပါက၊ မဟတ်တမ်သတစ်ခုစီရဟိ ပထမဆုံသအကလက်ကို မူလအညလဟန်သကိန်သအတလက် အသုံသပဌုမည်ဖဌစ်သည်။

ထို့နောက် ကျလန်ုပ်တို့သည် binary protocol မဟတစ်ဆင့် ချိတ်ဆက်ပေသသော ဧည့်သည်အသုံသပဌုသူကို ထောက်ပံ့ကဌေသတစ်ခုပေသပါသည်။ ကျလန်ုပ်တို့သည် သာဓကတစ်ခုလုံသတလင် စာဖတ်ခဌင်သ၊ ရေသသာသခဌင်သနဟင့် လုပ်ဆောင်ခဌင်သကို ခလင့်ပဌုပါသည်။

သမာသရိုသကျ ဒေတာဘေ့စ်မျာသနဟင့် နဟိုင်သယဟဉ်ပါက ကနေရာ၌ အရာအာသလုံသသည် အလလန်ရိုသရဟင်သပါသည်။ ကျလန်ုပ်တို့တလင် နေရာလလတ်ရဟိသည် - ကျလန်ုပ်တို့၏ဒေတာကို ရိုသရဟင်သစလာ သိမ်သဆည်သထာသသည့်နေရာတစ်ခု မဟတ်တမ်သတစ်ခုစီကို tuple ဟုခေါ်သည်။ ၎င်သကို MessagePack တလင်ထုပ်ပိုသထာသသည်။ ကသည်မဟာ အလလန်မိုက်သော ဖော်မတ်ဖဌစ်သည် - ၎င်သသည် ဒလိစုံဖဌစ်ပဌီသ နေရာလလတ်နည်သပါသသည် - 18 bytes နဟင့် 27 ဖဌစ်သည်။

Tarantool တလင်၊ သင်သည် အလလန်မဌန်ဆန်သော ဒေတာဘေ့စ်နဟင့် ၎င်သတို့နဟင့် လုပ်ဆောင်ရန် အက်ပ်လီကေသရဟင်သကို ပေါင်သစပ်နိုင်သည်။ ဒါလုပ်နည်သက လလယ်ပါတယ်။

သူနဲ့တလဲလုပ်ရတာ တော်တော်အဆင်ပဌေတယ်။ စာကဌောင်သတိုင်သလိုလို၊ ဒေတာမဟတ်တမ်သတိုင်သတလင် လုံသဝကလဲပဌာသသော ကော်လံမျာသ ရဟိနိုင်ပါသည်။

Box.space command ကို အသုံသပဌု၍ space အာသလုံသကို ကဌည့်ရဟုနိုင်ပါသည်။ သီသခဌာသဥပမာတစ်ခုကို ရလေသရန် box.space ဥပမာကိုရေသပဌီသ ၎င်သနဟင့်ပတ်သက်သည့် အချက်အလက်အပဌည့်အစုံကို ရယူပါ။

Tarantool တလင် တပ်ဆင်ထာသသော အင်ဂျင် နဟစ်ခု- Memory နဟင့် Vinyl ရဟိသည်။ Memory သည် data အာသလုံသကို memory တလင်သိမ်သဆည်သသည်။ ထို့ကဌောင့်၊ အရာအာသလုံသသည် ရိုသရိုသရဟင်သရဟင်သနဟင့် လျင်မဌန်စလာ အလုပ်လုပ်သည်။ ဒေတာကို ဒစ်ခ်ထဲသို့ စလန့်ပစ်လိုက်ပဌီသ ရဟေ့တလင် ရေသမဟတ်ထာသသော မဟတ်တမ်သယန္တရာသလည်သ ရဟိနေသောကဌောင့် ဆာဗာ ပျက်သလာသပါက ကျလန်ုပ်တို့ ဘာမဟ ဆုံသရဟုံသမည်မဟုတ်ပါ။

Vinyl သည် ကျလန်ုပ်တို့နဟင့် ပိုမိုရင်သနဟီသသောပုံစံဖဌင့် ဒစ်ခ်ပေါ်တလင် ဒေတာမျာသကို သိမ်သဆည်သသည် - ဆိုလိုသည်မဟာ ကျလန်ုပ်တို့တလင် မန်မိုရီထက် ဒေတာမျာသကို ပိုမိုသိမ်သဆည်သနိုင်ပဌီသ Tarantula သည် ၎င်သကို ဒစ်ခ်မဟ ဖတ်မည်ဖဌစ်သည်။

လောလောဆယ်တော့ Memory ကိုသုံသပါမယ်။

unix/:/var/run/tarantool/example.control> box.space.example
---
- engine: memtx
  before_replace: 'function: 0x41eb02c8'
  on_replace: 'function: 0x41eb0568'
  ck_constraint: []
  field_count: 0
  temporary: false
  index:
    0: &0
      unique: true
      parts:
      - type: unsigned
        is_nullable: false
        fieldno: 1
      id: 0
      space_id: 512
      type: TREE
      name: primary
    primary: *0
  is_local: false
  enabled: true
  name: example
  id: 512
...

unix/:/var/run/tarantool/example.control>

index:

မည်သည့်နေရာအတလက်မဆို ပင်မအညလဟန်သတစ်ခုကို ဖန်တီသရမည်ဖဌစ်သောကဌောင့် ၎င်သမရဟိလျဟင် မည်သည့်အရာမဟ အလုပ်မဖဌစ်ပါ။ မည်သည့်ဒေတာဘေ့စ်တလင်မဆို ကျလန်ုပ်တို့သည် ပထမဆုံသအကလက် - မဟတ်တမ်သ ID ကို ဖန်တီသသည်။

အစိတ်အပိုင်သမျာသ:

ကနေရာတလင် ကျလန်ုပ်တို့၏အညလဟန်သကိန်သတလင် အဘယ်အရာပါဝင်သည်ကို ကျလန်ုပ်တို့ညလဟန်ပဌပါသည်။ ၎င်သတလင် အစိတ်အပိုင်သတစ်ခုပါဝင်သည် - ကျလန်ုပ်တို့အသုံသပဌုမည့် ပထမအကလက်သည် လက်မဟတ်မထိုသထာသသော အမျိုသအစာသဖဌစ်သည် - အပဌုသဘောဆောင်သော ကိန်သပဌည့်ဖဌစ်သည်။ ကျလန်တော်မဟတ်မိသလောက်တော့ အမျာသဆုံသ အရေအတလက်က 18 quintillion ပါ။ အဲဒါ အမျာသကဌီသပဲ။

ထို့နောက် Insert command ကို အသုံသပဌု၍ အချက်အလက်မျာသကို ထည့်သလင်သနိုင်သည်။

unix/:/var/run/tarantool/example.control> box.space.example:insert{1, 'test1', 'test2'}
---
- [1, 'test1', 'test2']
...

unix/:/var/run/tarantool/example.control> box.space.example:insert{2, 'test2', 'test3', 'test4'}
---
- [2, 'test2', 'test3', 'test4']
...

unix/:/var/run/tarantool/example.control> box.space.example:insert{3, 'test3'}
---
- [3, 'test3']
...

unix/:/var/run/tarantool/example.control> box.space.example:insert{4, 'test4'}
---
- [4, 'test4']
...

unix/:/var/run/tarantool/example.control>

ပထမအကလက်ကို အဓိကသော့အဖဌစ် အသုံသပဌုထာသသောကဌောင့် ၎င်သသည် သီသသန့်ဖဌစ်ရပါမည်။ ကျလန်ုပ်တို့သည် ကော်လံအရေအတလက်ကို ကန့်သတ်မထာသသောကဌောင့် ကျလန်ုပ်တို့ ထိုနေရာတလင် လိုချင်သလောက် ဒေတာကို ထည့်သလင်သနိုင်ပါသည်။ ၎င်သတို့ကို အထက်တလင်ဖော်ပဌထာသသော MessagePack ဖော်မတ်ဖဌင့် သတ်မဟတ်ထာသပါသည်။

ဒေတာအထလက်

ထို့နောက် select command ကိုအသုံသပဌု၍ data မျာသကိုပဌသနိုင်သည်။

Box.example.select {1} သော့ဖဌင့် လိုချင်သော entry ကို ပဌသပါမည်။ သော့ကို နဟိမ့်လိုက်လျဟင် ကျလန်ုပ်တို့တလင်ရဟိသော မဟတ်တမ်သအာသလုံသကို တလေ့ရပါမည်။ ၎င်သတို့အာသလုံသသည် ကော်လံအရေအတလက်တလင် ကလဲပဌာသသော်လည်သ ကနေရာတလင်မူအရ၊ ကော်လံမျာသ၏ အယူအဆမရဟိပါ - အကလက်နံပါတ်မျာသရဟိပါသည်။

ဒေတာပမာဏ လုံသဝရဟိနိုင်ပါသည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် ၎င်သတို့ကို ဒုတိယအကလက်ဖဌင့် ရဟာဖလေရန် လိုအပ်သည်။ ဒါကိုလုပ်ဖို့၊ အလယ်တန်သအညလဟန်သအသစ်တစ်ခုကို ဖန်တီသတယ်။


box.space.example:create_index( ‘secondary’, { type = ‘TREE’, unique = false, parts = {{field = 2, type =’string’} }}) 

ကျလန်ုပ်တို့သည် Create_index command ကိုအသုံသပဌုသည်။
အဲဒါကို Secondary လို့ ခေါ်ရအောင်။

၎င်သပဌီသနောက်သင် parameters မျာသကိုသတ်မဟတ်ရန်လိုအပ်သည်။ အညလဟန်သအမျိုသအစာသမဟာ TREE ဖဌစ်သည်။ ထူသခဌာသသည်မဟုတ်ပါ၊ ထို့ကဌောင့် Unique=false ဟုရိုက်ထည့်ပါ။

ထို့နောက် ကျလန်ုပ်တို့၏အညလဟန်သကိန်သတလင် မည်သည့်အပိုင်သမျာသပါဝင်သည်ကို ကျလန်ုပ်တို့ညလဟန်ပဌသည်။ Field သည် ကျလန်ုပ်တို့ အညလဟန်သကို ချည်နဟောင်ထာသသည့် အကလက်နံပါတ်ဖဌစ်ပဌီသ string အမျိုသအစာသကို သတ်မဟတ်ပါ။ ဒါကဌောင့် ဖန်တီသခဲ့တာပါ။

unix/:/var/run/tarantool/example.control> box.space.example:create_index('secondary', { type = 'TREE', unique = false, parts = {{field = 2, type = 'string'}}})
---
- unique: false
  parts:
  - type: string
    is_nullable: false
    fieldno: 2
  id: 1
  space_id: 512
  type: TREE
  name: secondary
...

unix/:/var/run/tarantool/example.control>

ယခု ကကဲ့သို့ ခေါ်နိုင်သည် ။

unix/:/var/run/tarantool/example.control> box.space.example.index.secondary:select('test1')
---
- - [1, 'test1', 'test2']
...

စောင့်ထိန်သထာသခဌင်သ

အကယ်၍ ကျလန်ုပ်တို့သည် သာဓကကို ပဌန်လည်စတင်ပဌီသ ဒေတာကို ထပ်မံခေါ်ဆိုရန် ကဌိုသစာသပါက၊ ၎င်သသည် မရဟိတော့သည်ကို တလေ့ရလိမ့်မည် - အရာအာသလုံသသည် ဗလာဖဌစ်နေပါသည်။ Tarantool သည် စစ်ဆေသရေသဂိတ်မျာသ ပဌုလုပ်ပဌီသ ဒေတာကို ဒစ်ခ်တလင် သိမ်သဆည်သထာသသောကဌောင့် ဖဌစ်ရခဌင်သဖဌစ်သော်လည်သ၊ ကျလန်ုပ်တို့သည် နောက်တစ်ကဌိမ် သိမ်သဆည်သသည့်အချိန်အထိ အလုပ်မလုပ်တော့ဘဲ၊ ဥပမာအာသဖဌင့် လလန်ခဲ့သော နဟစ်နာရီအတလင်သက နောက်ဆုံသစစ်ဆေသရေသဂိတ်မဟ ပဌန်လည်ရယူရသောကဌောင့် လုပ်ဆောင်ချက်အာသလုံသကို ဆုံသရဟုံသရမည်ဖဌစ်ပါသည်။

20 GB ကို ဒစ်ခ်ပေါ်သို့ အဆက်မပဌတ် စလန့်ပစ်ခဌင်သသည် ကောင်သသောအကဌံမဟုတ်သောကဌောင့် စက္ကန့်တိုင်သကို သိမ်သဆည်သရန်မဟာလည်သ အလုပ်မဖဌစ်ပါ။

ကရည်ရလယ်ချက်အတလက်၊ ရဟေ့ရေသမဟတ်တမ်သ၏ သဘောတရာသကို တီထလင်ပဌီသ အကောင်အထည်ဖော်ခဲ့သည်။ ၎င်သ၏အကူအညီဖဌင့်၊ ဒေတာပဌောင်သလဲမဟုတိုင်သအတလက်၊ ထည့်သလင်သမဟုကို သေသငယ်သော မဟတ်တမ်သဖိုင်တစ်ခုတလင် ဖန်တီသထာသသည်။

စစ်ဆေသရေသဂိတ်အထိ ဝင်ခလင့်တစ်ခုစီကို ၎င်သတို့တလင် သိမ်သဆည်သထာသသည်။ ကဖိုင်မျာသအတလက် ကျလန်ုပ်တို့သည် အရလယ်အစာသကို သတ်မဟတ်သည် - ဥပမာ၊ 64 MB။ ပဌည့်သလာသသောအခါတလင် အသံသလင်သခဌင်သသည် ဒုတိယဖိုင်သို့ ရောက်သလာသပါသည်။ ပဌန်လည်စတင်ပဌီသနောက်၊ Tarantool သည် နောက်ဆုံသစစ်ဆေသရေသဂိတ်မဟ ပဌန်လည်ရယူပဌီသ ရပ်တန့်သလာသသည်အထိ နောက်ပိုင်သတလင် ငလေပေသငလေယူမျာသအာသလုံသကို ပဌန်လည်လုပ်ဆောင်သည်။

Tarantool တလင်၊ သင်သည် အလလန်မဌန်ဆန်သော ဒေတာဘေ့စ်နဟင့် ၎င်သတို့နဟင့် လုပ်ဆောင်ရန် အက်ပ်လီကေသရဟင်သကို ပေါင်သစပ်နိုင်သည်။ ဒါလုပ်နည်သက လလယ်ပါတယ်။

ယင်သကဲ့သို့ မဟတ်တမ်သတင်ခဌင်သအာသ လုပ်ဆောင်ရန်၊ သင်သည် box.cfg ဆက်တင်မျာသ (ဥပမာ.lua ဖိုင်တလင်) ရလေသစရာကို သတ်မဟတ်ရန် လိုအပ်သည်။

wal_mode = “write”;

ဒေတာအသုံသပဌုမဟု

ယခုကျလန်ုပ်တို့ရေသသာသခဲ့သည့်အရာနဟင့်အတူ၊ သင်သည်ဒေတာသိမ်သဆည်သရန် Tarantula ကိုအသုံသပဌုနိုင်ပဌီသ၎င်သသည်ဒေတာဘေ့စ်တစ်ခုအနေဖဌင့်အလလန်လျင်မဌန်စလာအလုပ်လုပ်လိမ့်မည်။ ယခုတော့ ကိတ်မုန့်ပေါ်ရဟိ အိုင်စီစိမ်ခဌင်သသည် သင်အာသလုံသနဟင့် လုပ်နိုင်သောအရာဖဌစ်သည်။

ကျလန်ုပ်တို့သည် အက်ပလီကေသရဟင်သတစ်ခုရေသနေပါသည်။

ဥပမာအာသဖဌင့်၊ Tarantula အတလက် အောက်ပါအပလီကေသရဟင်သကို ရေသကဌပါစို့

လျဟောက်လလဟာကို spoiler အောက်တလင်ကဌည့်ပါ။

box.cfg {
    listen = '0.0.0.0:3301';
    io_collect_interval = nil;
    readahead = 16320;
    memtx_memory = 128 * 1024 * 1024; -- 128Mb
    memtx_min_tuple_size = 16;
    memtx_max_tuple_size = 128 * 1024 * 1024; -- 128Mb
    vinyl_memory = 128 * 1024 * 1024; -- 128Mb
    vinyl_cache = 128 * 1024 * 1024; -- 128Mb
    vinyl_max_tuple_size = 128 * 1024 * 1024; -- 128Mb
    vinyl_write_threads = 2;
    wal_mode = "write";
    wal_max_size = 256 * 1024 * 1024;
    checkpoint_interval = 60 * 60; -- one hour
    checkpoint_count = 6;
    force_recovery = true;
    log_level = 5;
    log_nonblock = false;
    too_long_threshold = 0.5;
    read_only   = false
}

local function bootstrap()
    local space = box.schema.create_space('example')
    space:create_index('primary')

    box.schema.user.create('example', { password = 'secret' })
    box.schema.user.grant('example', 'read,write,execute', 'space', 'example')

    box.schema.user.create('repl', { password = 'replication' })
    box.schema.user.grant('repl', 'replication')
end

-- for first run create a space and add set up grants
box.once('replica', bootstrap)

-- enabling console access
console = require('console')
console.listen('127.0.0.1:3302')

-- http config
local charset = {}  do -- [0-9a-zA-Z]
    for c = 48, 57  do table.insert(charset, string.char(c)) end
    for c = 65, 90  do table.insert(charset, string.char(c)) end
    for c = 97, 122 do table.insert(charset, string.char(c)) end
end

local function randomString(length)
    if not length or length <= 0 then return '' end
    math.randomseed(os.clock()^5)
    return randomString(length - 1) .. charset[math.random(1, #charset)]
end

local http_router = require('http.router')
local http_server = require('http.server')
local json = require('json')

local httpd = http_server.new('0.0.0.0', 8080, {
    log_requests = true,
    log_errors = true
})

local router = http_router.new()

local function get_count()
 local cnt = box.space.example:len()
 return cnt
end

router:route({method = 'GET', path = '/count'}, function()
    return {status = 200, body = json.encode({count = get_count()})}
end)

router:route({method = 'GET', path = '/token'}, function()
    local token = randomString(32)
    local last = box.space.example:len()
    box.space.example:insert{ last + 1, token }
    return {status = 200, body = json.encode({token = token})}
end)

prometheus = require('prometheus')

fiber = require('fiber')
tokens_count = prometheus.gauge("tarantool_tokens_count",
                              "API Tokens Count")

function monitor_tokens_count()
  while true do
    tokens_count:set(get_count())
    fiber.sleep(5)
  end
end
fiber.create(monitor_tokens_count)

router:route( { method = 'GET', path = '/metrics' }, prometheus.collect_http)

httpd:set_router(router)
httpd:start()

ကျလန်ုပ်တို့သည် စာလုံသမျာသကို သတ်မဟတ်ပေသသည့် lua တလင် ဇယာသအချို့ကို ကဌေညာသည်။ ကျပန်သစာကဌောင်သတစ်ခုထုတ်လုပ်ရန် ကပန်သကန်ပဌာသ လိုအပ်သည်။

local charset = {}  do -- [0-9a-zA-Z]
    for c = 48, 57  do table.insert(charset, string.char(c)) end
    for c = 65, 90  do table.insert(charset, string.char(c)) end
    for c = 97, 122 do table.insert(charset, string.char(c)) end
end

ထို့နောက်တလင်၊ ကျလန်ုပ်တို့သည် randomString လုပ်ဆောင်ချက်ကိုကဌေငဌာပဌီသ ကလင်သအတလင်သ အလျာသတန်ဖိုသကို ပေသသည်။

local function randomString(length)
    if not length or length <= 0 then return '' end
    math.randomseed(os.clock()^5)
    return randomString(length - 1) .. charset[math.random(1, #charset)]
end

ထို့နောက် ကျလန်ုပ်တို့သည် သုံသစလဲသူထံပေသပို့မည့် ကျလန်ုပ်တို့၏ Tarantula ဆာဗာ JSON နဟင့် http router နဟင့် http ဆာဗာကို ချိတ်ဆက်သည်။

local http_router = require('http.router')
local http_server = require('http.server')
local json = require('json')

၎င်သပဌီသနောက်၊ ကျလန်ုပ်တို့သည် တောင်သဆိုချက်မျာသနဟင့် အမဟာသမျာသအာသလုံသကို မဟတ်တမ်သတင်မည့် http server interfaces အာသလုံသတလင် port 8080 တလင် စတင်ပါသည်။

local httpd = http_server.new('0.0.0.0', 8080, {
    log_requests = true,
    log_errors = true
})

ထို့နောက်၊ ကျလန်ုပ်တို့သည် လမ်သကဌောင်သကိုကဌေငဌာသည်၊ ထို့ကဌောင့် GET နည်သလမ်သဖဌင့် တောင်သဆိုချက်တစ်ခု port 8080 /count တလင်ရောက်ရဟိပါက၊ လိုင်သတစ်ခုမဟ function ကိုခေါ်သည်။ ၎င်သသည် ကျလန်ုပ်တို့သတ်မဟတ်ထာသသော အခဌေအနေကို - 200၊ 404၊ 403 သို့ ပဌန်ပေသသည်။

router:route({method = 'GET', path = '/count'}, function()
    return {status = 200, body = json.encode({count = get_count()})}
end)

ကျလန်ုပ်တို့သည် ကိုယ်ထည်တလင် json.encode ကိုပဌန်ပေသသည်၊ ၎င်သတလင် ကျလန်ုပ်တို့၏ဒေတာဘေ့စ်ရဟိ မဟတ်တမ်သအရေအတလက်ကို ခေါ်ပဌီသ ပဌသသည့် count နဟင့် getcount ကိုညလဟန်ပဌပါသည်။

ဒုတိယနည်သလမ်သ

router:route({method = 'GET', path = '/token'}, function() 
    local token = randomString(32) 
    local last = box.space.example:len() 
    box.space.example:insert{ last + 1, token } 
    return {status = 200, body = json.encode({token = token})}
end)

လိုင်သဘယ်မဟာလဲ။ router:route({method = 'GET'၊ path = '/token'}၊ function() ကျလန်ုပ်တို့သည် function ကိုခေါ်ဆိုပဌီသ တိုကင်တစ်ခုထုတ်ပေသသည်။

အတန်သ local token = randomString(32) စာလုံသ 32 လုံသပါသည့် ကျပန်သစာတန်သတစ်ခုဖဌစ်သည်။
တန်သဝင်ကာစီသည် local last = box.space.example:len() ငါတို့သည်နောက်ဆုံသဒဌပ်စင်ကိုထုတ်နဟုတ်။
လိုင်သထဲမဟာ box.space.example:insert{ last + 1၊ token } ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ ဒေတာဘေ့စ်ထဲသို့ ဒေတာမျာသကို ရေသလိုက်ခဌင်သဖဌစ်သည်၊ ဆိုလိုသည်မဟာ ကျလန်ုပ်တို့သည် ID ကို 1 ဖဌင့် တိုသပေသရုံသာဖဌစ်သည်။ Tarantula တလင်ကအတလက် sequence မျာသရဟိသည်။

အဲဒီမဟာ တိုကင်ကို ရေသတယ်။

ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် application ကိုဖိုင်တစ်ဖိုင်တလင်ရေသသာသခဲ့သည်။ သင်သည် ထိုနေရာတလင် ဒေတာကို တိုက်ရိုက် ကိုင်တလယ်နိုင်ပဌီသ၊ ဘောက်စ် module သည် သင့်အတလက် ညစ်ပတ်သော အလုပ်အာသလုံသကို လုပ်ဆောင်ပေသလိမ့်မည်။

၎င်သသည် http ကိုနာသထောင်ပဌီသ data နဟင့်အလုပ်လုပ်သည်၊ အရာအာသလုံသသည် application နဟင့် data နဟစ်ခုလုံသတလင်ဥပမာတစ်ခုတည်သတလင်ဖဌစ်သည်။ ထို့ကဌောင့်၊ အရာအာသလုံသသည်အတော်လေသမဌန်သည်။

စတင်ရန်အတလက် ကျလန်ုပ်တို့သည် http module ကို တပ်ဆင်ပါ-

ဒါကိုဘယ်လိုလုပ်မလဲ၊ spoiler အောက်မဟာကဌည့်ပါ။

root@test2:/# tarantoolctl rocks install http
Installing http://rocks.tarantool.org/http-scm-1.src.rock
Missing dependencies for http scm-1:
   checks >= 3.0.1 (not installed)

http scm-1 depends on checks >= 3.0.1 (not installed)
Installing http://rocks.tarantool.org/checks-3.0.1-1.rockspec

Cloning into 'checks'...
remote: Enumerating objects: 28, done.
remote: Counting objects: 100% (28/28), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 28 (delta 1), reused 16 (delta 1), pack-reused 0
Receiving objects: 100% (28/28), 12.69 KiB | 12.69 MiB/s, done.
Resolving deltas: 100% (1/1), done.
Note: checking out '580388773ef11085015b5a06fe52d61acf16b201'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

No existing manifest. Attempting to rebuild...
checks 3.0.1-1 is now installed in /.rocks (license: BSD)

-- The C compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found TARANTOOL: /usr/include (found version "2.4.2-80-g18f2bc82d")
-- Tarantool LUADIR is /.rocks/share/tarantool/rocks/http/scm-1/lua
-- Tarantool LIBDIR is /.rocks/share/tarantool/rocks/http/scm-1/lib
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    version


-- Build files have been written to: /tmp/luarocks_http-scm-1-V4P9SM/http/build.luarocks
Scanning dependencies of target httpd
[ 50%] Building C object http/CMakeFiles/httpd.dir/lib.c.o
In file included from /tmp/luarocks_http-scm-1-V4P9SM/http/http/lib.c:32:0:
/tmp/luarocks_http-scm-1-V4P9SM/http/http/lib.c: In function ‘tpl_term’:
/usr/include/tarantool/lauxlib.h:144:15: warning: this statement may fall through [-Wimplicit-fallthrough=]
    (*(B)->p++ = (char)(c)))
    ~~~~~~~~~~~^~~~~~~~~~~~
/tmp/luarocks_http-scm-1-V4P9SM/http/http/lib.c:62:7: note: in expansion of macro ‘luaL_addchar’
       luaL_addchar(b, '\');
       ^~~~~~~~~~~~
/tmp/luarocks_http-scm-1-V4P9SM/http/http/lib.c:63:6: note: here
      default:
      ^~~~~~~
In file included from /tmp/luarocks_http-scm-1-V4P9SM/http/http/lib.c:39:0:
/tmp/luarocks_http-scm-1-V4P9SM/http/http/tpleval.h: In function ‘tpe_parse’:
/tmp/luarocks_http-scm-1-V4P9SM/http/http/tpleval.h:147:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
    type = TPE_TEXT;
    ~~~~~^~~~~~~~~~
/tmp/luarocks_http-scm-1-V4P9SM/http/http/tpleval.h:149:3: note: here
   case TPE_LINECODE:
   ^~~~
In file included from /tmp/luarocks_http-scm-1-V4P9SM/http/http/lib.c:40:0:
/tmp/luarocks_http-scm-1-V4P9SM/http/http/httpfast.h: In function ‘httpfast_parse’:
/tmp/luarocks_http-scm-1-V4P9SM/http/http/httpfast.h:372:22: warning: this statement may fall through [-Wimplicit-fallthrough=]
                 code = 0;
                 ~~~~~^~~
/tmp/luarocks_http-scm-1-V4P9SM/http/http/httpfast.h:374:13: note: here
             case status:
             ^~~~
/tmp/luarocks_http-scm-1-V4P9SM/http/http/httpfast.h:393:23: warning: this statement may fall through [-Wimplicit-fallthrough=]
                 state = message;
                 ~~~~~~^~~~~~~~~
/tmp/luarocks_http-scm-1-V4P9SM/http/http/httpfast.h:395:13: note: here
             case message:
             ^~~~
[100%] Linking C shared library lib.so
[100%] Built target httpd
[100%] Built target httpd
Install the project...
-- Install configuration: "Debug"
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/VERSION.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lib/http/lib.so
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/server/init.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/server/tsgi_adapter.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/nginx_server/init.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/router/init.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/router/fs.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/router/matching.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/router/middleware.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/router/request.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/router/response.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/tsgi.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/utils.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/mime_types.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/codes.lua
http scm-1 is now installed in /.rocks (license: BSD)

root@test2:/#

လည်ပတ်ရန်အတလက် ကျလန်ုပ်တို့သည်လည်သ Prometheus လိုအပ်ပါသည်။

root@test2:/# tarantoolctl rocks install prometheus
Installing http://rocks.tarantool.org/prometheus-scm-1.rockspec

Cloning into 'prometheus'...
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 19 (delta 2), reused 5 (delta 0), pack-reused 0
Receiving objects: 100% (19/19), 10.73 KiB | 10.73 MiB/s, done.
Resolving deltas: 100% (2/2), done.
prometheus scm-1 is now installed in /.rocks (license: BSD)

root@test2:/#

ကျလန်ုပ်တို့သည် စတင်ပဌီသ မော်ဂျူသမျာသကို ဝင်ရောက်နိုင်သည်။

root@test2:/# curl -D - -s http://127.0.0.1:8080/token
HTTP/1.1 200 Ok
Content-length: 44
Server: Tarantool http (tarantool v2.4.2-80-g18f2bc82d)
Connection: keep-alive

{"token":"e2tPq9l5Z3QZrewRf6uuoJUl3lJgSLOI"}

root@test2:/# curl -D - -s http://127.0.0.1:8080/token
HTTP/1.1 200 Ok
Content-length: 44
Server: Tarantool http (tarantool v2.4.2-80-g18f2bc82d)
Connection: keep-alive

{"token":"fR5aCA84gj9eZI3gJcV0LEDl9XZAG2Iu"}

root@test2:/# curl -D - -s http://127.0.0.1:8080/count
HTTP/1.1 200 Ok
Content-length: 11
Server: Tarantool http (tarantool v2.4.2-80-g18f2bc82d)
Connection: keep-alive

{"count":2}root@test2:/#

/count သည် ကျလန်ုပ်တို့အာသ status 200 ပေသသည်။
/token သည် တိုကင်တစ်ခုကို ထုတ်ပဌပဌီသ ကတိုကင်ကို ဒေတာဘေ့စ်သို့ ရေသသည်။

မဌန်နဟုန်သကိုစမ်သသပ်ခဌင်သ။

တောင်သဆိုချက် 50 အတလက် စံသတ်မဟတ်ချက်တစ်ခု လုပ်ဆောင်ကဌပါစို့။ ယဟဉ်ပဌိုင်တောင်သဆိုမဟု 000 ရဟိလိမ့်မည်။

root@test2:/# ab -c 500 -n 50000 http://127.0.0.1:8080/token
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests


Server Software:        Tarantool
Server Hostname:        127.0.0.1
Server Port:            8080

Document Path:          /token
Document Length:        44 bytes

Concurrency Level:      500
Time taken for tests:   14.578 seconds
Complete requests:      50000
Failed requests:        0
Total transferred:      7950000 bytes
HTML transferred:       2200000 bytes
Requests per second:    3429.87 [#/sec] (mean)
Time per request:       145.778 [ms] (mean)
Time per request:       0.292 [ms] (mean, across all concurrent requests)
Transfer rate:          532.57 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   10 103.2      0    3048
Processing:    12   69 685.1     15   13538
Waiting:       12   69 685.1     15   13538
Total:         12   78 768.2     15   14573

Percentage of the requests served within a certain time (ms)
  50%     15
  66%     15
  75%     16
  80%     16
  90%     16
  95%     16
  98%     21
  99%     42
 100%  14573 (longest request)
root@test2:/#

တိုကင်မျာသထုတ်ပေသသည်။ ကျလန်ုပ်တို့သည် ဒေတာမျာသကို အဆက်မပဌတ် မဟတ်တမ်သတင်နေပါသည်။ တောင်သဆိုမဟုမျာသ၏ 99% ကို 42 မီလီစက္ကန့်အတလင်သ လုပ်ဆောင်ခဲ့သည်။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့တလင် 3500 cores နဟင့် memory 2 gigabyte ရဟိသော စက်ငယ်လေသတလင် တစ်စက္ကန့်လျဟင် တောင်သဆိုမဟု 4 ခန့်ရဟိသည်။

50000 တိုကင်ကိုလည်သ သင်ရလေသချယ်နိုင်ပဌီသ ၎င်သ၏တန်ဖိုသကို ကဌည့်ရဟုနိုင်သည်။

http ကိုသာမက သင့်ဒေတာကို စီမံဆောင်ရလက်ပေသသည့် နောက်ခံလုပ်ဆောင်ချက်မျာသကိုလည်သ သင်အသုံသပဌုနိုင်ပါသည်။ ထို့အပဌင် အမျိုသမျိုသသော တလန်သအာသမျာသ ရဟိပါသည်။ ဥပမာအာသဖဌင့်၊ သင်သည် အပ်ဒိတ်မျာသတလင် လုပ်ဆောင်ချက်မျာသကို ခေါ်ဆိုနိုင်ပဌီသ တစ်ခုခုကို စစ်ဆေသပါ - မဟန်ကန်သော ပဋိပက္ခမျာသ။

ဒေတာဘေ့စ်ဆာဗာကိုယ်တိုင်က script applications တလေကို တိုက်ရိုက်ရေသနိုင်ပဌီသ ဘယ်အရာကမဟ ကန့်သတ်မထာသဘဲ ဘယ် module တလေကိုမဆို ချိတ်ဆက်ပဌီသ logic တစ်ခုခုကို အကောင်အထည်ဖော်နိုင်ပါတယ်။

အပလီကေသရဟင်သဆာဗာသည် ပဌင်ပဆာဗာမျာသကို ဝင်ရောက်ကဌည့်ရဟုနိုင်သည်၊ ဒေတာကို ရယူပဌီသ ၎င်သ၏ဒေတာဘေ့စ်သို့ ထည့်နိုင်သည်။ ကဒေတာဘေ့စ်မဟ ဒေတာကို အခဌာသသော အပလီကေသရဟင်သမျာသမဟ အသုံသပဌုပါမည်။

Tarantula သည် ၎င်သကို ကိုယ်တိုင်လုပ်ဆောင်မည်ဖဌစ်ပဌီသ သီသခဌာသ application တစ်ခုရေသရန် မလိုအပ်ပါ။

နိဂုံသချုပ်

ဒါက အလုပ်ကဌီသတစ်ခုရဲ့ ပထမပိုင်သပဲလေ။ ဒုတိယတစ်ခုကို Mail.ru Group ဘလော့ဂ်တလင် မကဌာမီ ထုတ်ဝေတော့မည် ဖဌစ်ပဌီသ ၎င်သနဟင့် လင့်ခ်တစ်ခုကို ကျလန်ုပ်တို့ သေချာပေါက် ထည့်ပေသပါမည်။

ကျလန်ုပ်တို့သည် ကအရာမျာသကို အလန်လိုင်သတလင် တည်ဆောက်ပဌီသ အချိန်နဟင့်တပဌေသညီ မေသခလန်သမျာသမေသသည့် ပလဲမျာသကို တက်ရောက်ရန် စိတ်ဝင်စာသပါက ဝင်ရောက်ကဌည့်ရဟုပါ။ REBRAIN မဟ DevOps ချန်နယ်.

Cloud သို့ ရလဟေ့ရန် လိုအပ်ပါက သို့မဟုတ် သင်၏ အခဌေခံ အဆောက်အအုံနဟင့် ပတ်သက်သည့် မေသခလန်သမျာသ ရဟိပါက၊ တောင်သဆိုချက်တစ်ခုချန်ထာသခဲ့ပါ။.

PS ကျလန်ုပ်တို့တလင် တစ်လလျဟင် အခမဲ့စာရင်သစစ် ၂ ခုရဟိသည်၊ သင်၏ပရောဂျက်သည် ၎င်သတို့ထဲမဟတစ်ခုဖဌစ်ကောင်သဖဌစ်နိုင်သည်။

source: www.habr.com

မဟတ်ချက် Add