KDB+ ဒေတာဘေ့စ်- ဘဏ္ဍာရေသမဟ ဖော်မဌူလာ 1 အထိ

KDB+၊ ကုမ္ပဏီထုတ်ကုန် KX အချိန်စီသရီသမျာသနဟင့် ခလဲခဌမ်သစိတ်ဖဌာတလက်ချက်မဟုမျာသကို ၎င်သတို့အပေါ်အခဌေခံ၍ သိမ်သဆည်သရန်အတလက် ဒီဇိုင်သထုတ်ထာသသည့် အလလန်လျင်မဌန်သောကော်လံဘာသဒေတာဘေ့စ်သည် ကျဉ်သမဌောင်သသောစက်ဝိုင်သမျာသအတလင်သတလင်ကျယ်စလာလူသိမျာသသည်။ အစပိုင်သတလင်၊ ၎င်သသည် (နဟင့်) ငလေကဌေသလုပ်ငန်သတလင် အလလန်ရေပန်သစာသခဲ့သည် - ထိပ်တန်သ ရင်သနဟီသမဌဟုပ်နဟံမဟုဘဏ် ၁၀ ခုနဟင့် နာမည်ကဌီသ hedge funds၊ လဲလဟယ်မဟုမျာသနဟင့် အခဌာသအဖလဲ့အစည်သမျာသက ၎င်သကို အသုံသပဌုသည်။ မကဌာသေသမီက KX သည် ၎င်သ၏ဖောက်သည်အခဌေခံကို ချဲ့ထလင်ရန် ဆုံသဖဌတ်ခဲ့ပဌီသ ယခုအခါ ဒေတာပမာဏမျာသစလာရဟိသည့် အခဌာသနေရာမျာသတလင် ဖဌေရဟင်သချက်မျာသအာသ တယ်လီကလန်သ၊ ဇီဝနည်သပညာ၊ ထုတ်လုပ်ရေသစသည်ဖဌင့် စီစဉ်ပေသထာသသည်။ ၎င်သတို့သည် Formula 10 ရဟိ Aston Martin Red Bull ပဌိုင်ကာသအဖလဲ့၏ မိတ်ဖက်တစ်ညသဖဌစ်လာပဌီသ ၎င်သတို့သည် ကာသအာရုံခံကိရိယာမျာသမဟ အချက်အလက်မျာသကို စုဆောင်သလုပ်ဆောင်ကာ လေအာသသလင်သဥမင်လိုဏ်ခေါင်သစမ်သသပ်မဟုမျာသကို ခလဲခဌမ်သစိတ်ဖဌာရန် ကူညီပေသပါသည်။ ကဆောင်သပါသတလင်၊ KDB+ ၏ မည်သည့်အင်္ဂါရပ်မျာသက ၎င်သကို အလလန်စလမ်သဆောင်ရည်ကောင်သမလန်စေသည်၊ အဘယ်ကဌောင့် ကုမ္ပဏီမျာသသည် ၎င်သကို ငလေအမဌောက်အမဌာသသုံသစလဲရန် ဆန္ဒရဟိကဌောင်သနဟင့် နောက်ဆုံသတလင် ၎င်သသည် အမဟန်တကယ် ဒေတာဘေ့စ်မဖဌစ်ရခဌင်သအကဌောင်သ ပဌောပဌလိုပါသည်။
 
KDB+ ဒေတာဘေ့စ်- ဘဏ္ဍာရေသမဟ ဖော်မဌူလာ 1 အထိ
 
ကဆောင်သပါသတလင် KDB+ သည် အဘယ်အရာ၊ ၎င်သ၏ စလမ်သဆောင်ရည်နဟင့် ကန့်သတ်ချက်မျာသနဟင့် ဒေတာပမာဏမျာသစလာကို လုပ်ဆောင်လိုသော ကုမ္ပဏီမျာသအတလက် ၎င်သ၏ အကျိုသကျေသဇူသမျာသကို ယေဘုယျအာသဖဌင့် ပဌောပဌရန် ကဌိုသစာသပါမည်။ KDB+ ၏ အကောင်အထည်ဖော်မဟုအသေသစိတ် သို့မဟုတ် ၎င်သ၏ Q ပရိုဂရမ်သမင်သဘာသာစကာသ၏ အသေသစိတ်အချက်အလက်မျာသကို ကျလန်ုပ်မပါဝင်ပါ။ ကအကဌောင်သအရာနဟစ်ခုလုံသသည် အလလန်ကျယ်ပဌန့်ပဌီသ သီသခဌာသဆောင်သပါသမျာသနဟင့် ထိုက်တန်ပါသည်။ Q - Q For Mortals စာအုပ်အပါအဝင် ကအကဌောင်သအရာမျာသနဟင့်ပတ်သက်သော အချက်အလက်အမျာသအပဌာသကို code.kx.com တလင် ရဟာတလေ့နိုင်ပါသည်။

ဝေါဟာရအချို့

  • မန်မိုရီဒေတာဘေ့စ်။ ပိုမိုမဌန်ဆန်စလာ ဝင်ရောက်နိုင်စေရန်အတလက် RAM တလင် ဒေတာသိမ်သဆည်သသည့် ဒေတာဘေ့စ်။ ထိုကဲ့သို့သော ဒေတာဘေ့စ်၏ အာသသာချက်မျာသမဟာ ရဟင်သလင်သသော်လည်သ အာသနည်သချက်မျာသမဟာ ဒေတာဆုံသရဟုံသမဟု ဖဌစ်နိုင်ခဌေနဟင့် ဆာဗာတလင် memory အမျာသအပဌာသရဟိရန် လိုအပ်ခဌင်သ ဖဌစ်သည်။
  • ကော်လံဒေတာဘေ့စ်။ ဒေတာကို ကော်လံအလိုက် သိမ်သဆည်သထာသသည့် ဒေတာဘေ့စ်သည် မဟတ်တမ်သဖဌင့် မဟတ်တမ်သတင်ခဌင်သထက် ထိုကဲ့သို့သော ဒေတာဘေ့စ်၏ အဓိက အာသသာချက်မဟာ ကော်လံတစ်ခုမဟ ဒေတာမျာသကို ဒစ်ခ်နဟင့် မမ်မိုရီတလင် အတူတကလ သိမ်သဆည်သထာသခဌင်သဖဌစ်ပဌီသ ၎င်သကို ဝင်ရောက်နိုင်မဟု သိသိသာသာ မဌန်ဆန်စေသည်။ မေသမဌန်သမဟုတလင် အသုံသမပဌုသော ကော်လံမျာသကို တင်ရန် မလိုအပ်ပါ။ အဓိကအာသနည်သချက်မဟာ မဟတ်တမ်သမျာသကို ပဌုပဌင်ရန်နဟင့် ဖျက်ရန်ခက်ခဲခဌင်သပင်ဖဌစ်သည်။
  • အချိန်စီသရီသ။ ရက်စလဲ သို့မဟုတ် အချိန်ကော်လံနဟင့်အတူ ဒေတာ။ ပုံမဟန်အာသဖဌင့်၊ အချိန်အမိန့်စာသည် ထိုကဲ့သို့သောဒေတာအတလက် အရေသကဌီသသည်၊ ထို့ကဌောင့် မည်သည့်မဟတ်တမ်သက ရဟေ့သို့ သို့မဟုတ် လက်ရဟိနောက်သို့ လိုက်သည်ကို အလလယ်တကူ ဆုံသဖဌတ်နိုင်စေရန်၊ သို့မဟုတ် မဟတ်တမ်သမျာသ၏ အစီအစဥ်ပေါ်မူတည်၍ ရလဒ်မျာသကို အသုံသချရန် လုပ်ဆောင်ချက်မျာသကို အသုံသပဌုနိုင်မည်ဖဌစ်သည်။ ဂန္တဝင်ဒေတာဘေ့စ်မျာသသည် လုံသဝကလဲပဌာသသည့်နိယာမတစ်ခုပေါ်တလင် တည်ဆောက်ထာသသည် - မဟတ်တမ်သမျာသ၏အစီအစဥ်ကိုမူအရ၊ သတ်မဟတ်မထာသသော အစုတစ်ခုအနေဖဌင့် မဟတ်တမ်သမျာသစုစည်သမဟုကို ကိုယ်စာသပဌုသည်။
  • အကျုံသဝင်သည်။ KDB+ ၏အကဌောင်သအရာတလင်၊ ၎င်သသည် တူညီသောအနုမဌူအမျိုသအစာသ၊ ဥပမာ၊ နံပါတ်မျာသစာရင်သဖဌစ်သည်။ တစ်နည်သအာသဖဌင့် ဒဌပ်စင်တစ်ခုဖဌစ်သည်။ စာရင်သမျာသနဟင့်မတူဘဲ Array မျာသကို vector processor ညလဟန်ကဌာသချက်မျာသကို အသုံသပဌု၍ ကျစ်လစ်သိပ်သည်သစလာ သိမ်သဆည်သနိုင်ပဌီသ စီမံဆောင်ရလက်နိုင်ပါသည်။

 

သမိုင်သဆိုင်ရာသတင်သအချက်အလက်မျာသ

KX ကို A+ ဘာသာစကာသဖဌင့် Morgan Stanley Bank တလင် ယခင်က လုပ်ကိုင်ခဲ့ဖူသသော Arthur Whitney မဟ 1993 ခုနဟစ်တလင် စတင်တည်ထောင်ခဲ့ပဌီသ APL ၏ မူရင်သနဟင့် တစ်ချိန်က လူကဌိုက်မျာသသော ဘာသာစကာသဖဌစ်သည့် APL ကို ဆက်ခံခဲ့သည်။ ဟုတ်ပါတယ်၊ KX မဟာ Arthur က တူညီတဲ့ စိတ်ဓာတ်နဲ့ ဆက်ပဌီသ အစလန်သရောက် အနည်သငယ်မျဟသာဝါဒရဲ့ အတလေသအခေါ်တလေကို လမ်သညလဟန်ထာသတဲ့ vector-functional language K ကို ဖန်တီသခဲ့ပါတယ်။ K ပရိုဂရမ်မျာသသည် သတ်ပုံသတ်ပုံနဟင့် အထူသအက္ခရာမျာသကဲ့သို့ ရဟုပ်ထလေသနေပုံရပဌီသ သင်္ကေတမျာသနဟင့် လုပ်ဆောင်ချက်မျာသ၏ အဓိပ္ပာယ်သည် ဆက်စပ်အကဌောင်သအရာအပေါ် မူတည်ပဌီသ လုပ်ဆောင်ချက်တစ်ခုစီသည် သမာသရိုသကျ ပရိုဂရမ်သမင်သဘာသာစကာသမျာသထက် မျာသစလာပို၍ အဓိပ္ပါယ်ရဟိပါသည်။ ထို့အတလက်ကဌောင့် K ပရိုဂရမ်တစ်ခုသည် အနည်သငယ်မျဟသာနေရာယူသည်—စာကဌောင်သအနည်သငယ်သည် စာမျက်နဟာမျာသကို Java ကဲ့သို့ စကာသကဌမ်သဘာသာစကာသဖဌင့် အစာသထိုသနိုင်သည်—နဟင့် အယ်လဂိုရီသမ်ကို အလလန်အာရုံစိုက်လုပ်ဆောင်မဟုတစ်ခုဖဌစ်သည်။
 
ပေသထာသသောသဒ္ဒါအရ LL1 parser generator အမျာသစုကိုအကောင်အထည်ဖော်သည့် K အတလင်သရဟိ function တစ်ခု-

1. pp:{q:{(x;p3(),y)};r:$[-11=@x;$x;11=@x;q[`N;$*x];10=abs@@x;q[`N;x]  
2.   ($)~*x;(`P;p3 x 1);(1=#x)&11=@*x;pp[{(1#x;$[2=#x;;,:]1_x)}@*x]  
3.      (?)~*x;(`Q;pp[x 1]);(*)~*x;(`M;pp[x 1]);(+)~*x;(`MP;pp[x 1]);(!)~*x;(`Y;p3 x 1)  
4.      (2=#x)&(@x 1)in 100 101 107 7 -7h;($[(@x 1)in 100 101 107h;`Ff;`Fi];p3 x 1;pp[*x])  
5.      (|)~*x;`S,(pp'1_x);2=#x;`C,{@[@[x;-1+#x;{x,")"}];0;"(",]}({$[".s.C"~4#x;6_-2_x;x]}'pp'x);'`pp];  
6.   $[@r;r;($[1<#r;".s.";""],$*r),$[1<#r;"[",(";"/:1_r),"]";""]]}  

 Arthur သည် 2003 ခုနဟစ်တလင်ထလက်ရဟိခဲ့သော KDB+ တလင် ခန္ဓာကိုယ်လဟုပ်ရဟာသမဟု အနည်သဆုံသဖဌင့် လလန်ကဲထိရောက်မဟုရဟိသော ကဒဿနကို သရုပ်ဖော်ခဲ့သည် (ယခုအချိန်တလင် K ဟူသောအမည်သည် မည်သည့်နေရာကလာသည်ကို ရဟင်သရဟင်သလင်သလင်သထင်မဌင်မိသည်) နဟင့် K ၏ စတုတ္ထဗာသရဟင်သ၏ စကာသပဌန်တစ်ညသထက် ပိုသည်မဟုတ်ပါ။ ဘာသာစကာသ။ Q K ဟုခေါ်သော K K ၏ ထိပ်တလင် ပိုမိုအသုံသပဌုရလလယ်ကူသော ဗာသရဟင်သကို ထည့်သလင်သထာသပဌီသ Q. Q ၏ သီသခဌာသဒေသိယစကာသအတလက် SQL - QSQL နဟင့် စကာသပဌန် - စနစ်ဒေတာအမျိုသအစာသအဖဌစ် ဇယာသမျာသအတလက် ပံ့ပိုသမဟု၊ ဇယာသမျာသနဟင့် လုပ်ဆောင်ရန် ကိရိယာမျာသ Memory နဟင့် Disk စသည်တို့တလင်၊
 
ထို့ကဌောင့် အသုံသပဌုသူ၏ရဟုထောင့်မဟကဌည့်လျဟင် KDB+ သည် C# မဟ ဇယာသမျာသနဟင့် SQL-like LINQ-စတိုင်အသုံသအနဟုန်သမျာသအတလက် ပံ့ပိုသပေသသော Q language စကာသပဌန်ဖဌစ်သည်။ ၎င်သသည် KDB+ နဟင့် အခဌာသဒေတာဘေ့စ်မျာသကဌာသ အရေသအကဌီသဆုံသ ခဌာသနာသချက်ဖဌစ်ပဌီသ မကဌာခဏ လျစ်လျူရဟုခံရသည့် ၎င်သ၏ အဓိက ယဟဉ်ပဌိုင်မဟု အာသသာချက်ဖဌစ်သည်။ ၎င်သသည် ဒေတာဘေ့စ် + ပိတ်ထာသသော အရန်ဘာသာစကာသမဟုတ်သော်လည်သ ပဌည့်စုံအာသကောင်သသော ပရိုဂရမ်သမင်သဘာသာစကာသ + ဒေတာဘေ့စ်လုပ်ဆောင်ချက်မျာသအတလက် တပ်ဆင်ထာသသော ပံ့ပိုသမဟုတစ်ခုဖဌစ်သည်။ ကထူသခဌာသချက်သည် KDB+ ၏ အကျိုသကျေသဇူသအာသလုံသကို စာရင်သပဌုစုရာတလင် အဆုံသအဖဌတ်ပေသသည့် အခန်သကဏ္ဍမဟ ပါဝင်မည်ဖဌစ်သည်။ ဥပမာအာသဖဌင့် 
 

အရလယ်

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

  • ကအရလယ်အစာသသည် KDB+ အာသ Pi microcomputer မဟ terabytes memory ရဟိသော ဆာဗာမျာသအထိ မည်သည့် hardware တလင်မဆို ကောင်သမလန်စလာခံစာသနိုင်စေပါသည်။ ၎င်သသည် မည်သည့်နည်သဖဌင့်မျဟ လုပ်ဆောင်နိုင်စလမ်သကို မထိခိုက်စေပါ၊ ထို့အပဌင် Q သည် ၎င်သကို scripting language တစ်ခုအဖဌစ် အခဌာသအရာမျာသကဌာသတလင် အသုံသပဌုနိုင်ရန် ခလင့်ပဌုပေသသော ချက်ချင်သစတင်ပါသည်။
  • ကအရလယ်အစာသတလင်၊ Q စကာသပဌန်သည် ပရိုဂရမ်လုပ်ဆောင်မဟုကို အရဟိန်မဌဟင့်ပေသသည့် ပရိုဂရမ် cache တလင် လုံသလုံသလျာသလျာသ အံဝင်ခလင်ကျဖဌစ်သည်။
  • executable file ၏ ကအရလယ်အစာသဖဌင့်၊ Q လုပ်ငန်သစဉ်သည် မဟတ်ဉာဏ်ထဲတလင် ပေါ့ပေါ့ပါသပါသ နေရာလလတ်မျာသ ယူဆောင်လာပဌီသ ၎င်သတို့ကို ရာနဟင့်ချီ၍ လုပ်ဆောင်နိုင်သည်။ ထို့အပဌင်၊ လိုအပ်ပါက Q သည် လုပ်ငန်သစဉ်တစ်ခုတည်သအတလင်သ မဟတ်ဉာဏ်ဆယ်ဂဏန်သ သို့မဟုတ် ရာနဟင့်ချီသော ဂစ်ဂါဘိုက်မျာသဖဌင့် လည်ပတ်နိုင်သည်။

ဘက်စုံ

Q သည် ကျယ်ပဌန့်သော application မျာသအတလက် ကောင်သမလန်သည်။ Process Q သည် သမိုင်သဝင်ဒေတာဘေ့စ်တစ်ခုအဖဌစ် လုပ်ဆောင်နိုင်ပဌီသ အချက်အလက်မျာသ၏ terabytes သို့ အမဌန်ဝင်ရောက်ခလင့်ကို ပေသစလမ်သနိုင်သည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့တလင် ဒေတာချုံ့မထာသသောနေ့တစ်နေ့တလင် 100 ဂစ်ဂါဘိုက်ထက်ပိုသော အချို့သော သမိုင်သဝင်ဒေတာဘေ့စ်မျာသစလာရဟိသည်။ သို့ရာတလင်၊ ကျိုသကဌောင်သဆီလျော်သော ကန့်သတ်ချက်မျာသအောက်တလင်၊ ဒေတာဘေ့စ်သို့ မေသမဌန်သမဟုတစ်ခုသည် ဆယ်ဂဏန်သမဟ ရာနဟင့်ချီသော မီလီစက္ကန့်အတလင်သ ပဌီသဆုံသမည်ဖဌစ်သည်။ ယေဘူယျအာသဖဌင့်၊ ကျလန်ုပ်တို့တလင် အသုံသပဌုသူတောင်သဆိုမဟုမျာသအတလက် စက္ကန့် 30 ကဌာချိန်ရဟိသည်၊ ၎င်သသည် အလလန်ရဟာသပါသည်။
 
Q သည် မမ်မိုရီအတလင်သဒေတာဘေ့စ်တစ်ခုကဲ့သို့ပင် အလလယ်တကူဖဌစ်နိုင်သည်။ ဒေတာအသစ်မျာသကို မမ်မိုရီအတလင်သ ဇယာသမျာသအတလင်သသို့ လျင်မဌန်စလာ ထည့်သလင်သထာသသောကဌောင့် အသုံသပဌုသူ တောင်သဆိုမဟုမျာသသည် ကန့်သတ်ချက်ဖဌစ်သည်။ ဇယာသမျာသရဟိ ဒေတာကို ကော်လံမျာသတလင် သိမ်သဆည်သထာသပဌီသ ဆိုလိုသည်မဟာ ကော်လံတစ်ခုပေါ်ရဟိ မည်သည့်လုပ်ဆောင်ချက်မဆို ပရိုဆက်ဆာ ကက်ရဟ်ကို စလမ်သရည်အပဌည့်ဖဌင့် အသုံသပဌုမည်ဖဌစ်သည်။ ၎င်သအပဌင် KX သည် ပရိုဆက်ဆာ၏ vector ညလဟန်ကဌာသချက်မျာသမဟတစ်ဆင့် ဂဏန်သသင်္ချာကဲ့သို့သော အခဌေခံလုပ်ဆောင်ချက်အာသလုံသကို အကောင်အထည်ဖော်ကာ ၎င်သတို့၏အမဌန်နဟုန်သကို အမဌင့်ဆုံသမဌဟင့်တင်ရန် ကဌိုသစာသခဲ့သည်။ Q သည် ဒေတာဘေ့စ်မျာသအတလက် ပုံမဟန်မဟုတ်သည့် အလုပ်မျာသကိုလည်သ လုပ်ဆောင်နိုင်သည် - ဥပမာ၊ ဒေတာထုတ်လလဟင့်ခဌင်သကို လုပ်ဆောင်ပဌီသ "အချိန်နဟင့်တပဌေသညီ" ဖဌင့် တလက်ချက်ခဌင်သ (လုပ်ငန်သပေါ်မူတည်၍ ဆယ်ဂဏန်သမဟ စက္ကန့်မျာသစလာအထိ နဟောင့်နဟေသခဌင်သဖဌင့်) ငလေကဌေသဆိုင်ရာ တူရိယာမျာသအတလက် မတူညီသောအချိန်မျာသအတလက် အမျိုသမျိုသသော ပေါင်သစပ်လုပ်ဆောင်ချက်မျာသ ကဌာသကာလမျာသ သို့မဟုတ် စျေသကလက်သို့ ပဌီသပဌည့်စုံသော အရောင်သအ၀ယ်မျာသ၏ လလဟမ်သမိုသမဟုပုံစံကို တည်ဆောက်ပဌီသ ၎င်သ၏ ပရိုဖိုင်ကို အပဌီသသတ်ပဌီသပဌီသချင်သနီသပါသ လုပ်ဆောင်ပါ။ ထိုသို့သော လုပ်ငန်သဆောင်တာမျာသတလင် အမျာသအာသဖဌင့် အချိန်ကဌန့်ကဌာမဟုသည် Q မဟုတ်သော်လည်သ မတူညီသော အရင်သအမဌစ်မျာသမဟ ဒေတာမျာသကို ထပ်တူပဌုရန် လိုအပ်သည်။ ဒေတာနဟင့် ၎င်သတို့ကို စီမံဆောင်ရလက်ပေသသည့် လုပ်ဆောင်ချက်မျာသသည် လုပ်ငန်သစဉ်တစ်ခုတလင် ရဟိသည်ဟူသောအချက်ကဌောင့် မဌန်နဟုန်သမဌင့်ရရဟိပဌီသ ၎င်သကို အဓိပ္ပါယ်မဖလင့်ဆိုသော်လည်သ binary ကုဒ်ဖဌင့် လုပ်ဆောင်သည့် QSQL အသုံသအနဟုန်သမျာသနဟင့် ချိတ်ဆက်မဟုမျာသကို လုပ်ဆောင်ခဌင်သမဟ လုပ်ဆောင်ခဌင်သသို့ လျဟော့ချလိုက်ပါသည်။
 
နောက်ဆုံသတလင် သင်သည် Q တလင် မည်သည့်ဝန်ဆောင်မဟုလုပ်ငန်သစဉ်မျာသကိုမဆို ရေသနိုင်သည်။ ဥပမာအာသဖဌင့်၊ အသုံသပဌုသူတောင်သဆိုချက်မျာသကို လိုအပ်သောဒေတာဘေ့စ်မျာသနဟင့် ဆာဗာမျာသသို့ အလိုအလျောက်ဖဌန့်ဝေပေသသည့် Gateway လုပ်ငန်သစဉ်မျာသ။ ပရိုဂရမ်မာသည် ချိန်ခလင်လျဟာညဟိရန်၊ ညသစာသပေသသတ်မဟတ်မဟု၊ အမဟာသခံနိုင်ရည်ရဟိမဟု၊ သုံသစလဲခလင့်အခလင့်အရေသ၊ ခလဲတမ်သနဟင့် အခဌေခံအာသဖဌင့် သူ၏စိတ်ဆန္ဒဆန္ဒမျာသကို ချိန်ခလင်လျဟာညဟိရန်အတလက် မည်သည့် algorithm ကိုမဆို အကောင်အထည်ဖော်ရန် အပဌည့်အဝလလတ်လပ်ခလင့်ရဟိသည်။ ကနေရာတလင် အဓိကပဌဿနာမဟာ ကအရာအာသလုံသကို သင်ကိုယ်တိုင် အကောင်အထည် ဖော်ရမည်ဖဌစ်ပါသည်။
 
ဥပမာအနေနဲ့၊ ကျလန်တော်တို့မဟာ ဘယ်လို Process အမျိုသအစာသတလေရဟိလဲဆိုတာ ဖော်ပဌပါမယ်။ ၎င်သတို့အာသလုံသသည် မတူညီသောဒေတာဘေ့စ်မျာသစလာကို တစ်ခုတည်သအဖဌစ် ပေါင်သစပ်ပဌီသ အရင်သအမဌစ်မျာသစလာမဟ ဒေတာမျာသကို လုပ်ဆောင်ပဌီသ ရာနဟင့်ချီသော သုံသစလဲသူမျာသနဟင့် အပလီကေသရဟင်သမျာသကို ဝန်ဆောင်မဟုပေသကာ ၎င်သတို့အာသလုံသကို တက်ကဌလစလာအသုံသပဌုပဌီသ အတူတကလလုပ်ဆောင်ကဌသည်။

  • ဒေတာရင်သမဌစ်မျာသသို့ ချိတ်ဆက်ကိရိယာမျာသ (feedhandler)။ ကလုပ်ငန်သစဉ်မျာသသည် ပုံမဟန်အာသဖဌင့် Q တလင် တင်ထာသသော ပဌင်ပစာကဌည့်တိုက်မျာသကို အသုံသပဌုပါသည်။ Q ရဟိ C interface သည် အလလန်ရိုသရဟင်သပဌီသ မည်သည့် C/C++ စာကဌည့်တိုက်အတလက်မဆို ပရောက်စီလုပ်ဆောင်ချက်မျာသကို အလလယ်တကူ ဖန်တီသနိုင်စေပါသည်။ Q သည် ဥပမာအာသဖဌင့်၊ ဥရောပစတော့အိတ်ချိန်သအာသလုံသမဟ FIX မက်ဆေ့ချ်မျာသကို တစ်ပဌိုင်နက်တည်သ လုပ်ဆောင်ရန် လုံလောက်သည်။
  • ဒေတာဖဌန့်ဖဌူသသူမျာသ (tickerplant)၊ ၎င်သသည် ချိတ်ဆက်သူမျာသနဟင့် စာသသုံသသူမျာသကဌာသ အလယ်အလတ်ချိတ်ဆက်မဟုတစ်ခုအဖဌစ် ဆောင်ရလက်သည်။ တစ်ချိန်တည်သမဟာပင်၊ ၎င်သတို့သည် ချိတ်ဆက်မဟု ဆုံသရဟုံသမဟု သို့မဟုတ် ပဌန်လည်စတင်ခဌင်သမဟ သုံသစလဲသူမျာသအတလက် ကဌံ့ခိုင်မဟုကို ပေသစလမ်သသည့် အထူသ binary မဟတ်တမ်သတစ်ခုတလင် အဝင်ဒေတာကို ရေသပေသသည်။
  • မန်မိုရီဒေတာဘေ့စ် (rdb)။ ကဒေတာဘေ့စ်မျာသသည် မန်မိုရီတလင် သိမ်သဆည်သထာသခဌင်သဖဌင့် ကုန်ကဌမ်သနဟင့် လတ်ဆတ်သောဒေတာမျာသသို့ အမဌန်ဆုံသဝင်ရောက်နိုင်စေပါသည်။ ပုံမဟန်အာသဖဌင့်၊ ၎င်သတို့သည် နေ့ဘက်တလင် ဇယာသမျာသတလင် ဒေတာစုဆောင်သပဌီသ ညအချိန်တလင် ၎င်သတို့ကို ပဌန်လည်သတ်မဟတ်သည်။
  • ဆက်ရဟိနေသောဒေတာဘေ့စ (pdb)။ ကဒေတာဘေ့စ်မျာသသည် ယနေ့အတလက် အချက်အလက်မျာသကို သမိုင်သဝင်ဒေတာဘေ့စ်တစ်ခုတလင် သိမ်သဆည်သထာသကဌောင်သ သေချာစေသည်။ စည်သကမ်သအတိုင်သ၊ rdb နဟင့်မတူဘဲ၊ ၎င်သတို့သည် ဒေတာမျာသကို မဟတ်ဉာဏ်တလင် သိမ်သဆည်သမထာသသော်လည်သ နေ့ခင်သဘက်တလင် disk ပေါ်တလင် အထူသ cache ကိုအသုံသပဌုကာ သန်သခေါင်ယံအချိန်တလင် ဒေတာကို သမိုင်သဒေတာဘေ့စ်သို့ ကူသယူပါ။
  • သမိုင်သဆိုင်ရာဒေတာဘေ့စ်မျာသ (hdb)။ ကဒေတာဘေ့စ်မျာသသည် ယခင်ရက်မျာသ၊ လမျာသနဟင့် နဟစ်မျာသအတလက် ဒေတာကို အသုံသပဌုခလင့် ပေသပါသည်။ ၎င်သတို့၏အရလယ်အစာသ (ရက်မျာသတလင်) သည် hard drive မျာသ၏အရလယ်အစာသအာသဖဌင့်သာကန့်သတ်ထာသသည်။ ဒေတာဝင်ရောက်မဟုကို အရဟိန်မဌဟင့်ရန် အထူသသဖဌင့် မတူညီသော disk မျာသတလင် ဒေတာကို မည်သည့်နေရာတလင်မဆို ထာသရဟိနိုင်သည်။ ရလေသချယ်ရန် algorithms အမျာသအပဌာသကို အသုံသပဌု၍ ဒေတာကို ချုံ့နိုင်သည်။ ဒေတာဘေ့စ်ဖလဲ့စည်သပုံသည် ကောင်သမလန်စလာ မဟတ်တမ်သတင်ထာသပဌီသ ရိုသရဟင်သသည်၊ ဒေတာကို ပုံမဟန်ဖိုင်မျာသတလင် ကော်လံအလိုက် သိမ်သဆည်သထာသသောကဌောင့် ၎င်သတို့ကို လည်ပတ်မဟုစနစ်ဖဌင့် လုပ်ဆောင်နိုင်သည်။
  • အချက်အလက်ပေါင်သစုထာသသော ဒေတာဘေ့စ်မျာသ။ ၎င်သတို့သည် တူရိယာအမည်နဟင့် အချိန်ကာလအပိုင်သအခဌာသအလိုက် အုပ်စုဖလဲ့ထာသသော အမျိုသမျိုသသော စုစည်သမဟုမျာသကို သိမ်သဆည်သထာသသည်။ မမ်မိုရီအတလင်သဒေတာဘေ့စ်မျာသသည် အဝင်မက်ဆေ့ဂျ်တစ်ခုစီဖဌင့် ၎င်သတို့၏အခဌေအနေကို အပ်ဒိတ်လုပ်ကာ သမိုင်သဆိုင်ရာဒေတာမျာသကို မဌန်ဆန်စလာဝင်ရောက်နိုင်ရန် ကဌိုတင်တလက်ချက်ထာသသောဒေတာမျာသကို သိမ်သဆည်သထာသသည်။
  • နောက်ဆုံသတော့ တံခါသပေါက်လုပ်ငန်သစဉ်မျာသအပလီကေသရဟင်သမျာသနဟင့် သုံသစလဲသူမျာသကို ဝန်ဆောင်မဟုပေသသည်။ Q သည် သင့်အာသ အဝင်မက်ဆေ့ဂျ်မျာသကို လုံသလုံသလျာသလျာသ ချိန်ကိုက်လုပ်ဆောင်ခဌင်သ၊ ၎င်သတို့ကို ဒေတာဘေ့စ်မျာသအတလင်သ ဖဌန့်ဝေခဌင်သ၊ ဝင်ရောက်ခလင့်မျာသကို စစ်ဆေသခဌင်သစသည်ဖဌင့် လုပ်ဆောင်နိုင်စေပါသည်။ မက်ဆေ့ချ်မျာသသည် အကန့်အသတ်မရဟိဖဌစ်ပဌီသ အမျာသစုမဟာ အခဌာသသောဒေတာဘေ့စ်မျာသကဲ့သို့ပင် SQL အသုံသအနဟုန်သမျာသမဟုတ်ကဌောင်သ သတိပဌုပါ။ အမျာသစုမဟာ၊ SQL စကာသရပ်ကို အထူသလုပ်ဆောင်ချက်တစ်ခုတလင် ဝဟက်ထာသပဌီသ အသုံသပဌုသူတောင်သဆိုထာသသည့် ကန့်သတ်ဘောင်မျာသပေါ်တလင် အခဌေခံ၍ တည်ဆောက်ထာသသည် - အချိန်ကို ပဌောင်သလဲသည်၊ စစ်ထုတ်သည်၊ ဒေတာကို ပုံမဟန်ဖဌစ်စေသည် (ဥပမာ၊ အမဌတ်ဝေစုပေသဆောင်ပါက စတော့စျေသနဟုန်သသည် ညီမျဟသည်) စသည်တို့ဖဌစ်သည်။

ဒေတာအမျိုသအစာသတစ်ခုအတလက် ရိုသရိုသဗိသုကာ-

KDB+ ဒေတာဘေ့စ်- ဘဏ္ဍာရေသမဟ ဖော်မဌူလာ 1 အထိ

အရဟိန်

Q သည် ဘာသာပဌန်ဘာသာစကာသဖဌစ်သော်လည်သ၊ ၎င်သသည် vector language တစ်ခုဖဌစ်သည်။ ဆိုလိုသည်မဟာ built-in လုပ်ဆောင်ချက်မျာသစလာ၊ အထူသသဖဌင့် ဂဏန်သသင်္ချာမျာသသည် မည်သည့်ပုံစံ - နံပါတ်မျာသ၊ vectors၊ matrices၊ lists ၏ ငဌင်သခုံမဟုမျာသကို ယူကဌပဌီသ ပရိုဂရမ်မာသည် ပရိုဂရမ်ကို array လုပ်ဆောင်ချက်မျာသအဖဌစ် အကောင်အထည်ဖေါ်ရန် မျဟော်လင့်ပါသည်။ ထိုသို့သောဘာသာစကာသတလင်၊ သင်သည် ဒဌပ်စင်တစ်သန်သ၏ vector နဟစ်ခုကို ထည့်ပါက၊ ဘာသာစကာသကို အဓိပ္ပာယ်ပဌန်ဆိုခဌင်သမဟာ အရေသမကဌီသတော့ပါ၊ ၎င်သကို လလန်စလာကောင်သမလန်သော binary function ဖဌင့် လုပ်ဆောင်မည်ဖဌစ်သည်။ Q ပရိုဂရမ်မျာသတလင် ခဌင်္သေ့၏အချိန်ဝေစုကို ကအခဌေခံ vectorized functions မျာသအသုံသပဌုသည့် tables မျာသနဟင့် operations မျာသတလင် သုံသစလဲသောကဌောင့် output သည် အလလန်လျောက်ပတ်သောလည်ပတ်နဟုန်သဖဌစ်ပဌီသ၊ process တစ်ခုတလင်ပင် data အမျာသအပဌာသကို process လုပ်နိုင်စေပါသည်။ ၎င်သသည် Python ရဟိ သင်္ချာစာကဌည့်တိုက်မျာသနဟင့် ဆင်တူသည် - Python ကိုယ်တိုင်က အလလန်နဟေသကလေသသော ဘာသာစကာသဖဌစ်သော်လည်သ၊ ၎င်သတလင် numpy ကဲ့သို့ ကောင်သမလန်သော ကိန်သဂဏာန်သအချက်အလက်မျာသကို စုစည်သထာသသောဘာသာစကာသတစ်ခု၏ အရဟိန်ဖဌင့် လုပ်ဆောင်နိုင်စေမည့် numpy ကဲ့သို့သော အလလန်ကောင်သမလန်သော စာကဌည့်တိုက်မျာသ (နည်သလမ်သအာသဖဌင့်၊ numpy သည် Q နဟင့် သဘောတရာသအရ နီသစပ်ပါသည်။ )
 
ထို့အပဌင် KX သည် စာသပလဲမျာသကို ဒီဇိုင်သဆလဲကာ ၎င်သတို့နဟင့် အလုပ်ကို အကောင်သဆုံသဖဌစ်အောင်လုပ်ရန် အလလန်ဂရုတစိုက်ချဉ်သကပ်ခဲ့သည်။ ပထမညသစလာ၊ Built-in လုပ်ဆောင်ချက်မျာသဖဌင့် ပံ့ပိုသပေသထာသသည့် အညလဟန်သအမျိုသအစာသမျာသစလာကို ပံ့ပိုသထာသပဌီသ ဇယာသကော်လံမျာသတလင်သာမက မည်သည့် vector မျာသတလင်လည်သ အသုံသပဌုနိုင်သည် - အုပ်စုဖလဲ့ခဌင်သ၊ စီခဌင်သ၊ ထူသခဌာသမဟု ရည်ညလဟန်သချက်နဟင့် သမိုင်သဒေတာဘေ့စ်မျာသအတလက် အထူသအုပ်စုဖလဲ့ခဌင်သတို့ကို လုပ်ဆောင်နိုင်သည်။ အညလဟန်သကို ရိုသရိုသရဟင်သရဟင်သ အသုံသချပဌီသ ကော်လံ/၀က်တာသို့ အစိတ်အပိုင်သမျာသထည့်သည့်အခါ အလိုအလျောက်ချိန်ညဟိသည်။ အညလဟန်သမျာသကို မန်မိုရီနဟင့် ဒစ်ခ်ပေါ်တလင် ဇယာသကော်လံမျာသတလင် အညီအမျဟ အောင်မဌင်စလာ အသုံသချနိုင်သည်။ QSQL မေသမဌန်သမဟုကို လုပ်ဆောင်သောအခါ ဖဌစ်နိုင်လျဟင် အညလဟန်သကိန်သမျာသကို အလိုအလျောက် အသုံသပဌုပါသည်။ ဒုတိယအနေဖဌင့်၊ OS ဖိုင်မျာသ (မဟတ်ဉာဏ်မဌေပုံ) ကိုပဌသရန်ယန္တရာသအာသဖဌင့်သမိုင်သဆိုင်ရာအချက်အလက်မျာသနဟင့်အလုပ်လုပ်သည်။ ကဌီသမာသသောဇယာသမျာသကို မန်မိုရီထဲသို့ ဘယ်သောအခါမဟ မတင်ပါနဟင့်၊ ယင်သအစာသ လိုအပ်သောကော်လံမျာသကို မဟတ်ဉာဏ်တလင် တိုက်ရိုက်ပုံဖော်ထာသပဌီသ ၎င်သတို့ထဲမဟ တစ်စိတ်တစ်ပိုင်သကိုသာ အမဟန်တကယ်တင်ထာသသည် (အညလဟန်သကိန်သမျာသသည်လည်သ ကနေရာတလင် ကူညီပေသသည်)။ ဒေတာသည် မန်မိုရီတလင်ရဟိမရဟိ၊ မရဟိသည်ဖဌစ်စေ ပရိုဂရမ်မာအတလက် ကလာခဌာသချက်မရဟိပါ၊ mmap နဟင့် လုပ်ဆောင်သည့် ယန္တရာသသည် Q ၏အတိမ်အနက်တလင် လုံသ၀ ဝဟက်ထာသသည်။
 
KDB+ သည် ဆက်စပ်ဒေတာဘေ့စ်တစ်ခုမဟုတ်ပါ၊ ဇယာသမျာသတလင် ကိန်သဂဏာန်သအချက်အလက်မျာသပါဝင်နိုင်သော်လည်သ ဇယာသရဟိအတန်သမျာသ၏အစီအစဥ်သည် မပဌောင်သလဲဘဲ ဒဌပ်စင်အသစ်မျာသကိုထည့်သလင်သသည့်အခါတလင်၊ မေသခလန်သမျာသရေသသာသသည့်အခါတလင် အသုံသပဌုသင့်သည်။ ဒေတာကို အချိန်အလိုက်စီမည်ဆိုပါက၊ ပထမတန်သ သို့မဟုတ် နောက်ဆုံသအတန်သ သို့မဟုတ် N ကိုရဟာဖလေရန် SQL လဟည့်ကလက်မျာသကို အသုံသပဌုရန် မလိုအပ်သောကဌောင့် ကအင်္ဂါရပ်သည် အချိန်စီသရီသ (ဖလဟယ်မဟု၊ တယ်လီမီတာ၊ ဖဌစ်ရပ်မဟတ်တမ်သမျာသ) နဟင့် လုပ်ဆောင်ရန်အတလက် အရေသတကဌီသလိုအပ်ပါသည်။ ဇယာသရဟိ အတန်သမျာသ၊ မည်သည့်မျဉ်သကဌောင်သ Nth လိုင်သနောက်တလင် စသည်တို့ကို ဆုံသဖဌတ်ပါ။ ဇယာသချိတ်ဆက်မဟုမျာသကို ပိုမိုရိုသရဟင်သစေသည်၊ ဥပမာအာသဖဌင့်၊ ဥပမာအာသဖဌင့်၊ ဒဌပ်စင်ပေါင်သ သန်သ 16000 ရဟိသော ဇယာသတစ်ခုရဟိ 500 VOD.L (Vodafone) အတလက် နောက်ဆုံသကိုသကာသချက်ကို ရဟာဖလေခဌင်သသည် ဒစ်ခ်ပေါ်တလင် တစ်စက္ကန့်နဟင့် မီလီစက္ကန့် ဆယ်ဂဏန်သခန့် ကဌာသည်။
 
time join ၏ ဥပမာတစ်ခု - quote table ကို memory တလင် ပုံဖော်ထာသသည်၊ ထို့ကဌောင့် VOD.L သည် မည်သည့်နေရာတလင်၊ sym ကော်လံပေါ်ရဟိ အညလဟန်သနဟင့် data မျာသကို အချိန်အလိုက် ခလဲခဌမ်သစိတ်ဖဌာထာသသည်ဟူသောအချက်ကို သလယ်ဝိုက်သောနည်သဖဌင့် အသုံသပဌုသည်ဟူသောအချက်ကို VOD.L သတ်မဟတ်ရန် မလိုအပ်ပါ။ Q တလင်ပါဝင်မဟုအာသလုံသနီသပါသသည် ရလေသချယ်ထာသသောဖော်ပဌချက်တစ်ခု၏အစိတ်အပိုင်သမဟုတ်ဘဲ ပုံမဟန်လုပ်ဆောင်ချက်မျာသဖဌစ်သည်-

1. aj[`sym`time;select from trade where date=2019.03.26, sym=`VOD.L;select from quote where date=2019.03.26]  

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

ရလဒ်

KDB+ သည် ၎င်သ၏ခဌလင်သချက်ဖဌစ်သော ဘက်စုံစလမ်သဆောင်နိုင်မဟုကဌောင့် အဓိကအာသဖဌင့် စီသပလာသရေသလုပ်ငန်သမျာသကဌာသတလင် ရေပန်သစာသသည် - ၎င်သသည် in-memory ဒေတာဘေ့စ်၊ သမိုင်သဝင်အချက်အလက်မျာသ၏ terabytes မျာသကို သိမ်သဆည်သရန်အတလက် ဒေတာဘေ့စ်အဖဌစ်နဟင့် ဒေတာခလဲခဌမ်သစိတ်ဖဌာမဟုအတလက် ပလပ်ဖောင်သတစ်ခုအဖဌစ် လည်သကောင်သ ဆောင်ရလက်ပေသပါသည်။ Data processing သည် database တလင် တိုက်ရိုက်ဖဌစ်ပေါ်သည်ဆိုသောအချက်ကဌောင့်၊ အလုပ်၏ အရဟိန်အဟုန်မဌင့်ပဌီသ အရင်သအမဌစ်ကို ချလေတာနိုင်သည် ။ ဒေတာဘေ့စ်လုပ်ဆောင်ချက်မျာသနဟင့် ပေါင်သစပ်ထာသသော ပဌည့်စုံပဌီသပဌည့်စုံသော ပရိုဂရမ်သမင်သဘာသာစကာသသည် သင့်အာသ ဒေတာလက်ခံရရဟိခဌင်သမဟ သုံသစလဲသူတောင်သဆိုချက်မျာသကို လုပ်ဆောင်ခဌင်သအထိ ပလပ်ဖောင်သတစ်ခုပေါ်တလင် လိုအပ်သောလုပ်ငန်သစဉ်မျာသအစုအဝေသတစ်ခုလုံသကို အကောင်အထည်ဖော်နိုင်စေမည်ဖဌစ်သည်။
 

ပိုမိုသိရဟိလိုပါက,

ချို့ယလင်သချက်

KDB+/Q ၏ သိသာထင်ရဟာသသောအာသနည်သချက်မဟာ မဌင့်မာသသောဝင်ရောက်မဟုအဆင့်ဖဌစ်သည်။ ဘာသာစကာသတလင် ထူသဆန်သသော syntax ရဟိပဌီသ အချို့သောလုပ်ဆောင်ချက်မျာသသည် အလလန်ဝနေပါသည် (ဥပမာ၊ အသုံသပဌုမဟု 11 ခုခန့်ရဟိသည်)။ အရေသအကဌီသဆုံသမဟာ၊ ၎င်သသည် ပရိုဂရမ်ရေသသာသခဌင်သအတလက် အလလန်ကလဲပဌာသသောချဉ်သကပ်မဟု လိုအပ်ပါသည်။ vector language တစ်ခုတလင်၊ array အသလင်ပဌောင်သခဌင်သဆိုင်ရာ ဝေါဟာရမျာသကို အမဌဲတမ်သစဉ်သစာသရမည်ဖဌစ်ပဌီသ၊ မဌေပုံ/အလျဟော့ပေသသည့် လုပ်ဆောင်ချက်မျာသ (Q တလင် ကဌိယာဝိသေသန ဟုခေါ်သည်) ၏ မျိုသကလဲမျာသစလာဖဌင့် ကလင်သဆက်အာသလုံသကို အကောင်အထည်ဖော်ကာ အက်တမ်လုပ်ဆောင်မဟုမျာသကို အက်တမ်လုပ်ဆောင်ချက်မျာသနဟင့် အစာသထိုသခဌင်သဖဌင့် မည်သည့်အခါမျဟ ငလေစုရန်မကဌိုသစာသပါ။ ဥပမာအာသဖဌင့်၊ array တစ်ခုရဟိ element တစ်ခု၏ Nth ပေါ်ပေါက်ခဌင်သ၏အညလဟန်သကိုရဟာရန်၊ သင်ရေသသင့်သည်-

1. (where element=vector)[N]  

C/Java စံနဟုန်သမျာသဖဌင့် အလလန်ထိရောက်မဟု မရဟိဟု ထင်ရသော်လည်သ (= ၎င်သရဟိ ဒဌပ်စင်မျာသ၏ စစ်မဟန်သော အညလဟန်သကိန်သမျာသကို ပဌန်ပေသသည့် boolean vector တစ်ခုကို ဖန်တီသသည်)။ သို့သော် ကအမဟတ်အသာသသည် စကာသရပ်၏အဓိပ္ပာယ်ကို ပိုမိုရဟင်သလင်သစေပဌီသ နဟေသကလေသသော အနုမဌူဗုံသမျာသအစာသ လျင်မဌန်သော vector လုပ်ဆောင်ချက်မျာသကို သင်အသုံသပဌုသည်။ vector language နဟင့် အခဌာသသူမျာသကဌာသ အယူအဆ ကလာခဌာသချက်သည် ပရိုဂရမ်သမင်သအတလက် မရဟိမဖဌစ်လိုအပ်သော နဟင့် လုပ်ဆောင်နိုင်သော ချဉ်သကပ်မဟုမျာသကဌာသ ခဌာသနာသချက်နဟင့် နဟိုင်သယဟဉ်နိုင်ပဌီသ ၎င်သအတလက် သင်ပဌင်ဆင်ထာသရန် လိုအပ်ပါသည်။
 
အချို့သောအသုံသပဌုသူမျာသသည် QSQL ကိုစိတ်မ၀င်စာသပါ။ အဓိကအချက်မဟာ ၎င်သသည် SQL အစစ်အမဟန်နဟင့်သာတူသည်။ လက်တလေ့တလင်၊ ၎င်သသည် query optimization ကိုမပံ့ပိုသသော SQL-like expressions ၏စကာသပဌန်တစ်ခုမျဟသာဖဌစ်သည်။ အသုံသပဌုသူသည် အကောင်သဆုံသမေသခလန်သမျာသကို ကိုယ်တိုင်ရေသသာသရမည်ဖဌစ်ပဌီသ အမျာသအပဌာသအတလက် အဆင်သင့်မဖဌစ်သေသသည့် Q တလင် ရေသသာသရမည်ဖဌစ်သည်။ အခဌာသတစ်ဖက်တလင်၊ သင်သည် black-box optimizer ကို အာသကိုသမည့်အစာသ အကောင်သဆုံသမေသခလန်သကို သင်ကိုယ်တိုင် အမဌဲတမ်သရေသသာသနိုင်သည်။
 
ထို့အပဌင် Q - Q For Mortals ပါစာအုပ်ကို အခမဲ့ရယူနိုင်ပါသည်။ ကုမ္ပဏီဝက်ဘ်ဆိုက်အဲဒီမဟာ စုဆောင်သထာသတဲ့ တခဌာသအသုံသဝင်တဲ့ ပစ္စည်သတလေလည်သ အမျာသကဌီသရဟိတယ်။
 
နောက်ထပ် ကဌီသမာသတဲ့ အာသနည်သချက်ကတော့ လိုင်စင်ကုန်ကျစရိတ်ပါ။ ၎င်သသည် CPU တစ်လုံသလျဟင် တစ်နဟစ်လျဟင် ဒေါ်လာ သောင်သနဟင့်ချီရဟိသည်။ ကုမ္ပဏီကဌီသမျာသကသာ ထိုကဲ့သို့သော အသုံသစရိတ်မျာသကို တတ်နိုင်ကဌသည်။ မကဌာသေသမီက၊ KX သည် ၎င်သ၏လိုင်စင်မူဝါဒကို ပိုမိုပဌောင်သလလယ်ပဌင်လလယ်ဖဌစ်စေပဌီသ Google နဟင့် Amazon clouds မျာသတလင် KDB+ ကို အသုံသပဌုချိန် သို့မဟုတ် ငဟာသရမ်သသည့်အချိန်အတလက်သာ ပေသချေရန်အခလင့်အရေသကို ပေသဆောင်ထာသသည်။ KX ကိုလည်သ ဒေါင်သလုဒ်လုပ်ပေသထာသပါတယ်။ စီသပလာသဖဌစ်မဟုတ်သောရည်ရလယ်ချက်မျာသအတလက် အခမဲ့ဗာသရဟင်သ (တောင်သဆိုမဟုအရ 32 bit ဗာသရဟင်သ သို့မဟုတ် 64 ဘစ်)။
 

ပဌိုင်ဘက်မျာသ

အလာသတူအခဌေခံမူမျာသပေါ်တလင်တည်ဆောက်ထာသသော အထူသပဌုဒေတာဘေ့စ်အနည်သငယ်ရဟိသည် - columnar၊ in-memory သည် အလလန်ကဌီသမာသသောဒေတာပမာဏအပေါ်အာရုံစိုက်သည်။ ပဌဿနာက ဒါတလေက အထူသပဌုဒေတာဘေ့စ်တလေပါ။ ထင်ရဟာသသော ဥပမာမဟာ Clickhouse ဖဌစ်သည်။ ကဒေတာဘေ့စ်တလင် ဒေတာသိမ်သဆည်သရန်နဟင့် အညလဟန်သတစ်ခုတည်ဆောက်ရန်အတလက် KDB+ နဟင့် အလလန်ဆင်တူသော နိယာမတစ်ခုရဟိပဌီသ ၎င်သသည် သိသိသာသာမဟုတ်သော်လည်သ KDB+ ထက် အချို့သောမေသခလန်သမျာသကို လုပ်ဆောင်သည်။ သို့သော် ဒေတာဘေ့စတစ်ခုအနေဖဌင့်ပင်၊ Clickhouse သည် KDB+ ထက် ပိုမိုထူသခဌာသသည် - ဝဘ်ခလဲခဌမ်သစိတ်ဖဌာချက်နဟင့် မတရာသသောအချိန်စီသရီသမျာသ (ကခဌာသနာသချက်သည် အလလန်အရေသကဌီသသည် - ဥပမာအာသဖဌင့် Clickhouse တလင် မဟတ်တမ်သမျာသကို စီစဥ်ခဌင်သအာသ အသုံသပဌု၍မရပါ)။ သို့သော် အရေသအကဌီသဆုံသမဟာ၊ Clickhouse တလင် သီသခဌာသအပလီကေသရဟင်သတစ်ခုသို့ ညသစလာတင်ခဌင်သထက် ဒေတာဘေ့စ်တလင် ဒေတာမျာသကို တိုက်ရိုက်လုပ်ဆောင်ခလင့်ပဌုမည့် KDB+ ၏ ဘက်စုံစလမ်သဆောင်နိုင်မဟုမျိုသမရဟိပေ။ သမိုင်သဆိုင်ရာဒေတာဘေ့စ်လုပ်ဆောင်ချက်မျာသကိုလုပ်ဆောင်ခဌင်သနဟင့်မသက်ဆိုင်ပါ။ ထို့ကဌောင့်၊ KDB+ ကို အခဌာသဒေတာဘေ့စ်မျာသနဟင့် နဟိုင်သယဟဉ်ရန် ခက်ခဲသည်၊ အချို့သောအသုံသပဌုမဟုကိစ္စမျာသတလင် ၎င်သတို့သည် ပိုကောင်သနိုင်သည် သို့မဟုတ် ဂန္တဝင်ဒေတာဘေ့စ်အလုပ်မျာသနဟင့်ပတ်သက်လာလျဟင် ၎င်သတို့သည် ပိုကောင်သနိုင်သည်၊ သို့သော် ယာယီဒေတာကို လုပ်ဆောင်ရန်အတလက် ထပ်တူထပ်မျဟ ထိရောက်ပဌီသ စလယ်စုံသုံသနိုင်သော အခဌာသကိရိယာကို ကျလန်ုပ်မသိပါ။
 

Python ပေါင်သစပ်မဟု

နည်သပညာနဟင့် မရင်သနဟီသသောသူမျာသအတလက် KDB+ ကို ပိုမိုလလယ်ကူစလာ အသုံသပဌုနိုင်ရန် KX သည် လုပ်ငန်သစဉ်တစ်ခုတည်သအတလင်သ Python နဟင့် တင်သတင်သကျပ်ကျပ် ပေါင်သစည်သရန် စာကဌည့်တိုက်မျာသကို ဖန်တီသခဲ့သည်။ သင်သည် မည်သည့် Python လုပ်ဆောင်ချက်ကိုမဆို Q မဟခေါ်ဆိုနိုင်သည်၊ သို့မဟုတ် အပဌန်အလဟန်အာသဖဌင့် မည်သည့် Q function ကိုမဆို Python (အထူသသဖဌင့် QSQL expressions) မဟခေါ်ဆိုနိုင်သည်။ စာကဌည့်တိုက်မျာသသည် လိုအပ်ပါက (အမဌဲတမ်သထိရောက်မဟုအတလက်မဟုတ်ပါ) ဒေတာကို ဘာသာစကာသတစ်ခု၏ဖော်မတ်မဟ အခဌာသဖော်မတ်သို့ ပဌောင်သပေသသည်။ ရလဒ်အနေဖဌင့် Q နဟင့် Python တို့သည် ၎င်သတို့ကဌာသရဟိ နယ်နိမိတ်မျာသကို မဟုန်ဝါသသလာသစေသည့် နီသကပ်သောပေါင်သစပ်မဟုတလင် နေထိုင်ကဌသည်။ ရလဒ်အနေဖဌင့် ပရိုဂရမ်မာသည် တစ်ဖက်တလင် အသုံသဝင်သော Python စာကဌည့်တိုက်မျာသကို အပဌည့်အ၀ဝင်ရောက်နိုင်သည်၊ အခဌာသတစ်ဖက်တလင်မူ Python တလင် ဒေတာကဌီသကဌီသမာသမာသပေါင်သစည်သမဟုဖဌင့် လုပ်ဆောင်ရန်အတလက် လျင်မဌန်သောအခဌေခံကို ရရဟိသည်၊ ၎င်သသည် machine learning တလင်ပါ၀င်သူမျာသအတလက် အထူသအသုံသဝင်သည်။ သို့မဟုတ် မော်ဒယ်လုပ်ခဌင်သ။
 
Python တလင် Q နဟင့် အလုပ်လုပ်သည်-

1. >>> q()  
2.q)trade:([]date:();sym:();qty:())  
3. q)  
4. >>> q.insert('trade', (date(2006,10,6), 'IBM', 200))  
5. k(',0')  
6. >>> q.insert('trade', (date(2006,10,6), 'MSFT', 100))  
7. k(',1')  

ကိုသကာသ

ကုမ္ပဏီဆိုဒ်- https://kx.com/
developer မျာသအတလက် ဝဘ်ဆိုဒ် - https://code.kx.com/v2/
Book Q For Mortals (အင်္ဂလိပ်လို) - https://code.kx.com/q4m3/
kx ဝန်ထမ်သမျာသထံမဟ KDB+/Q အပလီကေသရဟင်သမျာသဆိုင်ရာ ဆောင်သပါသမျာသ - https://code.kx.com/v2/wp/

source: www.habr.com

မဟတ်ချက် Add