የKDB+ ዳታቤዝ፡ ከፋይናንስ እስከ ፎርሙላ 1

KDB+፣ የኩባንያ ምርት KX በጠባብ ክበቦች ውስጥ በሰፊው የሚታወቅ ፣ እጅግ በጣም ፈጣን ፣ የአምድ ዳታቤዝ ጊዜ ተከታታዮችን እና በእነሱ ላይ የተመሠረተ የትንታኔ ስሌቶችን ለማከማቸት የተነደፈ ነው። መጀመሪያ ላይ በፋይናንሺያል ኢንዱስትሪ ውስጥ በጣም ታዋቂ ነበር (እናም ነው) - ሁሉም ከፍተኛ 10 የኢንቨስትመንት ባንኮች እና ብዙ የታወቁ የጃርት ፈንዶች, ልውውጦች እና ሌሎች ድርጅቶች ይጠቀማሉ. በቅርቡ KX የደንበኞቹን መሠረት ለማስፋት ወሰነ እና አሁን ከፍተኛ መጠን ያለው መረጃ ባለበት በሌሎች አካባቢዎች ፣ በጊዜ ወይም በሌላ የተደራጁ - ቴሌኮም ፣ ባዮኢንፎርማቲክስ ፣ ማኑፋክቸሪንግ ፣ ወዘተ. በተጨማሪም በፎርሙላ 1 ውስጥ የአስቶን ማርቲን ሬድ ቡል እሽቅድምድም ቡድን አጋር ሆኑ፣ ከመኪና ዳሳሾች መረጃን ለመሰብሰብ እና ለማስኬድ እና የንፋስ መሿለኪያ ሙከራዎችን ለመተንተን የሚረዱበት። በዚህ ጽሑፍ ውስጥ የ KDB+ ባህሪያት እጅግ በጣም ጥሩ አፈፃፀም እንዳደረጉት ፣ ለምን ኩባንያዎች በእሱ ላይ ብዙ ገንዘብ ለማውጣት ፈቃደኛ እንደሆኑ እና በመጨረሻም ፣ ለምን በእውነቱ የውሂብ ጎታ እንዳልሆነ ልነግርዎ እፈልጋለሁ።
 
የKDB+ ዳታቤዝ፡ ከፋይናንስ እስከ ፎርሙላ 1
 
በዚህ ጽሑፍ ውስጥ KDB + ምን እንደ ሆነ ፣ ምን ዓይነት ችሎታዎች እና ገደቦች እንዳሉት እና ከፍተኛ መጠን ያለው መረጃን ለመስራት ለሚፈልጉ ኩባንያዎች ምን ጥቅሞች እንዳሉ ልነግርዎ እሞክራለሁ። ስለ KDB+ አተገባበር ወይም ስለ Q ፕሮግራሚንግ ቋንቋው ዝርዝር ውስጥ አልገባም።ሁለቱም ርእሶች በጣም ሰፊ ናቸው እና የተለየ መጣጥፎች ይገባቸዋል። በእነዚህ አርእስቶች ላይ ብዙ መረጃ በ code.kx.com ላይ ይገኛል፣ በ Q - Q ለሟቾች (ከዚህ በታች ያለውን አገናኝ ይመልከቱ) መጽሐፍን ጨምሮ።

አንዳንድ ውሎች

  • የማህደረ ትውስታ ዳታቤዝ። ለፈጣን ተደራሽነት መረጃን በ RAM ውስጥ የሚያከማች የውሂብ ጎታ። የዚህ ዓይነቱ የመረጃ ቋት ጥቅሞች ግልጽ ናቸው, ነገር ግን ጉዳቶቹ የውሂብ መጥፋት እድል እና በአገልጋዩ ላይ ብዙ ማህደረ ትውስታ እንዲኖር አስፈላጊነት ናቸው.
  • የአምድ ዳታቤዝ በመዝገብ ከመመዝገብ ይልቅ መረጃ በአምድ በአምድ የሚከማችበት ዳታቤዝ። የዚህ ዓይነቱ የመረጃ ቋት ዋነኛው ጠቀሜታ ከአንድ አምድ ውስጥ ያለው መረጃ በአንድ ላይ በዲስክ እና በማህደረ ትውስታ ውስጥ መከማቸቱ ነው, ይህም በፍጥነት መድረስን ያፋጥናል. በጥያቄው ውስጥ ጥቅም ላይ የማይውሉ ዓምዶችን መጫን አያስፈልግም. ዋናው ጉዳቱ መዝገቦችን ማስተካከል እና መሰረዝ አስቸጋሪ ነው.
  • ተከታታይ ጊዜ. የቀን ወይም የሰዓት ዓምድ ያለው ውሂብ። በተለምዶ የጊዜ ማዘዝ ለእንደዚህ አይነት መረጃ አስፈላጊ ነው, ስለዚህም የትኛው መዝገብ አሁን ካለው እንደሚቀድም ወይም እንደሚከተል በቀላሉ ለመወሰን ወይም ውጤታቸው በመዝገቦች ቅደም ተከተል ላይ የተመሰረተ ተግባራትን ተግባራዊ ለማድረግ ነው. ክላሲክ የውሂብ ጎታዎች ሙሉ ለሙሉ በተለየ መርህ የተገነቡ ናቸው - የመዝገቦችን ስብስብ እንደ ስብስብ ይወክላል, የመዝገቦች ቅደም ተከተል በመርህ ደረጃ, አልተገለጸም.
  • ቬክተር በKDB+ አውድ ውስጥ፣ ይህ ተመሳሳይ የአቶሚክ አይነት አባላት ዝርዝር ነው፣ ለምሳሌ ቁጥሮች። በሌላ አነጋገር የንጥረ ነገሮች ስብስብ። ድርድሮች፣ ከዝርዝሮች በተለየ፣ በጥቅል ሊቀመጡ እና የቬክተር ፕሮሰሰር መመሪያዎችን በመጠቀም ሊሰሩ ይችላሉ።

 

ታሪካዊ ዳራ

KX እ.ኤ.አ. በ 1993 በአርተር ዊትኒ ተመሠረተ ፣ ከዚህ ቀደም በሞርጋን ስታንሊ ባንክ በ A+ ቋንቋ ፣ የ APL ተተኪ - በጣም የመጀመሪያ እና በአንድ ጊዜ በፋይናንሺያል ዓለም ውስጥ ታዋቂ ቋንቋ። እርግጥ ነው፣ በKX፣ አርተር በተመሳሳይ መንፈስ ቀጠለ እና የቬክተር-ተግባራዊ ቋንቋን K ፈጠረ፣ በአክራሪ ዝቅተኛነት ሀሳቦች እየተመራ። K ፕሮግራሞች የስርዓተ-ነጥብ እና ልዩ ቁምፊዎችን ይመስላሉ ፣ የምልክቶች እና ተግባራት ትርጉም በዐውደ-ጽሑፉ ላይ የተመሠረተ ነው ፣ እና እያንዳንዱ ክዋኔ በተለመደው የፕሮግራም ቋንቋዎች ካለው የበለጠ ትርጉም ያለው ነው። በዚህ ምክንያት የ K ፕሮግራም አነስተኛ ቦታ ይወስዳል - ጥቂት መስመሮች የጽሑፍ ገጾችን እንደ ጃቫ በቃላት ቋንቋ መተካት ይችላሉ - እና እጅግ በጣም የተጠናከረ የአልጎሪዝም ትግበራ ነው።
 
በኪ ውስጥ አብዛኛው የኤልኤል1 ተንታኝ ጄኔሬተር በተሰጠው ሰዋሰው መሰረት የሚተገበር ተግባር፡-

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),"]";""]]}  

 áŠ áˆ­á‰°áˆ­ በ2003 (እ.ኤ.አ.) በXNUMX ታየ (በዚህ ስም ኬ የሚለው ፊደል ከየት እንደመጣ አሁን ግልፅ ነው ብዬ አስባለሁ) በ KDB + ውስጥ በትንሹ የሰውነት እንቅስቃሴዎች ይህንን የቅልጥፍና ፍልስፍና አካቷል እና የ K አራተኛው ስሪት ተርጓሚ ከመሆን የዘለለ ትርጉም የለውም። ቋንቋ፡- ለተጠቃሚ ምቹ የሆነ ስሪት በኬኬ አናት ላይ ተጨምሯል። በማህደረ ትውስታ እና በዲስክ, ወዘተ.
 
ስለዚህ ከተጠቃሚ እይታ፣ KDB+ በቀላሉ የQ ቋንቋ ተርጓሚ ሲሆን ለጠረጴዛዎች ድጋፍ እና SQL መሰል LINQ-style አገላለጾች ከC#። ይህ በKDB + እና በሌሎች የውሂብ ጎታዎች መካከል ያለው በጣም አስፈላጊው ልዩነት እና ዋነኛው የውድድር ጥቅሙ ነው ፣ እሱም ብዙውን ጊዜ ችላ ይባላል። ይህ የውሂብ ጎታ + የአካል ጉዳተኛ ረዳት ቋንቋ አይደለም፣ ነገር ግን ሙሉ በሙሉ ኃይለኛ የፕሮግራም አወጣጥ ቋንቋ + አብሮ የተሰራ የውሂብ ጎታ ተግባራት ድጋፍ ነው። ይህ ልዩነት ሁሉንም የKDB+ ጥቅሞች በመዘርዘር ወሳኝ ሚና ይጫወታል። ለምሳሌ…
 

ልክ

በዘመናዊ መመዘኛዎች፣ KDB+ በመጠን መጠኑ አነስተኛ ነው። እሱ በጥሬው አንድ ንዑስ-ሜጋባይት ሊተገበር የሚችል ፋይል እና አንድ ትንሽ የጽሑፍ ፋይል ከአንዳንድ የስርዓት ተግባራት ጋር ነው። በእውነታው - ከአንድ ሜጋባይት ያነሰ, እና ለዚህ ፕሮግራም ኩባንያዎች በአገልጋዩ ላይ ለአንድ ፕሮሰሰር በዓመት በአስር ሺዎች የሚቆጠር ዶላር ይከፍላሉ.

  • ይህ መጠን KDB+ በማንኛውም ሃርድዌር ላይ ጥሩ ስሜት እንዲሰማው ያስችለዋል - ከፒ ማይክሮ ኮምፒውተር እስከ ቴራባይት ማህደረ ትውስታ ያላቸው አገልጋዮች። ይህ በምንም መልኩ ተግባሩን አይጎዳውም ፣ በተጨማሪም ፣ Q ወዲያውኑ ይጀምራል ፣ ይህም ከሌሎች ነገሮች በተጨማሪ እንደ ስክሪፕት ቋንቋ እንዲጠቀም ያስችለዋል።
  • በዚህ መጠን, የ Q አስተርጓሚው ሙሉ በሙሉ ወደ ፕሮሰሰር መሸጎጫ ውስጥ ይገባል, ይህም የፕሮግራሙን አፈፃፀም ያፋጥናል.
  • በሚሰራው ፋይል መጠን፣ የQ ሂደቱ በማህደረ ትውስታ ውስጥ ቸልተኛ ቦታ ይወስዳል፣ በመቶዎች የሚቆጠሩ ማሄድ ይችላሉ። በተጨማሪም, አስፈላጊ ከሆነ, Q በአንድ ሂደት ውስጥ በአስር ወይም በመቶዎች በሚቆጠሩ ጊጋባይት ማህደረ ትውስታ መስራት ይችላል.

ሁለገብነት

Q ለብዙ አፕሊኬሽኖች በጣም ጥሩ ነው። ሂደት Q እንደ ታሪካዊ ዳታቤዝ ሆኖ ሊያገለግል እና ፈጣን መረጃን ቴራባይት ማግኘት ይችላል። ለምሳሌ፣ በደርዘን የሚቆጠሩ ታሪካዊ ዳታቤዞች አሉን፣ በአንዳንዶቹ ውስጥ አንድ ያልተጨመቀ ቀን መረጃ ከ100 ጊጋባይት በላይ ይወስዳል። ነገር ግን፣ በተመጣጣኝ ገደቦች፣ የመረጃ ቋቱ ጥያቄ ከአስር እስከ መቶ ሚሊሰከንዶች ይጠናቀቃል። በአጠቃላይ ለተጠቃሚ ጥያቄዎች ሁለንተናዊ የጊዜ ማብቂያ አለን - 30 ሰከንድ - እና በጣም አልፎ አልፎ ነው የሚሰራው።
 
Q እንዲሁ በቀላሉ የማህደረ ትውስታ ዳታቤዝ ሊሆን ይችላል። አዲስ ውሂብ ወደ ውስጠ-ማህደረ ትውስታ ሰንጠረዦች በፍጥነት ስለሚታከሉ የተጠቃሚዎች ጥያቄዎች ገዳቢዎቹ ናቸው። በሰንጠረዦች ውስጥ ያለው መረጃ በአምዶች ውስጥ ተከማችቷል, ይህ ማለት በአንድ አምድ ላይ ያለ ማንኛውም ክወና የማቀነባበሪያውን መሸጎጫ በሙሉ አቅም ይጠቀማል. ከዚህም በተጨማሪ KX ፍጥነታቸውን ከፍ በማድረግ ሁሉንም እንደ ሂሳብ ያሉ መሰረታዊ ስራዎችን በአቀነባባሪው ቬክተር መመሪያዎችን ለመተግበር ሞክሯል. Q እንዲሁ ለዳታቤዝ መደበኛ ያልሆኑ ተግባራትን ማከናወን ይችላል - ለምሳሌ የዥረት መረጃን ማካሄድ እና በ “እውነተኛ ጊዜ” ውስጥ ማስላት (ከአስር ሚሊሰከንዶች እስከ ብዙ ሴኮንዶች እንደ ሥራው በመዘግየቱ) ለተለያዩ የገንዘብ መሣሪያዎች የተለያዩ ድምር ተግባራት ክፍተቶችን ወይም የፍጹም ግብይቶችን ተፅእኖ ሞዴል መገንባት እና ከተጠናቀቀ በኋላ ወዲያውኑ መገለጫውን ያካሂዳል። በእንደዚህ አይነት ስራዎች ውስጥ, አብዛኛውን ጊዜ ዋናው የጊዜ መዘግየት Q አይደለም, ነገር ግን ከተለያዩ ምንጮች መረጃን የማመሳሰል አስፈላጊነት. ከፍተኛ ፍጥነት የተገኘው መረጃው እና እነሱን የሚያስኬዱ ተግባራት በአንድ ሂደት ውስጥ በመሆናቸው ነው ፣ እና አሰራሩ ወደ ብዙ የ QSQL አገላለጾች እና መቀላቀል ይቀንሳል ፣ እነሱ አልተተረጎሙም ፣ ግን በሁለትዮሽ ኮድ ይፈጸማሉ።
 
በመጨረሻም፣ ማንኛውንም የአገልግሎት ሂደቶች በQ ውስጥ መጻፍ ይችላሉ። ለምሳሌ፣ ጌትዌይ የተጠቃሚ ጥያቄዎችን ወደ አስፈላጊ የውሂብ ጎታዎች እና አገልጋዮች በራስ ሰር የሚያሰራጭ ሂደቶች። ፕሮግራም አድራጊው ለማመጣጠን፣ ቅድሚያ ለመስጠት፣ ለስህተት መቻቻል፣ የመዳረሻ መብቶች፣ ኮታዎች እና በመሠረቱ ልቡ የሚፈልገውን ማንኛውንም አልጎሪዝም ለመተግበር ሙሉ ነፃነት አለው። እዚህ ያለው ዋናው ችግር ይህንን ሁሉ እራስዎ መተግበር አለብዎት.
 
እንደ ምሳሌ, ምን አይነት ሂደቶች እንዳሉን እዘረዝራለሁ. ሁሉም በንቃት ጥቅም ላይ ይውላሉ እና አብረው ይሰራሉ, በደርዘን የሚቆጠሩ የተለያዩ የውሂብ ጎታዎችን ወደ አንድ በማጣመር, ከበርካታ ምንጮች መረጃን በማቀናበር እና በመቶዎች ለሚቆጠሩ ተጠቃሚዎች እና መተግበሪያዎች ያገለግላሉ.

  • ማገናኛዎች (መጋቢ) ወደ የውሂብ ምንጮች. እነዚህ ሂደቶች በQ ውስጥ የተጫኑ ውጫዊ ቤተ-መጻሕፍትን ይጠቀማሉ። በ Q ውስጥ ያለው የC በይነገጽ እጅግ በጣም ቀላል እና ለማንኛውም የC/C++ ቤተ-መጽሐፍት ተኪ ተግባራትን በቀላሉ ለመፍጠር ያስችላል። Q ለምሳሌ ከሁሉም የአውሮፓ የአክሲዮን ልውውጦች የሚመጡ የFIX መልዕክቶችን በአንድ ጊዜ ለማስተናገድ ፈጣን ነው።
  • የመረጃ አከፋፋዮች (ቲከርፕላንት)፣ በአገናኞች እና በተጠቃሚዎች መካከል እንደ መካከለኛ አገናኝ ሆኖ የሚያገለግል። በተመሳሳይ ጊዜ ገቢ ውሂብን ወደ ልዩ የሁለትዮሽ መዝገብ ይጽፋሉ, ይህም ለተጠቃሚዎች የግንኙነት መጥፋት ወይም ዳግም መጀመር ጥንካሬን ይሰጣል.
  • የማህደረ ትውስታ ዳታቤዝ (rdb)። እነዚህ የመረጃ ቋቶች በተቻለ ፍጥነት ጥሬ እና ትኩስ መረጃዎችን በማህደረ ትውስታ ውስጥ በማከማቸት ያቀርባሉ። በተለምዶ, በቀን ውስጥ በጠረጴዛዎች ውስጥ መረጃ ይሰበስባሉ እና በምሽት እንደገና ያስጀምሯቸዋል.
  • ቋሚ የውሂብ ጎታ (pdb) እነዚህ የመረጃ ቋቶች የዛሬው መረጃ በታሪካዊ ዳታቤዝ ውስጥ መቀመጡን ያረጋግጣሉ። እንደ ደንቡ ከ rdb በተቃራኒ መረጃን በማህደረ ትውስታ ውስጥ አያከማቹም ፣ ግን በቀን ውስጥ ልዩ መሸጎጫ በዲስክ ላይ ይጠቀሙ እና እኩለ ሌሊት ላይ መረጃውን ወደ ታሪካዊ ዳታቤዝ ይቅዱ።
  • ታሪካዊ ዳታቤዝ (ኤችዲቢ)። እነዚህ የውሂብ ጎታዎች ላለፉት ቀናት፣ ወራት እና ዓመታት የውሂብ መዳረሻ ይሰጣሉ። መጠናቸው (በቀናት) በሃርድ ድራይቮች መጠን ብቻ የተገደበ ነው። ውሂቡ በየትኛውም ቦታ ሊገኝ ይችላል, በተለይም በተለያዩ ዲስኮች ላይ መዳረሻን ለማፋጠን. ለመምረጥ ብዙ ስልተ ቀመሮችን በመጠቀም መረጃን መጭመቅ ይቻላል. የውሂብ ጎታው አወቃቀሩ በደንብ የተመዘገበ እና ቀላል ነው, ውሂቡ በአምድ በአምድ ውስጥ በመደበኛ ፋይሎች ውስጥ ይከማቻል, ስለዚህ በስርዓተ ክወናው ጭምር ሊሰሩ ይችላሉ.
  • የውሂብ ጎታዎች ከተዋሃደ መረጃ ጋር። ብዙውን ጊዜ በመሳሪያ ስም እና በጊዜ ልዩነት የተከፋፈሉ የተለያዩ ስብስቦችን ያከማቻሉ። የማህደረ ትውስታ ዳታቤዝ ግዛታቸውን በእያንዳንዱ ገቢ መልእክት ያዘምኑታል፣ እና ታሪካዊ ዳታቤዝ ታሪካዊ መረጃዎችን በፍጥነት ለማግኘት ቀድሞ የተሰላ መረጃ ያከማቻል።
  • በመጨረሻም የመግቢያ ሂደቶችትግበራዎችን እና ተጠቃሚዎችን ማገልገል. Q ሙሉ በሙሉ ያልተመሳሰሉ የገቢ መልዕክቶችን ሂደት እንዲተገብሩ፣ በመረጃ ቋቶች ውስጥ ማሰራጨት፣ የመዳረሻ መብቶችን መፈተሽ፣ ወዘተ. በሌሎች የመረጃ ቋቶች ውስጥ እንደሚታየው መልዕክቶች ያልተገደቡ እና አብዛኛውን ጊዜ የ SQL አገላለጾች እንዳልሆኑ ልብ ይበሉ። ብዙውን ጊዜ የ SQL አገላለጽ በልዩ ተግባር ውስጥ ተደብቋል እና በተጠቃሚው በተጠየቁት መለኪያዎች መሠረት ይገነባል - ጊዜ ይለወጣል ፣ ይጣራል ፣ መረጃው መደበኛ ነው (ለምሳሌ ፣ የአክሲዮን ዋጋ ክፍፍል ከተከፈለ) ፣ ወዘተ.

ለአንድ የውሂብ አይነት የተለመደ አርክቴክቸር፡

የKDB+ ዳታቤዝ፡ ከፋይናንስ እስከ ፎርሙላ 1

ፍጥነት

Q የተተረጎመ ቋንቋ ቢሆንም የቬክተር ቋንቋም ነው። ይህ ማለት ብዙ አብሮ የተሰሩ ተግባራት በተለይም የሂሳብ ስራዎች በማንኛውም መልኩ ክርክሮችን ይወስዳሉ - ቁጥሮች ፣ ቬክተሮች ፣ ማትሪክስ ፣ ዝርዝሮች - እና ፕሮግራሚው ፕሮግራሙን እንደ ድርድር ኦፕሬሽኖች ይተገበራል ። በእንደዚህ አይነት ቋንቋ፣ የአንድ ሚሊዮን ንጥረ ነገሮች ሁለት ቬክተር ካከሉ፣ ቋንቋው መተርጎሙ ምንም ችግር የለውም፣ መደመሩ የሚከናወነው እጅግ በጣም በተመቻቸ ሁለትዮሽ ተግባር ነው። በ Q ፕሮግራሞች ውስጥ የአንበሳውን ድርሻ የሚይዘው እነዚህን መሰረታዊ የቬክተራይዝድ ተግባራትን በሚጠቀሙ ጠረጴዛዎች ላይ በሚሰሩ ስራዎች ላይ ስለሆነ ውጤቱ በጣም ጥሩ የስራ ፍጥነት ነው, ይህም በአንድ ሂደት ውስጥ እንኳን ከፍተኛ መጠን ያለው መረጃን እንድናስኬድ ያስችለናል. ይህ በፓይዘን ካሉት የሂሳብ ቤተ-መጻሕፍት ጋር ተመሳሳይ ነው - ምንም እንኳን ፓይዘን ራሱ በጣም ቀርፋፋ ቋንቋ ቢሆንም፣ የቁጥር መረጃዎችን በተጠናቀረ ቋንቋ ፍጥነት እንዲያካሂዱ የሚያስችልዎ እንደ numpy ያሉ ብዙ ምርጥ ቤተ-መጻሕፍት አሉት (በነገራችን ላይ numpy በርዕዮተ ዓለም ለQ ቅርብ ነው። ).
 
በተጨማሪም KX ጠረጴዛዎችን ለመንደፍ እና ከእነሱ ጋር ስራን ለማመቻቸት በጣም ጥንቃቄ የተሞላበት አቀራረብ ወሰደ. በመጀመሪያ ፣ በአብሮገነብ ተግባራት የተደገፉ እና በሠንጠረዥ አምዶች ላይ ብቻ ሳይሆን በማንኛውም ቬክተር ላይ ሊተገበሩ የሚችሉ በርካታ የኢንዴክሶች ዓይነቶች ይደገፋሉ - መቧደን ፣ መደርደር ፣ ልዩ ባህሪ እና ለታሪካዊ የውሂብ ጎታዎች ልዩ መቧደን። ኢንዴክስ በቀላሉ የሚተገበር ሲሆን ንጥረ ነገሮችን ወደ አምድ/ቬክተር ሲጨምር በራስ-ሰር ይስተካከላል። ኢንዴክሶች በማህደረ ትውስታ እና በዲስክ ላይ በሰንጠረዥ አምዶች ላይ በእኩልነት በተሳካ ሁኔታ ሊተገበሩ ይችላሉ። የQSQL ጥያቄን በሚፈጽሙበት ጊዜ ኢንዴክሶች ከተቻለ በራስ ሰር ጥቅም ላይ ይውላሉ። በሁለተኛ ደረጃ ከታሪካዊ መረጃ ጋር መሥራት የስርዓተ ክወና ፋይሎችን (የማስታወሻ ካርታ) ለማሳየት ዘዴው ይከናወናል. ትላልቅ ሠንጠረዦች ወደ ማህደረ ትውስታ ፈጽሞ አይጫኑም, ይልቁንስ አስፈላጊዎቹ አምዶች በቀጥታ ወደ ማህደረ ትውስታ ተቀርፀዋል እና የእነሱ ክፍል ብቻ በትክክል ተጭኗል (ኢንዴክሶች እዚህም ይረዳሉ) አስፈላጊ ናቸው. መረጃው በማህደረ ትውስታ ውስጥ ይሁን አይሁን በፕሮግራም አውጪው ላይ ምንም ለውጥ አያመጣም፤ ከኤምኤምፕ ጋር ለመስራት ያለው ዘዴ በQ ጥልቀት ውስጥ ሙሉ በሙሉ ተደብቋል።
 
KDB+ ተዛማጅ ዳታቤዝ አይደለም፤ ሰንጠረዦች የዘፈቀደ ውሂብ ሊይዙ ይችላሉ፣ በሰንጠረዡ ውስጥ ያሉት የረድፎች ቅደም ተከተል ግን አዲስ አካላት ሲጨመሩ አይቀየርም እና መጠይቆችን በሚጽፉበት ጊዜ ጥቅም ላይ መዋል አለባቸው። ይህ ባህሪ ከጊዜ ተከታታይ (ከልውውጦች፣ ከቴሌሜትሪ፣ የክስተት ምዝግብ ማስታወሻዎች) ጋር ለመስራት በአስቸኳይ ያስፈልጋል፣ ምክንያቱም ውሂቡ በጊዜ የተደረደረ ከሆነ ተጠቃሚው የመጀመሪያውን ወይም የመጨረሻውን ረድፍ ወይም N ለማግኘት ምንም የ SQL ዘዴዎችን መጠቀም አያስፈልገውም። በሰንጠረዡ ውስጥ ያሉ ረድፎች, የትኛው መስመር Nth መስመር እንደሚከተል ይወስኑ, ወዘተ. የሰንጠረዥ መጋጠሚያዎች የበለጠ ቀላል ናቸው ለምሳሌ ለ 16000 VOD.L (ቮዳፎን) ግብይቶች በ 500 ሚሊዮን ንጥረ ነገሮች ሠንጠረዥ ውስጥ የመጨረሻውን ጥቅስ ማግኘት በዲስክ ላይ አንድ ሰከንድ እና በአስር ሚሊሰከንዶች ማህደረ ትውስታ ውስጥ ይወስዳል።
 
የጊዜ መቀላቀል ምሳሌ - የጥቅሱ ሰንጠረዥ ወደ ማህደረ ትውስታ ተቀርጿል, ስለዚህ 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]  

በመጨረሻም፣ በKX ያሉት መሐንዲሶች፣ ከራሱ አርተር ዊትኒ ጀምሮ፣ በውነት በውጤታማነት አባዜ የተጠናወታቸው እና ከQ መደበኛ ባህሪያት ምርጡን ለማግኘት እና በጣም የተለመዱትን የአጠቃቀም ዘይቤዎችን ለማመቻቸት ከፍተኛ ጥረት የሚያደርጉ መሆናቸውን ልብ ሊባል ይገባል።
 

ውጤቱ

KDB+ በዋናነት በንግድ ስራው ታዋቂ የሆነው በልዩ ሁለገብነት ነው - እንደ ውስጠ-ማስታወሻ ዳታቤዝ፣ እንደ ቴራባይት ታሪካዊ መረጃዎችን እንደ ዳታቤዝ እና የመረጃ ትንተና መድረክ ሆኖ ያገለግላል። መረጃን ማቀናበር በቀጥታ በመረጃ ቋቱ ውስጥ ስለሚከሰት ከፍተኛ ፍጥነት ያለው ሥራ እና የሃብት ቁጠባዎች ተገኝተዋል. የተሟላ የፕሮግራም አወጣጥ ቋንቋ ከመረጃ ቋት ተግባራት ጋር የተዋሃደ አጠቃላይ አስፈላጊ ሂደቶችን በአንድ መድረክ ላይ እንዲተገብሩ ያስችልዎታል - ውሂብ ከመቀበል እስከ የተጠቃሚ ጥያቄዎችን ሂደት ድረስ።
 

ተጨማሪ መረጃ ለማግኘት,

ችግሮች

የKDB+/Q ጉልህ ኪሳራ ከፍተኛ የመግቢያ ገደብ ነው። ቋንቋው እንግዳ የሆነ አገባብ አለው፣ አንዳንድ ተግባራት በጣም ተጭነዋል (እሴቱ ለምሳሌ 11 የአጠቃቀም ጉዳዮች አሉት)። ከሁሉም በላይ, ፕሮግራሞችን ለመጻፍ በጣም የተለየ አቀራረብ ያስፈልገዋል. በቬክተር ቋንቋ ሁል ጊዜ በድርድር ትራንስፎርሜሽን ማሰብ፣ ሁሉንም loops በበርካታ የካርታ ልዩነቶች መተግበር/ተግባራትን መቀነስ (በጥ ተውሳኮች ይባላሉ) እና የቬክተር ኦፕሬሽኖችን በአቶሚክ በመተካት ገንዘብ ለመቆጠብ በጭራሽ አይሞክሩ። ለምሳሌ፣ በድርድር ውስጥ የአንድ ኤለመንት ክስተት Nth ኢንዴክስ ለማግኘት፣ የሚከተለውን መፃፍ አለቦት፡-

1. (where element=vector)[N]  

ምንም እንኳን ይህ በሲ/ጃቫ መመዘኛዎች በጣም ውጤታማ ያልሆነ ቢመስልም (= የቦሊያን ቬክተር ይፈጥራል፣ በውስጡ ያሉትን ትክክለኛ የንጥረ ነገሮች ኢንዴክሶች የሚመልስበት)። ነገር ግን ይህ አገላለጽ የገለጻውን ትርጉም የበለጠ ግልጽ ያደርገዋል እና ከዘገምተኛ አቶሚክ ይልቅ ፈጣን የቬክተር ስራዎችን ትጠቀማለህ። በቬክተር ቋንቋ እና በሌሎች መካከል ያለው ፅንሰ-ሃሳባዊ ልዩነት በፕሮግራም አወጣጥ እና በተግባራዊ አቀራረቦች መካከል ካለው ልዩነት ጋር ሊወዳደር ይችላል እና ለዚህ ዝግጁ መሆን አለብዎት።
 
አንዳንድ ተጠቃሚዎች በQSQL ደስተኛ አይደሉም። ነጥቡ እውነተኛ SQL ብቻ ነው የሚመስለው። እንደ እውነቱ ከሆነ የጥያቄ ማመቻቸትን የማይደግፈው SQL መሰል አገላለጾችን ተርጓሚ ብቻ ነው። ተጠቃሚው ራሱ ጥሩ መጠይቆችን እና ብዙዎች ዝግጁ ያልሆኑትን በQ መጻፍ አለበት። በሌላ በኩል፣ በእርግጥ፣ በጥቁር ሳጥን አመቻች ላይ ከመተማመን ይልቅ ሁል ጊዜ ጥሩውን ጥያቄ እራስዎ መጻፍ ይችላሉ።
 
እንደተጨማሪ፣ በ Q - Q ላይ ያለ መጽሐፍ በነጻ ይገኛል። የኩባንያ ድር ጣቢያ, እዚያም የተሰበሰቡ ሌሎች ብዙ ጠቃሚ ቁሳቁሶች አሉ.
 
ሌላው ትልቅ ኪሳራ የፍቃዱ ዋጋ ነው። ያ በዓመት በሲፒዩ በአስር ሺዎች የሚቆጠር ዶላር ነው። እንደዚህ አይነት ወጪዎችን መግዛት የሚችሉት ትላልቅ ኩባንያዎች ብቻ ናቸው. በቅርቡ፣ KX የፍቃድ አሰጣጥ ፖሊሲውን የበለጠ ተለዋዋጭ አድርጎ ለአገልግሎት ጊዜ ብቻ ለመክፈል ወይም KDB+ን በGoogle እና Amazon ደመናዎች ውስጥ ለመከራየት እድል ይሰጣል። KX ለማውረድም ያቀርባል ነጻ ስሪት ለንግድ ዓላማዎች (32 ቢት ስሪት ወይም 64 ቢት በጥያቄ)።
 

ተፎካካሪዎች

በተመሳሳይ መርሆዎች ላይ የተገነቡ በጣም ጥቂት ልዩ የውሂብ ጎታዎች አሉ - አምድ ፣ ውስጠ-ማስታወሻ ፣ በጣም ትልቅ በሆነ መጠን ላይ ያተኮሩ። ችግሩ እነዚህ ልዩ የውሂብ ጎታዎች መሆናቸው ነው። አንድ አስደናቂ ምሳሌ Clickhouse ነው። ይህ ዳታቤዝ መረጃን በዲስክ ላይ ለማከማቸት እና ኢንዴክስ ለመስራት ከKDB+ ጋር በጣም ተመሳሳይ መርህ አለው፤ ምንም እንኳን ጉልህ ባይሆንም ከKDB+ በበለጠ ፍጥነት አንዳንድ መጠይቆችን ይሰራል። ግን እንደ ዳታቤዝ እንኳን ፣ Clickhouse ከ KDB + የበለጠ ልዩ ነው - የድር ትንታኔ vs የዘፈቀደ ተከታታይ ጊዜ (ይህ ልዩነት በጣም አስፈላጊ ነው - በእሱ ምክንያት ፣ ለምሳሌ ፣ በ Clickhouse ውስጥ የመዝገቦችን ቅደም ተከተል መጠቀም አይቻልም)። ነገር ግን፣ ከሁሉም በላይ፣ ክሊክሃውስ የKDB+ ሁለገብነት የለውም፣ ይህ ቋንቋ ውሂብን በቀጥታ በመረጃ ቋቱ ውስጥ ለማስኬድ የሚያስችል ነው፣ ይልቁንም መጀመሪያ ወደ የተለየ መተግበሪያ ከመጫን፣ የዘፈቀደ የSQL አገላለጾችን ከመገንባት፣ በዘፈቀደ ተግባራትን በጥያቄ ውስጥ መተግበር፣ ሂደቶችን መፍጠር። ከታሪካዊ የውሂብ ጎታ ተግባራት አፈፃፀም ጋር የተያያዘ አይደለም . ስለዚህ KDB+ን ከሌሎች የውሂብ ጎታዎች ጋር ማነጻጸር ከባድ ነው፡ በተወሰኑ የአጠቃቀም ጉዳዮች ላይ የተሻሉ ሊሆኑ ወይም ወደ ክላሲክ ዳታቤዝ ስራዎች ስንመጣ በቀላሉ የተሻሉ ሊሆኑ ይችላሉ፣ ነገር ግን ሌላ እኩል ውጤታማ እና ሁለገብ ጊዜያዊ ውሂብን ለማስኬድ መሳሪያ እንዳለ አላውቅም።
 

የፓይዘን ውህደት

ቴክኖሎጂውን ለማያውቁ ሰዎች KDB+ ለመጠቀም ቀላል ለማድረግ፣ KX በአንድ ሂደት ውስጥ ከፓይዘን ጋር በጥብቅ እንዲዋሃዱ ቤተ-መጻሕፍት ፈጠረ። ማንኛውንም የ Python ተግባር ከQ መደወል ይችላሉ ፣ ወይም በተቃራኒው - ማንኛውንም የQ ተግባር ከፓይዘን ይደውሉ (በተለይ የ QSQL መግለጫዎች)። ቤተ-መጻሕፍት አስፈላጊ ከሆነ (ሁልጊዜ ለውጤታማነት ሲባል አይደለም) መረጃን ከአንድ ቋንቋ ቅርጸት ወደ ሌላ ቅርጸት ይለወጣሉ። በውጤቱም ፣ Q እና Python እንደዚህ ባለ ቅርብ ሲምባዮሲስ ውስጥ ይኖራሉ በመካከላቸው ያለው ድንበሮች ደብዝዘዋል። በውጤቱም, ፕሮግራመር, በአንድ በኩል, በርካታ ጠቃሚ የፓይዘን ቤተ-መጻሕፍትን ሙሉ በሙሉ ማግኘት ይችላል, በሌላ በኩል, በ Python ውስጥ ከተጣመረ ትልቅ መረጃ ጋር ለመስራት ፈጣን መሠረት ይቀበላል, ይህም በተለይ በማሽን መማሪያ ውስጥ ለሚሳተፉ ሰዎች ጠቃሚ ነው. ወይም ሞዴሊንግ.
 
በ 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/
ለገንቢዎች ድር ጣቢያ - https://code.kx.com/v2/
መጽሐፍ Q ለሟቾች (በእንግሊዝኛ) - https://code.kx.com/q4m3/
ስለ KDB+/Q ማመልከቻዎች ከ kx ሰራተኞች የመጡ ጽሑፎች - https://code.kx.com/v2/wp/

ምንጭ: hab.com

በDDoS ጥበቃ፣ VPS VDS አገልጋዮች ለጣቢያዎች አስተማማኝ ማስተናገጃ ይግዙ 🔥 አስተማማኝ የድር ጣቢያ ማስተናገጃ በዲዶኤስ ጥበቃ፣ በቪፒኤስ ቪዲኤስ አገልጋዮች ይግዙ | ProHoster