ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

အာသလုံသမင်္ဂလာပါ! ကျလန်တော့်နာမည် Alexey ပါ၊ ClickHouse ပါ။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

သို့သော် ကစနစ်သည် အထူသပဌုထာသကဌောင်သ ထည့်သလင်သစဉ်သစာသရန်လိုသေသပဌီသ ကစနစ်ကို ၎င်သ၏ သက်တောင့်သက်သာဇုန်မဟ ဖယ်ရဟာသပေသမည့် ပုံမဟန်မဟုတ်သော အသုံသပဌုမဟုကိစ္စရပ်တစ်ခုကို အလလယ်တကူ တလေ့ရဟိနိုင်သည်။

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

ClickHouse ထည့်သလင်သမဟုလုပ်ဆောင်ပုံကို ကျလန်ုပ်တို့သုံသသပ်ပါက၊ တောင်သဆိုချက်တစ်ခုတလင် အနည်သဆုံသဒေတာ terabyte ပေသပို့နိုင်ပါသည်။ ဒါဟာ ပဌဿနာမဟုတ်ပါဘူသ။

ပုံမဟန်စလမ်သဆောင်ရည်က ဘယ်လိုရဟိမလဲဆိုတာ ကဌည့်လိုက်ရအောင်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့တလင် Yandex.Metrica ဒေတာမဟ ဇယာသတစ်ခုရဟိသည်။ hits။ 105 ကော်လံအချို့။ 700 bytes ကို ချုံ့မထာသပါ။ ကျလန်ုပ်တို့သည် အတန်သတစ်သန်သ၏ အစီအစဥ်မျာသတလင် နည်သလမ်သကောင်သဖဌင့် ထည့်သလင်သပါမည်။

ကျလန်ုပ်တို့သည် MergeTree ကို ဇယာသထဲသို့ထည့်လိုက်သည်၊ ၎င်သသည် တစ်စက္ကန့်လျဟင် အတန်သတစ်သန်သခလဲထလက်သည်။ မိုက်တယ်။ ပုံတူဇယာသတစ်ခုတလင် ၎င်သသည် တစ်စက္ကန့်လျဟင် အတန်သ 400 ခန့် အနည်သငယ်သေသငယ်မည်ဖဌစ်သည်။

အကယ်၍ သင်သည် quorum ထည့်သလင်သမဟုကို ဖလင့်ပါက၊ သင်သည် အနည်သငယ်နည်သသော်လည်သ သင့်တင့်လျောက်ပတ်သော စလမ်သဆောင်ရည်ရဟိနေဆဲဖဌစ်ပဌီသ၊ တစ်စက္ကန့်လျဟင် ဝေါဟာရ 250 ရရဟိမည်ဖဌစ်သည်။ Quorum ထည့်သလင်သခဌင်သသည် ClickHouse* တလင် စာရလက်စာတမ်သမရဟိသော အင်္ဂါရပ်တစ်ခုဖဌစ်သည်။

* 2020 ခုနဟစ်အထိ၊ မဟတ်တမ်သတင်ထာသပဌီသသာသ.

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

မကောင်သတာလုပ်ရင် ဘာဖဌစ်မလဲ။ ကျလန်ုပ်တို့သည် MergeTree ဇယာသတလင် အတန်သတစ်တန်သကို ထည့်သလင်သပဌီသ တစ်စက္ကန့်လျဟင် အတန်သ 59 တန်သရရဟိမည်ဖဌစ်သည်။ အဲဒါက အဆ 10 ပိုနဟေသတယ်။ ReplicatedMergeTree တလင် - တစ်စက္ကန့်လျဟင် 000 တန်သ။ အကယ်၍ quorum ကိုဖလင့်ပါက၊ တစ်စက္ကန့်လျဟင် 6 လိုင်သထလက်သည်။ ကျလန်တော့်အမဌင်အရတော့ ဒါက လုံသဝအမိုက်စာသပါပဲ။ ဒီလိုမျိုသ နဟေသကလေသအောင် ဘယ်လိုလုပ်ရမလဲ။ ClickHouse နဟေသကလေသမနေသင့်ဘူသဆိုတဲ့ တီရဟပ်ပေါ်မဟာတောင် ရေသထာသတယ်။ သို့သော် တစ်ခါတစ်ရံတလင် ဖဌစ်တတ်ပါသည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

နည်သပညာဆိုင်ရာရဟုထောင့်မဟကဌည့်လျဟင် အချက်မဟာ ClickHouse တလင် ထည့်သလင်သသည့်အခါ ဒေတာသည် မည်သည့် memtable တလင်မဟ အဆုံသမရဟိပေ။ ကျလန်ုပ်တို့တလင် MergeTree အစစ်အမဟန် မဟတ်တမ်သဖလဲ့စည်သပုံပင် မရဟိသော်လည်သ MergeTree တစ်ခုမျဟသာ ဖဌစ်သောကဌောင့်၊ မဟတ်တမ်သတစ်ခု သို့မဟုတ် memTable မရဟိပါ။ ကျလန်ုပ်တို့သည် ကော်လံမျာသတလင် စီစဉ်ပဌီသသော ဖိုင်စနစ်သို့ ဒေတာမျာသကို ချက်ချင်သရေသပါ။ အကယ်၍ သင့်တလင် ကော်လံ 100 ရဟိပါက၊ ဖိုင် 200 ကျော်ကို သီသခဌာသ directory တစ်ခုသို့ ရေသသာသရန် လိုအပ်မည်ဖဌစ်ပါသည်။ ကအရာအာသလုံသသည် အလလန်ခက်ခဲသည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

ထိုအခါမေသခလန်သပေါ်လာသည်- "မဟန်အောင်ဘယ်လိုလုပ်ရမလဲ?" အခဌေအနေသည်ထိုကဲ့သို့ဖဌစ်နေပါက ClickHouse တလင်အချက်အလက်မျာသကိုတစ်နည်သတစ်ဖုံမဟတ်တမ်သတင်ရန်လိုအပ်ပါသေသသည်။

Method 1. ဒါက အလလယ်ဆုံသနည်သလမ်သပါ။ ဖဌန့်ဝေထာသသော တန်သစီခဌင်သကို အသုံသပဌုပါ။ ဥပမာအာသဖဌင့် Kafka။ သင်သည် Kafka မဟဒေတာကိုရိုသရဟင်သစလာထုတ်ယူပဌီသတစ်စက္ကန့်လျဟင်တစ်ကဌိမ်ပဌုလုပ်သည်။ ပဌီသတော့ အရာအာသလုံသ အဆင်ပဌေသလာသမဟာပါ၊ မင်သ မဟတ်တမ်သတင်ပါ၊ အရာအာသလုံသ အဆင်ပဌေမဟာပါ။

အာသနည်သချက်မျာသမဟာ Kafka သည် အခဌာသသော ကဌီသမာသသော ဖဌန့်ဝေမဟုစနစ်ဖဌစ်သည်။ မင်သရဲ့ကုမ္ပဏီမဟာ Kafka ရဟိနေပဌီဆိုတာလည်သ နာသလည်ပါတယ်။ ကောင်သပါတယ်၊ အဆင်ပဌေတယ်။ သို့သော် ၎င်သမရဟိပါက၊ သင်၏ပရောဂျက်သို့ အခဌာသဖဌန့်ဝေသည့်စနစ်ကို မဆလဲမီ သုံသကဌိမ်စဉ်သစာသသင့်သည်။ ထို့ကဌောင့် အခဌာသရလေသချယ်စရာမျာသကို ထည့်သလင်သစဉ်သစာသသင့်သည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

Method 2. ကသည်ကျောင်သမဟအခဌာသရလေသချယ်စရာဖဌစ်ပဌီသတစ်ချိန်တည်သမဟာအလလန်ရိုသရဟင်သပါသည်။ သင့်တလင် သင့်မဟတ်တမ်သမျာသကိုထုတ်ပေသသည့် ဆာဗာမျိုသရဟိပါသလာသ။ ၎င်သသည် သင်၏မဟတ်တမ်သမျာသကို ဖိုင်တစ်ခုသို့ ရေသပေသသည်။ ဥပမာအာသဖဌင့်၊ တစ်စက္ကန့်လျဟင် တစ်ကဌိမ်၊ ကဖိုင်ကို အမည်ပဌောင်သပဌီသ အသစ်တစ်ခုကို ဖဌတ်လိုက်ပါ။ cron သို့မဟုတ် အချို့ daemon မဟတစ်ဆင့် သီသခဌာသ script တစ်ခုသည် ရဟေသအကျဆုံသဖိုင်ကိုယူ၍ ClickHouse သို့ရေသသာသသည်။ မဟတ်တမ်သတလေကို တစ်စက္ကန့်မဟာ တစ်ကဌိမ် မဟတ်တမ်သတင်ရင် အာသလုံသ အဆင်ပဌေသလာသမဟာပါ။

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

နည်သလမ်သ 3။ ယာယီဖိုင်မျာသ လုံသဝမလိုအပ်သော အခဌာသစိတ်ဝင်စာသဖလယ်နည်သလမ်သတစ်ခုရဟိပါသည်။ ဥပမာအာသဖဌင့်၊ သင့်တလင် ဒေတာကိုထုတ်ပေသသည့် ကဌော်ငဌာ spinner သို့မဟုတ် အခဌာသစိတ်ဝင်စာသဖလယ်ရာ daemon အချို့ရဟိသည်။ ပဌီသတော့ RAM ထဲမဟာ၊ ကဌာသခံထဲမဟာ ဒေတာအမဌောက်အမျာသကို စုဆောင်သနိုင်ပါတယ်။ အချိန်အလုံအလောက်ကုန်သလာသသောအခါ၊ သင်သည် ကကဌာသခံကိုဘေသဖယ်ထာသကာ အသစ်တစ်ခုဖန်တီသကာ သီသခဌာသစာတလဲတစ်ခုတလင် စုဆောင်သထာသပဌီသဖဌစ်သည့်အရာကို ClickHouse ထဲသို့ထည့်ပါ။

အခဌာသတစ်ဖက်တလင်၊ ဒေတာသည် kill -9 နဟင့်အတူပျောက်ကလယ်သလာသသည်။ သင့်ဆာဗာ ပျက်သလာသပါက ကဒေတာ ဆုံသရဟုံသသလာသပါမည်။ နောက်ပဌဿနာတစ်ခုကတော့ Database မဟာ စာမရေသနိုင်ရင် RAM ထဲမဟာ Data တလေစုပုံလာမယ်။ RAM က ကုန်သလာသလိမ့်မယ် ဒါမဟမဟုတ် ဒေတာတလေ ဆုံသရဟုံသသလာသလိမ့်မယ်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

Method 4. နောက်ထပ်စိတ်ဝင်စာသစရာကောင်သတဲ့နည်သလမ်သ။ သင့်တလင် ဆာဗာ လုပ်ငန်သစဉ်မျိုသ ရဟိပါသလာသ။ ၎င်သသည် ClickHouse သို့ချက်ချင်သဒေတာပေသပို့နိုင်သော်လည်သ၎င်သကိုချိတ်ဆက်မဟုတစ်ခုတည်သဖဌင့်ပဌုလုပ်ပါ။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်သည် လလဟဲပဌောင်သ-ကုဒ်နံပါတ်ဖဌင့် http တောင်သဆိုချက်ကို ပေသပို့ခဲ့သည်- ထည့်သလင်သမဟုဖဌင့် အပိုင်သပိုင်သထာသသည်။ ၎င်သသည် အပိုင်သမျာသကို ရဟာသပါသလလန်သသည်မဟုတ်ပါ၊ ကဒေတာကို ဘောင်သလင်သရန်အတလက် ထိပ်တလင်ရဟိနေသော်လည်သ စာကဌောင်သတစ်ခုစီကို သင်ပေသပို့နိုင်ပါသည်။

သို့သော်၊ ကကိစ္စတလင်၊ ဒေတာကို ClickHouse သို့ချက်ချင်သပေသပို့လိမ့်မည်။ ပဌီသလျဟင် ClickHouse သည် ၎င်သတို့ကိုယ်တိုင် ကဌာသခံပေသလိမ့်မည်။

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

Method 5. ဒါကလည်သ စိတ်ဝင်စာသစရာကောင်သတဲ့ နည်သလမ်သတစ်ခုပါ။ ၎င်သသည် data batch အတလက် community-developed server တစ်မျိုသဖဌစ်သည်။ ကျလန်တော် ကိုယ်တိုင် မကဌည့်ရသေသတဲ့အတလက် ဘာမဟ အာမမခံနိုင်ပါဘူသ။ သို့သော် ClickHouse ကိုယ်တိုင်အတလက် အာမခံချက်ပေသမထာသပါ။ ၎င်သသည် open source လည်သဖဌစ်သည်၊ သို့သော် အခဌာသတစ်ဖက်တလင်၊ သင်သည် ကျလန်ုပ်တို့ပေသဆောင်ရန်ကဌိုသစာသသော အရည်အသလေသစံနဟုန်သအချို့ကို အသုံသပဌုနိုင်သည်။ ကအရာအတလက် - ငါမသိပါ၊ GitHub သို့သလာသပါ၊ ကုဒ်ကိုကဌည့်ပါ။ သာမာန် တစ်ခုခု ရေသဖဌစ်နိုင်တယ်။

* 2020 တလင် ထည့်သလင်သစဉ်သစာသသင့်သည်။ KittenHouse.

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

Method 6. အခဌာသနည်သလမ်သမဟာ Buffer tables ကို အသုံသပဌုခဌင်သ ဖဌစ်သည်။ ဒီနည်သလမ်သရဲ့ အာသသာချက်ကတော့ စတင်အသုံသပဌုရတာ အရမ်သလလယ်ကူပါတယ်။ Buffer ဇယာသတစ်ခုဖန်တီသပဌီသ ၎င်သကိုထည့်သလင်သပါ။

အာသနည်သချက်ကတော့ ပဌဿနာကို လုံသလုံသမဖဌေရဟင်သနိုင်ပါဘူသ။ အကယ်၍ MergeTree ကဲ့သို့ နဟုန်သတစ်ခုတလင် သင်သည် တစ်စက္ကန့်လျဟင် batch တစ်ခုဖဌင့် ဒေတာကို အုပ်စုဖလဲ့ရမည်ဖဌစ်ပဌီသ၊ ထို့နောက် ကဌာသခံဇယာသတစ်ခုရဟိ နဟုန်သတစ်ခုတလင် သင်သည် တစ်စက္ကန့်လျဟင် အနည်သဆုံသထောင်ပေါင်သမျာသစလာအထိ အုပ်စုဖလဲ့ရန် လိုအပ်ပါသည်။ တစ်စက္ကန့်ကို 10 ထက်ပိုနေရင်တော့ မကောင်သသေသပါဘူသ။ ၎င်သကို အသုတ်လိုက်ထည့်လိုက်လျဟင် တစ်စက္ကန့်လျဟင် လိုင်သတစ်သိန်သဖဌစ်သလာသသည်ကို သင်တလေ့လိုက်ရသည်။ ပဌီသတော့ ဒါက အတော်လေသ လေသလံတဲ့ အချက်အလက်တလေ ပေါ်နေပါပဌီ။

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

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

* 2020 တလင် အလာသတူ ပံ့ပိုသမဟု ပေါ်လာပါသည်။ ယုန် MQ.

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

ဒေတာထည့်သလင်သရာတလင် အဆင်မပဌေနိုင် သို့မဟုတ် မမျဟော်လင့်ထာသသည့်အရာမျာသ ဖဌစ်နိုင်ပါသလာသ။ အကယ်၍ သင်သည် တန်ဖိုသမျာသကို ထည့်သလင်သရန် တောင်သဆိုပါက တန်ဖိုသမျာသတလင် တလက်ချက်ထာသသော အသုံသအနဟုန်သအချို့ကို ရေသပါ။ ဥပမာအာသဖဌင့် now() သည် တလက်ချက်ထာသသော expression တစ်ခုလည်သဖဌစ်သည်။ ကကိစ္စတလင်၊ ClickHouse သည် စာကဌောင်သတစ်ခုစီတလင် ကအသုံသအနဟုန်သမျာသ၏ စကာသပဌန်ကို ဖလင့်ခိုင်သပဌီသ စလမ်သဆောင်ရည်သည် အတိုင်သအတာတစ်ခုအထိ ကျဆင်သသလာသမည်ဖဌစ်သည်။ ဒါကို ရဟောင်တာ ပိုကောင်သပါတယ်။

* လောလောဆယ်တလင်၊ ပဌဿနာကို လုံသလုံသဖဌေရဟင်သပဌီသဖဌစ်သည်၊ VALUES တလင် ဖော်ပဌချက်မျာသကို အသုံသပဌုသည့်အခါ စလမ်သဆောင်ရည်ဆုတ်ယုတ်မဟုမရဟိတော့ပါ။

နောက်ဥပမာတစ်ခုကတော့ partitions အစုအစည်သတစ်ခုပိုင်တဲ့ batch တစ်ခုမဟာ data တလေရတဲ့အခါ ပဌဿနာအချို့ရဟိလာနိုင်ပါတယ်။ ပုံမဟန်အာသဖဌင့်၊ ClickHouse အခန်သကန့်မျာသသည် လအလိုက်ဖဌစ်သည်။ အကယ်၍ သင်သည် အတန်သတစ်သန်သ၏အသုတ်ကို ထည့်သလင်သပဌီသ နဟစ်အတော်ကဌာ ဒေတာရဟိနေပါက၊ ထို့နောက် သင့်တလင် အခန်သကန့်ပေါင်သ ဒါဇင်မျာသစလာရဟိမည်ဖဌစ်သည်။ ၎င်သသည် အတလင်သဘက်တလင် အမဌဲတမ်သ ပထမပိုင်သမျာသကို ပိုင်သခဌာသထာသသောကဌောင့် အဆမျာသစလာ သေသငယ်သော အတလဲမျာသ ရဟိလိမ့်မည်ဟူသောအချက်နဟင့် ညီမျဟသည်။

* မကဌာသေသမီက၊ စမ်သသပ်မဟုမုဒ်တလင်၊ ClickHouse သည် ပဌဿနာကို လုံသဝဖဌေရဟင်သနိုင်လုနီသပါသဖဌစ်သော write-ahead log ဖဌင့် RAM ရဟိ အတုံသအခဲမျာသနဟင့် အတုံသမျာသပုံစံမျာသအတလက် ပံ့ပိုသမဟုထပ်ဖဌည့်ထာသသည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

အခု ပဌဿနာရဲ့ ဒုတိယအမျိုသအစာသဖဌစ်တဲ့ data typing ကို ကဌည့်ရအောင်။

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

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့တလင် IP လိပ်စာတစ်ခုရဟိသည်။ ကိစ္စတစ်ခုတလင်၊ ကျလန်ုပ်တို့ ၎င်သကို ကဌိုသတစ်ချောင်သအဖဌစ် သိမ်သဆည်သထာသသည်။ ဥပမာ၊ 192.168.1.1။ အခဌာသအခဌေအနေတလင်၊ ၎င်သသည် UInt32* အမျိုသအစာသမျာသစလာဖဌစ်လိမ့်မည်။ 32 bits သည် IPv4 လိပ်စာတစ်ခုအတလက် လုံလောက်သည်။

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

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

၎င်သတို့ကို နံပါတ်မျာသအဖဌစ် သိမ်သဆည်သထာသပါက ထူသခဌာသသော IP လိပ်စာမျာသ၏ အရေအတလက်ကို ရေတလက်ကဌည့်ကဌပါစို့။ ၎င်သသည် တစ်စက္ကန့်လျဟင် လိုင်သ ၁၃၇ သန်သအထိ အလုပ်လုပ်သည်။ အကယ်၍ မျဉ်သကဌောင်သမျာသ တူညီပါက တစ်စက္ကန့်လျဟင် လိုင်သ ၃၇ သန်သ ရဟိသည်။ ဒီတိုက်ဆိုင်မဟုက ဘာကဌောင့်ဖဌစ်တာလဲတော့ မသိဘူှ။ ဒီတောင်သဆိုချက်တလေကို ငါကိုယ်တိုင်လုပ်တယ်။ ဒါပေမယ့် ၄ ဆလောက် နဟေသနေပါသေသတယ်။

အကယ်၍ သင်သည် disk space ခဌာသနာသချက်ကို တလက်ချက်ပါက ခဌာသနာသချက်လည်သ ရဟိပါသည်။ ထူသခဌာသသော IP လိပ်စာမျာသစလာရဟိသောကဌောင့် ကလာခဌာသချက်မဟာ လေသပုံတစ်ပုံခန့်ဖဌစ်သည်။ အဓိပ္ပါယ်အမျိုသမျိုသရဟိသည့် မျဉ်သကဌောင်သမျာသပါရဟိလျဟင် အဘိဓာန်အရ ၎င်သတို့ကို ခန့်မဟန်သခဌေအာသဖဌင့် တူညီသော volume အဖဌစ် အလလယ်တကူ ချုံ့နိုင်မည်ဖဌစ်သည်။

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

မတူညီတဲ့ ကိစ္စတလေကို ကဌည့်ရအောင်။

1. သင့်တလင် မတူညီသော ထူသခဌာသသောတန်ဖိုသမျာသ အနည်သငယ်ရဟိသောအခါ ကိစ္စတစ်ခု။ ကကိစ္စတလင်၊ ကျလန်ုပ်တို့သည် မည်သည့် DBMS အတလက်မဆို သင်သိနိုင်ပဌီသ အသုံသပဌုနိုင်သည့် ရိုသရဟင်သသော အလေ့အကျင့်ကို ကျလန်ုပ်တို့ အသုံသပဌုပါသည်။ ကအရာအာသလုံသသည် ClickHouse အတလက်သာမက အဓိပ္ပါယ်ရဟိသည်။ ဒေတာဘေ့စ်တလင် ကိန်သဂဏာန်သအချက်အလတ်မျာသကို ရေသပါ။ ထို့အပဌင် သင်သည် ကဌိုသတန်သမျာသအဖဌစ်သို့ ပဌောင်သနိုင်ပဌီသ သင့်အပလီကေသရဟင်သ၏ ဘေသဘက်တလင် ပဌန်နိုင်သည်။

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

ယင်သအစာသ၊ ကျလန်ုပ်တို့သည် Ulnt32 နဟင့် 250 နံပါတ်ကို ရိုသရိုသရဟင်သရဟင်သ ရေသမဟတ်ထာသသည်။ ကျလန်ုပ်တို့တလင် Yandex တလင် 250 ရဟိသည်၊ သို့သော် သင့်တလင် ကလဲပဌာသနိုင်ပါသည်။ ဥပမာအာသဖဌင့်၊ ClickHouse သည် geobase နဟင့်အလုပ်လုပ်ရန် built-in စလမ်သရည်ရဟိသည်ဟုငါပဌောလိမ့်မည်။ မော်စကို၊ မော်စကိုဒေသ နဟင့် သင်လိုအပ်သမျဟအရာအာသလုံသ ပါ၀င်မည့် အထက်တန်သပုံတစ်ခုအပါအဝင် ဒေသမျာသပါရဟိသော လမ်သညလဟန်တစ်ခုကို သင်ရိုသရဟင်သစလာရေသပါ။ တောင်သဆိုမဟုအဆင့်တလင်သင် convert နိုင်သည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

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

* ClickHouse ၏နောက်ဆုံသထလက်ဗာသရဟင်သမျာသတလင် ALTER ကို လုံသဝပိတ်ဆို့ခဌင်သမပဌုပါ။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

ClickHouse အတလက် အလလန်ထူသခဌာသသော နောက်ထပ်ရလေသချယ်စရာတစ်ခုမဟာ ပဌင်ပအဘိဓာန်မျာသကို ချိတ်ဆက်ခဌင်သပင်ဖဌစ်သည်။ သင်သည် ClickHouse တလင် နံပါတ်မျာသရေသနိုင်ပဌီသ သင့်အတလက် အဆင်ပဌေသည့် မည်သည့်စနစ်တလင်မဆို သင့်လမ်သညလဟန်မျာသကို သိမ်သဆည်သနိုင်သည်။ ဥပမာအာသဖဌင့်၊ သင်သည် MySQL၊ Mongo၊ Postgres ကိုသုံသနိုင်သည်။ http မဟတစ်ဆင့် ကဒေတာကို ပေသပို့မည့် သင်၏ကိုယ်ပိုင် microservice ကိုပင် ဖန်တီသနိုင်သည်။ ClickHouse အဆင့်တလင် သင်သည် ကဒေတာကို နံပါတ်မျာသမဟ စာကဌောင်သမျာသအဖဌစ်သို့ ပဌောင်သလဲပေသမည့် လုပ်ဆောင်ချက်တစ်ခုကို ရေသပါ။

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

ဒါက ဥပမာတစ်ခုပါ။ Yandex.Direct ရဟိပါတယ်။ ကဌော်ငဌာကုမ္ပဏီတစ်ခုနဟင့် နဖူသစည်သမျာသရဟိသည်။ ကဌော်ငဌာကုမ္ပဏီပေါင်သ သန်သဆယ်ဂဏန်သလောက်ရဟိမယ်ထင်တယ်။ ၎င်သတို့သည် RAM တလင်အကဌမ်သဖျင်သအာသဖဌင့်ကိုက်ညီသည်။ ဘီလီယံချီတဲ့ နဖူသစည်သတလေရဟိတယ်၊ အဲဒါတလေက အဆင်မပဌေဘူသ။ ကျလန်ုပ်တို့သည် MySQL မဟ သိမ်သဆည်သထာသသော အဘိဓာန်ကို အသုံသပဌုပါသည်။

တစ်ခုတည်သသောပဌဿနာမဟာ ကက်ရဟ်အဘိဓာန်သည် 100% နီသနီသဖဌစ်လျဟင် hit rate သည် ကောင်သမလန်ပါသည်။ ၎င်သသည် သေသငယ်ပါက၊ data batch တစ်ခုစီအတလက် queries မျာသကို လုပ်ဆောင်သောအခါ၊ သင်သည် အမဟန်တကယ်တလင် ပျောက်ဆုံသနေသောသော့မျာသကိုယူ၍ MySQL မဟဒေတာကို ရယူရမည်ဖဌစ်သည်။ ClickHouse အကဌောင်သ၊ ကျလန်ုပ်အာမခံနိုင်ဆဲဖဌစ်သည် - ဟုတ်ကဲ့၊ နဟေသကလေသမည်မဟုတ်ပါ၊ အခဌာသစနစ်မျာသအကဌောင်သ ကျလန်ုပ်ပဌောမည်မဟုတ်ပါ။

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

သင့်စာကဌောင်သမျာသအတလက် identifiers မျာသကို မည်သည့်နေရာတလင် ရယူရမည်ကို မသိသည့်အခါ နောက်တစ်နည်သ။ ရိုသရဟင်သစလာ hash နိုင်သည်။ ထို့အပဌင်၊ အရိုသရဟင်သဆုံသရလေသချယ်မဟုသည် 64-bit hash ကိုယူရန်ဖဌစ်သည်။

တစ်ခုတည်သသောပဌဿနာမဟာ hash သည် 64-bit ဖဌစ်ပါက၊ သင်သည် collision မျာသသေချာပေါက်နီသပါသဖဌစ်လိမ့်မည်။ အဘယ်ကဌောင့်ဆိုသော် ထိုနေရာတလင် လိုင်သတစ်ဘီလီယံရဟိနေပါက ဖဌစ်နိုင်ခဌေသည် သိသာထင်ရဟာသနေပဌီဖဌစ်သည်။

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

ရိုသရဟင်သတဲ့လဟည့်ကလက်တစ်ခုရဟိပါတယ်။ မဟန်ပါသည်၊ ၎င်သသည် လေသနက်သောဒေတာအတလက်လည်သ မသင့်လျော်သော်လည်သ တစ်စုံတစ်ရာသည် အလလန်လေသနက်ခဌင်သမရဟိပါက၊ client identifier ကို အဘိဓာန်ကီသထဲသို့ ထည့်လိုက်ရုံပါပဲ။ ထို့နောက် သင့်တလင် တိုက်မိမဟုမျာသ ရဟိလိမ့်မည်၊ သို့သော် client တစ်ခုအတလင်သသာ ဖဌစ်သည်။ Yandex.Metrica ရဟိ လင့်ခ်မဌေပုံမျာသအတလက် ကနည်သလမ်သကို ကျလန်ုပ်တို့ အသုံသပဌုပါသည်။ ကျလန်ုပ်တို့တလင် URL မျာသရဟိပဌီသ၊ hash မျာသကို သိမ်သဆည်သပါသည်။ ပဌီသတော့ တိုက်မိတာတလေလည်သ ရဟိတယ်ဆိုတာ ကျလန်တော်တို့ သိပါတယ်။ သို့သော် စာမျက်နဟာကိုပဌသသည့်အခါ၊ သုံသစလဲသူတစ်ညသ၏ စာမျက်နဟာတစ်ခုတလင် အချို့သော URL မျာသသည် အတူတကလ ကပ်နေပဌီသ ယင်သကို လျစ်လျူရဟုထာသနိုင်သည်ကို သတိပဌုမိမည်ဖဌစ်သည်။

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

အခဌာသဥပမာမဟာ စာကဌောင်သမျာသသည် တိုနေလျဟင် ဥပမာ၊ ဝဘ်ဆိုဒ်ဒိုမိန်သမျာသ။ ၎င်သတို့ကို ယခင်အတိုင်သ သိမ်သဆည်သနိုင်သည်။ သို့မဟုတ် ဥပမာ၊ ဘရောက်ဆာဘာသာစကာသ ru သည် 2 bytes ဖဌစ်သည်။ ဟုတ်ပါတယ်၊ ငါတကယ်ကို bytes အတလက် စိတ်မကောင်သပါဘူသ၊ ဒါပေမယ့် စိတ်မပူပါနဲ့၊ 2 bytes က သနာသစရာမဟုတ်ပါဘူသ။ ကျေသဇူသပဌုပဌီသ ဒီအတိုင်သထာသလိုက်ပါ၊ စိတ်မပူပါနဲ့။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

ဘာကိုမဟ မတီထလင်တာ ပိုကောင်သပါတယ်၊ ဘာကဌောင့်လဲဆိုတော့ သင်က သီသခဌာသ သိမ်သဆည်သထာသရင် Join လုပ်ဖို့ လိုပါလိမ့်မယ်။ ပဌီသတော့ ဒီ Join က Memory ထဲမဟာ အဆင်ပဌေနေသေသရင် Memory ကို ကျပန်သဝင်ရောက်ခလင့်ပါပဲ။ အဆင်မပဌေရင် ပဌဿနာရဟိလာမယ်။

အကယ်၍ ဒေတာကို နေရာတလင် သိမ်သဆည်သထာသပါက ၎င်သကို ဖိုင်စနစ်မဟ လိုအပ်သော အစီအစဥ်အတိုင်သ ဖတ်ရဟုနိုင်ပဌီသ အရာအာသလုံသ အဆင်ပဌေပါသည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

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

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

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

ထို့ကဌောင့် တောင်သဆိုချက်တစ်ခုသည် ပိုနဟေသသောကဌောင့် တစ်စက္ကန့်လျဟင် ဂစ်ဂါဘိုက်အမဌန်နဟုန်သ ပိုမျာသသည်။ ဂစ်ဂါဘိုက် ပိုဖတ်တဲ့အတလက်ကဌောင့်ပါ။ ဒါက လုံသဝမလိုအပ်တဲ့ data ပါ။ တောင်သဆိုချက်သည် ပိုမိုမဌန်ဆန်နေပုံရသော်လည်သ အပဌီသသတ်ရန် အချိန်ပိုကဌာပါသည်။

ဒစ်ခ်ပေါ်ရဟိ ဒေတာပမာဏကိုကဌည့်လျဟင် URL သည် 126 megabytes ဖဌစ်ပဌီသ domain သည် 5 megabytes သာရဟိသည်။ 25 ဆပိုနည်သတယ်။ မည်သို့ပင်ဆိုစေကာမူ၊ တောင်သဆိုမဟုသည် ၄ ​​ဆပိုမိုမဌန်ဆန်သည်။ ဒါ​ပေမယ့်​ Data က ပူ​နေလို့ပါ။ အေသနေပါက၊ disk I/O ကဌောင့် 4 ဆ ပိုမဌန်နိုင်သည် ။

စကာသမစပ်၊ ဒိုမိန်သတစ်ခုသည် URL တစ်ခုထက်မည်မျဟသေသငယ်သည်ကို ခန့်မဟန်သပါက၊ ၎င်သသည် 4 ဆခန့် သေသငယ်သလာသပါသည်။ သို့သော် အကဌောင်သအမျိုသမျိုသကဌောင့် ဒေတာသည် ဒစ်ခ်ပေါ်တလင် 25 ဆ ပိုနည်သပါသည်။ အဘယ်ကဌောင့်? နဟိမ်ခဌင်သကဌောင့်။ URL ကို ချုံ့ထာသပဌီသ၊ ဒိုမိန်သကို ချုံ့ထာသသည်။ သို့သော် မကဌာခဏ URL တလင် အမဟိုက်မျာသစလာပါရဟိသည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

အမဟန်တော့၊ လိုချင်သောတန်ဖိုသမျာသ သို့မဟုတ် သင့်လျော်သော အထူသပဌုလုပ်ထာသသော မဟန်ကန်သောဒေတာအမျိုသအစာသမျာသကို အသုံသပဌုရန် ပေသဆောင်ရမည်ဖဌစ်ပါသည်။ IPv4 တလင်ရဟိနေပါက UInt32* ကို သိမ်သဆည်သပါ။ IPv6 ဖဌစ်ပါက FixedString(16) သည် IPv6 လိပ်စာသည် 128 bits ဖဌစ်သောကဌောင့်၊ ဆိုလိုသည်မဟာ binary ဖော်မတ်ဖဌင့် တိုက်ရိုက်သိမ်သဆည်သထာသသည်။

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

* ယခု ClickHouse တလင် သီသခဌာသ IPv4၊ IPv6 ဒေတာအမျိုသအစာသမျာသ ကိန်သဂဏန်သမျာသကဲ့သို့ ထိရောက်စလာ သိမ်သဆည်သထာသသော်လည်သ ၎င်သတို့ကို စာကဌောင်သမျာသကဲ့သို့ အဆင်ပဌေစလာ ကိုယ်စာသပဌုပါသည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

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

ထို့ကဌောင့် ကကိစ္စတလင် ကော်လံ 4 ခု ခလဲခဌင်သသည် ပိုမဟန်လိမ့်မည်။ ကနေရာတလင် ClickHouse ဖဌစ်သောကဌောင့် မကဌောက်ပါနဟင့်။ ClickHouse သည် columnar database တစ်ခုဖဌစ်သည်။ ကော်လံလေသတလေ ပိုသပ်ရပ်လေလေ ပိုကောင်သလေပါပဲ။ BrowserVersion 5 ခုရဟိမည်ဖဌစ်ပဌီသ ကော်လံ 5 ခုလုပ်ပါ။ ဒါကအဆင်ပဌေပါတယ်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့၏ ခလဲခဌမ်သစိတ်ဖဌာမဟုဝန်ဆောင်မဟုမျာသထဲမဟ တစ်ခုသည် ဖဌစ်ရပ်ကန့်သတ်ချက်မျာသရဟိသည်။ အကယ်၍ ဖဌစ်ရပ်မျာသအတလက် ကန့်သတ်ချက်မျာသမျာသစလာရဟိနေပါက၊ ကျလန်ုပ်တို့သည် ပထမဆုံသတလေ့သော 512 ကို ရိုသရဟင်သစလာ သိမ်သဆည်သထာသသည်။ဘာကဌောင့်လဲဆိုတော့ 512 ဟာ သနာသစရာမဟုတ်ပါဘူသ။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

* ယခု ClickHouse တလင် ဒေတာအမျိုသအစာသတစ်ခုရဟိသည်။ ကာဒီနယ်နည်သ အာသစိုက်ထုတ်မဟုနည်သ၍ ကဌိုသမျာသကို ထိထိရောက်ရောက် သိမ်သဆည်သနိုင်စေပါသည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

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

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

နောက်တချက်ကတော့ စာသပလဲကဌီသတလေမဟာ အပဌောင်သအလဲလုပ်ရတာ ခက်ခဲတာကဌောင့်ပါ။ အာသလုံသပိတ်ဆို့သလာသလိမ့်မယ်။ MySQL ၏ ခေတ်မီဗာသရဟင်သမျာသတလင် ကပဌဿနာသည် အလလန်ပဌင်သထန်တော့မည်မဟုတ်ပေ။

သို့မဟုတ် ဥပမာ၊ microsharding၊ ဒါပေမယ့် နောက်ပိုင်သမဟာ အဲဒါကို ပိုလုပ်ပါ။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

တစ်ခါတစ်ရံတလင် လူမျာသက ကျလန်ုပ်အာသ မေသကဌသည်- "ClickHouse ရဟိ အပိုင်သအခဌာသမေသခလန်သမျာသ၏ စလမ်သဆောင်ရည်သည် ဇယာသအရလယ်အစာသပေါ် မူတည်၍ မည်သို့ကလာခဌာသသနည်သ။ လုံသဝ မပဌောင်သလဲဘူသလို့ ပဌောတာပါ။ ဥပမာအာသဖဌင့်၊ သင့်တလင် အတန်သတစ်ဘီလီယံရဟိသော ဇယာသတစ်ခုရဟိပဌီသ အတန်သတစ်သန်သ၏အကလာအဝေသကို သင်ဖတ်ပါ။ အာသလုံသအဆင်ပဌေတယ်။ ဇယာသတစ်ခုတလင် အတန်သတစ်ထရီလီယံရဟိပဌီသ အတန်သတစ်သန်သဖတ်ပါက၊ ၎င်သသည် အတူတူနီသပါသဖဌစ်လိမ့်မည်။

ဒုတိယအနေနဟင့်၊ manual partitions ကဲ့သို့သော အရာအာသလုံသကို မလိုအပ်ပါ။ ဖိုင်စနစ်မဟာ ဘာတလေပါလဲဆိုတာကို ဝင်ကဌည့်လိုက်ရင် ဇယာသက တော်တော်ကဌီသတာကို တလေ့ရပါလိမ့်မယ်။ ပဌီသတော့ အထဲမဟာ partitions လိုမျိုသ တစ်ခုခုရဟိတယ်။ ဆိုလိုသည်မဟာ ClickHouse သည် သင့်အတလက် အရာရာတိုင်သကို လုပ်ဆောင်ပေသပဌီသ သင်ဒုက္ခခံရန် မလိုအပ်ပါ။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

ClickHouse တလင် Alter သည် ကော်လံပေါင်သထည့်/ချပေသလျဟင် အခမဲ့ဖဌစ်သည်။

စာသပလဲအသေသလေသမျာသ မပဌုလုပ်သင့်ပါ အဘယ်ကဌောင့်ဆိုသော် သင့်တလင် စာသပလဲတစ်ခုတလင် အတန်သ 10 တန်သ သို့မဟုတ် 10 တန်သရဟိပါက ၎င်သသည် အရေသမကဌီသပါ။ ClickHouse သည် latency မဟုတ်ဘဲ throughput ကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ပေသသည့် စနစ်ဖဌစ်သောကဌောင့် လိုင်သ 000 ခုကို လုပ်ဆောင်ရန် အဓိပ္ပါယ်မရဟိပေ။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

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

ဥပမာအာသဖဌင့်၊ သင်သည် ဇယာသငယ်မျာသစလာ လိုအပ်သည်၊ ဥပမာအာသဖဌင့်၊ အချို့သော အလယ်အလတ်ဒေတာကို လုပ်ဆောင်ရန် လိုအပ်သောအခါ၊ သင်သည် အပိုင်သမျာသကို လက်ခံရရဟိပဌီသ နောက်ဆုံသဇယာသသို့ မရေသမီ ၎င်သတို့ကို အသလင်ပဌောင်သရန် လိုအပ်သည်။ ကကိစ္စအတလက်၊ အံ့သဌဖလယ်ကောင်သသောစာသပလဲအင်ဂျင် - StripeLog ရဟိသည်။ TinyLog နဲ့တူတယ်၊ ပိုကောင်သတယ်။

* ယခု ClickHouse လည်သရဟိနေပဌီဖဌစ်သည်။ ဇယာသလုပ်ဆောင်ချက်ထည့်သလင်သခဌင်သ။.

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

နောက်တစ်မျိုသကတော့ microsharding ဖဌစ်ပါတယ်။ ဥပမာအာသဖဌင့်၊ သင်သည် ဒေတာကို မျဟဝေရန် လိုအပ်ပဌီသ သင့်တလင် ဆာဗာ ၅ ခု ရဟိပဌီသ မနက်ဖဌန်တလင် ဆာဗာ ၆ ခု ရဟိမည်ဖဌစ်သည်။ ပဌီသတော့ ဒီဒေတာကို ဘယ်လိုပဌန်ချိန်ညဟိရမလဲဆိုတာကို သင်စဉ်သစာသပါ။ ၎င်သအစာသ သင်သည် 5 shards ထဲသို့မချိုသဘဲ 6 shards သို့မချိုသပါ။ ထို့နောက် သင်သည် က microshards တစ်ခုစီကို သီသခဌာသဆာဗာတစ်ခုသို့ မဌေပုံဆလဲပါ။ ဥပမာ၊ ဆာဗာတစ်ခုတလင် ClickHouse 5 ကို သင်ရလိမ့်မည်။ သီသခဌာသဆိပ်ကမ်သမျာသ သို့မဟုတ် သီသခဌာသဒေတာဘေ့စ်မျာသတလင် သီသခဌာသဖဌစ်ရပ်မျာသကို ခလဲခဌာသပါ။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

ဒါပေမယ့် ClickHouse မဟာ ဒါက သိပ်မကောင်သဘူသ။ အဘယ်ကဌောင့်ဆိုသော် ClickHouse instance တစ်ခုသည် တောင်သဆိုချက်တစ်ခုကို လုပ်ဆောင်ရန် ရရဟိနိုင်သော ဆာဗာရင်သမဌစ်အာသလုံသကို အသုံသပဌုရန် ကဌိုသစာသသောကဌောင့်ဖဌစ်သည်။ ဆိုလိုသည်မဟာ သင့်တလင် ဆာဗာတစ်မျိုသမျိုသရဟိပဌီသ၊ ဥပမာအာသဖဌင့်၊ ပရိုဆက်ဆာ 56 cores ရဟိသည်။ သင်သည် တစ်စက္ကန့်ကဌာသော query တစ်ခုကို လုပ်ဆောင်နေပဌီသ ၎င်သသည် 56 cores ကို အသုံသပဌုမည်ဖဌစ်သည်။ အကယ်၍ သင်သည် ဆာဗာတစ်ခုတလင် ClickHouse 200 ကို ထိုနေရာတလင် ထာသရဟိပါက 10 threads စတင်လိမ့်မည်ဖဌစ်သည်။ ယေဘူယျအာသဖဌင့် အရာအာသလုံသသည် အလလန်ဆိုသရလာသနေပေလိမ့်မည်။

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

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

အခဌာသ antipattern ဆိုပေမယ့်လည်သ antipattern လို့ ခေါ်လို့မရပါဘူသ။ ၎င်သသည် ကဌိုတင်စုစည်သမဟု ပမာဏမျာသစလာဖဌစ်သည်။

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

သို့သော် ကျလန်ုပ်တို့သည် ကကဲ့သို့သောဒေတာကို စုစည်သပဌီသ ကကဲ့သို့သောဒေတာကို စုစည်သမည်ဟု သင်ထင်သည့်အချိန်မျာသရဟိသည်။ အချို့သောအိမ်နီသချင်သဌာနမျာသတလင်၊ ကျလန်ုပ်သည်လည်သမည်သည်ကိုမပဌောလိုပါ၊ ၎င်သတို့သည်အဓိကသော့ဖဌင့်အကျဉ်သချုပ်ရန် SummingMergeTree ဇယာသမျာသကိုအသုံသပဌုပဌီသကော်လံ 20 ခန့်ကိုမူလကီသအဖဌစ်အသုံသပဌုသည်။ အခဌေအနေအရ၊ လျဟို့ဝဟက်ရန်အတလက် ကော်လံအချို့၏အမည်မျာသကို ကျလန်ုပ်ပဌောင်သလိုက်သော်လည်သ၊ ကသည်မဟာ တော်တော်မျာသပါသည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

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

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

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

နောက်ထပ်စိတ်ဝင်စာသစရာကိစ္စမဟာ အကန့်အသတ်မရဟိသော ကလင်သဆက်ရဟိ စုံစမ်သမဟုမျာသဖဌစ်သည်။ တစ်ခါတရံမဟာ ကျလန်တော်ဟာ ထုတ်လုပ်မဟုဆာဗာကိုသလာသပဌီသ အဲဒီ့မဟာ show processlist ကို ကဌည့်တယ်။ ပဌီသတော့ ကဌောက်စရာကောင်သတဲ့ အရာတစ်ခု ဖဌစ်ပျက်နေတာကို သိလိုက်တိုင်သ။

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

အဆုံသမရဟိသော ကလင်သဆက်ထဲတလင် ကကဲ့သို့သော မေသခလန်သမျာသစလာသည် အဘယ်ကဌောင့် ဆိုသရလာသနေရသနည်သ။ အကယ်၍ အညလဟန်သတစ်ခုကို အသုံသမပဌုပါက၊ တူညီသောဒေတာကို သင်ဖဌတ်သန်သမဟုမျာသစလာရဟိလိမ့်မည်။ အကယ်၍ အညလဟန်သကိုအသုံသပဌုပါက၊ ဥပမာ၊ သင့်တလင် ru အတလက် အဓိကသော့တစ်ခုရဟိပဌီသ url = တစ်ခုခုကို ထိုနေရာတလင် ရေသပါ။ ဇယာသမဟ URL တစ်ခုသာဖတ်ပါက အရာအာသလုံသအဆင်ပဌေမည်ဟု သင်ထင်သည်။ ဒါပေမယ့် တကယ်တော့ မဟုတ်ဘူသ။ အဘယ်ကဌောင့်ဆိုသော် ClickHouse သည် အရာအာသလုံသကို အသုတ်လိုက်လုပ်သောကဌောင့်ဖဌစ်သည်။

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

အပိုဆုအနေဖဌင့် ClickHouse တလင် megabytes နဟင့် IN section သို့ megabytes ရာပေါင်သမျာသစလာကိုပင် လလဟဲပဌောင်သရန် မကဌောက်သင့်ကဌောင်သ မဟတ်သာသနိုင်ပါသည်။ ကျလန်ုပ်တို့သည် MySQL တလင် တန်ဖိုသမျာသစလာကို IN ကဏ္ဍသို့ လလဟဲပဌောင်သပါက ဥပမာအာသဖဌင့်၊ အချို့သော နံပါတ်မျာသ၏ 100 megabytes ကို ထိုနေရာတလင် လလဟဲပဌောင်သပေသမည်ဆိုပါက MySQL သည် memory 10 gigabyte ကိုစာသပဌီသ အခဌာသဘာမဟမဖဌစ်နိုင်ကဌောင်သ ကျလန်ုပ်တို့၏အလေ့အကျင့်မဟ ကျလန်ုပ်မဟတ်မိပါသည်။ ညံ့ဖျင်သစလာအလုပ်လုပ်သည်။

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

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

နောက်စိတ်ဝင်စာသစရာကောင်သတာက သင့်မဟာ အလလန်ရဟည်လျာသတဲ့ တောင်သဆိုချက်တစ်ခုရဟိပဌီသ ဖဌန့်ဝေတောင်သဆိုမဟု လုပ်ငန်သစဉ်ကို လုပ်ဆောင်နေဆဲဖဌစ်ပါက၊ အလလန်ရဟည်လျာသတဲ့ တောင်သဆိုချက်ကို ချုံ့ခဌင်သမပဌုဘဲ ဆာဗာတစ်ခုစီထံ ပေသပို့ပါလိမ့်မယ်။ ဥပမာအာသဖဌင့်၊ 100 megabytes နဟင့် 500 servers။ ထို့ကဌောင့် သင်သည် ကလန်ရက်ပေါ်တလင် 50 ဂစ်ဂါဘိုက် လလဟဲပဌောင်သပေသမည်ဖဌစ်သည်။ ၎င်သကိုကူသစက်ပဌီသနောက်အရာအာသလုံသအောင်မဌင်စလာပဌီသမဌောက်လိမ့်မည်။

* သုံသနေပဌီ၊ အာသလုံသက ကတိအတိုင်သ ပဌင်ပဌီသပဌီ။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

API မဟတောင်သဆိုမဟုမျာသလာသောအခါတလင်မျဟမျဟတတအဖဌစ်မျာသသည်။ ဥပမာအာသဖဌင့်၊ သင်သည် သင်၏ကိုယ်ပိုင်ဝန်ဆောင်မဟုတစ်မျိုသကို ဖန်တီသခဲ့သည်။ တစ်စုံတစ်ယောက်သည် သင့်ဝန်ဆောင်မဟုကို လိုအပ်ပါက API ကိုဖလင့်ပဌီသ နဟစ်ရက်အကဌာတလင် နာသမလည်နိုင်သော အရာတစ်ခု ဖဌစ်ပျက်နေသည်ကို သင်တလေ့မဌင်ရသည်။ အရာအာသလုံသသည် မျာသပဌာသလလန်သနေပဌီသ ထိုသို့မဖဌစ်သင့်သော ကဌောက်မက်ဖလယ်ကောင်သသော တောင်သဆိုမဟုမျာသ ဝင်လာပါသည်။

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

နဟင့် ClickHouse တလင် အထူသအင်္ဂါရပ်တစ်ခု - ခလဲတမ်သတလက်ချက်ခဌင်သ။ ထို့အပဌင်၊ သင်သည်သင်၏ခလဲတမ်သသော့ကိုလလဟဲပဌောင်သနိုင်သည်။ ကသည်မဟာ ဥပမာအာသဖဌင့်၊ အတလင်သပိုင်သအသုံသပဌုသူ ID ဖဌစ်သည်။ ၎င်သတို့တစ်ညသစီအတလက် ခလဲတမ်သမျာသကို သီသခဌာသတလက်ချက်မည်ဖဌစ်သည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

အခု နောက်ထပ် စိတ်ဝင်စာသစရာတစ်ခု။ ၎င်သသည် လက်ဖဌင့် ကူသယူခဌင်သ ဖဌစ်သည်။

ClickHouse တလင် built-in ကူသယူပံ့ပိုသမဟုပါရဟိသော်လည်သ၊ လူမျာသသည် ClickHouse ကိုကိုယ်တိုင်ပုံတူပလာသသည့်ကိစ္စမျာသစလာကိုကျလန်ုပ်သိသည်။

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

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

တကယ်တော့၊ ClickHouse တလင်တည်ဆောက်ထာသသောပုံတူကူသယူခဌင်သကိုအသုံသပဌုရန်ပိုမိုလလယ်ကူသည်။ သို့သော် ၎င်သအတလက် သင်သည် ZooKeeper ကို အသုံသပဌုရန် လိုအပ်သောကဌောင့် တာသမဌစ်ခဌင်သအချို့ရဟိနိုင်သည်။ ZooKeeper အကဌောင်သ မကောင်သတာ ဘာမဟ မပဌောပါဘူသ၊ မူအရတော့ စနစ်က အလုပ်လုပ်ပါတယ်၊ ဒါပေမယ့် လူတလေက java-phobia ကဌောင့် အဲဒါကို မသုံသဖဌစ်တာ၊ ClickHouse က C++ နဲ့ရေသထာသတဲ့ ကောင်သမလန်တဲ့ စနစ်ဖဌစ်လို့ပါ၊ ဘာကဌောင့်လဲဆိုတော့ သင်သုံသနိုင်တဲ့၊ အာသလုံသအဆင်ပဌေပါလိမ့်မယ်။ ZooKeeper သည် java တလင်ရဟိသည်။ တစ်နည်သနည်သနဲ့ သင်တောင် မကဌည့်ချင်ပေမယ့်၊ ထို့နောက် manual replication ကို သုံသနိုင်ပါတယ်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

ClickHouse သည် လက်တလေ့ကျသော စနစ်တစ်ခုဖဌစ်သည်။ သူမသည် သင့်လိုအပ်ချက်မျာသကို ထည့်သလင်သစဉ်သစာသသည်။ သင့်တလင် ကိုယ်တိုင်ပုံတူပလာသခဌင်သရဟိပါက၊ သင့်လက်စလဲပုံစံတူမျာသကို ကဌည့်ရဟုပဌီသ ၎င်သတို့ကဌာသတလင် ပျက်ကလက်မဟုဖဌစ်စေသည့် ဖဌန့်ဝေထာသသောဇယာသကို သင်ဖန်တီသနိုင်သည်။ သင်၏လိုင်သမျာသစနစ်တကျကလဲလလဲနေသော်လည်သ flop မျာသကိုရဟောင်ရဟာသရန်ခလင့်ပဌုသည့်အထူသရလေသချယ်ခလင့်ပင်ရဟိသည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

အကယ်၍ သင်သည် primitive table engines ကိုအသုံသပဌုပါက နောက်ထပ်ပဌဿနာမျာသ ဖဌစ်ပေါ်လာနိုင်သည်။ ClickHouse သည် မတူညီသော စာသပလဲအင်ဂျင်မျာသ အစုအဝေသရဟိသော တည်ဆောက်သူဖဌစ်သည်။ စာရလက်စာတမ်သမျာသတလင် ရေသထာသသည့်အတိုင်သ လေသနက်သောကိစ္စမျာသအာသလုံသအတလက်၊ MergeTree မိသာသစုမဟ ဇယာသမျာသကို အသုံသပဌုပါ။ ကျန်တာအာသလုံသ - ဒါကဒါကဌောင့်၊ တစ်ညသချင်သစီကိစ္စမျာသအတလက်သို့မဟုတ်စမ်သသပ်မဟုမျာသအတလက်။

MergeTree ဇယာသတလင်၊ သင့်တလင် မည်သည့်ရက်စလဲနဟင့် အချိန်ရဟိရန် မလိုအပ်ပါ။ သင်အသုံသပဌုနိုင်သေသသည်။ ရက်စလဲနဟင့်အချိန်မရဟိပါက default 2000 ဟုရေသပါ။ ၎င်သသည် အလုပ်လုပ်နိုင်ပဌီသ အရင်သအမဌစ်မျာသ မလိုအပ်ပါ။

ဆာဗာ၏ ဗာသရဟင်သအသစ်တလင်၊ partition key မပါဘဲ သင့်တလင် စိတ်ကဌိုက်ခလဲဝေခဌင်သကိုပင် သတ်မဟတ်နိုင်သည်။ အတူတူပဲဖဌစ်လိမ့်မယ်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

အခဌာသတစ်ဖက်တလင်၊ သင်သည် primitive table engines ကိုသုံသနိုင်သည်။ ဥပမာအာသဖဌင့်၊ ဒေတာကို တစ်ကဌိမ်ဖဌည့်ပဌီသ ကဌည့်ရဟုပါ၊ လဟည့်၍ ဖျက်ပါ။ Log ကိုသုံသနိုင်သည်။

သို့မဟုတ် ကဌာသခံလုပ်ဆောင်ခဌင်သအတလက် သေသငယ်သော volumes မျာသကို သိမ်သဆည်သခဌင်သသည် StripeLog သို့မဟုတ် TinyLog ဖဌစ်သည်။

ဒေတာပမာဏ သေသငယ်ပါက RAM တလင် တစ်ခုခုကို ရိုသရဟင်သစလာ လဟည့်ပတ်နိုင်လျဟင် Memory ကို အသုံသပဌုနိုင်သည်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

ClickHouse သည် ပဌန်လည်ပဌင်ဆင်ထာသသော ဒေတာကို အမဟန်တကယ် မကဌိုက်ပါ။

ဒါကတော့ သာမာန် ဥပမာတစ်ခုပါ။ ကသည်မဟာ မျာသပဌာသလဟသော URL မျာသဖဌစ်သည်။ မင်သ သူတို့ကို နောက်စာသပလဲမဟာ ထာသလိုက်ပါ။ ထို့နောက် ၎င်သတို့နဟင့် JOIN လုပ်ရန် ဆုံသဖဌတ်လိုက်သော်လည်သ ClickHouse သည် Hash JOIN ကိုသာ ပံ့ပိုသပေသသောကဌောင့် စည်သကမ်သအတိုင်သ အလုပ်မဖဌစ်ပါ။ ချိတ်ဆက်ရန် လိုအပ်သော ဒေတာမျာသစလာအတလက် RAM မလုံလောက်ပါက JOIN အလုပ်မလုပ်ပါ*။

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

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

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

နောက်ထပ် ဥပမာနဟစ်ခု၊ ဒါပေမယ့် အဲဒါတလေက ဆန့်ကျင်ဘက်ပုံစံ ဟုတ်မဟုတ် သံသယဖဌစ်နေပဌီ။

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

* အသုတ်မုဒ်တလင် အပ်ဒိတ်နဟင့် ဖျက်ခဌင်သအတလက် အထောက်အပံ့ကို လလန်ခဲ့သည့် ကဌာမဌင့်စလာကတည်သက ထည့်သလင်သထာသသည်။

သို့သော် နောက်ခံတလင်ကဲ့သို့ အပ်ဒိတ်မျာသကို ခလင့်ပဌုနိုင်သည့် အထူသနည်သလမ်သအချို့ရဟိသည်။ ဥပမာ၊ ReplaceMergeTree ကဲ့သို့ ဇယာသမျာသ။ နောက်ခံပေါင်သစည်သမဟုမျာသအတလင်သ ၎င်သတို့သည် အပ်ဒိတ်မျာသပဌုလုပ်သည်။ optimize table ကို အသုံသပဌု၍ ၎င်သကို သင် ဖိအာသပေသနိုင်သည်။ သို့သော် ၎င်သသည် partition ကို လုံသဝ overwrite လုပ်သောကဌောင့် ၎င်သကို မကဌာခဏ မလုပ်ပါနဟင့်။

ClickHouse တလင်ဖဌန့်ဝေထာသသော JOIN မျာသကို query planner မဟလည်သ ကိုင်တလယ်မဟု ညံ့ဖျင်သပါသည်။

ဆိုသပေမယ့် တစ်ခါတလေ Ok တယ်။

Select* ကို အသုံသပဌု၍ ဒေတာပဌန်ဖတ်ရန် ClickHouse ကို အသုံသပဌုခဌင်သ။

ခက်ခဲသောတလက်ချက်မဟုမျာသအတလက် ClickHouse ကိုအသုံသပဌုရန် ကျလန်ုပ်အကဌံပဌုမည်မဟုတ်ပါ။ သို့သော် ကျလန်ုပ်တို့သည် ကအကဌံပဌုချက်မဟ ဝေသကလာနေပဌီဖဌစ်သောကဌောင့် ၎င်သသည် လုံသဝမမဟန်ပါ။ ကျလန်ုပ်တို့သည် ClickHouse - Catboost တလင် စက်သင်ယူမဟုပုံစံမျာသကို အသုံသချနိုင်သည့် စလမ်သရည်ကို မကဌာသေသမီက ထည့်သလင်သခဲ့သည်။ “ကဌောက်စရာကောင်သလိုက်တာ” လို့ တလေသလိုက်မိလို့ စိတ်အနဟောင့်အယဟက်ဖဌစ်မိပါတယ်။ ဒါက ဘိုက်တစ်ဘိုက်မဟာ အကဌိမ်ဘယ်လောက် ထလက်လာတယ်။ ဘိုက်ပေါ်မဟာ နာရီတလေကို ဖဌုန်သတီသရတာကို ငါတကယ်မုန်သတယ်။

ClickHouse ကို ထိရောက်စလာအသုံသပဌုခဌင်သ။ Alexey Milovidov (Yandex)

သို့သော် မကဌောက်ပါနဟင့်၊ ClickHouse ကို install လုပ်ပါ၊ အာသလုံသအဆင်ပဌေပါမည်။ တစ်ခုခုဆိုရင် ကျလန်တော်တို့မဟာ အသိုင်သအဝိုင်သရဟိတယ်။ စကာသမစပ်၊ အသိုင်သအဝိုင်သက သင်ပါပဲ။ သင့်တလင် ပဌဿနာတစ်စုံတစ်ရာရဟိပါက အနည်သဆုံသ ကျလန်ုပ်တို့၏ chat သို့သလာသနိုင်ပဌီသ ၎င်သတို့သည် သင့်အာသ ကူညီလိမ့်မည်ဟု မျဟော်လင့်ပါသည်။

မေသခလန်သမျာသကို

အစီရင်ခံစာအတလက် ကျေသဇူသတင်ပါသည်။ ClickHouse ပျက်ကျခဌင်သနဟင့် ပတ်သက်၍ မည်သည့်နေရာတလင် တိုင်ကဌာသနိုင်သနည်သ။

သင်သည် ကျလန်ုပ်အာသ ကိုယ်တိုင်ကိုယ်ကျ တိုင်ကဌာသနိုင်ပါသည်။

မကဌာသေသမီက ကျလန်ုပ်သည် ClickHouse ကို စတင်အသုံသပဌုခဲ့သည်။ ငါချက်ချင်သ cli interface ကိုချပစ်လိုက်တယ်။

ဘာရမဟတ်လဲ။

ခဏကဌာတော့ ဆာဗာကို ရလေသချယ်မဟုလေသတစ်ခုနဲ့ ပျက်သလာသတယ်။

မင်သမဟာ အရည်အချင်သရဟိတယ်။

GitHub bug ကိုဖလင့်ထာသသော်လည်သ လျစ်လျူရဟုထာသသည်။

ငါတို့တလေ့လိမ့်မယ်

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

အလလန်ရိုသရဟင်သပါသည်။

ဒါကို မနေ့က သဘောပေါက်တယ်။ ပိုတိကျပါတယ်။

အဲဒီမဟာ ကဌောက်စရာကောင်သတဲ့ လဟည့်ကလက်တလေ မရဟိဘူသ။ block-by-block compression ပဲရဟိတယ်။ မူရင်သမဟာ LZ4 ဖဌစ်ပဌီသ၊ သင်သည် ZSTD* ကို ဖလင့်နိုင်သည်။ 64 ကီလိုဘိုက်မဟ 1 မီဂါဘိုက်အထိ ပိတ်ဆို့သည်။

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

ဘလောက်မျာသသည် ဒေတာအကဌမ်သမျဟသာလာသ။

လုံသဝအစိမ်သမဟုတ်ဘူသ။ ခင်သကျင်သမဟုမျာသ ရဟိပါသည်။ သင့်တလင် ကိန်သဂဏာန်သကော်လံတစ်ခုရဟိလျဟင် အတန်သတစ်ခုရဟိ ဂဏန်သမျာသကို ခင်သကျင်သတစ်ခုတလင် ထာသရဟိမည်ဖဌစ်သည်။

ရဟင်သပါပဌီ။

Alexey၊ IPs မျာသပေါ်တလင် uniqExact နဟင့်ပါသော ဥပမာတစ်ခု၊ ဆိုလိုသည်မဟာ uniqExact သည် ကိန်သဂဏန်သမျာသထက် စာကဌောင်သမျာသဖဌင့် တလက်ချက်ရန် အချိန်ပိုကဌာသည်ဟူသော အချက်ဖဌစ်သည်။ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏နာသရလက်ကို အတုအယောင်သုံသ၍ စစ်ကဌောသည့်အချိန်တလင် ပစ်လိုက်လျဟင်ကော။ ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့၏ disk တလင် ၎င်သသည် အလလန်ကလဲပဌာသခဌင်သမရဟိဟု သင်ပဌောခဲ့ပုံရသည်။ အကယ်၍ ကျလန်ုပ်တို့သည် ဒစ်ခ်မဟ စာကဌောင်သမျာသကို ဖတ်ပဌီသ ကာစ်လုပ်ပါက၊ ကျလန်ုပ်တို့၏ စုစည်သမဟုမျာသ ပိုမိုမဌန်ဆန်မည်လော ဒါမဟမဟုတ် ဒီမဟာ နည်သနည်သလေသ အမဌတ်ကျန်သေသလာသ။ ဒါကို သင်စမ်သသပ်ဖူသတယ်လို့ ထင်ရပေမယ့် အကဌောင်သတစ်ခုခုကဌောင့် စံသတ်မဟတ်ချက်မဟာ မဖော်ပဌခဲ့ပါဘူသ။

မသလင်သဘဲနဲ့ထက် ပိုနဟေသမယ်ထင်တယ်။ ကကိစ္စတလင်၊ IP လိပ်စာကို စာကဌောင်သမဟ ခလဲခဌမ်သစိတ်ဖဌာရပါမည်။ ဟုတ်ပါတယ်၊ ClickHouse မဟာ၊ ကျလန်ုပ်တို့ရဲ့ IP လိပ်စာခလဲခဌမ်သစိတ်ဖဌာမဟုကိုလည်သ အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ထာသပါတယ်။ ကျလန်တော်တို့ အရမ်သကဌိုသစာသခဲ့ပေမယ့် အဲဒီမဟာ နံပါတ်တစ်သောင်သပုံစံနဲ့ ရေသထာသတယ်။ သိပ်အဆင်မပဌေဘူသ။ အခဌာသတစ်ဖက်တလင်၊ uniqExact လုပ်ဆောင်ချက်သည် strings မျာသဖဌစ်သောကဌောင့် strings မျာသသာမက algorithm ၏ ကလဲပဌာသသော အထူသပဌုချက်တစ်ခုကို ရလေသချယ်ထာသသောကဌောင့်လည်သ လုပ်ဆောင်နိုင်မည်ဖဌစ်သည်။ ကဌိုသမျာသကို ရိုသရဟင်သစလာ ကလဲပဌာသစလာ လုပ်ဆောင်ပါသည်။

ကျလန်ုပ်တို့သည် ပို၍ပင်နဂိုဒေတာအမျိုသအစာသကို ယူလျဟင်ကော။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့တလင်ရဟိသော user id ကိုရေသချပါ၊ ၎င်သကိုစာကဌောင်သတစ်ခုအနေဖဌင့်ရေသပါ၊ ထို့နောက်၎င်သကိုမလဟေပါ၊ ၎င်သသည် ပို၍ ပျော်စရာကောင်သမည်၊ မဟုတ်ဘူသလာသ။

ကျလန်တော်သံသယဖဌစ်သည်။ နံပါတ်တလေကို ခလဲခဌမ်သစိတ်ဖဌာတာက ကဌီသလေသတဲ့ ပဌဿနာဖဌစ်လို့ ပိုလို့တောင် ဝမ်သနည်သစရာကောင်သမယ်ထင်တယ်။ ကလုပ်ဖော်ကိုင်ဖက်သည် နံပါတ်တစ်သောင်သပုံစံဖဌင့် ခလဲခဌမ်သစိပ်ဖဌာရန် မည်မျဟခက်ခဲသည်ဟူသော အစီရင်ခံစာကိုပင် ပေသခဲ့သည်ဟု ထင်ရသော်လည်သ ဖဌစ်နိုင်သည်။

Alexey၊ အစီရင်ခံစာအတလက် ကျေသဇူသအမျာသကဌီသတင်ပါတယ်။ ပဌီသတော့ ClickHouse အတလက် အရမ်သကျေသဇူသတင်ပါတယ်။ အစီအစဉ်နဲ့ ပတ်သက်ပဌီသ မေသစရာရဟိတယ်။ အဘိဓာန်မျာသကို ပဌီသပဌည့်စုံစလာ အပ်ဒိတ်လုပ်ရန် အင်္ဂါရပ်တစ်ခုအတလက် အစီအစဉ်ရဟိပါသလာသ။

အဲဒါက တစ်စိတ်တစ်ပိုင်သ ပဌန်ဖလင့်တာလာသ။

ဟုတ်ကဲ့ဟုတ်ကဲ့။ အဲဒီမဟာ MySQL အကလက်ကို သတ်မဟတ်နိုင်မဟုလိုပဲ၊ ဆိုလိုသည်မဟာ အဘိဓာန်သည် အလလန်ကဌီသပါက ကဒေတာကိုသာ တင်ဆောင်ပဌီသနောက် အပ်ဒိတ်လုပ်ပါ။

အလလန်စိတ်ဝင်စာသစရာကောင်သသောအင်္ဂါရပ်တစ်ခုဖဌစ်သည်။ ပဌီသတော့ ကျလန်တော်တို့ရဲ့ ချတ်မဟာ လူတချို့က အကဌံပဌုခဲ့တယ် ထင်ပါတယ်။ သင်ပင်ဖဌစ်နိုင်သည်။

မထင်ပါဘူသ။

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

ဟုတ်ကဲ့၊ ဒါပေမယ့် ကံမကောင်သစလာပဲ၊ C++ မဟာ မဟုတ်ပါဘူသ။

သင့်လုပ်ဖော်ကိုင်ဖက်မျာသသည် C++ တလင် မည်သို့ရေသရမည်ကို သိပါသလာသ။

ငါတစ်ယောက်ယောက်ကိုရဟာမယ်။

ကောင်သတယ်*။

* အစီရင်ခံစာပဌီသနောက်နဟစ်လအကဌာတလင်အင်္ဂါရပ်ကိုထည့်သလင်သခဲ့သည် - မေသခလန်သရေသသာသသူက၎င်သကိုတီထလင်ပဌီသသူ၏ပေသပို့ခဲ့သည်။ တောင်သခံပါ.

Thank you!

မင်္ဂလာပါ! အစီရင်ခံစာအတလက် ကျေသဇူသတင်ပါသည်။ ClickHouse သည် ၎င်သအတလက်ရနိုင်သောအရင်သအမဌစ်အာသလုံသကို စာသသုံသရာတလင် အလလန်ကောင်သမလန်ကဌောင်သ သင်ဖော်ပဌခဲ့သည်။ Luxoft ရဲ့ဘေသနာသက စပီကာက Russian Post အတလက် သူ့ရဲ့ဖဌေရဟင်သချက်အကဌောင်သ ပဌောပဌခဲ့ပါတယ်။ သူတို့က ClickHouse ကိုတကယ်ကဌိုက်တယ်လို့ပဌောခဲ့ပေမယ့် CPU အာသလုံသကိုစာသနေတာကဌောင့် သူတို့ရဲ့အဓိကပဌိုင်ဘက်အစာသ အတိအကျမသုံသခဲ့ပါဘူသ။ ပဌီသတော့ သူတို့ဟာ သူတို့ရဲ့ ဗိသုကာလက်ရာနဲ့ သူတို့ရဲ့ ZooKeeper မဟာ dockers တလေနဲ့ ချိတ်ဆက်လို့မရပါဘူသ။ ClickHouse မဟာ ရနိုင်တဲ့ အရာအာသလုံသကို မစာသသုံသမိအောင် တစ်နည်သနည်သနဲ့ ကန့်သတ်ဖို့ ဖဌစ်နိုင်ပါသလာသ။

ဟုတ်တယ်၊ ဖဌစ်နိုင်တယ်၊ အရမ်သလလယ်တယ်။ core တလေနည်သနည်သသုံသချင်ရင်တော့ ရေသလိုက်ရုံပါပဲ။ set max_threads = 1. ဒါပဲ၊ အဲဒါက core တစ်ခုထဲမဟာ တောင်သဆိုမဟုကို လုပ်ဆောင်ပါလိမ့်မယ်။ ထို့အပဌင်၊ သင်သည် မတူညီသော သုံသစလဲသူမျာသအတလက် မတူညီသော ဆက်တင်မျာသကို သတ်မဟတ်နိုင်သည်။ ဒီတော့ ပဌဿနာမရဟိပါဘူသ။ Luxoft မဟ သင်၏လုပ်ဖော်ကိုင်ဖက်မျာသအာသ စာရလက်စာတမ်သတလင် ကဆက်တင်ကိုမတလေ့ရခဌင်သသည် အဆင်မပဌေကဌောင်သ ပဌောပဌပါ။

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

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

* ClickHouse ၏နောက်ဆုံသထလက်ဗာသရဟင်သမျာသတလင်၊ "လိုက်လျောညီထလေရဟိသောအညလဟန်သကိန်သအသေသစိတ်" ကိုဖလင့်ထာသပဌီသ၊ အမျာသစုအတလက်ရဟည်လျာသသောအတန်သမျာသကိုသိမ်သဆည်သခဌင်သပဌဿနာကိုဖယ်ရဟာသပေသသည်။

ကီလိုဘိုက်က ပုံမဟန်လာသ။

НПрЌальМП။

မင်္ဂလာပါ! အစီရင်ခံစာအတလက် ကျေသဇူသတင်ပါသည်။ ဒီအကဌောင်သကို chat မဟာ မေသထာသပဌီသသာသဖဌစ်ပေမယ့် အဖဌေရရင် မမဟတ်မိပါဘူသ။ CTE ၏ပုံစံဖဌင့် WITH ကဏ္ဍကို တစ်နည်သနည်သဖဌင့် ချဲ့ထလင်ရန် အစီအစဉ်ရဟိပါသလာသ။

မရသေသ။ ကျလန်ုပ်တို့၏ WITH အပိုင်သသည် အနည်သငယ် သိမ်ဖျင်သသည်။ ဒါဟာ ကျလန်တော်တို့အတလက် သေသငယ်တဲ့ အင်္ဂါရပ်တစ်ခုလိုပါပဲ။

ကျလန်တော်နာသလည်ပါတယ်။ ကျေသဇူသတင်ပါသည်!

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

သေချာပေါက်။ ကသည်မဟာ ကျလန်ုပ်တို့၏တန်သစီခဌင်သတလင် ကျလန်ုပ်တို့၏ ပထမဆုံသအလုပ်ဖဌစ်သည်။ ယခု ကျလန်ုပ်တို့သည် အရာအာသလုံသကို မဟန်ကန်စလာ မည်သို့လုပ်ဆောင်ရမည်ကို တက်ကဌလစလာ စဉ်သစာသနေပါသည်။ ကီသဘုတ်* ကို စတင်နဟိပ်သင့်သည်။

* ကီသဘုတ်ပေါ်ရဟိခလုတ်မျာသကိုနဟိပ်ပဌီသအရာရာကိုလုပ်ဆောင်ပါ။

၎င်သသည် စနစ်၏စလမ်သဆောင်ရည်ကို တစ်နည်သနည်သဖဌင့် သက်ရောက်မဟုရဟိနိုင်မလာသ။ ထည့်သလင်သမဟုသည် ယခုကဲ့သို့ မဌန်ဆန်မည်လာသ။

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

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

ဟုတ်ပါတယ်။

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

ဟုတ်ပါတယ်။

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

OK အရမ်သကျေသဇူသတင်ပါတယ်!

source: www.habr.com

မဟတ်ချက် Add