Cronfa ddata KDB+: o gyllid i Fformiwla 1

KDB+, cynnyrch cwmni KX yn hysbys yn eang mewn cylchoedd cul, hynod gyflym, cronfa ddata golofnog a gynlluniwyd ar gyfer storio cyfresi amser a chyfrifiadau dadansoddol yn seiliedig arnynt. I ddechrau, roedd (ac mae) yn boblogaidd iawn yn y diwydiant ariannol - mae pob un o'r 10 banc buddsoddi gorau a llawer o gronfeydd rhagfantoli adnabyddus, cyfnewidfeydd a sefydliadau eraill yn ei ddefnyddio. Yn ddiweddar, penderfynodd KX ehangu ei sylfaen cwsmeriaid a nawr cynnig atebion mewn meysydd eraill lle mae llawer iawn o ddata, wedi'i drefnu yn ôl amser neu fel arall - telathrebu, biowybodeg, gweithgynhyrchu, ac ati. Daethant hefyd yn bartner i dîm Rasio Red Bull Aston Martin yn Fformiwla 1, lle maent yn helpu i gasglu a phrosesu data o synwyryddion ceir a dadansoddi profion twnnel gwynt. Yn yr erthygl hon, rwyf am ddweud wrthych pa nodweddion KDB + sy'n ei gwneud yn uwch-berfformio, pam mae cwmnïau'n barod i wario llawer o arian arno, ac yn olaf, pam nad yw'n gronfa ddata mewn gwirionedd.
 
Cronfa ddata KDB+: o gyllid i Fformiwla 1
 
Yn yr erthygl hon byddaf yn ceisio dweud wrthych yn gyffredinol beth yw KDB+, pa alluoedd a chyfyngiadau sydd ganddo, a beth yw ei fanteision i gwmnïau sydd am brosesu symiau mawr o ddata. Nid af i fanylion gweithrediad KDB+ na manylion ei iaith raglennu Q. Mae'r ddau bwnc hyn yn eang iawn ac yn haeddu erthyglau ar wahân. Mae llawer o wybodaeth am y pynciau hyn ar gael yn code.kx.com, gan gynnwys llyfr ar Q - Q For Mortals (gweler y ddolen isod).

Rhai termau

  • Cronfa ddata mewn cof. Cronfa ddata sy'n storio data mewn RAM i gael mynediad cyflymach. Mae manteision cronfa ddata o'r fath yn glir, ond yr anfanteision yw'r posibilrwydd o golli data a'r angen i gael llawer o gof ar y gweinydd.
  • Cronfa ddata colofn. Cronfa ddata lle mae data'n cael ei storio fesul colofn yn hytrach na chofnod wrth gofnod. Prif fantais cronfa ddata o'r fath yw bod data o un golofn yn cael ei storio gyda'i gilydd ar ddisg ac yn y cof, sy'n cyflymu mynediad iddo yn sylweddol. Nid oes angen llwytho colofnau nad ydynt yn cael eu defnyddio yn yr ymholiad. Y brif anfantais yw ei bod yn anodd addasu a dileu cofnodion.
  • Cyfres amser. Data gyda cholofn dyddiad neu amser. Yn nodweddiadol, mae archebu amser yn bwysig ar gyfer data o'r fath, fel y gallwch chi benderfynu'n hawdd pa gofnod sy'n rhagflaenu neu'n dilyn yr un gyfredol, neu i gymhwyso swyddogaethau y mae eu canlyniadau'n dibynnu ar drefn y cofnodion. Mae cronfeydd data clasurol wedi'u hadeiladu ar egwyddor hollol wahanol - yn cynrychioli casgliad o gofnodion fel set, lle nad yw trefn y cofnodion, mewn egwyddor, wedi'i diffinio.
  • Fector. Yng nghyd-destun KDB+, dyma restr o elfennau o'r un math atomig, er enghraifft, rhifau. Mewn geiriau eraill, amrywiaeth o elfennau. Gellir storio araeau, yn wahanol i restrau, yn gryno a'u prosesu gan ddefnyddio cyfarwyddiadau prosesydd fector.

 

Gwybodaeth hanesyddol

Sefydlwyd KX yn 1993 gan Arthur Whitney, a fu gynt yn gweithio ym Manc Morgan Stanley ar yr iaith A+, yn olynydd i APL - iaith wreiddiol iawn a phoblogaidd ar un adeg yn y byd ariannol. Wrth gwrs, yn KX, parhaodd Arthur yn yr un ysbryd a chreodd yr iaith fector-swyddogaethol K, dan arweiniad syniadau minimaliaeth radical. Mae rhaglenni K yn edrych fel sborion o atalnodi a chymeriadau arbennig, mae ystyr arwyddion a swyddogaethau yn dibynnu ar y cyd-destun, ac mae gan bob gweithrediad lawer mwy o ystyr nag y mae mewn ieithoedd rhaglennu confensiynol. Oherwydd hyn, nid yw rhaglen K yn cymryd llawer o le - gall ychydig o linellau ddisodli tudalennau o destun mewn iaith lafar fel Java - ac mae'n weithrediad hynod grynodedig o'r algorithm.
 
Swyddogaeth yn K sy'n gweithredu'r rhan fwyaf o'r generadur parser LL1 yn ôl gramadeg penodol:

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

 Ymgorfforodd Arthur yr athroniaeth hon o effeithlonrwydd eithafol gyda lleiafswm o symudiadau corff yn KDB+, a ymddangosodd yn 2003 (credaf ei bod bellach yn glir o ble y daw'r llythyren K yn yr enw) ac nid yw'n ddim mwy na dehonglydd o bedwaredd fersiwn y K iaith. Mae fersiwn mwy hawdd ei ddefnyddio wedi'i ychwanegu ar ben K K o'r enw Q. Ychwanegodd Q hefyd gefnogaeth ar gyfer tafodiaith benodol o SQL - QSQL, a'r cyfieithydd ar y pryd - cefnogaeth i dablau fel math o ddata system, offer ar gyfer gweithio gyda thablau yn y cof ac ar ddisg, ac ati.
 
Felly o safbwynt defnyddiwr, cyfieithydd iaith Q yn unig yw KDB+ gyda chefnogaeth ar gyfer tablau ac ymadroddion arddull LINQ tebyg i SQL o C#. Dyma'r gwahaniaeth pwysicaf rhwng KDB+ a chronfeydd data eraill a'i brif fantais gystadleuol, sy'n aml yn cael ei hanwybyddu. Nid cronfa ddata + iaith ategol anabl mo hon, ond iaith raglennu bwerus lawn + cefnogaeth adeiledig ar gyfer swyddogaethau cronfa ddata. Bydd y gwahaniaeth hwn yn chwarae rhan bendant wrth restru holl fanteision KDB+. Er enghraifft…
 

Maint

Yn ôl safonau modern, maint microsgopig yn unig yw KDB+. Mae'n llythrennol yn un ffeil gweithredadwy is-megabeit ac un ffeil testun bach gyda rhai swyddogaethau system. Mewn gwirionedd - llai nag un megabeit, ac ar gyfer y rhaglen hon mae cwmnïau'n talu degau o filoedd o ddoleri y flwyddyn am un prosesydd ar y gweinydd.

  • Mae'r maint hwn yn caniatáu i KDB+ deimlo'n wych ar unrhyw galedwedd - o ficrogyfrifiadur Pi i weinyddion gyda terabytes o gof. Nid yw hyn yn effeithio ar y swyddogaeth mewn unrhyw ffordd; ar ben hynny, mae Q yn cychwyn ar unwaith, sy'n caniatáu iddo gael ei ddefnyddio, ymhlith pethau eraill, fel iaith sgriptio.
  • Ar y maint hwn, mae'r dehonglydd Q yn ffitio'n gyfan gwbl i storfa'r prosesydd, sy'n cyflymu gweithrediad y rhaglen.
  • Gyda'r maint hwn o'r ffeil gweithredadwy, mae'r broses Q yn cymryd lle dibwys yn y cof; gallwch chi redeg cannoedd ohonyn nhw. Ar ben hynny, os oes angen, gall Q weithredu gyda degau neu gannoedd o gigabeit o gof o fewn un broses.

Amlbwrpasedd

Mae Q yn wych ar gyfer ystod eang o gymwysiadau. Gall Proses Q weithredu fel cronfa ddata hanesyddol a darparu mynediad cyflym i derabytes o wybodaeth. Er enghraifft, mae gennym ddwsinau o gronfeydd data hanesyddol, ac mewn rhai ohonynt mae un diwrnod anghywasgedig o ddata yn cymryd mwy na 100 gigabeit. Fodd bynnag, o dan gyfyngiadau rhesymol, bydd ymholiad i'r gronfa ddata yn cael ei gwblhau mewn degau i gannoedd o filieiliadau. Yn gyffredinol, mae gennym derfyn amser cyffredinol ar gyfer ceisiadau defnyddwyr - 30 eiliad - ac anaml iawn y mae'n gweithio.
 
Gallai Q fod yn gronfa ddata yn y cof yr un mor hawdd. Mae data newydd yn cael ei ychwanegu at dablau cof mor gyflym fel mai ceisiadau defnyddwyr yw'r ffactor cyfyngol. Mae data mewn tablau'n cael eu storio mewn colofnau, sy'n golygu y bydd unrhyw weithrediad ar golofn yn defnyddio storfa'r prosesydd i'w lawn gapasiti. Yn ogystal â hyn, ceisiodd KX weithredu'r holl weithrediadau sylfaenol megis rhifyddeg trwy gyfarwyddiadau fector y prosesydd, gan wneud y mwyaf o'u cyflymder. Gall Q hefyd gyflawni tasgau nad ydynt yn nodweddiadol ar gyfer cronfeydd data - er enghraifft, prosesu data ffrydio a chyfrifo mewn “amser real” (gydag oedi o ddegau o filieiliadau i sawl eiliad yn dibynnu ar y dasg) swyddogaethau agregu amrywiol ar gyfer offerynnau ariannol ar gyfer amser gwahanol cyfnodau neu adeiladu model o ddylanwad trafodion perffaith i'r farchnad a chyflawni ei broffilio bron yn syth ar ôl ei gwblhau. Mewn tasgau o'r fath, yn fwyaf aml nid Q yw'r prif oedi amser, ond yr angen i gydamseru data o wahanol ffynonellau. Cyflawnir cyflymder uchel oherwydd y ffaith bod y data a'r swyddogaethau sy'n eu prosesu mewn un broses, ac mae prosesu yn cael ei leihau i weithredu nifer o ymadroddion QSQL ac ymuno, nad ydynt yn cael eu dehongli, ond sy'n cael eu gweithredu gan god deuaidd.
 
Yn olaf, gallwch ysgrifennu unrhyw brosesau gwasanaeth yn Q. Er enghraifft, prosesau Gateway sy'n dosbarthu ceisiadau defnyddwyr yn awtomatig i'r cronfeydd data a'r gweinyddwyr angenrheidiol. Mae gan y rhaglennydd ryddid llwyr i weithredu unrhyw algorithm ar gyfer cydbwyso, blaenoriaethu, goddef diffygion, hawliau mynediad, cwotâu ac yn y bôn unrhyw beth arall y mae ei galon yn ei ddymuno. Y brif broblem yma yw y bydd yn rhaid i chi weithredu hyn i gyd eich hun.
 
Er enghraifft, byddaf yn rhestru pa fathau o brosesau sydd gennym. Mae pob un ohonynt yn cael eu defnyddio'n weithredol ac yn gweithio gyda'i gilydd, gan gyfuno dwsinau o wahanol gronfeydd data yn un, prosesu data o ffynonellau lluosog a gwasanaethu cannoedd o ddefnyddwyr a chymwysiadau.

  • Cysylltwyr (triniwr porthiant) â ffynonellau data. Mae'r prosesau hyn fel arfer yn defnyddio llyfrgelloedd allanol sy'n cael eu llwytho i Q. Mae'r rhyngwyneb C yn Q yn hynod o syml ac yn caniatáu ichi greu swyddogaethau dirprwy yn hawdd ar gyfer unrhyw lyfrgell C/C++. Mae Q yn ddigon cyflym i drin, er enghraifft, prosesu llif o negeseuon FIX o bob cyfnewidfa stoc Ewropeaidd ar yr un pryd.
  • Dosbarthwyr data (tickerplant), sy'n gwasanaethu fel cyswllt canolradd rhwng cysylltwyr a defnyddwyr. Ar yr un pryd, maent yn ysgrifennu data sy'n dod i mewn i log deuaidd arbennig, gan ddarparu cadernid i ddefnyddwyr yn erbyn colledion cysylltiad neu ailgychwyn.
  • Cronfa ddata er cof (rdb). Mae'r cronfeydd data hyn yn darparu'r mynediad cyflymaf posibl at ddata amrwd, ffres trwy ei storio yn y cof. Yn nodweddiadol, maent yn cronni data mewn tablau yn ystod y dydd ac yn eu hailosod yn y nos.
  • Parhau cronfa ddata (pdb). Mae'r cronfeydd data hyn yn sicrhau bod data ar gyfer heddiw yn cael ei storio mewn cronfa ddata hanesyddol. Fel rheol, yn wahanol i rdb, nid ydynt yn storio data yn y cof, ond yn defnyddio storfa arbennig ar ddisg yn ystod y dydd ac yn copïo'r data am hanner nos i'r gronfa ddata hanesyddol.
  • Cronfeydd data hanesyddol (hdb). Mae'r cronfeydd data hyn yn darparu mynediad i ddata ar gyfer dyddiau, misoedd a blynyddoedd blaenorol. Mae eu maint (mewn dyddiau) wedi'i gyfyngu gan faint y gyriannau caled yn unig. Gellir lleoli data yn unrhyw le, yn enwedig ar wahanol ddisgiau i gyflymu mynediad. Mae'n bosibl cywasgu data gan ddefnyddio sawl algorithm i ddewis ohonynt. Mae strwythur y gronfa ddata wedi'i ddogfennu'n dda ac yn syml, mae'r data'n cael ei storio fesul colofn mewn ffeiliau rheolaidd, fel y gellir eu prosesu, gan gynnwys trwy'r system weithredu.
  • Cronfeydd data gyda gwybodaeth gyfun. Maen nhw'n storio agregau amrywiol, fel arfer gyda, wedi'u grwpio yn ôl enw offeryn a chyfnod amser. Mae cronfeydd data cof yn diweddaru eu cyflwr gyda phob neges sy'n dod i mewn, ac mae cronfeydd data hanesyddol yn storio data wedi'i rag-gyfrifo i gyflymu mynediad at ddata hanesyddol.
  • O'r diwedd prosesau porthgwasanaethu cymwysiadau a defnyddwyr. Mae Q yn caniatáu ichi weithredu prosesu negeseuon sy'n dod i mewn yn gwbl anghydamserol, gan eu dosbarthu ar draws cronfeydd data, gwirio hawliau mynediad, ac ati. Sylwch nad yw negeseuon yn gyfyngedig ac yn aml nid ydynt yn fynegiadau SQL, fel sy'n wir mewn cronfeydd data eraill. Yn fwyaf aml, mae mynegiant SQL wedi'i guddio mewn swyddogaeth arbennig ac fe'i hadeiladir yn seiliedig ar y paramedrau y mae'r defnyddiwr yn gofyn amdanynt - mae amser yn cael ei drosi, ei hidlo, mae data'n cael ei normaleiddio (er enghraifft, mae pris y stoc yn gyfartal os talwyd difidendau), ac ati.

Pensaernïaeth nodweddiadol ar gyfer un math o ddata:

Cronfa ddata KDB+: o gyllid i Fformiwla 1

Cyflymder

Er bod Q yn iaith ddehongli, mae hefyd yn iaith fector. Mae hyn yn golygu bod llawer o swyddogaethau adeiledig, yn enwedig rhai rhifyddol, yn cymryd dadleuon o unrhyw ffurf - rhifau, fectorau, matricsau, rhestrau - a disgwylir i'r rhaglennydd weithredu'r rhaglen fel gweithrediadau arae. Mewn iaith o'r fath, os ychwanegwch ddau fector o filiwn o elfennau, nid yw bellach o bwys bod yr iaith yn cael ei dehongli; bydd yr ychwanegiad yn cael ei berfformio gan swyddogaeth ddeuaidd super-optimized. Gan fod cyfran y llew o'r amser mewn rhaglenni Q yn cael ei dreulio ar weithrediadau gyda thablau sy'n defnyddio'r swyddogaethau fectoraidd sylfaenol hyn, mae'r allbwn yn gyflymder gweithredu gweddus iawn, sy'n ein galluogi i brosesu llawer iawn o ddata hyd yn oed mewn un broses. Mae hyn yn debyg i lyfrgelloedd mathemategol yn Python - er bod Python ei hun yn iaith araf iawn, mae ganddo lawer o lyfrgelloedd rhagorol fel numpy sy'n eich galluogi i brosesu data rhifiadol ar gyflymder iaith a gasglwyd (gyda llaw, mae numpy yn ideolegol agos at Q ).
 
Yn ogystal, cymerodd KX agwedd ofalus iawn at ddylunio tablau ac optimeiddio gwaith gyda nhw. Yn gyntaf, cefnogir sawl math o fynegeion, sy'n cael eu cefnogi gan swyddogaethau adeiledig a gellir eu cymhwyso nid yn unig i golofnau tabl, ond hefyd i unrhyw fectorau - grwpio, didoli, nodwedd unigrywiaeth a grwpio arbennig ar gyfer cronfeydd data hanesyddol. Mae'r mynegai yn cael ei gymhwyso'n syml ac yn cael ei addasu'n awtomatig wrth ychwanegu elfennau i'r golofn / fector. Gellir cymhwyso mynegeion yr un mor llwyddiannus i golofnau tablau yn y cof ac ar ddisg. Wrth weithredu ymholiad QSQL, defnyddir mynegeion yn awtomatig os yn bosibl. Yn ail, mae gwaith gyda data hanesyddol yn cael ei wneud trwy'r mecanwaith ar gyfer arddangos ffeiliau OS (map cof). Nid yw tablau mawr byth yn cael eu llwytho i'r cof; yn lle hynny, mae'r colofnau angenrheidiol yn cael eu mapio'n uniongyrchol i'r cof a dim ond y rhan honno ohonynt sy'n cael ei lwytho mewn gwirionedd (mae mynegeion hefyd yn helpu yma) sydd eu hangen. Nid yw'n gwneud unrhyw wahaniaeth i'r rhaglennydd a yw'r data yn y cof ai peidio; mae'r mecanwaith ar gyfer gweithio gyda mmap wedi'i guddio'n llwyr yn nyfnder Q.
 
Nid yw KDB+ yn gronfa ddata berthynol; gall tablau gynnwys data mympwyol, tra nad yw trefn y rhesi yn y tabl yn newid pan ychwanegir elfennau newydd a gellir a dylid ei defnyddio wrth ysgrifennu ymholiadau. Mae angen y nodwedd hon ar frys ar gyfer gweithio gyda chyfresi amser (data o gyfnewidfeydd, telemetreg, logiau digwyddiadau), oherwydd os caiff y data ei ddidoli yn ôl amser, yna nid oes angen i'r defnyddiwr ddefnyddio unrhyw driciau SQL i ddod o hyd i'r rhes gyntaf neu'r rhes olaf neu N. rhesi yn y tabl , pennwch pa linell sy'n dilyn yr Nfed llinell, ac ati. Mae uniadau tabl yn cael eu symleiddio hyd yn oed ymhellach, er enghraifft, mae dod o hyd i'r dyfynbris olaf ar gyfer trafodion 16000 VOD.L (Vodafone) mewn tabl o 500 miliwn o elfennau yn cymryd tua eiliad ar ddisg a degau o filieiliadau yn y cof.
 
Enghraifft o ymuno amser - mae'r tabl dyfynbris wedi'i fapio i'r cof, felly nid oes angen nodi VOD.L yn lle, mae'r mynegai ar y golofn sym a'r ffaith bod y data wedi'i drefnu yn ôl amser yn cael eu defnyddio'n ymhlyg. Mae bron pob uniad yn Q yn swyddogaethau rheolaidd, nid yn rhan o fynegiad dethol:

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

Yn olaf, mae'n werth nodi bod y peirianwyr yn KX, gan ddechrau gydag Arthur Whitney ei hun, yn wirioneddol obsesiwn ag effeithlonrwydd ac yn mynd i drafferth fawr i gael y gorau o nodweddion safonol y Q a gwneud y gorau o'r patrymau defnydd mwyaf cyffredin.
 

Cyfanswm

Mae KDB+ yn boblogaidd ymhlith busnesau yn bennaf oherwydd ei hyblygrwydd eithriadol - mae'n gwasanaethu'r un mor dda fel cronfa ddata cof, fel cronfa ddata ar gyfer storio terabytes o ddata hanesyddol, ac fel llwyfan ar gyfer dadansoddi data. Oherwydd y ffaith bod prosesu data yn digwydd yn uniongyrchol yn y gronfa ddata, cyflawnir cyflymder uchel o waith ac arbedion adnoddau. Mae iaith raglennu lawn wedi'i hintegreiddio â swyddogaethau cronfa ddata yn caniatáu ichi weithredu'r pentwr cyfan o brosesau angenrheidiol ar un platfform - o dderbyn data i brosesu ceisiadau defnyddwyr.
 

Am fwy o wybodaeth,

Cyfyngiadau

Anfantais sylweddol KDB+/Q yw'r trothwy mynediad uchel. Mae gan yr iaith gystrawen ryfedd, mae rhai swyddogaethau wedi'u gorlwytho'n drwm (mae gan werth, er enghraifft, tua 11 achos defnydd). Yn bwysicaf oll, mae angen dull hollol wahanol o ysgrifennu rhaglenni. Mewn iaith fector, rhaid i chi bob amser feddwl yn nhermau trawsnewidiadau arae, gweithredu pob dolen trwy sawl amrywiad o'r ffwythiannau map / lleihau (a elwir yn adferfau yn Q), a pheidiwch byth â cheisio arbed arian trwy ddisodli gweithrediadau fector gyda rhai atomig. Er enghraifft, i ddod o hyd i fynegai'r Nfed digwyddiad o elfen mewn arae, dylech ysgrifennu:

1. (where element=vector)[N]  

er bod hyn yn ymddangos yn ofnadwy o aneffeithlon yn ôl safonau C/Java (= yn creu fector boolean, lle mae'n dychwelyd gwir fynegeion yr elfennau ynddo). Ond mae'r nodiant hwn yn gwneud ystyr y mynegiant yn gliriach ac rydych chi'n defnyddio gweithrediadau fector cyflym yn lle rhai atomig araf. Mae'r gwahaniaeth cysyniadol rhwng iaith fector ac eraill yn debyg i'r gwahaniaeth rhwng ymagweddau gorfodol a swyddogaethol at raglennu, ac mae angen i chi fod yn barod ar gyfer hyn.
 
Mae rhai defnyddwyr hefyd yn anhapus gyda QSQL. Y pwynt yw ei fod ond yn edrych fel SQL go iawn. Mewn gwirionedd, dim ond dehonglydd o ymadroddion tebyg i SQL ydyw nad yw'n cefnogi optimeiddio ymholiad. Rhaid i'r defnyddiwr ysgrifennu'r ymholiadau gorau posibl ei hun, ac yn Q, nad yw llawer yn barod ar eu cyfer. Ar y llaw arall, wrth gwrs, gallwch chi bob amser ysgrifennu'r ymholiad gorau posibl eich hun, yn hytrach na dibynnu ar optimizer blwch du.
 
Yn ogystal, mae llyfr ar Q - Q For Mortals ar gael am ddim yn gwefan y cwmni, mae yna hefyd lawer o ddeunyddiau defnyddiol eraill wedi'u casglu yno.
 
Anfantais fawr arall yw cost y drwydded. Dyna ddegau o filoedd o ddoleri y flwyddyn fesul CPU. Dim ond cwmnïau mawr sy'n gallu fforddio treuliau o'r fath. Yn ddiweddar, mae KX wedi gwneud ei bolisi trwyddedu yn fwy hyblyg ac yn rhoi'r cyfle i dalu dim ond am yr amser defnyddio neu rentu KDB + yng nghymylau Google ac Amazon. Mae KX hefyd yn cynnig i'w lawrlwytho fersiwn am ddim at ddibenion anfasnachol (Fersiwn 32 did neu 64 did ar gais).
 

Cystadleuwyr

Mae cryn dipyn o gronfeydd data arbenigol wedi'u hadeiladu ar egwyddorion tebyg - colofnog, er cof, sy'n canolbwyntio ar symiau mawr iawn o ddata. Y broblem yw bod y rhain yn gronfeydd data arbenigol. Enghraifft drawiadol yw Clickhouse. Mae gan y gronfa ddata hon egwyddor debyg iawn i KDB+ ar gyfer storio data ar ddisg ac adeiladu mynegai; mae'n perfformio rhai ymholiadau yn gyflymach na KDB+, er nad yn arwyddocaol. Ond hyd yn oed fel cronfa ddata, mae Clickhouse yn fwy arbenigol na KDB+ - dadansoddeg gwe yn erbyn cyfresi amser mympwyol (mae'r gwahaniaeth hwn yn bwysig iawn - oherwydd hynny, er enghraifft, yn Clickhouse nid yw'n bosibl defnyddio trefn cofnodion). Ond, yn bwysicaf oll, nid oes gan Clickhouse amlbwrpasedd KDB+, iaith a fyddai'n caniatáu prosesu data'n uniongyrchol yn y gronfa ddata, yn hytrach na'i lwytho'n gyntaf i raglen ar wahân, adeiladu ymadroddion SQL mympwyol, cymhwyso swyddogaethau mympwyol mewn ymholiad, creu prosesau ddim yn ymwneud â chyflawni swyddogaethau cronfa ddata hanesyddol . Felly, mae'n anodd cymharu KDB+ â chronfeydd data eraill; efallai eu bod yn well mewn rhai achosion defnydd neu'n well yn syml o ran tasgau cronfa ddata clasurol, ond ni wn am offeryn arall yr un mor effeithiol ac amlbwrpas ar gyfer prosesu data dros dro.
 

Integreiddio Python

Er mwyn gwneud KDB+ yn haws ei ddefnyddio i bobl sy'n anghyfarwydd â'r dechnoleg, creodd KX lyfrgelloedd i integreiddio'n dynn â Python o fewn un broses. Gallwch naill ai ffonio unrhyw swyddogaeth Python o Q, neu i'r gwrthwyneb - ffoniwch unrhyw swyddogaeth Q o Python (yn benodol, ymadroddion QSQL). Mae llyfrgelloedd yn trosi, os oes angen (nid bob amser er mwyn effeithlonrwydd), data o fformat un iaith i fformat iaith arall. O ganlyniad, mae Q a Python yn byw mewn symbiosis mor agos nes bod y ffiniau rhyngddynt yn aneglur. O ganlyniad, mae gan y rhaglennydd, ar y naill law, fynediad llawn i nifer o lyfrgelloedd Python defnyddiol, ar y llaw arall, mae'n derbyn sylfaen gyflym ar gyfer gweithio gyda data mawr wedi'i integreiddio i Python, sy'n arbennig o ddefnyddiol i'r rhai sy'n ymwneud â dysgu peiriannau. neu fodelu.
 
Gweithio gyda Q yn 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')  

cyfeiriadau

Safle'r cwmni - https://kx.com/
Gwefan i ddatblygwyr - https://code.kx.com/v2/
Llyfr Q For Mortals (yn Saesneg) - https://code.kx.com/q4m3/
Erthyglau ar gymwysiadau KDB+/Q gan weithwyr kx - https://code.kx.com/v2/wp/

Ffynhonnell: hab.com

Ychwanegu sylw