Махзани маълумоти KDB+: аз молия то Формула 1

KDB+, маҳсулоти ширкат KX як махзани хеле зуд ва сутунӣ дар доираҳои танг маълум аст, ки барои нигоҳ доштани силсилаи вақт ва ҳисобҳои аналитикӣ дар асоси онҳо пешбинӣ шудааст. Дар аввал, он дар соҳаи молиявӣ хеле маъмул буд (ва аст) - ҳама 10 бонкҳои сармоягузории беҳтарин ва бисёр фондҳои чархуште, биржаҳо ва дигар созмонҳо аз он истифода мебаранд. Ба наздикӣ, KX тасмим гирифт, ки пойгоҳи муштариёни худро васеъ кунад ва ҳоло ҳалли худро дар дигар соҳаҳое пешниҳод кунад, ки миқдори зиёди маълумот аз рӯи вақт ё ба таври дигар ташкил карда шудаанд - телекоммуникатсия, биоинформатика, истеҳсолот ва ғайра. Онҳо инчунин шарики дастаи Aston Martin Red Bull Racing дар Формула 1 шуданд, ки дар ҷамъоварӣ ва коркарди маълумот аз сенсорҳои мошин ва таҳлили санҷишҳои нақби шамол кӯмак мекунанд. Дар ин мақола ман мехоҳам ба шумо бигӯям, ки кадом хусусиятҳои KDB+ онро аъло иҷро мекунанд, чаро ширкатҳо омодаанд барои он пули зиёде сарф кунанд ва дар ниҳоят, чаро он аслан пойгоҳи додаҳо нест.
 
Махзани маълумоти KDB+: аз молия то Формула 1
 
Дар ин мақола ман кӯшиш мекунам ба шумо дар маҷмӯъ ба шумо бигӯям, ки KDB+ чист, он чӣ гуна қобилиятҳо ва маҳдудиятҳо дорад ва он барои ширкатҳое, ки мехоҳанд миқдори зиёди маълумотро коркард кунанд, чӣ фоида дорад. Ман ба тафсилоти татбиқи KDB+ ва ҷузъиёти забони барномасозии Q он намеравам.Ҳардуи ин мавзӯъҳо хеле васеъ буда, сазовори мақолаҳои алоҳида мебошанд. Маълумоти зиёдеро дар бораи ин мавзӯъҳо метавон дар code.kx.com пайдо кард, аз он ҷумла китоб дар бораи Q - Q For Mortals (ба истиноди зер нигаред).

Баъзе шартҳо

  • Пойгоҳи маълумот дар хотира. Пойгоҳи додаҳо, ки маълумотро дар RAM барои дастрасии тезтар нигоҳ медорад. Бартарии чунин базаи маълумот равшан аст, аммо камбудиҳо эҳтимолияти гум шудани маълумот ва зарурати доштани хотираи зиёд дар сервер мебошад.
  • Пойгоҳи сутунӣ. Пойгоҳи додаҳо, ки дар он маълумот сутун ба сутун нигоҳ дошта мешавад, на сабт аз рӯи сабт. Бартарии асосии чунин база дар он аст, ки маълумот аз як сутун дар якљоя дар диск ва хотира нигоњ дошта мешавад, ки дастрасиро ба он хеле метезонад. Барои бор кардани сутунҳое, ки дар дархост истифода намешаванд, лозим нест. Камбудии асосӣ дар он аст, ки тағир додан ва нест кардани сабтҳо душвор аст.
  • Силсилаи вақт. Маълумот бо сутуни сана ё вақт. Одатан, фармоиши вақт барои чунин маълумот муҳим аст, то шумо метавонед ба осонӣ муайян кунед, ки кадом сабт аз сабти ҷорӣ пештар аст ё паси он аст, ё ба кор бурдани функсияҳое, ки натиҷаҳои онҳо аз тартиби сабтҳо вобастаанд. Пойгоҳи додаҳои классикӣ аз рӯи принсипи тамоман дигар сохта шудаанд - маҷмӯи сабтҳоро ҳамчун маҷмӯа муаррифӣ мекунанд, ки дар он тартиби сабтҳо аслан муайян карда нашудааст.
  • Вектор. Дар контексти KDB+, ин рӯйхати элементҳои як навъи атомӣ мебошад, масалан, рақамҳо. Ба ибораи дигар, массиви элементҳо. Массивҳо, бар хилофи рӯйхатҳо, метавонанд бо истифода аз дастурҳои протсессори векторӣ паймон нигоҳ дошта шаванд ва коркард шаванд.

 

Таърихи таърих

KX соли 1993 аз ҷониби Артур Уитни таъсис ёфтааст, ки қаблан дар Morgan Stanley Bank бо забони A+ кор мекард, вориси APL - забони хеле аслӣ ва дар як вақт маъмул дар ҷаҳони молиявӣ. Албатта, дар КХ Артур бо хамин рухия давом дода, забони векторй-функционалии К-ро ба вучуд овард, ки идеяхои минимализми радикалиро ба рохбарй гирифта. Барномаҳои К ба як печидагии аломатҳои пунктуатсия ва аломатҳои махсус монанданд, маънои аломатҳо ва функсияҳо аз контекст вобаста аст ва ҳар як амалиёт назар ба забонҳои муқаррарии барномасозӣ маънои бештар дорад. Аз ин рӯ, барномаи K фазои ҳадди аққалро ишғол мекунад - чанд сатр метавонад саҳифаҳои матнро бо забони муфассал ба монанди Java иваз кунад - ва татбиқи хеле мутамаркази алгоритм аст.
 
Функсия дар K, ки аксари генератори таҳлилгари LL1-ро мувофиқи грамматикаи додашуда амалӣ мекунад:

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

 Артур ин фалсафаи самаранокии шадидро бо ҳадди ақали ҳаракатҳои бадан дар KDB+, ки соли 2003 пайдо шуда буд, таҷассум кардааст (ман фикр мекунам, ки ҳоло маълум аст, ки ҳарфи К дар ин ном аз куҷост) ва чизе ҷуз тарҷумони версияи чоруми К. Дар болои K K версияи барои корбар осонтар бо номи Q илова карда шудааст. Q инчунин дастгирии як лаҳҷаи мушаххаси SQL - QSQL ва тарҷумон - дастгирии ҷадвалҳоро ҳамчун навъи додаҳои система, асбобҳо барои кор бо ҷадвалҳо илова кардааст. дар хотира ва диск ва ғ.
 
Ҳамин тавр, аз нуқтаи назари корбар, KDB+ танҳо як тарҷумони забони Q бо дастгирии ҷадвалҳо ва ифодаҳои услуби LINQ аз C# мебошад. Ин муҳимтарин фарқи байни KDB+ ва дигар пойгоҳи додаҳо ва бартарии асосии рақобатии он аст, ки аксар вақт нодида гирифта мешавад. Ин махзани маълумот нест + забони ёрирасони ғайрифаъол, балки як забони пуриқтидори барномасозӣ + дастгирии дарунсохт барои функсияҳои пойгоҳи додаҳо. Ин тафовут дар номбар кардани тамоми бартариҳои KDB+ нақши ҳалкунанда мебозад. Барои намуна…
 

андоза

Аз рӯи стандартҳои муосир, KDB+ андозаи микроскопӣ дорад. Ин аслан як файли иҷрошавандаи зермегабайтӣ ва як файли матнии хурд бо баъзе вазифаҳои система мебошад. Дар асл - камтар аз як мегабайт ва барои ин барнома ширкатҳо дар як сол барои як протсессори сервер даҳҳо ҳазор доллар пардохт мекунанд.

  • Ин андоза имкон медиҳад, ки KDB+ худро дар ҳама гуна сахтафзор эҳсос кунад - аз микрокомпютери Pi то серверҳои дорои терабайтҳои хотира. Ин ба ҳеҷ ваҷҳ ба функсионалӣ таъсир намерасонад; илова бар ин, Q фавран оғоз меёбад, ки он имкон медиҳад, ки дар байни чизҳои дигар ҳамчун забони скрипт истифода шавад.
  • Дар ин андоза тарҷумони Q комилан ба кэши протсессор мувофиқат мекунад, ки иҷрои барномаро метезонад.
  • Бо ин андозаи файли иҷрошаванда, раванди Q дар хотира фазои ночизро ишғол мекунад; шумо метавонед садҳо онҳоро иҷро кунед. Ғайр аз он, дар ҳолати зарурӣ Q метавонад бо даҳҳо ё садҳо гигабайт хотира дар як раванд кор кунад.

Ватандорӣ

Q барои доираи васеи барномаҳо бузург аст. Раванди Q метавонад ҳамчун пойгоҳи таърихӣ амал кунад ва дастрасии зудро ба терабайтҳои иттилоот таъмин кунад. Масалан, мо даҳҳо базаи таърихӣ дорем, ки дар баъзеи онҳо як рӯзи фишурданашудаи маълумот зиёда аз 100 гигабайтро ташкил медиҳад. Аммо, дар зери маҳдудиятҳои оқилона, дархост ба пойгоҳи додаҳо дар тӯли даҳҳо то садҳо миллисонияҳо анҷом дода мешавад. Умуман, мо барои дархостҳои корбар вақти универсалӣ дорем - 30 сония - ва он хеле кам кор мекунад.
 
Q метавонад ба осонӣ пойгоҳи додаҳои хотира бошад. Маълумоти нав ба ҷадвалҳои хотира чунон зуд илова карда мешавад, ки дархостҳои корбар омили маҳдудкунанда мебошанд. Маълумот дар ҷадвалҳо дар сутунҳо нигоҳ дошта мешаванд, ки ин маънои онро дорад, ки ҳама гуна амалиёт дар сутун кэши протсессорро бо иқтидори пурра истифода мебарад. Илова бар ин, KX кӯшиш кард, ки ҳама амалҳои асосиро, аз қабили арифметика тавассути дастурҳои вектории протсессори протсессор иҷро кунад ва суръати онҳоро ба ҳадди аксар расонад. Q инчунин метавонад вазифаҳоеро иҷро кунад, ки барои пойгоҳи додаҳо хос нестанд - масалан, коркарди ҷараёни ҷараёни додаҳо ва ҳисоб кардан дар “вақти воқеӣ” (бо таъхир аз даҳҳо миллисонияҳо то чанд сония вобаста ба вазифа) вазифаҳои гуногуни ҷамъбасти воситаҳои молиявӣ барои вақтҳои гуногун фосилаҳо ё модели таъсири муомилоти мукаммалро ба бозор созед ва профили онро тақрибан дарҳол пас аз анҷоми он анҷом диҳед. Дар чунин вазифаҳо аксар вақт таъхири вақти асосӣ Q нест, балки зарурати ҳамоҳангсозии маълумот аз манбаъҳои гуногун мебошад. Суръати баланд аз он сабаб ба даст оварда мешавад, ки додаҳо ва функсияҳое, ки онҳоро коркард мекунанд, дар як раванд ҷойгиранд ва коркард то иҷрои якчанд ифодаҳо ва пайвастҳои QSQL кам карда мешавад, ки шарҳ дода намешаванд, вале бо коди дуӣ иҷро мешаванд.
 
Дар ниҳоят, шумо метавонед ҳама гуна равандҳои хидматрасониро дар Q нависед. Масалан, равандҳои Gateway, ки дархостҳои корбаронро ба пойгоҳи додаҳо ва серверҳои зарурӣ ба таври худкор паҳн мекунанд. Барномасоз озодии комил дорад, ки ҳама гуна алгоритми мувозинат, афзалиятнокӣ, таҳаммулпазирии хатоҳо, ҳуқуқҳои дастрасӣ, квотаҳо ва асосан ҳама чизи дигаре, ки дилаш мехоҳад. Мушкилоти асосӣ ин аст, ки шумо бояд ҳамаи инро худатон амалӣ кунед.
 
Ҳамчун мисол, ман номбар мекунам, ки мо кадом намуди равандҳоро дорем. Ҳамаи онҳо фаъолона истифода мешаванд ва якҷоя кор мекунанд, даҳҳо пойгоҳи додаҳои гуногунро дар як муттаҳид мекунанд, коркарди маълумот аз сарчашмаҳои гуногун ва ба садҳо корбарон ва барномаҳо хизмат мерасонанд.

  • Пайвасткунакҳо (пайвасткунакҳо) ба манбаъҳои маълумот. Ин равандҳо маъмулан китобхонаҳои берунаро истифода мебаранд, ки ба Q бор карда мешаванд. Интерфейси C дар Q бениҳоят содда аст ва ба шумо имкон медиҳад, ки ба осонӣ вазифаҳои проксиро барои ҳама китобхонаи C/C++ эҷод кунед. Q барои коркарди як сели паёмҳои FIX аз тамоми биржаҳои фондии Аврупо ҳамзамон зуд кор мекунад.
  • Паҳнкунандагони маълумот (tickerplant), ки хамчун алокаи мобайнии байни пайвасткунакхо ва истеъмолкунандагон хизмат мекунанд. Ҳамзамон, онҳо маълумоти воридшударо ба сабти махсуси бинарӣ менависанд, ки барои истеъмолкунандагон бар зидди талафоти пайвастшавӣ ё бозоғозӣ устувориро таъмин мекунанд.
  • Пойгоҳи маълумот дар хотира (rdb). Ин пойгоҳи додаҳо дастрасии зудтаринро ба маълумоти хом ва тоза тавассути нигоҳ доштани он дар хотира таъмин мекунанд. Одатан, онҳо дар давоми рӯз маълумотро дар ҷадвалҳо ҷамъ мекунанд ва шабона онҳоро аз нав танзим мекунанд.
  • Пойгоҳи пойгоҳи додаҳо (pdb). Ин пойгоҳи додаҳо кафолат медиҳанд, ки маълумот барои имрӯз дар пойгоҳи таърихӣ нигоҳ дошта мешавад. Чун қоида, бар хилофи rdb, онҳо маълумотро дар хотира нигоҳ намедоранд, балки дар давоми рӯз кэши махсуси дискро истифода мебаранд ва маълумотро дар нимаи шаб ба базаи таърихӣ нусхабардорӣ мекунанд.
  • Пойгоҳи додаҳои таърихӣ (hdb). Ин пойгоҳи додаҳо дастрасӣ ба маълумотро барои рӯзҳо, моҳҳо ва солҳои қаблӣ фароҳам меорад. Андозаи онҳо (дар рӯзҳо) танҳо бо андозаи дискҳои сахт маҳдуд аст. Маълумотро дар ҳама ҷо ҷойгир кардан мумкин аст, махсусан дар дискҳои гуногун барои суръатбахшии дастрасӣ. Имконияти фишурдани маълумотро бо истифода аз якчанд алгоритмҳо барои интихоб кардан мумкин аст. Сохтори базаи маълумотҳо хуб ҳуҷҷатгузорӣ ва содда аст, маълумот сутун ба сутун дар файлҳои муқаррарӣ нигоҳ дошта мешавад, аз ин рӯ онҳоро метавон коркард кард, аз ҷумла тавассути системаи оператсионӣ.
  • Пойгоҳи додаҳо бо маълумоти ҷамъшуда. Онҳо ҷамъҳои гуногунро нигоҳ медоранд, ки одатан аз рӯи номи асбоб ва фосилаи вақт гурӯҳбандӣ шудаанд. Пойгоҳи додаҳои хотира ҳолати худро бо ҳар як паёми воридотӣ навсозӣ мекунанд ва пойгоҳи додаҳои таърихӣ маълумоти пешакӣ ҳисобшударо нигоҳ медоранд, то дастрасӣ ба маълумоти таърихиро суръат бахшанд.
  • Дар охир, равандҳои дарвозахидматрасонии барномаҳо ва корбарон. Q ба шумо имкон медиҳад, ки коркарди комилан асинхронии паёмҳои воридотӣ, паҳн кардани онҳо дар пойгоҳи додаҳо, тафтиши ҳуқуқи дастрасӣ ва ғ. Дар хотир доред, ки паёмҳо маҳдуд нестанд ва аксар вақт ифодаҳои SQL нестанд, чуноне ки дар дигар пойгоҳи додаҳо мавҷуданд. Аксар вақт, ифодаи SQL дар функсияи махсус пинҳон карда мешавад ва дар асоси параметрҳои дархосткардаи корбар сохта мешавад - вақт табдил дода мешавад, филтр карда мешавад, маълумот ба эътидол оварда мешавад (масалан, нархи саҳмияҳо дар сурати пардохти дивидендҳо баробар карда мешаванд) ва ғайра.

Меъмории маъмулӣ барои як намуди додаҳо:

Махзани маълумоти KDB+: аз молия то Формула 1

Суръат

Гарчанде ки Q забони тафсиршаванда аст, он инчунин забони векторист. Ин маънои онро дорад, ки бисёре аз функсияҳои дарунсохт, махсусан арифметикӣ, аргументҳои ҳама гуна шакл - ададҳо, векторҳо, матритсаҳо, рӯйхатҳо - мегиранд ва барномасоз интизор меравад, ки барномаро ҳамчун амалиёти массив амалӣ кунад. Дар чунин забон, агар шумо ду вектори як миллион элементро илова кунед, дигар тафсир шудани забон муҳим нест; илова бо функсияи бинарии хеле оптимизатсияшуда иҷро карда мешавад. Азбаски ҳиссаи асосии вақт дар барномаҳои Q барои амалиётҳо бо ҷадвалҳое сарф мешавад, ки ин функсияҳои асосии векториро истифода мебаранд, натиҷа суръати хеле хуби корӣ мебошад, ки ба мо имкон медиҳад ҳатто дар як раванд миқдори зиёди маълумотро коркард кунем. Ин ба китобхонаҳои риёзӣ дар Python монанд аст - гарчанде ки худи Python забони хеле суст аст, он дорои бисёр китобхонаҳои аъло ба монанди numpy мебошад, ки ба шумо имкон медиҳанд, ки маълумоти ададӣ бо суръати забони тартибдодашуда коркард карда шаванд (дар омади гап, numpy аз ҷиҳати идеологӣ ба Q наздик аст. ).
 
Илова бар ин, KX ба тарҳрезии ҷадвалҳо ва оптимизатсияи кор бо онҳо муносибати хеле эҳтиёткорона дошт. Аввалан, якчанд намуди индексҳо дастгирӣ карда мешаванд, ки онҳоро функсияҳои дарунсохт дастгирӣ мекунанд ва метавонанд на танҳо ба сутунҳои ҷадвал, балки ба ҳама гуна векторҳо - гурӯҳбандӣ, ҷудокунӣ, атрибути беназирӣ ва гурӯҳбандии махсус барои пойгоҳи додаҳои таърихӣ татбиқ карда шаванд. Индекс оддӣ истифода мешавад ва ҳангоми илова кардани элементҳо ба сутун/вектор ба таври худкор танзим карда мешавад. Индексҳоро ба сутунҳои ҷадвал ҳам дар хотира ва ҳам дар диск бомуваффақият татбиқ кардан мумкин аст. Ҳангоми иҷрои дархости QSQL, агар имконпазир бошад, индексҳо ба таври худкор истифода мешаванд. Дуюм, кор бо маълумоти таърихӣ тавассути механизми намоиши файлҳои ОС (харитаи хотира) анҷом дода мешавад. Ҷадвалҳои калон ҳеҷ гоҳ ба хотира бор карда намешаванд; ба ҷои ин, сутунҳои зарурӣ мустақиман ба хотира харита карда мешаванд ва танҳо як қисми онҳо воқеан бор карда мешаванд (индексҳо низ дар ин ҷо кӯмак мекунанд), ки лозиманд. Барои барномасоз фарқ надорад, ки маълумот дар хотира аст ё не, механизми кор бо mmap дар умқи Q комилан пинҳон аст.
 
KDB+ пойгоҳи додаҳои релятсионӣ нест; ҷадвалҳо метавонанд маълумоти худсарона дошта бошанд, дар ҳоле ки тартиби сатрҳои ҷадвал ҳангоми илова кардани унсурҳои нав тағир намеёбад ва ҳангоми навиштани дархостҳо метавонанд истифода шаванд ва бояд истифода шаванд. Ин хусусият барои кор бо силсилаи вақт (маълумот аз мубодилаҳо, телеметрия, гузоришҳои рӯйдодҳо) фавран лозим аст, зеро агар маълумот аз рӯи вақт мураттаб карда шавад, ба корбар лозим нест, ки барои ёфтани сатри аввал ё охирин ё N ягон ҳиллаҳои SQL-ро истифода барад. сатрҳои ҷадвал, муайян кунед, ки кадом сатр аз хати N-ум меояд ва ғ. Пайвастшавӣ ба ҷадвал боз ҳам соддатар карда мешавад, масалан, пайдо кардани иқтибоси охирин барои транзаксияҳои 16000 VOD.L (Vodafone) дар ҷадвали 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 ҳолати истифода дорад). Муҳимтар аз ҳама, барои навиштани барномаҳо муносибати куллан дигарро талаб мекунад. Дар забони векторӣ, шумо бояд ҳамеша аз рӯи тағирёбии массив фикр кунед, ҳамаи ҳалқаҳоро тавассути якчанд вариантҳои функсияҳои харита/камкунӣ (ки дар Q зарфҳо номида мешаванд) амалӣ кунед ва ҳеҷ гоҳ кӯшиш накунед, ки пулро бо иваз кардани амалиёти векторӣ бо амалҳои атомӣ сарфа кунед. Масалан, барои пайдо кардани индекси пайдоиши N-уми элемент дар массив, шумо бояд нависед:

1. (where element=vector)[N]  

гарчанде ки ин аз рӯи стандартҳои C/Java бениҳоят бесамар ба назар мерасад (= вектори мантиқиро эҷод мекунад, ки дар он нишондиҳандаҳои воқеии элементҳои он бармегардад). Аммо ин қайд маънои ифодаро равшантар мекунад ва шумо ба ҷои амалҳои атомии суст амалҳои вектории тезро истифода мебаред. Фарқи консептуалӣ байни забони векторӣ ва дигарон бо фарқияти равишҳои императивӣ ва функсионалии барномасозӣ муқоиса карда мешавад ва шумо бояд ба ин омода бошед.
 
Баъзе корбарон низ аз QSQL норозианд. Гап дар он аст, ки он танҳо ба SQL воқеӣ монанд аст. Дар асл, он танҳо як тарҷумони ифодаҳои ба SQL монанд аст, ки оптимизатсияи дархостро дастгирӣ намекунад. Истифодабаранда бояд дархостҳои оптималиро худаш ва дар Q нависад, ки бисёриҳо ба онҳо омода нестанд. Аз тарафи дигар, албатта, шумо метавонед ҳамеша худатон дархости оптималиро нависед, на такя ба оптимизатори сиёҳ.
 
Илова бар ин, китоб дар бораи Q - Q For Mortals дар сайти ройгон дастрас аст сомонаи ширкат, инчунин дар он чо бисьёр дигар материалхои муфид чамъ карда шудаанд.
 
Камбудии дигари калон арзиши иҷозатнома аст. Ин барои як CPU даҳҳо ҳазор доллар дар як сол аст. Танҳо ширкатҳои бузург қодиранд, ки чунин хароҷотро пардохт кунанд. Ба наздикӣ, KX сиёсати иҷозатномадиҳии худро чандиртар кард ва имкон медиҳад, ки танҳо барои вақти истифода пардохт ё иҷораи KDB+ дар абрҳои Google ва Amazon. KX инчунин барои зеркашӣ пешниҳод мекунад версияи ройгон барои мақсадҳои ғайритиҷоратӣ (Нусхаи 32 бит ё 64 бит тибқи дархост).
 

Competitors

Якчанд пойгоҳи додаҳои махсусе мавҷуданд, ки дар принсипҳои шабеҳ сохта шудаанд - сутунӣ, дар хотира, ки ба миқдори хеле зиёди додаҳо нигаронида шудаанд. Мушкилот дар он аст, ки инҳо базаҳои махсус мебошанд. Мисоли аҷиб ин Clickhouse аст. Ин пойгоҳи додаҳо принсипи хеле шабеҳи KDB+ барои нигоҳ доштани маълумот дар диск ва сохтани индекс дорад; он баъзе дархостҳоро нисбат ба KDB+ тезтар иҷро мекунад, гарчанде ки чандон зиёд нест. Аммо ҳатто ҳамчун пойгоҳи додаҳо, Clickhouse нисбат ба KDB+ тахассусӣ дорад - веб-таҳлил ва силсилаи вақтҳои ихтиёрӣ (ин фарқият хеле муҳим аст - аз он сабаб, масалан, дар Clickhouse истифодаи фармоиши сабтҳо имконнопазир аст). Аммо, муҳимтар аз ҳама он аст, ки Clickhouse дорои хусусияти KDB+ нест, забоне, ки имкон медиҳад коркарди маълумотро мустақиман дар пойгоҳи додаҳо фароҳам орад, ба ҷои бор кардани он ба замимаи алоҳида, сохтани ифодаҳои худсаронаи SQL, татбиқи функсияҳои худсарона дар дархост, эҷоди равандҳо. бо иҷрои вазифаҳои таърихии пойгоҳи додаҳо алоқаманд нест. Аз ин рӯ, муқоиса кардани KDB+ бо дигар пойгоҳи додаҳо душвор аст; онҳо метавонанд дар баъзе мавридҳои истифода беҳтар бошанд ё ҳангоми сухан дар бораи вазифаҳои классикии пойгоҳи додаҳо беҳтар бошанд, аммо ман дигар асбоби баробар самаранок ва ҳамаҷонибаи коркарди маълумоти муваққатиро намедонам.
 

Интегратсияи Python

Барои осон кардани истифодаи KDB+ барои одамоне, ки бо технология ошно нестанд, KX китобхонаҳоро барои ҳамгироии зич бо Python дар як раванди ягона эҷод кард. Шумо метавонед ё ягон функсияи Python-ро аз Q занг занед, ё баръакс - ба ягон функсияи Q аз Python занг занед (хусусан, ифодаҳои QSQL). Китобхонаҳо дар ҳолати зарурӣ (на ҳамеша барои самаранокӣ), маълумотро аз формати як забон ба формати дигар табдил медиҳанд. Дар натиҷа, Q ва Python дар як симбиози наздик зиндагӣ мекунанд, ки сарҳадҳои байни онҳо норавшан мешаванд. Дар натиҷа, барномасоз, аз як тараф, ба китобхонаҳои сершумори муфиди Python дастрасии комил дорад, аз тарафи дигар, вай барои кор бо маълумоти калон, ки ба Python муттаҳид шудааст, заминаи зуд мегирад, ки ин барои онҳое, ки ба омӯзиши мошинсозӣ машғуланд, махсусан муфид аст. ё моделсозӣ.
 
Кор бо Q дар Python:

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 For Mortals (бо забони англисӣ) - https://code.kx.com/q4m3/
Мақолаҳо дар бораи барномаҳои KDB+/Q аз кормандони kx - https://code.kx.com/v2/wp/

Манбаъ: will.com

Илова Эзоҳ