4.1 விளக்கம்

Apache Cassandra என்பது விநியோகிக்கப்பட்ட தரவுத்தள மேலாண்மை அமைப்பாகும், இது NoSQL அமைப்புகளின் வகுப்பைச் சேர்ந்தது மற்றும் ஹாஷ் வடிவில் வழங்கப்பட்ட பெரிய தரவு வரிசைகளின் அதிக அளவிடக்கூடிய மற்றும் நம்பகமான சேமிப்பகங்களை உருவாக்க வடிவமைக்கப்பட்டுள்ளது.

ஆரம்பத்தில், இந்த திட்டம் பேஸ்புக்கின் குடலில் உருவாக்கப்பட்டது மற்றும் 2009 இல் அப்பாச்சி மென்பொருள் அறக்கட்டளையின் பிரிவின் கீழ் மாற்றப்பட்டது, இந்த அமைப்பு தொடர்ந்து திட்டத்தை உருவாக்குகிறது. Cisco, IBM, Cloudkick, Reddit, Digg, Rackspace, Huawei, Netflix, Apple, Instagram, GitHub, Twitter மற்றும் Spotify போன்ற நிறுவனங்களுக்கு சேவைகளை வழங்குவதற்காக Cassandra அடிப்படையிலான தொழில்துறை தீர்வுகள் பயன்படுத்தப்படுகின்றன. 2011 வாக்கில், கசாண்ட்ராவின் கீழ் ஒரு தரவுத்தளத்திற்கு சேவை செய்யும் மிகப்பெரிய சர்வர் கிளஸ்டர் 400 க்கும் மேற்பட்ட இயந்திரங்களைக் கொண்டிருந்தது மற்றும் 300 TB க்கும் அதிகமான தரவைக் கொண்டிருந்தது.

ஜாவா மொழியில் எழுதப்பட்டது , இது DynamoDB ஐப் போன்ற ஒரு விநியோகிக்கப்பட்ட ஹாஷ் அமைப்பை செயல்படுத்துகிறது, இது தரவு அளவை அதிகரிப்பதன் மூலம் கிட்டத்தட்ட நேரியல் அளவிடுதல் வழங்குகிறது. இது நெடுவரிசைகளின் குடும்பத்தை அடிப்படையாகக் கொண்ட தரவு சேமிப்பக மாதிரியைப் பயன்படுத்துகிறது, இது MemcacheDB போன்ற அமைப்புகளிலிருந்து வேறுபடுகிறது, இது ஒரு முக்கிய-மதிப்பு ஜோடியில் மட்டுமே தரவைச் சேமிக்கிறது.

தவறு-சகிப்புத்தன்மை கொண்ட டிபிஎம்எஸ் வகையைச் சேர்ந்தது: தரவுத்தளத்தில் வைக்கப்படும் தரவு தானாகவே விநியோகிக்கப்பட்ட நெட்வொர்க்கின் பல முனைகளுக்குப் பிரதிபலிக்கப்படுகிறது அல்லது பல தரவு மையங்களில் சமமாக விநியோகிக்கப்படுகிறது. ஒரு முனை தோல்வியடையும் போது, ​​அதன் செயல்பாடுகள் மற்ற முனைகளால் பறக்கும் போது எடுக்கப்படும், கிளஸ்டரில் புதிய முனைகளைச் சேர்ப்பது மற்றும் கசாண்ட்ரா பதிப்பைப் புதுப்பித்தல், கூடுதல் கையேடு தலையீடு மற்றும் பிற முனைகளின் மறுசீரமைப்பு இல்லாமல் பறக்கும் போது செய்யப்படுகிறது.

இருப்பினும், சுமை சமநிலையின் தரத்தைப் பாதுகாக்க, ஏற்கனவே உள்ளவை உட்பட, ஒவ்வொரு முனைக்கும் விசைகளை (லேபிள்கள்) மீண்டும் உருவாக்க பரிந்துரைக்கப்படுகிறது. முனைகளின் எண்ணிக்கையில் (2 முறை, 3 முறை, மற்றும் பல) பல மடங்கு அதிகரிப்பு ஏற்பட்டால், ஏற்கனவே உள்ள முனைகளுக்கான முக்கிய உருவாக்கத்தைத் தவிர்க்கலாம்.

4.2 தரவு மாதிரி

கசாண்ட்ரா டெர்மினாலஜியில், ஒரு பயன்பாடு ஒரு விசைவெளியுடன் வேலை செய்கிறது, இது தொடர்புடைய மாதிரியில் தரவுத்தள திட்டத்தின் கருத்துக்கு ஒத்திருக்கிறது. இந்த விசைவெளியில் பல நெடுவரிசை குடும்பங்கள் இருக்கலாம், இது தொடர்புடைய அட்டவணையின் கருத்துக்கு ஒத்திருக்கிறது.

இதையொட்டி, நெடுவரிசை குடும்பங்களில் நெடுவரிசைகள் (நெடுவரிசை) உள்ளன, அவை பதிவில் (வரிசை) விசையை (வரிசை விசை) பயன்படுத்தி இணைக்கப்படுகின்றன. நெடுவரிசை மூன்று பகுதிகளைக் கொண்டுள்ளது: பெயர் (நெடுவரிசையின் பெயர்), நேர முத்திரை (நேர முத்திரை) மற்றும் மதிப்பு (மதிப்பு). ஒரு பதிவில் உள்ள நெடுவரிசைகள் வரிசைப்படுத்தப்பட்டுள்ளன. ஒரு தொடர்புடைய தரவுத்தளத்தைப் போலன்றி, பதிவுகள் (மற்றும் தரவுத்தளத்தின் அடிப்படையில் இவை வரிசைகள்) மற்ற பதிவுகளில் உள்ள அதே பெயர்களைக் கொண்ட நெடுவரிசைகளைக் கொண்டிருக்கின்றனவா என்பதில் எந்த கட்டுப்பாடுகளும் இல்லை - இல்லை.

நெடுவரிசை குடும்பங்கள் பல வகைகளாக இருக்கலாம், ஆனால் இந்த கட்டுரையில் இந்த விவரத்தை நாம் தவிர்ப்போம். கசாண்ட்ராவின் சமீபத்திய பதிப்புகளில், CQL மொழியைப் பயன்படுத்தி தரவை (DDL, DML) வரையறுத்தல் மற்றும் மாற்றுதல் மற்றும் இரண்டாம் நிலை குறியீடுகளை உருவாக்குவதற்கான வினவல்களை இயக்குவது சாத்தியமானது.

கசாண்ட்ராவில் சேமிக்கப்பட்ட குறிப்பிட்ட மதிப்பு இதன் மூலம் அடையாளம் காணப்படுகிறது:

  • கீஸ்பேஸ் என்பது பயன்பாட்டிற்கு (டொமைன்) ஒரு பிணைப்பாகும். ஒரே கிளஸ்டரில் வெவ்வேறு பயன்பாடுகளிலிருந்து தரவை ஹோஸ்ட் செய்ய உங்களை அனுமதிக்கிறது;
  • ஒரு நெடுவரிசை குடும்பம் ஒரு வினவலுக்கு ஒரு பிணைப்பு;
  • விசை என்பது ஒரு கிளஸ்டர் முனையுடன் பிணைப்பதாகும். சேமிக்கப்பட்ட நெடுவரிசைகள் எந்த முனைகளில் முடிவடையும் என்பதை விசை தீர்மானிக்கிறது;
  • நெடுவரிசைப் பெயர் என்பது பதிவில் உள்ள ஒரு பண்புக்கூறுக்கு ஒரு பிணைப்பாகும். ஒரு பதிவில் பல மதிப்புகளைச் சேமிக்க உங்களை அனுமதிக்கிறது.

ஒவ்வொரு மதிப்பும் நேர முத்திரையுடன் தொடர்புடையது, பதிவின் போது ஏற்படும் முரண்பாடுகளைத் தீர்க்கப் பயன்படுத்தப்படும் பயனர்-குறிப்பிட்ட எண்: பெரிய எண், புதிய நெடுவரிசை கருதப்படுகிறது, மேலும் ஒப்பிடும்போது, ​​பழைய நெடுவரிசைகளை மேலெழுதும்.

4.3 தரவு வகைகள்

தரவு வகைகளால்: கீஸ்பேஸ் மற்றும் நெடுவரிசை குடும்பம் சரங்கள் (பெயர்கள்); நேர முத்திரை 64-பிட் எண்; மற்றும் விசை, நெடுவரிசை பெயர் மற்றும் நெடுவரிசை மதிப்பு ஆகியவை பைட்டுகளின் வரிசையாகும். கசாண்ட்ரா தரவு வகைகளின் கருத்தையும் கொண்டுள்ளது. நெடுவரிசை குடும்பத்தை உருவாக்கும் போது இந்த வகைகளை டெவலப்பரால் (விரும்பினால்) குறிப்பிடலாம்.

நெடுவரிசைப் பெயர்களுக்கு இது ஒப்பீட்டாளர் என்றும், மதிப்புகள் மற்றும் விசைகளுக்கு இது வேலிடேட்டர் என்றும் அழைக்கப்படுகிறது. நெடுவரிசை பெயர்களுக்கு என்ன பைட் மதிப்புகள் அனுமதிக்கப்படுகின்றன மற்றும் அவற்றை எவ்வாறு ஆர்டர் செய்வது என்பதை முதலில் வரையறுக்கிறது. இரண்டாவது, நெடுவரிசை மற்றும் முக்கிய மதிப்புகளுக்கு என்ன பைட் மதிப்புகள் செல்லுபடியாகும்.

இந்த தரவு வகைகள் அமைக்கப்படவில்லை என்றால், கசாண்ட்ரா மதிப்புகளை சேமித்து அவற்றை பைட் சரங்களாக (BytesType) ஒப்பிடுகிறது, ஏனெனில் அவை உள்நாட்டில் சேமிக்கப்படுகின்றன.

தரவு வகைகள்:

  • பைட்ஸ் வகை : ஏதேனும் பைட் சரங்கள் (சரிபார்ப்பு இல்லை)
  • AsciiType : ASCII சரம்
  • UTF8வகை : UTF-8 சரம்
  • முழு எண் வகை : தன்னிச்சையான அளவு கொண்ட எண்
  • Int32 வகை : 4-பைட் எண்
  • நீண்ட வகை : 8-பைட் எண்
  • UUID வகை : UUID வகை 1 அல்லது 4
  • TimeUUID வகை : வகை 1 UUID
  • தேதி வகை : 8-பைட் நேர முத்திரை மதிப்பு
  • பூலியன் வகை : இரண்டு மதிப்புகள்: உண்மை = 1 அல்லது தவறு = 0
  • FloatType : 4-பைட் மிதக்கும் புள்ளி எண்
  • இரட்டை வகை : 8-பைட் மிதக்கும் புள்ளி எண்
  • தசம வகை : தன்னிச்சையான அளவு மற்றும் மிதக்கும் புள்ளி கொண்ட எண்
  • CounterColumnType : 8 பைட் கவுண்டர்

கசாண்ட்ராவில், எல்லா தரவு எழுதும் செயல்பாடுகளும் எப்போதும் மீண்டும் எழுதும் செயல்பாடுகளாகும், அதாவது, ஏற்கனவே இருக்கும் அதே விசை மற்றும் பெயரைக் கொண்ட ஒரு நெடுவரிசை நெடுவரிசை குடும்பத்திற்கு வந்தால், சேமித்ததை விட நேர முத்திரை அதிகமாக இருந்தால், மதிப்பு மேலெழுதப்படும். . பதிவு செய்யப்பட்ட மதிப்புகள் மாறாது, புதிய நெடுவரிசைகள் புதிய மதிப்புகளுடன் வருகின்றன.

கசாண்ட்ராவுக்கு எழுதுவது படிப்பதை விட வேகமானது. இது வடிவமைப்பில் எடுக்கப்பட்ட அணுகுமுறையை மாற்றுகிறது. தரவு மாதிரியை வடிவமைக்கும் பார்வையில் இருந்து கசாண்ட்ராவைக் கருத்தில் கொண்டால், ஒரு நெடுவரிசை குடும்பத்தை ஒரு அட்டவணையாக அல்ல, ஆனால் ஒரு பொருள்சார் பார்வையாக கற்பனை செய்வது எளிது - சில சிக்கலான வினவல்களின் தரவைக் குறிக்கும் ஒரு அமைப்பு, ஆனால் அதைச் சேமிக்கிறது. வட்டு.

வினவல்களைப் பயன்படுத்தி ஏதேனும் ஒரு வகையில் தரவை உருவாக்க முயற்சிப்பதற்குப் பதிலாக, இந்த வினவலுக்குத் தேவையான அனைத்தையும் இலக்கு குடும்பத்தில் சேமிக்க முயற்சிப்பது நல்லது. அதாவது, பொருள்களுக்கு இடையிலான உறவுகள் அல்லது பொருள்களுக்கு இடையிலான உறவுகளின் பக்கத்திலிருந்து அணுகுவது அவசியம், ஆனால் வினவல்களின் பக்கத்திலிருந்து அணுகுவது அவசியம்: எந்த புலங்களைத் தேர்ந்தெடுக்க வேண்டும்; பதிவுகள் எந்த வரிசையில் செல்ல வேண்டும்; முக்கியவற்றுடன் தொடர்புடைய என்ன தரவு ஒன்றாகக் கோரப்பட வேண்டும் - இவை அனைத்தும் ஏற்கனவே நெடுவரிசை குடும்பத்தில் சேமிக்கப்பட வேண்டும்.

ஒரு பதிவில் உள்ள நெடுவரிசைகளின் எண்ணிக்கை கோட்பாட்டளவில் 2 பில்லியனாக வரையறுக்கப்பட்டுள்ளது. இது ஒரு சுருக்கமான திசைதிருப்பல், மேலும் வடிவமைப்பு மற்றும் தேர்வுமுறை நுட்பங்கள் பற்றிய கட்டுரையில் மேலும் விவரங்களைக் காணலாம். இப்போது கசாண்ட்ராவில் தரவைச் சேமித்து அதைப் படிக்கும் செயல்முறையை ஆராய்வோம்.