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 பாகுபடுத்தி ஜெனரேட்டரைச் செயல்படுத்தும் K இல் ஒரு செயல்பாடு:

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 இன் நான்காவது பதிப்பின் மொழிபெயர்ப்பாளரைத் தவிர வேறில்லை. மொழி, K K க்கு மேல் Q எனப்படும் ஒரு பயனர்-நட்பு பதிப்பு சேர்க்கப்பட்டுள்ளது. Q. SQL - QSQL மற்றும் மொழிபெயர்ப்பாளரின் ஒரு குறிப்பிட்ட பேச்சுவழக்குக்கான ஆதரவையும் சேர்த்தது நினைவகம் மற்றும் வட்டில், முதலியன
 
எனவே ஒரு பயனரின் பார்வையில், KDB+ என்பது C# இலிருந்து அட்டவணைகள் மற்றும் SQL போன்ற LINQ-பாணி வெளிப்பாடுகளுக்கான ஆதரவுடன் ஒரு Q மொழி மொழிபெயர்ப்பாளர் ஆகும். இது 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 போலல்லாமல், அவை நினைவகத்தில் தரவைச் சேமிப்பதில்லை, ஆனால் பகலில் வட்டில் ஒரு சிறப்பு தற்காலிக சேமிப்பைப் பயன்படுத்துகின்றன மற்றும் நள்ளிரவில் தரவை வரலாற்று தரவுத்தளத்திற்கு நகலெடுக்கின்றன.
  • வரலாற்று தரவுத்தளங்கள் (hdb). இந்தத் தரவுத்தளங்கள் முந்தைய நாட்கள், மாதங்கள் மற்றும் வருடங்களுக்கான தரவுகளுக்கான அணுகலை வழங்குகின்றன. அவற்றின் அளவு (நாட்களில்) ஹார்ட் டிரைவ்களின் அளவால் மட்டுமே வரையறுக்கப்படுகிறது. அணுகலை விரைவுபடுத்த, தரவு எங்கும், குறிப்பாக வெவ்வேறு வட்டுகளில் இருக்கும். தேர்வு செய்ய பல அல்காரிதம்களைப் பயன்படுத்தி தரவை சுருக்க முடியும். தரவுத்தளத்தின் அமைப்பு நன்கு ஆவணப்படுத்தப்பட்டுள்ளது மற்றும் எளிமையானது, தரவு வழக்கமான கோப்புகளில் நெடுவரிசை மூலம் நெடுவரிசையில் சேமிக்கப்படுகிறது, எனவே அவை இயக்க முறைமையின் மூலம் செயலாக்கப்படலாம்.
  • ஒருங்கிணைக்கப்பட்ட தகவல்களுடன் தரவுத்தளங்கள். அவை பொதுவாக கருவியின் பெயர் மற்றும் நேர இடைவெளியின் அடிப்படையில் தொகுக்கப்பட்ட பல்வேறு திரட்டல்களைச் சேமிக்கின்றன. இன்-மெமரி தரவுத்தளங்கள் ஒவ்வொரு உள்வரும் செய்தியிலும் தங்கள் நிலையைப் புதுப்பிக்கின்றன, மேலும் வரலாற்றுத் தரவுத்தளங்கள் வரலாற்றுத் தரவுகளுக்கான அணுகலை விரைவுபடுத்த முன்-கணிக்கப்பட்ட தரவைச் சேமிக்கின்றன.
  • இறுதியாக, நுழைவாயில் செயல்முறைகள்சேவை பயன்பாடுகள் மற்றும் பயனர்கள். உள்வரும் செய்திகளை முற்றிலும் ஒத்திசைவற்ற செயலாக்கம், தரவுத்தளங்களில் விநியோகித்தல், அணுகல் உரிமைகளைச் சரிபார்த்தல் போன்றவற்றைச் செயல்படுத்த Q உங்களை அனுமதிக்கிறது. மற்ற தரவுத்தளங்களில் உள்ளதைப் போல, செய்திகள் வரம்பிடப்படவில்லை மற்றும் பெரும்பாலும் SQL வெளிப்பாடுகள் அல்ல என்பதை நினைவில் கொள்ளவும். பெரும்பாலும், SQL வெளிப்பாடு ஒரு சிறப்பு செயல்பாட்டில் மறைக்கப்பட்டுள்ளது மற்றும் பயனர் கோரிய அளவுருக்களின் அடிப்படையில் கட்டமைக்கப்படுகிறது - நேரம் மாற்றப்படுகிறது, வடிகட்டப்படுகிறது, தரவு இயல்பாக்கப்படுகிறது (எடுத்துக்காட்டாக, ஈவுத்தொகை செலுத்தப்பட்டால் பங்கு விலை சமமாக இருக்கும்) போன்றவை.

ஒரு தரவு வகைக்கான பொதுவான கட்டமைப்பு:

KDB+ தரவுத்தளம்: நிதியிலிருந்து ஃபார்முலா 1 வரை

வேகம்

Q என்பது ஒரு விளக்கமான மொழி என்றாலும், இது ஒரு திசையன் மொழியும் கூட. இதன் பொருள், பல உள்ளமைக்கப்பட்ட செயல்பாடுகள், குறிப்பாக எண்கணிதம், எண்கள், திசையன்கள், மெட்ரிக்குகள், பட்டியல்கள் - மற்றும் புரோகிராமர் நிரலை வரிசை செயல்பாடுகளாக செயல்படுத்த எதிர்பார்க்கப்படுகிறது. அத்தகைய மொழியில், ஒரு மில்லியன் தனிமங்களின் இரண்டு வெக்டார்களைச் சேர்த்தால், மொழி விளக்கப்படுவது முக்கியமில்லை; கூட்டல் ஒரு சூப்பர்-உகந்த பைனரி செயல்பாட்டின் மூலம் செய்யப்படும். Q நிரல்களில் சிங்கத்தின் பங்கு இந்த அடிப்படை திசையன் செயல்பாடுகளைப் பயன்படுத்தும் அட்டவணைகளுடன் செயல்படுவதால், வெளியீடு மிகவும் ஒழுக்கமான இயக்க வேகமாகும், இது ஒரு செயல்பாட்டில் கூட அதிக அளவிலான தரவை செயலாக்க அனுமதிக்கிறது. இது பைத்தானில் உள்ள கணித நூலகங்களைப் போன்றது - பைதான் மிகவும் மெதுவான மொழியாக இருந்தாலும், இது numpy போன்ற பல சிறந்த நூலகங்களைக் கொண்டுள்ளது, இது தொகுக்கப்பட்ட மொழியின் வேகத்தில் எண்ணியல் தரவை செயலாக்க உங்களை அனுமதிக்கிறது (இதன் மூலம், numpy கருத்தியல் ரீதியாக Q க்கு அருகில் உள்ளது. )
 
கூடுதலாக, KX அட்டவணைகளை வடிவமைப்பதற்கும் அவற்றுடன் வேலைகளை மேம்படுத்துவதற்கும் மிகவும் கவனமாக அணுகுமுறையை எடுத்தது. முதலாவதாக, பல வகையான குறியீடுகள் ஆதரிக்கப்படுகின்றன, அவை உள்ளமைக்கப்பட்ட செயல்பாடுகளால் ஆதரிக்கப்படுகின்றன மற்றும் அட்டவணை நெடுவரிசைகளுக்கு மட்டுமல்ல, எந்த திசையன்களுக்கும் - தொகுத்தல், வரிசைப்படுத்துதல், தனித்துவம் பண்பு மற்றும் வரலாற்று தரவுத்தளங்களுக்கான சிறப்புக் குழுவாக்கம். குறியீடானது எளிமையாகப் பயன்படுத்தப்படுகிறது மற்றும் நிரல்/வெக்டரில் கூறுகளைச் சேர்க்கும்போது தானாகவே சரிசெய்யப்படும். நினைவகம் மற்றும் வட்டில் உள்ள அட்டவணை நெடுவரிசைகளுக்கு குறியீடுகள் சமமாக வெற்றிகரமாகப் பயன்படுத்தப்படலாம். QSQL வினவலை இயக்கும் போது, ​​முடிந்தால் குறியீடுகள் தானாகவே பயன்படுத்தப்படும். இரண்டாவதாக, OS கோப்புகளை (நினைவக வரைபடம்) காண்பிக்கும் பொறிமுறையின் மூலம் வரலாற்று தரவுகளுடன் பணி செய்யப்படுகிறது. பெரிய அட்டவணைகள் நினைவகத்தில் ஏற்றப்படுவதில்லை; அதற்குப் பதிலாக, தேவையான நெடுவரிசைகள் நேரடியாக நினைவகத்தில் மேப் செய்யப்படுகின்றன, மேலும் அவற்றில் அந்த பகுதி மட்டுமே உண்மையில் ஏற்றப்படும் (குறியீடுகளும் இங்கே உதவுகின்றன) தேவைப்படும். தரவு நினைவகத்தில் இருந்தாலும் இல்லாவிட்டாலும் புரோகிராமருக்கு எந்த வித்தியாசமும் இல்லை; mmap உடன் பணிபுரியும் வழிமுறை முற்றிலும் Q இன் ஆழத்தில் மறைக்கப்பட்டுள்ளது.
 
KDB+ ஒரு தொடர்புடைய தரவுத்தளம் அல்ல; அட்டவணைகள் தன்னிச்சையான தரவைக் கொண்டிருக்கலாம், அதே சமயம் புதிய கூறுகள் சேர்க்கப்படும் போது அட்டவணையில் உள்ள வரிசைகளின் வரிசை மாறாது மற்றும் வினவல்களை எழுதும் போது பயன்படுத்தலாம் மற்றும் பயன்படுத்த வேண்டும். நேரத் தொடருடன் (பரிமாற்றங்கள், டெலிமெட்ரி, நிகழ்வுப் பதிவுகளிலிருந்து தரவு) பணிபுரிய இந்த அம்சம் அவசரமாகத் தேவைப்படுகிறது, ஏனெனில் தரவு நேரத்தின்படி வரிசைப்படுத்தப்பட்டால், பயனர் முதல் அல்லது கடைசி வரிசை அல்லது N ஐக் கண்டறிய எந்த SQL தந்திரங்களையும் பயன்படுத்த வேண்டியதில்லை. அட்டவணையில் உள்ள வரிசைகள் , எந்த வரி N வது வரியைப் பின்பற்றுகிறது என்பதைத் தீர்மானிக்கவும். அட்டவணை இணைப்புகள் இன்னும் எளிமைப்படுத்தப்பட்டுள்ளன, எடுத்துக்காட்டாக, 16000 மில்லியன் தனிமங்களின் அட்டவணையில் 500 VOD.L (Vodafone) பரிவர்த்தனைகளுக்கான கடைசி மேற்கோளைக் கண்டறிவதற்கு வட்டில் ஒரு நொடியும் நினைவகத்தில் பத்து மில்லி விநாடிகளும் ஆகும்.
 
நேர இணைப்பின் உதாரணம் - மேற்கோள் அட்டவணை நினைவகத்திற்கு மேப் செய்யப்பட்டுள்ளது, எனவே 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 இல் வினையுரிச்சொற்கள் என்று அழைக்கப்படுகின்றன), மேலும் அணுக்களுடன் திசையன் செயல்பாடுகளை மாற்றுவதன் மூலம் பணத்தை சேமிக்க முயற்சிக்காதீர்கள். எடுத்துக்காட்டாக, ஒரு அணிவரிசையில் ஒரு உறுப்பு Nth நிகழ்வின் குறியீட்டைக் கண்டறிய, நீங்கள் எழுத வேண்டும்:

1. (where element=vector)[N]  

சி/ஜாவா தரநிலைகளால் இது மிகவும் திறமையற்றதாகத் தோன்றினாலும் (= ஒரு பூலியன் வெக்டரை உருவாக்குகிறது, அதில் உள்ள தனிமங்களின் உண்மையான குறியீடுகளை வழங்கும்). ஆனால் இந்த குறியீடானது வெளிப்பாட்டின் அர்த்தத்தை இன்னும் தெளிவாக்குகிறது மற்றும் மெதுவான அணுக்களுக்கு பதிலாக வேகமான திசையன் செயல்பாடுகளைப் பயன்படுத்துகிறீர்கள். ஒரு திசையன் மொழிக்கும் மற்றவர்களுக்கும் இடையிலான கருத்து வேறுபாடு நிரலாக்கத்திற்கான கட்டாய மற்றும் செயல்பாட்டு அணுகுமுறைகளுக்கு இடையிலான வேறுபாட்டுடன் ஒப்பிடத்தக்கது, இதற்கு நீங்கள் தயாராக இருக்க வேண்டும்.
 
சில பயனர்கள் QSQL இல் மகிழ்ச்சியடையவில்லை. விஷயம் என்னவென்றால், இது உண்மையான SQL போல் மட்டுமே தெரிகிறது. உண்மையில், இது வினவல் தேர்வுமுறையை ஆதரிக்காத SQL போன்ற வெளிப்பாடுகளின் மொழிபெயர்ப்பாளர் மட்டுமே. பயனர் தானே உகந்த வினவல்களை எழுத வேண்டும், மேலும் Q இல், பலர் தயாராக இல்லை. மறுபுறம், நிச்சயமாக, பிளாக்-பாக்ஸ் ஆப்டிமைசரை நம்புவதை விட, எப்போதும் உகந்த வினவலை நீங்களே எழுதலாம்.
 
மேலும், Q - Q For Mortals பற்றிய புத்தகம் இங்கு இலவசமாகக் கிடைக்கிறது நிறுவனத்தின் இணையதளம், மேலும் பல பயனுள்ள பொருட்கள் அங்கு சேகரிக்கப்பட்டுள்ளன.
 
மற்றொரு பெரிய குறைபாடு உரிமத்தின் விலை. இது ஒரு CPU க்கு ஆண்டுக்கு பல்லாயிரக்கணக்கான டாலர்கள். பெரிய நிறுவனங்கள் மட்டுமே இத்தகைய செலவுகளை ஏற்க முடியும். சமீபத்தில், KX அதன் உரிமக் கொள்கையை மிகவும் நெகிழ்வானதாக மாற்றியுள்ளது மற்றும் கூகுள் மற்றும் அமேசான் கிளவுட்களில் KDB+ ஐப் பயன்படுத்தும் நேரம் அல்லது வாடகைக்கு மட்டுமே செலுத்தும் வாய்ப்பை வழங்குகிறது. KX பதிவிறக்கம் செய்ய வழங்குகிறது வணிக நோக்கங்களுக்காக இலவச பதிப்பு (32 பிட் பதிப்பு அல்லது கோரிக்கையின் பேரில் 64 பிட்).
 

போட்டியாளர்கள்

ஒரே மாதிரியான கொள்கைகளில் சில சிறப்பு தரவுத்தளங்கள் உள்ளன - நெடுவரிசை, நினைவகம், மிகப் பெரிய அளவிலான தரவுகளில் கவனம் செலுத்துகிறது. பிரச்சனை என்னவென்றால், இவை சிறப்பு தரவுத்தளங்கள். ஒரு குறிப்பிடத்தக்க உதாரணம் கிளிக்ஹவுஸ். இந்த தரவுத்தளமானது வட்டில் தரவைச் சேமிப்பதற்கும் ஒரு குறியீட்டை உருவாக்குவதற்கும் KDB+ க்கு மிகவும் ஒத்த கொள்கையைக் கொண்டுள்ளது; இது குறிப்பிடத்தக்கதாக இல்லாவிட்டாலும் KDB+ ஐ விட வேகமாக சில வினவல்களைச் செய்கிறது. ஆனால் ஒரு தரவுத்தளமாக இருந்தாலும் கூட, KDB+ - web analytics vs தன்னிச்சையான நேரத் தொடரை விட Clickhouse சிறப்பு வாய்ந்தது (இந்த வேறுபாடு மிகவும் முக்கியமானது - இதன் காரணமாக, எடுத்துக்காட்டாக, Clickhouse இல் பதிவுகளை வரிசைப்படுத்துவது சாத்தியமில்லை). ஆனால், மிக முக்கியமாக, Clickhouse ஆனது KDB+ இன் பல்துறைத்திறனைக் கொண்டிருக்கவில்லை, இது தரவை நேரடியாக தரவுத்தளத்தில் செயலாக்க அனுமதிக்கும், அதை முதலில் ஒரு தனி பயன்பாட்டில் ஏற்றுவதற்குப் பதிலாக, தன்னிச்சையான SQL வெளிப்பாடுகளை உருவாக்குதல், வினவலில் தன்னிச்சையான செயல்பாடுகளைப் பயன்படுத்துதல், செயல்முறைகளை உருவாக்குதல். வரலாற்று தரவுத்தள செயல்பாடுகளை செயல்படுத்துவதோடு தொடர்புடையது அல்ல. எனவே, மற்ற தரவுத்தளங்களுடன் KDB+ ஐ ஒப்பிடுவது கடினம்; சில பயன்பாட்டு சந்தர்ப்பங்களில் அவை சிறப்பாக இருக்கலாம் அல்லது கிளாசிக் தரவுத்தள பணிகளுக்கு வரும்போது சிறப்பாக இருக்கலாம், ஆனால் தற்காலிகத் தரவைச் செயலாக்குவதற்கு சமமான பயனுள்ள மற்றும் பல்துறை கருவியைப் பற்றி எனக்குத் தெரியாது.
 

பைதான் ஒருங்கிணைப்பு

தொழில்நுட்பத்தைப் பற்றி அறிமுகமில்லாதவர்களுக்கு KDB+ ஐ எளிதாகப் பயன்படுத்த, KX ஆனது பைத்தானுடன் இறுக்கமாக ஒருங்கிணைக்க நூலகங்களை உருவாக்கியது. நீங்கள் Q இலிருந்து எந்த பைதான் செயல்பாட்டையும் அழைக்கலாம் அல்லது அதற்கு நேர்மாறாக - பைத்தானில் இருந்து எந்த Q செயல்பாட்டையும் அழைக்கலாம் (குறிப்பாக, QSQL வெளிப்பாடுகள்). நூலகங்கள், தேவைப்பட்டால் (எப்பொழுதும் செயல்திறனுக்காக அல்ல), ஒரு மொழியின் வடிவமைப்பிலிருந்து மற்றொரு வடிவத்திற்கு தரவை மாற்றும். இதன் விளைவாக, Q மற்றும் 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/
kx ஊழியர்களிடமிருந்து KDB+/Q பயன்பாடுகள் பற்றிய கட்டுரைகள் - https://code.kx.com/v2/wp/

ஆதாரம்: www.habr.com

கருத்தைச் சேர்