KDB+ database: gikan sa pinansya hangtod sa Formula 1

KDB+, produkto sa kompanya KX kay kaylap nga nailhan sa pig-ot nga mga sirkulo, hilabihan ka paspas, columnar database nga gidisenyo alang sa pagtipig sa serye sa panahon ug analytical kalkulasyon base sa kanila. Sa sinugdan, kini (ug mao) popular kaayo sa industriya sa pinansya - ang tanan nga nag-unang 10 nga mga bangko sa pamuhunan ug daghang mga inila nga mga pondo sa koral, mga pagbinayloay ug uban pang mga organisasyon naggamit niini. Bag-ohay lang, nakahukom ang KX nga palapdan ang base sa kostumer niini ug karon nagtanyag mga solusyon sa ubang mga lugar diin adunay daghang mga datos, nga giorganisar sa oras o kung dili - telecom, bioinformatics, manufacturing, ug uban pa. Nahimo usab silang kauban sa koponan sa Aston Martin Red Bull Racing sa Formula 1, diin nagtabang sila sa pagkolekta ug pagproseso sa mga datos gikan sa mga sensor sa awto ug pag-analisar sa mga pagsulay sa tunnel sa hangin. Niini nga artikulo, gusto nakong isulti kanimo kung unsa nga mga bahin sa KDB + ang naghimo niini nga super-performing, ngano nga ang mga kompanya andam nga mogasto og daghang salapi niini, ug sa katapusan, kung ngano nga dili gyud kini usa ka database.
 
KDB+ database: gikan sa pinansya hangtod sa Formula 1
 
Niini nga artikulo sulayan nako nga isulti kanimo sa kinatibuk-an kung unsa ang KDB +, unsa nga mga kapabilidad ug mga limitasyon ang naa niini, ug kung unsa ang mga benepisyo niini alang sa mga kompanya nga gusto magproseso sa daghang mga datos. Dili nako hisgotan ang mga detalye sa pagpatuman sa KDB+ o ang mga detalye sa Q programming language niini. Ang duha niini nga mga hilisgutan kay lapad kaayo ug angayan nga magkalahi nga mga artikulo. Daghang impormasyon bahin niini nga mga hilisgutan makita sa code.kx.com, lakip ang usa ka libro sa Q - Q For Mortals (tan-awa ang link sa ubos).

Pipila ka termino

  • In-memorya nga database. Usa ka database nga nagtipig sa datos sa RAM alang sa mas paspas nga pag-access. Ang mga bentaha sa ingon nga database klaro, apan ang mga disbentaha mao ang posibilidad sa pagkawala sa datos ug ang panginahanglan nga adunay daghang memorya sa server.
  • Database sa kolumnar. Usa ka database diin ang datos gitipigan sa kolum pinaagi sa kolum kay sa pagrekord pinaagi sa rekord. Ang nag-unang bentaha sa ingon nga database mao nga ang data gikan sa usa ka kolum gitipigan sa disk ug sa memorya, nga makapadali sa pag-access niini. Dili kinahanglan nga i-load ang mga kolum nga wala gigamit sa pangutana. Ang nag-unang disbentaha mao nga lisud ang pag-usab ug pagtangtang sa mga rekord.
  • Serye sa panahon. Data nga adunay kolum sa petsa o oras. Kasagaran, ang pag-order sa oras hinungdanon alang sa ingon nga datos, aron dali nimo mahibal-an kung unsang rekord ang nag-una o nagsunod sa karon, o aron magamit ang mga gimbuhaton kansang mga sangputanan nagdepende sa pagkasunud sa mga rekord. Ang mga klasiko nga database gitukod sa usa ka hingpit nga lahi nga prinsipyo - nga nagrepresentar sa usa ka koleksyon sa mga rekord ingon usa ka set, diin ang han-ay sa mga rekord, sa prinsipyo, wala gihubit.
  • Vector. Sa konteksto sa KDB+, kini usa ka lista sa mga elemento sa parehas nga tipo sa atomo, pananglitan, mga numero. Sa laing pagkasulti, usa ka han-ay sa mga elemento. Ang mga array, dili sama sa mga lista, mahimong tipigan nga compact ug maproseso gamit ang mga instruksyon sa vector processor.

 

Kasaysayan sa Kasaysayan

Ang KX gitukod sa 1993 ni Arthur Whitney, nga kaniadto nagtrabaho sa Morgan Stanley Bank sa A+ nga pinulongan, ang manununod sa APL - usa ka orihinal ug sa usa ka higayon popular nga pinulongan sa pinansyal nga kalibutan. Siyempre, sa KX, si Arthur nagpadayon sa samang espiritu ug gimugna ang vector-functional nga pinulongan K, nga gigiyahan sa mga ideya sa radikal nga minimalism. Ang mga programa sa K morag usa ka paghugpong sa punctuation ug espesyal nga mga karakter, ang kahulogan sa mga senyales ug mga gimbuhaton nagdepende sa konteksto, ug ang matag operasyon adunay mas daghang kahulogan kay sa naandan nga programming language. Tungod niini, ang usa ka K nga programa nagkinahanglan og gamay nga luna-ang pipila ka mga linya mahimong mopuli sa mga panid sa teksto sa usa ka verbose nga pinulongan sama sa Java-ug usa ka super-concentrated nga pagpatuman sa algorithm.
 
Usa ka function sa K nga nagpatuman sa kadaghanan sa LL1 parser generator sumala sa gihatag nga gramatika:

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

 Gilangkob ni Arthur kini nga pilosopiya sa hilabihang kaepektibo nga adunay labing gamay nga paglihok sa lawas sa KDB +, nga nagpakita kaniadtong 2003 (sa akong hunahuna klaro na kung diin gikan ang letra nga K sa ngalan) ug wala’y lain kaysa usa ka tighubad sa ikaupat nga bersyon sa K. pinulongan. Usa ka mas user-friendly nga bersyon ang gidugang sa ibabaw sa K K nga gitawag Q. Q usab midugang suporta alang sa usa ka piho nga diyalekto sa SQL - QSQL, ug ang tighubad - suporta alang sa mga lamesa ingon sa usa ka sistema nga matang sa data, mga himan alang sa pagtrabaho uban sa mga lamesa sa memorya ug sa disk, ug uban pa.
 
Mao nga gikan sa panan-aw sa usa ka user, ang KDB+ usa lang ka tighubad sa Q nga lengguwahe nga adunay suporta alang sa mga lamesa ug sama sa SQL nga mga ekspresyon sa istilo sa LINQ gikan sa C #. Kini ang labing hinungdanon nga kalainan tali sa KDB+ ug uban pang mga database ug ang panguna nga bentaha sa kompetisyon, nga kanunay nga nataligam-an. Dili kini database + disabled nga auxiliary nga pinulongan, apan usa ka bug-os nga gamhanan nga programming language + built-in nga suporta alang sa mga function sa database. Kini nga kalainan adunay usa ka mahukmanon nga papel sa paglista sa tanan nga mga benepisyo sa KDB+. Pananglitan…
 

gidak-on

Sa modernong mga sumbanan, ang KDB+ kay mikroskopiko lang ang gidak-on. Kini sa literal usa ka sub-megabyte executable file ug usa ka gamay nga text file nga adunay pipila ka mga function sa sistema. Sa tinuud - wala’y usa ka megabyte, ug alang niini nga programa ang mga kompanya nagbayad napulo ka libo nga dolyar sa usa ka tuig alang sa usa ka processor sa server.

  • Kini nga gidak-on nagtugot sa KDB+ nga mobati nga maayo sa bisan unsang hardware - gikan sa usa ka Pi microcomputer hangtod sa mga server nga adunay mga terabytes nga memorya. Dili kini makaapekto sa pag-andar sa bisan unsang paagi; dugang pa, nagsugod dayon ang Q, nga nagtugot niini nga gamiton, taliwala sa uban pang mga butang, ingon usa ka sinultian sa script.
  • Niini nga gidak-on, ang Q interpreter hingpit nga mohaum sa cache sa processor, nga nagpadali sa pagpatuman sa programa.
  • Uban niini nga gidak-on sa executable nga file, ang proseso sa Q nagkinahanglan og gamay nga luna sa memorya; mahimo nimong ipadagan ang gatusan niini. Dugang pa, kung gikinahanglan, ang Q mahimong molihok uban sa napulo o gatusan ka gigabytes nga memorya sulod sa usa ka proseso.

Pagkakaron

Ang Q maayo alang sa usa ka halapad nga aplikasyon. Ang Proseso Q mahimong molihok ingon usa ka makasaysayan nga database ug maghatag dali nga pag-access sa mga terabytes sa kasayuran. Pananglitan, kami adunay daghang mga makasaysayan nga mga database, diin ang usa ka wala ma-compress nga adlaw sa datos mokuha ug labaw sa 100 gigabytes. Bisan pa, ubos sa makatarunganon nga mga pagdili, ang usa ka pangutana sa database makompleto sa napulo ngadto sa gatusan ka mga millisecond. Sa kinatibuk-an, kami adunay usa ka unibersal nga timeout alang sa mga hangyo sa gumagamit - 30 segundos - ug kini panagsa ra molihok.
 
Ang Q mahimo ra nga usa ka in-memory database. Ang bag-ong datos gidugang sa in-memorya nga mga lamesa nga dali kaayo nga ang mga hangyo sa tiggamit mao ang naglimite nga hinungdan. Ang datos sa mga lamesa gitipigan sa mga kolum, nga nagpasabut nga bisan unsang operasyon sa usa ka kolum mogamit sa cache sa processor sa tibuuk nga kapasidad. Dugang pa niini, gisulayan sa KX nga ipatuman ang tanan nga mga batakang operasyon sama sa aritmetika pinaagi sa mga instruksyon sa vector sa processor, nga nagpadako sa ilang katulin. Ang Q mahimo usab nga makahimo sa mga buluhaton nga dili kasagaran sa mga database - pananglitan, pagproseso sa streaming data ug pagkalkula sa "tinuod nga oras" (nga adunay paglangan gikan sa napulo ka millisecond hangtod sa pipila ka segundo depende sa buluhaton) lainlaing mga function sa pagtipon alang sa mga instrumento sa panalapi sa lainlaing oras. mga agwat o pagtukod og usa ka modelo sa impluwensya sa hingpit nga mga transaksyon ngadto sa merkado ug ipatuman ang profiling niini hapit diha-diha dayon human sa pagkompleto niini. Sa ingon nga mga buluhaton, kasagaran ang panguna nga paglangan sa oras dili Q, apan ang panginahanglan sa pag-synchronize sa datos gikan sa lainlaing mga gigikanan. Ang taas nga tulin nakab-ot tungod sa kamatuoran nga ang datos ug ang mga gimbuhaton nga nagproseso niini naa sa usa ka proseso, ug ang pagproseso gipamubu sa pagpatuman sa daghang mga ekspresyon sa QSQL ug pag-apil, nga wala gihubad, apan gipatuman sa binary code.
 
Sa katapusan, mahimo nimong isulat ang bisan unsang mga proseso sa serbisyo sa Q. Pananglitan, ang mga proseso sa Gateway nga awtomatiko nga nag-apod-apod sa mga hangyo sa gumagamit sa kinahanglan nga mga database ug server. Ang programmer adunay hingpit nga kagawasan sa pag-implementar sa bisan unsang algorithm alang sa pagbalanse, pag-prioritize, fault tolerance, mga katungod sa pag-access, mga quota ug bisan unsa pa nga gusto sa iyang kasingkasing. Ang panguna nga problema dinhi mao nga kinahanglan nimo nga ipatuman kining tanan sa imong kaugalingon.
 
Isip usa ka pananglitan, akong ilista kung unsang mga matang sa mga proseso ang naa kanato. Ang tanan niini aktibo nga gigamit ug nagtinabangay, naghiusa sa daghang lainlaing mga database sa usa, pagproseso sa datos gikan sa daghang mga gigikanan ug nagserbisyo sa gatusan nga mga tiggamit ug aplikasyon.

  • Mga konektor (feedhandler) sa mga tinubdan sa datos. Kini nga mga proseso kasagarang naggamit sa gawas nga mga librarya nga gikarga sa Q. Ang C interface sa Q kay yano ra kaayo ug nagtugot kanimo sa dali nga paghimo og mga proxy function para sa bisan unsang C/C++ library. Ang Q igo nga paspas aron madumala, pananglitan, pagproseso sa usa ka baha sa FIX nga mga mensahe gikan sa tanan nga European stock exchange nga dungan.
  • Mga tig-apod-apod sa datos (tickerplant), nga nagsilbing intermediate link tali sa mga konektor ug mga konsumedor. Sa parehas nga oras, gisulat nila ang umaabot nga datos sa usa ka espesyal nga binary log, nga naghatag kalig-on alang sa mga konsumedor batok sa pagkawala sa koneksyon o pag-restart.
  • In-memorya nga database (rdb). Kini nga mga database naghatag sa labing paspas nga posible nga pag-access sa hilaw, presko nga datos pinaagi sa pagtipig niini sa memorya. Kasagaran, nagtigum sila mga datos sa mga lamesa sa adlaw ug gi-reset kini sa gabii.
  • Padayon nga database (pdb). Kini nga mga database nagsiguro nga ang datos alang sa karon gitipigan sa usa ka makasaysayan nga database. Ingon sa usa ka lagda, dili sama sa rdb, wala sila magtipig og datos sa panumduman, apan naggamit sa usa ka espesyal nga cache sa disk sa maadlaw ug kopyaha ang datos sa tungang gabii ngadto sa makasaysayan nga database.
  • Mga database sa kasaysayan (hdb). Kini nga mga database naghatag og access sa datos alang sa miaging mga adlaw, bulan ug tuig. Ang ilang gidak-on (sa mga adlaw) limitado lamang sa gidak-on sa mga hard drive. Ang datos mahimong makit-an bisan asa, ilabi na sa lain-laing mga disk aron mapadali ang pag-access. Posible nga i-compress ang datos gamit ang daghang mga algorithm nga mapilian. Ang istruktura sa database maayo nga dokumentado ug yano, ang datos gitipigan kolum pinaagi sa kolum sa regular nga mga file, aron sila maproseso, lakip na pinaagi sa operating system.
  • Mga database nga adunay aggregated nga impormasyon. Gitipigan nila ang lainlaing mga panagsama, kasagaran nga adunay, gi-grupo sa ngalan sa instrumento ug agwat sa oras. Ang mga database sa in-memorya nag-update sa ilang estado sa matag umaabot nga mensahe, ug ang mga makasaysayanon nga database nagtipig sa pre-computed data aron mapadali ang pag-access sa makasaysayan nga datos.
  • Sa katapusan mga proseso sa ganghaanpagserbisyo sa mga aplikasyon ug tiggamit. Gitugotan ka sa Q nga ipatuman ang hingpit nga asynchronous nga pagproseso sa umaabot nga mga mensahe, pag-apod-apod niini sa mga database, pagsusi sa mga katungod sa pag-access, ug uban pa. Timan-i nga ang mga mensahe dili limitado ug kasagaran dili mga ekspresyon sa SQL, sama sa kaso sa ubang mga database. Kasagaran, ang ekspresyon sa SQL gitago sa usa ka espesyal nga function ug gitukod pinasukad sa mga parameter nga gihangyo sa tiggamit - ang oras nabag-o, gisala, ang data na-normalize (pananglitan, ang presyo sa stock gipakasama kung gibayran ang mga dibidendo), ug uban pa.

Kasagaran nga arkitektura alang sa usa ka tipo sa datos:

KDB+ database: gikan sa pinansya hangtod sa Formula 1

Dali

Bisan kung ang Q usa ka gihubad nga lengguwahe, kini usa usab ka vector nga lengguwahe. Kini nagpasabot nga daghang mga built-in nga mga function, ilabi na ang mga arithmetic, nagkuha sa mga argumento sa bisan unsa nga porma - mga numero, vectors, matrices, mga listahan - ug ang programmer gilauman nga ipatuman ang programa isip array operations. Sa ingon nga lengguwahe, kung magdugang ka duha ka mga vector sa usa ka milyon nga mga elemento, dili na hinungdanon nga ang sinultian gihubad; ang pagdugang himuon sa usa ka super-optimized nga binary function. Tungod kay ang bahin sa leon sa oras sa mga programa sa Q gigugol sa mga operasyon nga adunay mga lamesa nga gigamit kini nga mga sukaranan nga vectorized nga mga gimbuhaton, ang output usa ka desente kaayo nga tulin sa pagpaandar, nga gitugotan kami sa pagproseso sa daghang mga datos bisan sa usa ka proseso. Susama kini sa mga librarya sa matematika sa Python - bisan kung ang Python mismo usa ka hinay nga lengguwahe, kini adunay daghang maayo nga mga librarya sama sa numpy nga nagtugot kanimo sa pagproseso sa numerical data sa katulin sa usa ka hinipos nga pinulongan (sa paagi, ang numpy duol sa ideolohiya sa Q ).
 
Dugang pa, ang KX nag-amping pag-ayo sa pagdesinyo sa mga lamesa ug pag-optimize sa trabaho uban kanila. Una, gisuportahan ang daghang mga lahi sa mga indeks, nga gisuportahan sa mga built-in nga function ug mahimong magamit dili lamang sa mga kolum sa lamesa, apan usab sa bisan unsang mga vectors - paggrupo, paghan-ay, pagkatalagsaon nga kinaiya ug espesyal nga paggrupo alang sa mga database sa kasaysayan. Ang index kay gipadapat sa yano ug awtomatik nga i-adjust kung magdugang og mga elemento sa column/vector. Ang mga indeks mahimong parehas nga malampuson nga magamit sa mga kolum sa lamesa sa memorya ug sa disk. Kung nagpatuman sa usa ka pangutana sa QSQL, ang mga indeks awtomatikong gigamit kung mahimo. Ikaduha, ang pagtrabaho sa makasaysayan nga datos gihimo pinaagi sa mekanismo sa pagpakita sa mga file sa OS (mapa sa memorya). Ang dagkong mga lamesa dili gayud makarga sa memorya; hinoon, ang gikinahanglan nga mga kolum gimapa direkta ngadto sa panumduman ug ang bahin ra niini ang aktuwal nga gikarga (ang mga indeks makatabang usab dinhi) nga gikinahanglan. Wala’y kalainan sa programmer kung ang datos naa sa panumduman o wala; ang mekanismo sa pagtrabaho kauban ang mmap hingpit nga natago sa kahiladman sa Q.
 
Ang KDB+ dili usa ka relational database; ang mga lamesa mahimong adunay arbitraryong datos, samtang ang han-ay sa mga laray sa lamesa dili mausab kung ang mga bag-ong elemento idugang ug mahimo ug kinahanglan gamiton sa pagsulat sa mga pangutana. Ang kini nga bahin gikinahanglan dayon alang sa pagtrabaho kauban ang mga serye sa oras (data gikan sa mga pagbinayloay, telemetry, mga log sa panghitabo), tungod kay kung ang datos gisunud sa oras, nan ang tiggamit dili kinahanglan nga mogamit bisan unsang mga trick sa SQL aron makit-an ang una o katapusan nga laray o N mga laray sa lamesa , tinoa kung unsang linya ang nagsunod sa Nth nga linya, ug uban pa. Ang mga pag-apil sa lamesa mas gipasimple pa, pananglitan, ang pagpangita sa katapusang kinutlo alang sa 16000 VOD.L (Vodafone) nga mga transaksyon sa usa ka lamesa nga 500 ka milyon nga mga elemento nagkinahanglan og mga usa ka segundo sa disk ug napulo ka milliseconds sa memorya.
 
Usa ka pananglitan sa usa ka pag-apil sa oras - ang lamesa sa kinutlo gi-mapa sa panumduman, mao nga dili kinahanglan nga ipiho ang VOD.L kung diin, ang indeks sa kolum sa sym ug ang kamatuoran nga ang datos gihan-ay sa oras gigamit nga hingpit. Hapit tanan nga mga pag-apil sa Q kay regular nga mga gimbuhaton, dili bahin sa usa ka pinili nga ekspresyon:

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

Sa katapusan, angay nga hinumdoman nga ang mga inhenyero sa KX, sugod mismo ni Arthur Whitney, nahingangha gyud sa pagkaepisyente ug naningkamot pag-ayo aron makuha ang labing kaayo sa mga sukaranan nga bahin sa Q ug ma-optimize ang labing kasagaran nga mga sumbanan sa paggamit.
 

Ang resulta

Ang KDB+ popular sa mga negosyo tungod sa talagsaon nga versatility niini - parehas kini nga nagsilbi nga in-memory database, isip database alang sa pagtipig sa mga terabytes sa historical data, ug isip plataporma sa pagtuki sa datos. Tungod sa kamatuoran nga ang pagproseso sa datos direkta nga nahitabo sa database, ang taas nga tulin sa trabaho ug pagtipig sa kahinguhaan nakab-ot. Ang usa ka bug-os nga programming language nga gisagol sa mga function sa database nagtugot kanimo sa pagpatuman sa tibuok stack sa gikinahanglan nga mga proseso sa usa ka plataporma - gikan sa pagdawat sa datos ngadto sa pagproseso sa mga hangyo sa user.
 

Alang sa dugang nga impormasyon,

mga kakulangan

Usa ka mahinungdanong disbentaha sa KDB+/Q mao ang taas nga threshold sa pagsulod. Ang lengguwahe adunay usa ka katingad-an nga syntax, ang pipila nga mga gimbuhaton sobra nga gibug-atan (sama pananglit, ang kantidad adunay mga 11 nga mga kaso sa paggamit). Labing hinungdanon, nanginahanglan kini usa ka lahi nga paagi sa pagsulat sa mga programa. Sa usa ka vector nga lengguwahe, kinahanglan ka kanunay maghunahuna sa mga termino sa mga pagbag-o sa array, ipatuman ang tanan nga mga galong pinaagi sa daghang mga variant sa mapa / pagkunhod sa mga function (nga gitawag nga adverbs sa Q), ug ayaw pagsulay nga makatipig salapi pinaagi sa pag-ilis sa mga operasyon sa vector sa mga atomic. Pananglitan, aron makit-an ang indeks sa Nth nga panghitabo sa usa ka elemento sa usa ka laray, kinahanglan nimo isulat:

1. (where element=vector)[N]  

bisan kung kini daw dili kaayo epektibo sa mga sumbanan sa C/Java (= nagmugna og boolean vector, diin gibalik ang tinuod nga mga indeks sa mga elemento niini). Apan kini nga notasyon naghimo sa kahulogan sa ekspresyon nga mas tin-aw ug imong gigamit ang paspas nga mga operasyon sa vector imbes nga hinay nga atomic. Ang konsepto nga kalainan tali sa usa ka vector nga lengguwahe ug uban pa ikatandi sa kalainan tali sa kinahanglanon ug praktikal nga mga pamaagi sa pagprograma, ug kinahanglan nimo nga andam alang niini.
 
Ang ubang mga tiggamit dili usab malipayon sa QSQL. Ang punto mao nga kini morag tinuod nga SQL. Sa tinuud, kini usa lamang ka tighubad sa mga ekspresyon nga sama sa SQL nga wala nagsuporta sa pag-optimize sa pangutana. Ang tiggamit kinahanglan nga magsulat sa labing maayo nga mga pangutana sa iyang kaugalingon, ug sa Q, nga daghan ang dili andam. Sa laing bahin, siyempre, mahimo nimong isulat ang labing maayo nga pangutana sa imong kaugalingon, imbes nga magsalig sa usa ka black-box optimizer.
 
Isip dugang, usa ka libro sa Q - Q For Mortals kay libre sa website sa kompanya, daghan usab ang ubang mapuslanong materyales nga nakolekta didto.
 
Laing dako nga disbentaha mao ang gasto sa lisensya. Kana napulo ka libo nga dolyar kada tuig kada CPU. Ang mga dagkong kompanya ra ang makagasto sa ingon nga mga gasto. Bag-ohay lang, gihimo sa KX ang polisiya sa paglilisensya niini nga mas flexible ug naghatag ug kahigayonan sa pagbayad lamang sa panahon sa paggamit o pag-abang sa KDB+ sa Google ug Amazon clouds. Nagtanyag usab ang KX alang sa pag-download libre nga bersyon alang sa dili komersyal nga katuyoan (32 bit nga bersyon o 64 bit sa hangyo).
 

Mga kauban

Adunay ubay-ubay nga mga espesyal nga database nga gitukod sa susama nga mga prinsipyo - kolumnar, in-memorya, naka-focus sa daghan kaayong datos. Ang problema mao nga kini mga espesyal nga database. Usa ka talagsaong pananglitan mao ang Clickhouse. Kini nga database adunay susama kaayo nga prinsipyo sa KDB+ alang sa pagtipig sa datos sa disk ug pagtukod og indeks; kini naghimo sa pipila ka mga pangutana nga mas paspas kay sa KDB+, bisan dili kaayo. Apan bisan isip usa ka database, ang Clickhouse mas espesyalista kay sa KDB+ - web analytics vs arbitrary time series (kini nga kalainan importante kaayo - tungod niini, pananglitan, sa Clickhouse dili posible nga gamiton ang pag-order sa mga rekord). Apan, ang labing importante, ang Clickhouse walay versatility sa KDB+, usa ka pinulongan nga magtugot sa pagproseso sa data direkta sa database, kay sa pag-load una niini ngadto sa usa ka bulag nga aplikasyon, pagtukod og arbitraryong mga ekspresyon sa SQL, pagpadapat sa arbitraryong mga gimbuhaton sa usa ka pangutana, paghimo sa mga proseso. wala'y kalabutan sa pagpatuman sa mga gimbuhaton sa database sa kasaysayan. Busa, lisod ang pagtandi sa KDB+ sa ubang mga database; sila mahimong mas maayo sa pipila ka mga kaso sa paggamit o mas maayo lang kon bahin sa classic nga mga buluhaton sa database, apan wala koy nahibaloan nga lain nga parehas nga epektibo ug versatile nga himan alang sa pagproseso sa temporaryo nga datos.
 

Paghiusa sa Python

Aron mas sayon ​​​​gamiton ang KDB+ alang sa mga tawo nga dili pamilyar sa teknolohiya, ang KX naghimo og mga librarya aron mahiusa pag-ayo sa Python sulod sa usa ka proseso. Mahimo nimong tawagan ang bisan unsang function sa Python gikan sa Q, o vice versa - tawagan ang bisan unsang Q function gikan sa Python (partikular, mga ekspresyon sa QSQL). Ang mga librarya nag-convert, kung gikinahanglan (dili kanunay alang sa kaepektibo), ang datos gikan sa format sa usa ka pinulongan ngadto sa format sa lain. Ingon nga resulta, ang Q ug Python nagpuyo sa usa ka suod nga symbiosis nga ang mga utlanan tali kanila hanap. Ingon usa ka sangputanan, ang programmer, sa usa ka bahin, adunay bug-os nga pag-access sa daghang mapuslanon nga mga librarya sa Python, sa pikas bahin, nakadawat siya usa ka paspas nga sukaranan alang sa pagtrabaho sa dagkong datos nga gisagol sa Python, nga labi ka mapuslanon alang sa mga nalambigit sa pagkat-on sa makina. o pagmodelo.
 
Nagtrabaho uban sa Q sa 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')  

mga pakisayran

Ang site sa kompanya - https://kx.com/
Website alang sa mga developers - https://code.kx.com/v2/
Book Q Para sa mga Mortal (sa English) - https://code.kx.com/q4m3/
Mga artikulo sa KDB+/Q nga aplikasyon gikan sa mga empleyado sa kx - https://code.kx.com/v2/wp/

Source: www.habr.com

Idugang sa usa ka comment