Databasa KDB+: ji darayî heya Formula 1

KDB +, hilbera pargîdanî KX Di nav derdorên teng de bi berfirehî tê zanîn, databasek pir bilez, stûnek e ku ji bo hilanîna rêzikên demê û hesabên analîtîk ên li ser bingeha wan hatî çêkirin. Di destpêkê de, ew di pîşesaziya darayî de pir populer bû (û ye) - hemî 10 bankên veberhênanê yên pêşîn û gelek fonên hedge yên naskirî, danûstendin û rêxistinên din wê bikar tînin. Di van demên dawî de, KX biryar da ku bingeha xerîdarên xwe berfireh bike û naha çareseriyên li deverên din ên ku tê de hejmareke mezin a daneyan heye, ku ji hêla demê ve an wekî din ve hatî organîze kirin - pêşkêşî dike - telekom, bioinformatics, çêkirin, hwd. Ew di heman demê de bûne hevparê tîmê Aston Martin Red Bull Racing di Formula 1 de, li wir ew alîkariya berhevkirin û pêvajokirina daneyan ji senzorên gerîdeyê dikin û ceribandinên tunela bayê analîz dikin. Di vê gotarê de, ez dixwazim ji we re bibêjim ka kîjan taybetmendiyên KDB+ wê super-performansa dike, çima pargîdan amade ne ku gelek drav li ser wê xerc bikin, û di dawiyê de, çima ew bi rastî ne databasek e.
 
Databasa KDB+: ji darayî heya Formula 1
 
Di vê gotarê de ez ê hewl bidim ku bi gelemperî ji we re vebêjim ka KDB+ çi ye, çi jêhatîbûn û sînorkirinên wê hene, û çi feydeyên wê hene ji bo pargîdaniyên ku dixwazin mîqdarên mezin dane pêvajoyê bikin. Ez ê neçim nav hûrguliyên pêkanîna KDB+ an jî hûrguliyên zimanê bernamesaziya wê Q. Ev herdu mijar pir berfireh in û hêjayî gotarên cuda ne. Gelek agahdarî li ser van mijaran dikarin li ser kod.kx.com, di nav de pirtûkek li ser Q - Q For Mortals (li lînka jêrîn binêre).

Hin şert

  • Databasa nav-bîrê. Databasek ku daneyan di RAM-ê de ji bo gihîştina bilez hilîne. Awantajên databasek wusa diyar in, lê dezawantaj îhtîmala windabûna daneyê û hewcedariya pir bîranîna li ser serverê ye.
  • Databasa stûnê. Databasek ku dane li şûna tomar bi tomar stûn bi stûn têne hilanîn. Feydeya sereke ya databasek wusa ev e ku daneyên ji yek stûnê bi hev re li ser dîskê û di bîranînê de têne hilanîn, ku bi girîngî gihîştina wê bileztir dike. Ne hewce ye ku stûnên ku di pirsnameyê de nayên bikar anîn bar bikin. Nebaşiya sereke ev e ku guheztin û jêbirina tomaran dijwar e.
  • Rêzeya dem. Daneyên bi stûnek dîrok an demjimêr. Bi gelemperî, rêzkirina demê ji bo daneyên weha girîng e, ji ber vê yekê hûn dikarin bi hêsanî destnîşan bikin ka kîjan tomar berî an li dû ya heyî tê, an jî fonksiyonên ku encamên wan bi rêza tomaran ve girêdayî ye bicîh bikin. Databasên klasîk li ser prensîbek bi tevahî cûda têne çêkirin - berhevokek tomar wekî komek temsîl dike, ku rêza tomaran, di prensîbê de, ne diyar e.
  • Vektor. Di çarçoveya KDB+ de, ev navnîşek hêmanên heman celebê atomê ye, wek nimûne, hejmar. Bi gotineke din, komek ji hêmanan. Array, berevajî navnîşan, dikarin bi berhevokê werin hilanîn û bi karanîna rêwerzên pêvajoya vektorê werin hilanîn.

 

Pirtûka dîrokî

KX di sala 1993-an de ji hêla Arthur Whitney ve hate damezrandin, yê ku berê li Morgan Stanley Bank li ser zimanê A+ xebitî, serkêşê APL - zimanek pir orjînal û yekcar di cîhana darayî de. Bê guman, di KX de, Arthur bi heman ruhî berdewam kir û zimanê vektor-fonksîyonel K afirand, ku ji hêla ramanên minimalîzma radîkal ve hatî rêve kirin. Bernameyên K wekî tevliheviyek xalbendî û tîpên taybetî xuya dikin, wateya nîşan û fonksiyonan bi çarçoweyê ve girêdayî ye, û her karek ji ya ku di zimanên bernamesaziyê yên adetî de tê wateya pir zêdetir heye. Ji ber vê yekê, bernameyek K-ya hindiktirîn cîh digire - çend rêz dikarin rûpelên nivîsê bi zimanek devkî mîna Java-yê biguhezînin - û pêkanîna algorîtmayê ya super-konsantrekirî ye.
 
Fonksiyonek di K-yê de ku piraniya jeneratorê parsera LL1 li gorî rêzimanek diyarkirî bicîh tîne:

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 vê felsefeya bikêrhatina zehf bi hindiktirîn tevgerên laş di KDB+ de, ya ku di sala 2003-an de xuya bû (ez difikirim ku nuha diyar e ku tîpa K di nav de ji ku tê) pêk anî û ji bilî wergêrek guhertoya çaremîn a K-yê ne tiştek din e. Ziman Versiyonek bêtir bikarhêner-heval li ser K K-yê bi navê Q hate zêdekirin. Q di heman demê de piştgirî ji bo zaravayek taybetî ya SQL - QSQL, û wergêr - piştgirî ji tabloyan re wekî celebek daneya pergalê, amûrên xebata bi tabloyan re zêde kir. di bîr û dîskê de, hwd.
 
Ji ber vê yekê ji perspektîfa bikarhênerek, KDB+ bi tenê wergêrek zimanê Q ye ku piştgirîya tabloyan û îfadeyên mîna şêwaza LINQ-ya SQL ji C# e. Ev cûdahiya herî girîng a di navbera KDB+ û databasên din de û berjewendiya wê ya pêşbaziyê ya sereke ye, ku pir caran tête paşguh kirin. Ev ne databasek + zimanek alîkar a neçalak e, lê zimanek bernamesaziyek hêzdar a bêkêmasî ye + ji bo fonksiyonên databasê piştgirîya çêkirî ye. Ev cûdahî dê di navnîşkirina hemî feydeyên KDB+ de rolek diyarker bilîze. Bo nimûne…
 

size

Li gorî standardên nûjen, KDB + bi mezinahiya mîkroskopî ye. Ew bi rastî yek pelek bine-megabyte ya îcrakar û pelek nivîsê ya piçûk bi hin fonksiyonên pergalê re ye. Di rastiyê de - kêmtir ji yek megabyte, û ji bo vê bernameyê pargîdanî salê bi deh hezaran dolar ji bo yek pêvajoyê li ser serverê didin.

  • Ev mezinahî dihêle ku KDB+ li ser her hardware xwe xweş hîs bike - ji mîkrokomputerek Pi bigire heya serverên bi terabytes bîranîn. Ev bi tu awayî bandorê li fonksiyonê nake; ji bilî vê, Q tavilê dest pê dike, ku dihêle ku ew, di nav tiştên din de, wekî zimanek nivîsandinê were bikar anîn.
  • Di vê mezinahiyê de, wergêra Q bi tevahî di cache ya pêvajoyê de cîh digire, ku pêkanîna bernameyê lez dike.
  • Bi vê mezinahiya pelê îcrakar, pêvajoya Q di bîranînê de cîhek neguhêz digire; hûn dikarin bi sedan ji wan bimeşînin. Wekî din, heke hewce be, Q dikare di nav pêvajoyek yek de bi dehan an bi sedan gigabyte bîranînê bixebite.

Fêrbûna

Q ji bo cûrbecûr sepanan mezin e. Pêvajoya Q dikare wekî databasek dîrokî tevbigere û bilez gihîştina terabytes agahiyê peyda bike. Mînakî, bi dehan databasên me yên dîrokî hene, di hin ji wan de yek rojek daneya nekompresyonî zêdetirî 100 gigabayt digire. Lêbelê, di bin sînorkirinên maqûl de, lêpirsînek ji databasê re dê di nav deh û sed milî çirkeyan de were qedandin. Bi gelemperî, me ji bo daxwazên bikarhêneran demek gerdûnî heye - 30 çirke - û ew pir kêm kar dike.
 
Q bi hêsanî dikare bibe databasek nav-bîrê. Daneyên nû ewqas zû li tabloyên bîranînê têne zêdekirin ku daxwazên bikarhêner faktora sînordar e. Daneyên di tabloyan de di stûnan de têne hilanîn, ku tê vê wateyê ku her operasyonek li ser stûnê dê cache-ya pêvajoyê bi tevahî kapasîteya xwe bikar bîne. Digel vê yekê, KX hewl da ku bi rêwerzên vektorê yên pêvajoyê ve hemî operasyonên bingehîn ên wekî jimartinê bicîh bîne, leza wan zêde bike. Q di heman demê de dikare karên ku ji bo databasan ne tîpîk in jî pêk bîne - mînakî, daneyên guheztinê pêvajoyê bike û di "dema rast" de hesab bike (li gorî peywirê bi derengmayînek ji deh milîsaniyeyan heya çend saniyeyan) fonksiyonên cihêreng ên berhevkirinê ji bo amûrên darayî ji bo demên cûda. navberan an modelek bandora danûstendinên bêkêmasî li sûkê ava bikin û profîla wê hema hema yekser piştî qedandina wê pêk bînin. Di karên weha de, pir caran derengiya dema sereke ne Q ye, lê hewcedariya hevdengkirina daneyan ji çavkaniyên cihêreng. Leza bilind tê bidestxistin ji ber vê yekê ku dane û fonksiyonên ku wan pêvajo dikin di yek pêvajoyê de ne, û pêvajo bi pêkanîna çend bêjeyên QSQL û tevlêbûnê de kêm dibe, ku nayên şîrove kirin, lê ji hêla koda binary ve têne darve kirin.
 
Di dawiyê de, hûn dikarin her pêvajoyên karûbarê di Q de binivîsin. Mînakî, pêvajoyên Gateway ku bixweber daxwazên bikarhêner li databas û serverên pêwîst belav dikin. Bernamesaz xwedan azadiya bêkêmasî ye ku her algorîtmayek ji bo hevsengkirin, pêşanîkirin, tolerasyona xeletiyê, mafên gihîştinê, kota û bi bingehîn her tiştê ku dilê wî bixwaze bicîh bîne. Pirsgirêka sereke li vir ev e ku hûn neçar in ku van hemî bi xwe bicîh bikin.
 
Wek mînak, ez ê navnîş bikim ka kîjan pêvajoyên me hene. Hemî ew bi rengek çalak têne bikar anîn û bi hev re dixebitin, bi dehan databasên cihêreng di yek de berhev dikin, daneyên ji gelek çavkaniyan hildiweşînin û bi sedan bikarhêner û serîlêdanan xizmet dikin.

  • Girêdan (feedhandler) ji çavkaniyên daneyê re. Van pêvajoyan bi gelemperî pirtûkxaneyên derveyî yên ku di Q-yê de têne barkirin bikar tînin. Navbera C ya di Q de zehf hêsan e û dihêle hûn bi hêsanî fonksiyonên proxy ji bo her pirtûkxaneyek C/C++ biafirînin. Q têra xwe bilez e ku meriv bi hevdemî hilberandina lehiyek peyamên FIX ji hemî borseyên Ewropî bi rê ve bibe.
  • Belavkerên daneyê (tickerplant), ku wekî girêdanek navîn di navbera girêdan û xerîdar de kar dikin. Di heman demê de, ew daneyên gihîştî li têketinek binaryê ya taybetî dinivîsin, ku ji xerîdaran re li hember windabûna girêdanê an ji nû ve destpêkirinê hêzdariyek peyda dike.
  • Databasa nav-bîrê (rdb). Van databasan bi hilanîna wan di bîranînê de gihandina zûtirîn gengaz a daneya xav, nû peyda dikin. Bi gelemperî, ew di nav rojê de daneyan di tabloyan de berhev dikin û bi şev wan ji nû ve saz dikin.
  • Databasa Persist (pdb). Van databas piştrast dikin ku daneyên îro di databasek dîrokî de têne hilanîn. Wekî qaîdeyek, berevajî rdb, ew daneyan di bîranînê de hilnagirin, lê di nav rojê de cacheyek taybetî li ser dîskê bikar tînin û daneyan nîvê şevê li databasa dîrokî kopî dikin.
  • Daneyên dîrokî (hdb). Van databases gihîştina daneyên rojên berê, meh û salên berê peyda dikin. Mezinahiya wan (di rojan de) tenê ji hêla mezinahiya dîskên hişk ve sînorkirî ye. Daneyên dikarin li her deverê, nemaze li ser dîskên cihêreng werin bicîh kirin da ku gihîştina bilez bikin. Mimkun e ku meriv daneyan bi karanîna çend algorîtmayan hilbijêrin ku ji wan hilbijêrin. Struktura databasê baş belgekirî û hêsan e, dane di pelên birêkûpêk de stûn bi stûn têne hilanîn, ji ber vê yekê ew dikarin werin hilanîn, tevî pergala xebitandinê.
  • Daneyên bi agahdariya berhevkirî. Ew berhevokên cihêreng, bi gelemperî bi wan re, ji hêla navê amûr û navberê ve têne kom kirin, hilînin. Databasên nav-bîrê bi her peyamek hatî re rewşa xwe nûve dikin, û databasên dîrokî daneyên pêş-hejmarkirî hilînin da ku gihandina daneyên dîrokî bilezînin.
  • Di dawiyê de pêvajoyên dergehêserîlêdan û bikarhêneran xizmet dikin. Q dihêle hûn pêvajoyek bi tevahî asynkron a peyamên hatinî bicîh bikin, wan li databasan belav bikin, mafên gihîştinê kontrol bikin, hwd. Bala xwe bidinê ku peyam ne tixûbdar in û bi gelemperî ne îfadeyên SQL ne, wekî ku di databasên din de ye. Bi gelemperî, îfadeya SQL di fonksiyonek taybetî de veşartî ye û li ser bingeha pîvanên ku ji hêla bikarhêner ve hatî xwestin têne çêkirin - dem tê veguheztin, fîlterkirin, dane normalîze kirin (mînakek, heke dabeşkirin were dayîn bihayê stock wekhev dibe), hwd.

Mîmariya tîpîk ji bo yek celeb daneyê:

Databasa KDB+: ji darayî heya Formula 1

Lez

Q zimanekî şirovekirî be jî, zimanekî vektor e jî. Ev tê vê wateyê ku gelek fonksiyonên çêkirî, nemaze yên arîtmetîk, argûmanên her celebî digirin -hejmar, vektor, matrice, navnîşan - û tê çaverê kirin ku bernamenûs bernameyê wekî operasyonên rêzê bicîh bîne. Di zimanekî weha de, ger hûn du vektorên ji mîlyon hêmanan lê zêde bikin, êdî ne girîng e ku ziman were şîrove kirin; lêzêdekirin dê ji hêla fonksiyonek binaryê ya super-optimîzekirî ve were kirin. Ji ber ku di bernameyên Q-yê de para şêran li ser operasyonên bi tabloyên ku van fonksiyonên vektorîkirî yên bingehîn bikar tînin derbas dibe, derketin leza xebitandinê ya pir maqûl e, ku dihêle ku em di yek pêvajoyê de jî hejmareke mezin a daneyan pêvajoyê bikin. Ev dişibihe pirtûkxaneyên matematîkî yên li Python - her çend Python bixwe zimanek pir hêdî ye, lê gelek pirtûkxaneyên wî yên hêja hene wekî numpy ku dihêle hûn daneyên hejmarî bi leza zimanek berhevkirî bişopînin (bi awayê, numpy ji hêla îdeolojîkî ve nêzê Q ye ).
 
Wekî din, KX ji bo sêwirana tabloyan û xweşbînkirina xebata bi wan re nêzîkatiyek pir baldar girt. Pêşîn, çend celeb indexan têne piştgirî kirin, ku ji hêla fonksiyonên çêkirî ve têne piştgirî kirin û ne tenê li stûnên tabloyê, lê di heman demê de li her vektoran jî têne sepandin - komkirin, veqetandin, taybetmendiya bêhempa û komkirina taybetî ya ji bo databasên dîrokî. Indeks bi hêsanî tê sepandin û dema ku hêman li stûnê/vektorê zêde dike bixweber tê sererast kirin. Indeks dikarin bi heman rengî bi serfirazî li stûnên tabloyê hem di bîra hem jî li ser dîskê de werin sepandin. Dema ku pirsek QSQL tête kirin, heke gengaz be, index bixweber têne bikar anîn. Ya duyemîn, xebata bi daneyên dîrokî re bi mekanîzmaya nîşandana pelên OS-ê (nexşeya bîranînê) tê kirin. Tabloyên mezin tu carî di bîranînê de nayên barkirin; li şûna wê, stûnên pêwîst rasterast di nav bîranînê de têne nexşandin û tenê ew beşek ji wan bi rastî tê barkirin (indeks jî li vir dibin alîkar) ku hewce ne. Ji bernamenûs re ferq nake ka dane di bîranînê de ye an na; mekanîzmaya xebata bi mmap-ê bi tevahî di kûrahiya Q de veşartî ye.
 
KDB+ ne databasek pêwendîdar e; tablo dikarin daneyên keyfî hebin, dema ku hêmanên nû têne zêdekirin rêza rêzan di tabloyê de nayê guheztin û dikare û divê were bikar anîn dema ku pirsan dinivîse. Ev taybetmendî bi lezgînî ji bo xebata bi rêzikên demê re (daneyên ji danûstendinê, telemetrî, têketinên bûyeran) hewce ye, ji ber ku heke dane li gorî demê were rêz kirin, wê hingê pêdivî ye ku bikarhêner ne hîleyên SQL bikar bîne da ku rêza yekem an ya paşîn an N bibîne. rêzên di tabloyê de, diyar bikin ka kîjan rêz li pey rêza N-yê tê, hwd. Têkiliyên tabloyê hê bêtir hêsan têne kirin, mînakî, dîtina danûstendina paşîn a ji bo 16000 danûstendinên VOD.L (Vodafone) di tabloyek ji 500 mîlyon hêmanan de bi qasî saniyeyekê li ser dîskê û bi dehan milî çirkeyan di bîranînê de digire.
 
Nimûneyek ji tevlêbûna demê - tabloya quote li ser bîranînê tête nexşandin, ji ber vê yekê ne hewce ye ku VOD.L li ku derê diyar bike, nîşana li ser stûna sym û rastiya ku dane li gorî demê têne rêz kirin bi nepenî têne bikar anîn. Hema hema hemî tevlêbûnên di Q de fonksiyonên birêkûpêk in, ne beşek ji vegotinek bijartî ne:

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

Di dawiyê de, hêjayî gotinê ye ku endezyarên li KX, ku bi Arthur Whitney bi xwe dest pê dikin, bi rastî bi karîgeriyê re mijûl in û ber bi dirêjahiyê ve diçin da ku herî zêde ji taybetmendiyên standard Q-yê sûd werbigirin û şêwazên karanîna herî gelemperî xweştir bikin.
 

Encam

KDB+ di serî de ji ber pirrengiya xweya awarte di nav karsaziyan de populer e - ew bi heman rengî wekî databasek di bîranînê de, wekî databasek ji bo hilanîna terabytes daneyên dîrokî, û wekî platformek ji bo analîzkirina daneyê xizmet dike. Ji ber vê yekê ku pêvajoyek daneyê rasterast di databasê de pêk tê, leza zêde ya kar û teserûfa çavkaniyê tê bidestxistin. Zimanek bernamenûsê ya bêkêmasî ya ku bi fonksiyonên databasê re yekgirtî ye dihêle hûn li ser yek platformê tevahiya stûyê pêvajoyên pêwîst bicîh bikin - ji wergirtina daneyan heya hilanîna daxwazên bikarhêner.
 

Ji bo agahiyên zêdetir,

kêmasiyên

Dezavantajek girîng a KDB+/Q berbanga têketina bilind e. Ziman xwedan hevoksaziyek xerîb e, hin fonksiyon bi giranî têne barkirin (nirx, mînakî, bi qasî 11 rewşên karanîna hene). Ya herî girîng, ji ​​bo nivîsandina bernameyan nêzîkatiyek radîkal cûda hewce dike. Di zimanekî vektorî de, divê hûn her gav li gorî veguheztinên rêzê bifikirin, hemî lûkan bi çend guhertoyên nexşeyê/fonksiyonên kêmkirinê (yên ku di Q-yê de lêker têne gotin) bicîh bînin, û çu carî hewl nedin ku drav biguhezînin bi guheztina operasyonên vektorî bi yên atomî. Mînakî, ji bo dîtina îndeksa bûyera N-emîn a hêmanek di rêzek de, divê hûn binivîsin:

1. (where element=vector)[N]  

her çend ev ji hêla standardên C/Java ve pir bêkêmasî xuya dike (= vektorek boolean diafirîne, ku li wir navnîşên rastîn ên hêmanên tê de vedigerîne). Lê ev nîşankirin wateya îfadeyê zelaltir dike û hûn li şûna yên atomê hêdî, operasyonên vektorê yên bilez bikar tînin. Cûdahiya têgehî ya di navbera zimanek vektor û yên din de bi cûdahiya di navbera nêzîkatiyên mecbûrî û fonksiyonel ên bernamekirinê de tête berhev kirin, û hûn hewce ne ku ji bo vê yekê amade bin.
 
Hin bikarhêner jî ji QSQL nerazî ne. Mesele ev e ku ew tenê mîna SQL-ya rastîn xuya dike. Di rastiyê de, ew tenê wergêrek îfadeyên mîna SQL-ê ye ku piştgirîya xweşbînkirina pirsê nake. Pêdivî ye ku bikarhêner bixwe pirsên herî çêtirîn binivîsîne, û di Q de, ku gelek jê re ne amade ne. Ji hêla din ve, bê guman, hûn her gav dikarin ji xwe re vepirsîna çêtirîn binivîsin, ne ku xwe bispêrin optimîzatorek qutiya reş.
 
Wekî din, pirtûkek li ser Q - Q For Mortals li ser belaş heye malpera şîrketê, di heman demê de gelek materyalên din ên kêrhatî jî li wir hatine berhev kirin.
 
Dezavantajeke din a mezin lêçûna lîsansê ye. Ew her sal bi deh hezaran dolar ji her CPU re ye. Tenê pargîdaniyên mezin dikarin lêçûnên weha bidin. Di van demên dawî de, KX siyaseta xweya lîsansê maqûltir kiriye û fersendê dide ku tenê ji bo dema karanîna an kirêkirina KDB+ di ewrên Google û Amazon de bidin. KX jî ji bo dakêşanê pêşkêşî dike guhertoya belaş ji bo armancên ne-bazirganî (Guhertoya 32 bit an 64 bit li ser daxwazê).
 

Pêşbazvanan

Gelek databasên pispor hene ku li ser prensîbên wekhev hatine çêkirin - stûnek, di-bîr, li ser mîqdarên pir mezin ên daneyê. Pirsgirêk ev e ku ev databasên pispor in. Mînakek balkêş Clickhouse ye. Vê databasê ji bo hilanîna daneyan li ser dîskê û avakirina pêdekek prensîbek pir dişibihe KDB+; ew hin pirsan ji KDB+ zûtir pêk tîne, her çend ne girîng be. Lê tewra wekî databasek jî, Clickhouse ji KDB+ pisportir e - analîtîka malperê li hember rêzikên demkî yên keyfî (ev cûdahî pir girîng e - ji ber vê yekê, mînakî, li Clickhouse ne gengaz e ku meriv rêzkirina tomaran bikar bîne). Lê, ya herî girîng, Clickhouse xwedan pirrengiya KDB+ tune ye, zimanek ku destûrê dide hilberandina daneyan rasterast di databasê de, li şûna ku ew pêşî li serîlêdanek cihêreng bar bike, bêjeyên SQL-ya keyfî ava bike, di pirsekê de fonksiyonên kêfî bicîh bîne, pêvajoyan biafirîne. ne girêdayî pêkanîna fonksiyonên databasa dîrokî ye. Ji ber vê yekê, dijwar e ku meriv KDB+ bi databasên din re bide ber hev; dibe ku ew di hin rewşên karanîna de çêtir bin an jî dema ku ew tê ser karên databasê yên klasîk çêtir be, lê ez amûrek din a bi heman rengî bi bandor û jêhatî ji bo hilanîna daneyên demkî nizanim.
 

Yekbûna Python

Ji bo ku karanîna KDB+ ji bo kesên ku bi teknolojiyê re nizanin hêsantir bike, KX pirtûkxane afirandin da ku di nav pêvajoyek yekane de bi Python re hişk bibin yek. Hûn dikarin her fonksiyonek Python-ê ji Q-ê vebêjin, an jî berevajî vê yekê - ji Python-ê her fonksiyonek Q-yê bang bikin (bi taybetî, îfadeyên QSQL). Pirtûkxane, heke hewce bike (ne her gav ji bo bikêrhatîbûnê), daneyan ji forma zimanekî vediguhezînin forma zimanek din. Wekî encamek, Q û Python di sembiyozek wusa nêzîk de dijîn ku sînorên di navbera wan de zelal dibin. Wekî encamek, bernamenûs, ji aliyekî ve, xwedan gihandina bêkêmasî ye gelek pirtûkxaneyên kêrhatî yên Python, ji hêla din ve, ew bingehek bilez distîne ji bo xebata bi daneyên mezin ên ku di Python de yekbûyî, ku bi taybetî ji bo kesên ku di fêrbûna makîneyê de têkildar in, bikêr e. an modeling.
 
Di Python de bi Q re dixebitin:

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')  

references

Malpera pargîdaniyê - https://kx.com/
Malpera ji bo pêşdebiran - https://code.kx.com/v2/
Pirtûka Q Ji Bo Mirinan (bi Îngilîzî) - https://code.kx.com/q4m3/
Gotarên li ser serîlêdanên KDB+/Q ji xebatkarên kx - https://code.kx.com/v2/wp/

Source: www.habr.com

Add a comment