InfluxDB နှင့်အလုပ်လုပ်သောအခါ ဒေါသ၊ အလျှော့အတင်းလုပ်ပြီး စိတ်ဓာတ်ကျခြင်း။

InfluxDB နှင့်အလုပ်လုပ်သောအခါ ဒေါသ၊ အလျှော့အတင်းလုပ်ပြီး စိတ်ဓာတ်ကျခြင်း။

အချိန်စီးရီးဒေတာဘေ့စ် (timeseries db၊ ဝီကီ) စာရင်းဇယားရှိသောဆိုက်တစ်ခုအတွက် ပင်မသိုလှောင်မှုအဖြစ်၊ ထို့နောက် ပြဿနာကိုဖြေရှင်းမည့်အစား သင်ခေါင်းကိုက်နိုင်သည်။ ထိုသို့သော ဒေတာဘေ့စ်ကို အသုံးပြုသည့် ပရောဂျက်တစ်ခုတွင် ကျွန်ုပ်လုပ်ဆောင်နေပြီး တစ်ခါတစ်ရံတွင် ဆွေးနွေးမည့် InfluxDB သည် လုံးဝမျှော်လင့်မထားသော အံ့သြဖွယ်များကို တင်ပြပါသည်။

ခွင: ဖော်ပြထားသော ပြဿနာများသည် InfluxDB ဗားရှင်း 1.7.4 နှင့် သက်ဆိုင်ပါသည်။

အချိန်စီးရီး ဘာကြောင့်လဲ။

ပရောဂျက်သည် အမျိုးမျိုးသော blockchains များတွင် အရောင်းအဝယ်များကို ခြေရာခံရန်နှင့် ကိန်းဂဏန်းများကို ပြသရန်ဖြစ်သည်။ အတိအကျအားဖြင့်၊ ကျွန်ုပ်တို့သည် တည်ငြိမ်သောဒင်္ဂါးပြားများ၏ ထုတ်လွှတ်မှုနှင့် လောင်ကျွမ်းမှုကို ကြည့်ပါ (ဝီကီ) ဤငွေပေးငွေယူများအပေါ် အခြေခံ၍ ဂရပ်များတည်ဆောက်ရန်နှင့် အနှစ်ချုပ်ဇယားများကို ပြသရန် လိုအပ်ပါသည်။

အရောင်းအ၀ယ်များကို ခွဲခြမ်းစိတ်ဖြာနေစဉ်တွင်၊ InfluxDB အချိန်စီးရီးဒေတာဘေ့စ်ကို ပင်မသိုလှောင်မှုအဖြစ် အသုံးပြုရန် အကြံဥာဏ်တစ်ခု ထွက်ပေါ်လာခဲ့သည်။ ငွေပေးငွေယူများသည် အချိန်အလိုက် အမှတ်များဖြစ်ပြီး ၎င်းတို့သည် time series model နှင့် ကောင်းစွာလိုက်ဖက်ပါသည်။

စုစည်းမှုလုပ်ဆောင်ချက်များသည်လည်း အလွန်အဆင်ပြေပုံပေါက်သည် - ဇယားများကို အချိန်ကြာမြင့်စွာ လုပ်ဆောင်ရန်အတွက် အကောင်းဆုံးဖြစ်သည်။ အသုံးပြုသူသည် တစ်နှစ်အတွက် ဇယားတစ်ခု လိုအပ်ပြီး ဒေတာဘေ့စ်တွင် အချိန်ငါးမိနစ်ရှိသော ဒေတာအစုံပါရှိသည်။ အစက်တစ်သိန်းကို ရှည်လျားစွာလုပ်ဆောင်ခြင်းမှလွဲ၍ ၎င်းတို့သည် စခရင်ပေါ်တွင်ပင် အံမဝင်နိုင်တော့ပေ။ အချိန်ကာလ တိုးမြှင့်ခြင်းအတွက် သင့်ကိုယ်ပိုင် အကောင်အထည်ဖော်မှုကို ရေးသားနိုင်သည်၊ သို့မဟုတ် Influx တွင် တည်ဆောက်ထားသော စုစည်းမှုလုပ်ဆောင်ချက်များကို အသုံးပြုနိုင်သည်။ ၎င်းတို့၏အကူအညီဖြင့် သင်သည် ဒေတာများကို နေ့အလိုက် အုပ်စုဖွဲ့နိုင်ပြီး လိုအပ်သော 365 မှတ်များကို ပေးပို့နိုင်ပါသည်။

ထိုသို့သောဒေတာဘေ့စ်များကို များသောအားဖြင့် မက်ထရစ်များစုဆောင်းရန် ရည်ရွယ်ချက်အတွက် အသုံးပြုကြသည်မှာ အနည်းငယ်ရှုပ်ထွေးပါသည်။ ဆာဗာများ၊ အိုင်အိုတီကိရိယာများကို စောင့်ကြည့်ခြင်း၊ ဖောင်ပုံစံ “စီးဆင်းမှု” ၏ သန်းပေါင်းများစွာသော အမှတ်များမှ အရာအားလုံး- [<time> - <မက်ထရစ်တန်ဖိုး>]။ သို့သော် ဒေတာဘေ့စ်သည် ကြီးမားသောဒေတာစီးဆင်းမှုနှင့်အတူ ကောင်းမွန်စွာအလုပ်လုပ်ပါက၊ သေးငယ်သော volume သည် အဘယ်ကြောင့် ပြဿနာဖြစ်စေသင့်သနည်း။ ဒါကို စိတ်ထဲထားပြီးတော့ InfluxDB ကို အလုပ်လုပ်ခိုင်းတယ်။

InfluxDB တွင် အခြားမည်သည့်အရာက အဆင်ပြေသနည်း။

ဖော်ပြထားသော ပေါင်းစပ်လုပ်ဆောင်ချက်များအပြင် အခြားသော ကြီးမြတ်သောအရာလည်း ရှိသေးသည်။ ဆက်တိုက်မေးမြန်းမှုများ (doc) ၎င်းသည် အချိန်ဇယားတစ်ခုပေါ်တွင် ဒေတာကို လုပ်ဆောင်နိုင်သည့် ဒေတာဘေ့စ်တွင် တည်ဆောက်ထားသော အချိန်ဇယားတစ်ခုဖြစ်သည်။ ဥပမာအားဖြင့်၊ 24 နာရီတိုင်း သင်သည် တစ်နေ့တာအတွက် မှတ်တမ်းအားလုံးကို အုပ်စုဖွဲ့နိုင်ပြီး၊ ပျမ်းမျှကို တွက်ချက်ပြီး သင့်ကိုယ်ပိုင်စက်ဘီးကို မရေးဘဲ အခြားဇယားတစ်ခုတွင် အမှတ်အသစ်တစ်ခုကို မှတ်တမ်းတင်နိုင်သည်။

တစ်ဦးလည်းရှိသေး၏ ထိန်းသိမ်းမှုမူဝါဒများ (doc)—သတ်မှတ်ကာလတစ်ခုပြီးနောက် ဒေတာဖျက်ခြင်းကို စနစ်ထည့်သွင်းခြင်း။ ဥပမာအားဖြင့်၊ သင်သည် တစ်စက္ကန့်လျှင် တစ်ကြိမ် တိုင်းတာမှုများဖြင့် CPU load ကို တစ်ပတ်ကြာ သိမ်းဆည်းထားရန် လိုအပ်သော်လည်း လအနည်းငယ်အကွာအဝေးတွင် ယင်းကဲ့သို့ တိကျမှု မလိုအပ်သောအခါတွင် ၎င်းသည် အသုံးဝင်သည်။ ထိုသို့သောအခြေအနေမျိုးတွင်၊ သင်သည်ဤသို့လုပ်ဆောင်နိုင်သည်-

  1. ဒေတာများကို အခြားဇယားတစ်ခုသို့ စုစည်းရန် စဉ်ဆက်မပြတ် မေးမြန်းမှုတစ်ခုကို ဖန်တီးပါ။
  2. ပထမဇယားအတွက်၊ ထိုရက်သတ္တပတ်ထက်ကြီးသော မက်ထရစ်များကို ဖျက်ခြင်းဆိုင်ရာ မူဝါဒကို သတ်မှတ်ပါ။

Influx သည် ဒေတာအရွယ်အစားကို လွတ်လပ်စွာ လျှော့ချပြီး မလိုအပ်သောအရာများကို ဖျက်ပစ်မည်ဖြစ်သည်။

သိမ်းဆည်းထားသော ဒေတာအကြောင်း

ဒေတာများများစားစား မသိမ်းဆည်းထားပါ- အရောင်းအ၀ယ်လုပ်ငန်း 70 ခန့်နှင့် စျေးကွက်အချက်အလက်များပါရှိသော အခြားအချက်ပေါင်း သန်းပေါင်းများစွာ။ အသစ်ထည့်သွင်းခြင်း - တစ်နေ့လျှင် အမှတ် 3000 ထက်မပိုပါ။ ဝဘ်ဆိုက်အတွက် မက်ထရစ်များပါရှိသော်လည်း ထိုနေရာတွင် ဒေတာအနည်းငယ်သာရှိပြီး သိမ်းဆည်းရေးမူဝါဒအရ ၎င်းတို့ကို တစ်လထက်မပိုဘဲ သိမ်းဆည်းထားသည်။

ပြဿနာများ

ဝန်ဆောင်မှု၏ဖွံ့ဖြိုးတိုးတက်မှုနှင့်နောက်ဆက်တွဲစမ်းသပ်မှုကာလအတွင်း၊ InfluxDB ၏လည်ပတ်မှုတွင်ပိုမိုပြင်းထန်သောပြဿနာများပေါ်ပေါက်ခဲ့သည်။

1. ဒေတာကိုဖျက်ခြင်း။

ငွေပေးငွေယူ ဒေတာ အတွဲလိုက် ရှိသည်-

SELECT time, amount, block, symbol FROM transactions WHERE symbol='USDT'

ရလဒ်:

InfluxDB နှင့်အလုပ်လုပ်သောအခါ ဒေါသ၊ အလျှော့အတင်းလုပ်ပြီး စိတ်ဓာတ်ကျခြင်း။

ကျွန်ုပ်သည် ဒေတာကို ဖျက်ရန် အမိန့်တစ်ခု ပို့နေသည်-

DELETE FROM transactions WHERE symbol=’USDT’

ထို့နောက် ဖျက်ပြီးသားဒေတာကို လက်ခံရယူရန် တောင်းဆိုချက်တစ်ခု ပြုလုပ်ပါသည်။ အချည်းနှီးသော တုံ့ပြန်မှုအစား Influx သည် ဖျက်သင့်သည့် ဒေတာ၏ အစိတ်အပိုင်းကို ပြန်ပေးသည်။

ဇယားတစ်ခုလုံးကို ဖျက်ရန် ကြိုးစားနေပါသည်။

DROP MEASUREMENT transactions

ဇယားဖျက်ခြင်းအား ကျွန်ုပ်စစ်ဆေးပါ

SHOW MEASUREMENTS

စာရင်းထဲတွင် ဇယားကို ကျွန်ုပ်မတွေ့ရသေးသော်လည်း ဒေတာမေးမြန်းမှုအသစ်သည် တူညီသော ငွေပေးငွေယူအစုအဝေးကို ပြန်ပေးနေဆဲဖြစ်သည်။

ဖျက်သိမ်းမှုကိစ္စသည် သီးခြားကိစ္စဖြစ်သောကြောင့် ကျွန်ုပ်တွင် ပြဿနာတစ်ကြိမ်သာ ဖြစ်ပွားခဲ့သည်။ သို့သော် ဒေတာဘေ့စ်၏ ဤအပြုအမူသည် "မှန်ကန်သော" လုပ်ဆောင်ချက်၏ မူဘောင်တွင် ရှင်းရှင်းလင်းလင်း မကိုက်ညီပါ။ နောက်တော့ github မှာဖွင့်ထားတာတွေ့တယ်။ လက်မှတ် ဒီအကြောင်းအရာနဲ့ ပတ်သက်ပြီး လွန်ခဲ့တဲ့ တစ်နှစ်နီးပါးလောက်ကပေါ့။

ရလဒ်အနေဖြင့်၊ ဖျက်ပြီးနောက်ဒေတာဘေ့စ်တစ်ခုလုံးကိုပြန်လည်ရယူရန်ကူညီခဲ့သည်။

2. Floating Point နံပါတ်များ

InfluxDB တွင်ထည့်သွင်းထားသောလုပ်ဆောင်ချက်များကိုအသုံးပြုသောအခါသင်္ချာတွက်ချက်မှုများတွင်တိကျမှုအမှားများရှိသည်။ ဒါက အထူးအဆန်းမဟုတ်ပေမယ့် အဆင်မပြေပါဘူး။

ကျွန်ုပ်၏ကိစ္စတွင်၊ ဒေတာသည် ငွေကြေးဆိုင်ရာ အစိတ်အပိုင်းတစ်ခုရှိပြီး ၎င်းကို တိကျမှန်ကန်စွာဖြင့် လုပ်ဆောင်လိုပါသည်။ ထို့အတွက်ကြောင့် ကျွန်ုပ်တို့သည် စဉ်ဆက်မပြတ် မေးမြန်းမှုများကို စွန့်လွှတ်ရန် စီစဉ်ထားပါသည်။

3. ဆက်တိုက်မေးမြန်းမှုများသည် မတူညီသောအချိန်ဇုန်များသို့ လိုက်လျောညီထွေမဖြစ်နိုင်ပါ။

ဝန်ဆောင်မှုတွင် နေ့စဉ် ငွေပေးငွေယူစာရင်းဇယားပါရှိသည်။ နေ့ရက်တိုင်းအတွက်၊ သင်သည် ထိုနေ့အတွက် ငွေပေးငွေယူအားလုံးကို အုပ်စုဖွဲ့ရန် လိုအပ်သည်။ သို့သော် သုံးစွဲသူတစ်ဦးစီ၏နေ့ရက်သည် မတူညီသောအချိန်တစ်ခုတွင် စတင်မည်ဖြစ်ပြီး ထို့ကြောင့် ငွေပေးငွေယူအစုစုသည် ကွဲပြားမည်ဖြစ်သည်။ UTC အားဖြင့် ဟုတ်ပါတယ်။ 37 မျိုးကွဲ ဒေတာစုစည်းရန် လိုအပ်သော အပြောင်းအလဲများ။

InfluxDB တွင်၊ အချိန်အလိုက် အုပ်စုဖွဲ့သည့်အခါ၊ ဥပမာ မော်စကိုအချိန် (UTC+3) အတွက် အပြောင်းအလဲတစ်ခုကို ထပ်လောင်းသတ်မှတ်နိုင်သည်။

SELECT MEAN("supply") FROM transactions GROUP BY symbol, time(1d, 3h) fill(previous)

သို့သော် မေးမြန်းမှုရလဒ်သည် မမှန်ပါ။ အကြောင်းတစ်ခုခုကြောင့် အုပ်စုဖွဲ့ထားသောဒေတာသည် 1677 သို့ တောက်လျှောက်စတင်လိမ့်မည် (InfluxDB သည် ယခုနှစ်မှ အချိန်အတိုင်းအတာတစ်ခုအထိ တရားဝင်ပံ့ပိုးပေးသည်)။

InfluxDB နှင့်အလုပ်လုပ်သောအခါ ဒေါသ၊ အလျှော့အတင်းလုပ်ပြီး စိတ်ဓာတ်ကျခြင်း။

ဤပြဿနာကိုဖြေရှင်းရန်အတွက် ကျွန်ုပ်တို့သည် ဝန်ဆောင်မှုကို UTC+0 သို့ ယာယီပြောင်းထားပါသည်။

4. စွမ်းဆောင်ရည်

InfluxDB နှင့် အခြားဒေတာဘေ့စ်များကို နှိုင်းယှဉ်သည့်အင်တာနက်ပေါ်တွင် စံနှုန်းများစွာရှိသည်။ အစပိုင်းမှာတော့ သူတို့ဟာ စျေးကွက်ရှာဖွေရေးပစ္စည်းတွေနဲ့တူပေမယ့် အခုသူတို့ထဲမှာ အမှန်တရားအချို့ရှိတယ်လို့ ကျွန်တော်ထင်ပါတယ်။

ငါ့ကိစ္စ မင်းကိုပြောပြမယ်။

ဝန်ဆောင်မှုသည် နောက်ဆုံးနေ့အတွက် စာရင်းအင်းများကို ပြန်ပေးသည့် API နည်းလမ်းကို ပေးဆောင်သည်။ တွက်ချက်မှုများလုပ်ဆောင်သောအခါ၊ နည်းလမ်းသည် အောက်ပါမေးခွန်းများဖြင့် ဒေတာဘေ့စ်ကို သုံးကြိမ်မေးမြန်းသည်-

SELECT * FROM coins_info WHERE time <= NOW() GROUP BY symbol ORDER BY time DESC LIMIT 1

SELECT * FROM dominance_info ORDER BY time DESC LIMIT 1

SELECT * FROM transactions WHERE time >= NOW() - 24h ORDER BY time DESC

ရှင်းလင်းချက်

  1. ပထမတောင်းဆိုချက်တွင်၊ စျေးကွက်ဒေတာနှင့်အတူ အကြွေစေ့တစ်ခုစီအတွက် နောက်ဆုံးရမှတ်များကို ကျွန်ုပ်တို့ ရရှိပါသည်။ ငါ့ကိစ္စအတွက် ရှစ်ဒင်္ဂါးပြားအတွက် ရှစ်မှတ်။
  2. ဒုတိယတောင်းဆိုချက်သည် နောက်ဆုံးရအချက်များထဲမှ တစ်ခုကို ရရှိသည်။
  3. တတိယတစ်ခုက ပြီးခဲ့သော XNUMX နာရီအတွင်း ငွေပေးငွေယူစာရင်းကို တောင်းဆိုသည်၊ ၎င်းတို့ထဲမှ ရာဂဏန်းရှိနိုင်သည်။

InfluxDB သည် မေးခွန်းများကို အရှိန်မြှင့်ပေးသည့် တဂ်များနှင့် အချိန်များအပေါ် အခြေခံ၍ အညွှန်းတစ်ခုကို အလိုအလျောက် ဖန်တီးပေးကြောင်း ရှင်းပြပါရစေ။ ပထမတောင်းဆိုချက်တွင်၊ အထိမ်းအမှတ် tag တစ်ခုဖြစ်သည်။

ကျွန်ုပ်သည် ဤ API နည်းလမ်းအတွက် စိတ်ဖိစီးမှုစမ်းသပ်မှုတစ်ခုကို လုပ်ဆောင်ပြီးပါပြီ။ 25 RPS အတွက်၊ ဆာဗာသည် CPU ခြောက်ခုအပြည့်တင်ဆောင်မှုကို သရုပ်ပြခဲ့သည်-

InfluxDB နှင့်အလုပ်လုပ်သောအခါ ဒေါသ၊ အလျှော့အတင်းလုပ်ပြီး စိတ်ဓာတ်ကျခြင်း။

တစ်ချိန်တည်းမှာပင်၊ NodeJs လုပ်ငန်းစဉ်သည် မည်သည့်ဝန်ကိုမျှ ပေးဆောင်ခြင်းမရှိပေ။

လုပ်ဆောင်ချက်အမြန်နှုန်းသည် 7-10 RPS ဖြင့် ကျဆင်းသွားသည်- အကယ်၍ သုံးစွဲသူတစ်ဦးသည် 200 ms တွင် တုံ့ပြန်မှုကို လက်ခံရရှိပါက၊ ဖောက်သည် 10 ဦးသည် တစ်စက္ကန့်စောင့်ရပါမည်။ 25 RPS သည် တည်ငြိမ်မှုကို ခံစားခဲ့ရသည့် ကန့်သတ်ချက်ဖြစ်ပြီး၊ အမှားပေါင်း 500 ကို သုံးစွဲသူများထံ ပြန်ပေးခဲ့သည်။

ထိုသို့သောစွမ်းဆောင်ရည်ဖြင့် ကျွန်ုပ်တို့၏ပရောဂျက်တွင် Influx ကိုအသုံးပြုရန်မဖြစ်နိုင်ပါ။ ထို့အပြင်- သုံးစွဲသူများစွာအား စောင့်ကြည့်လေ့လာရန် လိုအပ်သည့် ပရောဂျက်တစ်ခုတွင်၊ အလားတူပြဿနာများ ပေါ်လာနိုင်ပြီး မက်ထရစ်ဆာဗာသည် အလုပ်ပိုလုပ်လိမ့်မည်။

ကောက်ချက်

ရရှိခဲ့သည့် အတွေ့အကြုံများမှ အရေးအကြီးဆုံး နိဂုံးချုပ်ချက်မှာ လုံလောက်သော ခွဲခြမ်းစိတ်ဖြာမှုမရှိဘဲ ပရောဂျက်တစ်ခုတွင် အမည်မသိနည်းပညာတစ်ခုကို သင် ယူဆောင်နိုင်မည်မဟုတ်ပါ။ github တွင် ဖွင့်ထားသော ပြဿနာများကို ရိုးရှင်းစွာ စစ်ဆေးခြင်းသည် InfluxDB ကို အဓိက ဒေတာသိုလှောင်မှုအဖြစ် ရွေးချယ်ခြင်းမှ ရှောင်ကြဉ်ရန် အချက်အလက်ကို ပေးစွမ်းနိုင်သည်။

InfluxDB သည် ကျွန်ုပ်၏ပရောဂျက်၏လုပ်ငန်းဆောင်တာများအတွက် ကောင်းမွန်သင့်လျော်မှုရှိသင့်သည်၊ သို့သော် လက်တွေ့ပြသထားသည့်အတိုင်း၊ ဤဒေတာဘေ့စ်သည် လိုအပ်ချက်များနှင့်မကိုက်ညီဘဲ ချွတ်ယွင်းချက်များစွာရှိသည်။

သင်သည် ပရောဂျက်သိုလှောင်မှုတွင် ဗားရှင်း 2.0.0-beta ကို ရှာတွေ့နိုင်ပြီဖြစ်ပြီး၊ ဒုတိယဗားရှင်းသည် သိသာထင်ရှားသော တိုးတက်မှုများရှိမည်ဟု ကျွန်ုပ်တို့ မျှော်လင့်နိုင်ပါသည်။ ဒီကြားထဲမှာ TimescaleDB documentation ကို သွားလေ့လာပါမယ်။

source: www.habr.com

မှတ်ချက် Add