Google Cloud Spanner: நல்லது, கெட்டது மற்றும் அசிங்கமானது

வணக்கம், கப்ரோவ்ஸ்க் குடியிருப்பாளர்கள். வழக்கம் போல், புதிய பாடப்பிரிவுகளைத் தொடங்குவதற்கு முன் சுவாரஸ்யமான விஷயங்களைப் பகிர்ந்து கொள்கிறோம். இன்று, குறிப்பாக உங்களுக்காக, பாடத்திட்டத்தின் துவக்கத்துடன் ஒத்துப்போக Google Cloud Spanner பற்றிய கட்டுரையை நாங்கள் வெளியிட்டுள்ளோம். "டெவலப்பர்களுக்கான AWS".

Google Cloud Spanner: நல்லது, கெட்டது மற்றும் அசிங்கமானது

முதலில் வெளியிடப்பட்டது Lightspeed HQ வலைப்பதிவு.

உலகெங்கிலும் உள்ள சில்லறை விற்பனையாளர்கள், உணவகங்கள் மற்றும் ஆன்லைன் விற்பனையாளர்களுக்கு பல்வேறு கிளவுட் அடிப்படையிலான POS தீர்வுகளை வழங்கும் நிறுவனமாக, Lightspeed பல்வேறு வகையான தரவுத்தள தளங்களை பல்வேறு பரிவர்த்தனை, பகுப்பாய்வு மற்றும் தேடல் பயன்பாட்டு நிகழ்வுகளுக்கு பயன்படுத்துகிறது. இந்த தரவுத்தள இயங்குதளங்கள் ஒவ்வொன்றும் அதன் சொந்த பலம் மற்றும் பலவீனங்களைக் கொண்டுள்ளன.எனவே, கூகிள் கிளவுட் ஸ்பேனரை சந்தையில் அறிமுகப்படுத்தியபோது - கிட்டத்தட்ட வரம்பற்ற கிடைமட்ட அளவிடுதல் மற்றும் 99,999% சேவை நிலை ஒப்பந்தம் (SLA) போன்ற தொடர்புடைய தரவுத்தளங்களின் உலகில் காணப்படாத நம்பிக்கைக்குரிய அம்சங்கள் — எங்கள் கைகளைப் பெறுவதற்கான வாய்ப்பை நாங்கள் தவறவிட முடியாது!

Cloud Spanner உடனான எங்கள் அனுபவத்தின் விரிவான கண்ணோட்டத்தையும், நாங்கள் பயன்படுத்திய மதிப்பீட்டு அளவுகோல்களையும் வழங்க, பின்வரும் தலைப்புகளை நாங்கள் உள்ளடக்குவோம்:

  1. எங்கள் மதிப்பீட்டு அளவுகோல்கள்
  2. சுருக்கமாக Cloud Spanner
  3. எங்கள் மதிப்பீடு
  4. எங்கள் கண்டுபிடிப்புகள்

Google Cloud Spanner: நல்லது, கெட்டது மற்றும் அசிங்கமானது

1. எங்கள் மதிப்பீட்டு அளவுகோல்கள்

கிளவுட் ஸ்பேனரின் பிரத்தியேகங்கள், சந்தையில் உள்ள பிற தீர்வுகளுடன் அதன் ஒற்றுமைகள் மற்றும் வேறுபாடுகள் ஆகியவற்றில் மூழ்குவதற்கு முன், எங்கள் உள்கட்டமைப்பில் கிளவுட் ஸ்பேனரை எங்கு வரிசைப்படுத்துவது என்பதைக் கருத்தில் கொள்ளும்போது நாம் மனதில் வைத்திருந்த முக்கிய பயன்பாட்டு நிகழ்வுகளைப் பற்றி முதலில் பேசுவோம்:

  • (முக்கியமான) பாரம்பரிய SQL தரவுத்தள தீர்வுக்கு மாற்றாக
  • OLAP ஆதரவுடன் OLTP தீர்வு எப்படி

குறிப்பு: எளிமை மற்றும் ஒப்பீட்டின் எளிமைக்காக, இந்தக் கட்டுரை GCP Cloud SQL மற்றும் Amazon AWS RDS தீர்வு குடும்பங்களின் MySQL வகைகளுடன் Cloud Spanner ஐ ஒப்பிடுகிறது.

பாரம்பரிய SQL தரவுத்தள தீர்வுக்கு மாற்றாக கிளவுட் ஸ்பேனரைப் பயன்படுத்துதல்

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

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

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

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

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

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

முழுமையாக இடம்பெற்றுள்ளது ஒரு சேவையாக DBMS வெவ்வேறு கோணங்களில் மதிப்பீடு செய்யப்பட வேண்டும். ஒரு அடிப்படையாக, நாங்கள் கிளவுட்டில் மிகவும் பிரபலமான DBMS ஐ எடுத்தோம் - Google, GCP Cloud SQL மற்றும் Amazon, AWS RDS. எங்கள் மதிப்பீட்டில் நாங்கள் பின்வரும் வகைகளில் கவனம் செலுத்தினோம்:

  • அம்ச மேப்பிங்: அளவு SQL, DDL, DML; இணைப்பு நூலகங்கள்/இணைப்பிகள், பரிவர்த்தனை ஆதரவு மற்றும் பல.
  • மேம்பாட்டு ஆதரவு: எளிதான வளர்ச்சி மற்றும் சோதனை.
  • நிர்வாக ஆதரவு: நிகழ்வு மேலாண்மை - எடுத்துக்காட்டாக, மேல்/கீழ் அளவிடுதல் மற்றும் நிகழ்வுகளை மேம்படுத்துதல்; SLA, காப்பு மற்றும் மீட்பு; பாதுகாப்பு/அணுகல் கட்டுப்பாடு.

கிளவுட் ஸ்பேனரை OLAP-இயக்கப்பட்ட OLTP தீர்வாகப் பயன்படுத்துதல்

Cloud Spanner பகுப்பாய்வு செயலாக்கத்திற்காக வடிவமைக்கப்பட்டுள்ளது என்று கூகுள் வெளிப்படையாகக் கூறவில்லை என்றாலும், OLAP பணிச்சுமைக்காக வடிவமைக்கப்பட்ட Apache Impala & Kudu மற்றும் YugaByte போன்ற பிற இயந்திரங்களுடன் சில பண்புக்கூறுகளைப் பகிர்ந்து கொள்கிறது.

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

இதைக் கருத்தில் கொண்டு, பின்வரும் வகைகளைப் பார்த்தோம்:

  • தரவு ஏற்றுதல், குறியீடுகள் மற்றும் பகிர்வு ஆதரவு
  • வினவல் செயல்திறன் மற்றும் DML

2. சுருக்கமாக Cloud Spanner

கூகுள் ஸ்பேனர் என்பது ஒரு கிளஸ்டர்டு ரிலேஷனல் டேட்டாபேஸ் மேனேஜ்மென்ட் சிஸ்டம் (RDBMS) ஆகும், இது கூகுள் தனது சொந்த சேவைகளில் பலவற்றைப் பயன்படுத்துகிறது. 2017 ஆம் ஆண்டின் தொடக்கத்தில் கூகுள் கிளவுட் பிளாட்ஃபார்ம் பயனர்களுக்கு பொதுவாகக் கிடைக்கச் செய்தது.

கிளவுட் ஸ்பேனர் பண்புக்கூறுகளில் சில இங்கே:

  • மிகவும் சீரான அளவிடக்கூடிய RDBMS கிளஸ்டர்: தரவு நிலைத்தன்மையை உறுதிப்படுத்த வன்பொருள் நேர ஒத்திசைவைப் பயன்படுத்துகிறது.
  • குறுக்கு-அட்டவணை பரிவர்த்தனை ஆதரவு: பரிவர்த்தனைகள் பல டேபிள்களை விரிவுபடுத்தலாம் - ஒரே டேபிளில் மட்டுமே இருக்க வேண்டிய அவசியமில்லை (அப்பாச்சி HBase அல்லது Apache Kudu போலல்லாமல்).
  • முதன்மை விசை அடிப்படையிலான அட்டவணைகள்: அனைத்து அட்டவணைகளும் அறிவிக்கப்பட்ட முதன்மை விசையை (பிசி) கொண்டிருக்க வேண்டும், இது அட்டவணையில் பல நெடுவரிசைகளைக் கொண்டிருக்கலாம். அட்டவணை தரவு PC வரிசையில் சேமிக்கப்படுகிறது, இது PC தேடலுக்கு மிகவும் திறமையாகவும் வேகமாகவும் செய்கிறது. பிற பிசி-அடிப்படையிலான அமைப்புகளைப் போலவே, செயல்படுத்தவும் முன் வடிவமைக்கப்பட்ட பயன்பாட்டு நிகழ்வுகளை மனதில் கொண்டு செயல்படுத்தப்பட வேண்டும் சிறந்த படைப்பு.
  • கோடிட்ட அட்டவணைகள்: அட்டவணைகள் ஒன்றுக்கொன்று இயற்பியல் சார்புகளைக் கொண்டிருக்கலாம். குழந்தை அட்டவணையில் உள்ள வரிசைகளை பெற்றோர் அட்டவணையில் உள்ள வரிசைகளுடன் பொருத்தலாம். இந்த அணுகுமுறை, வாடிக்கையாளர்கள் மற்றும் அவர்களின் விலைப்பட்டியல் போன்ற தரவு மாடலிங் கட்டத்தில் அடையாளம் காணக்கூடிய உறவுகளுக்கான தேடலை விரைவுபடுத்துகிறது.
  • குறியீடுகள்: கிளவுட் ஸ்பேனர் இரண்டாம் நிலை குறியீடுகளை ஆதரிக்கிறது. குறியீடானது அட்டவணைப்படுத்தப்பட்ட நெடுவரிசைகள் மற்றும் அனைத்து பிசி நெடுவரிசைகளையும் கொண்டுள்ளது. விரும்பினால், குறியீட்டில் மற்ற குறியிடப்படாத நெடுவரிசைகளும் இருக்கலாம். வினவல்களை விரைவுபடுத்த, குறியீட்டை பெற்றோர் அட்டவணையுடன் இணைக்கலாம். குறியீட்டில் சேமிக்கப்பட்டுள்ள அதிகபட்ச கூடுதல் நெடுவரிசைகள் போன்ற பல கட்டுப்பாடுகள் குறியீடுகளுக்கு பொருந்தும். மேலும், குறியீடுகள் மூலம் வினவல்கள் மற்ற RDBMSகளைப் போல நேரடியாக இருக்காது.

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

  • சேவை நிலை ஒப்பந்தம் (SLA): 99,99% SLA உடன் ஒரு பிராந்தியத்தில் வரிசைப்படுத்தல்; 99,999% SLA உடன் பல பிராந்திய வரிசைப்படுத்தல்கள். SLA என்பது ஒரு ஒப்பந்தம் மற்றும் எந்த வகையான உத்தரவாதமும் இல்லை என்றாலும், கூகுளில் உள்ளவர்கள் அத்தகைய வலுவான உரிமைகோரலைச் செய்வதற்கு சில கடினமான தரவுகளைக் கொண்டுள்ளனர் என்று நான் நம்புகிறேன். (குறிப்புக்கு, 99,999% என்பது மாதத்திற்கு 26,3 வினாடிகள் சேவை கிடைக்காது.)
  • மேலும்: https://cloud.google.com/spanner/

குறிப்பு: Apache Tephra திட்டமானது Apache HBaseக்கு மேம்படுத்தப்பட்ட பரிவர்த்தனை ஆதரவைச் சேர்க்கிறது (இப்போது Apache Phoenix இல் பீட்டாவாகவும் செயல்படுத்தப்படுகிறது).

3. எங்கள் மதிப்பீடு

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

Sharded MySQL க்கு மாற்றாக Cloud Spanner ஐ மதிப்பிட்டோம்

Google Cloud SQL மற்றும் Amazon AWS RDS, கிளவுட் சந்தையில் மிகவும் பிரபலமான இரண்டு OLTP DBMSகள், மிகப் பெரிய அம்சங்களைக் கொண்டுள்ளன. இருப்பினும், இந்த தரவுத்தளங்களை ஒரு முனையின் அளவைத் தாண்டி அளவிட, நீங்கள் பயன்பாட்டுப் பகிர்வைச் செய்ய வேண்டும். இந்த அணுகுமுறை பயன்பாடுகள் மற்றும் நிர்வாகம் ஆகிய இரண்டிற்கும் கூடுதல் சிக்கலை உருவாக்குகிறது. பல துண்டுகளை ஒரே நிகழ்வாக இணைக்கும் சூழ்நிலையில் ஸ்பேனர் எவ்வாறு பொருந்துகிறது மற்றும் என்ன அம்சங்கள் (ஏதேனும் இருந்தால்) தியாகம் செய்ய வேண்டியிருக்கும் என்பதை நாங்கள் பார்த்தோம்.

SQL, DML மற்றும் DDL ஆதரவு, அத்துடன் இணைப்பான் மற்றும் நூலகங்கள்?

முதலில், எந்த தரவுத்தளத்துடன் தொடங்கும் போது, ​​நீங்கள் ஒரு தரவு மாதிரியை உருவாக்க வேண்டும். உங்களுக்குப் பிடித்த SQL கருவியுடன் JDBC ஸ்பேனரை இணைக்க முடியும் என நீங்கள் நினைத்தால், அதன் மூலம் உங்கள் தரவை வினவலாம், ஆனால் அட்டவணையை உருவாக்கவோ அல்லது மாற்றவோ (DDL) அல்லது ஏதேனும் செருக/புதுப்பிக்க/நீக்கவோ அதைப் பயன்படுத்த முடியாது. செயல்பாடுகள் (டிஎம்எல்). கூகுளின் அதிகாரப்பூர்வமான JDBC இந்த இரண்டையும் ஆதரிக்கவில்லை.

"இயக்கிகள் தற்போது DML அல்லது DDL அறிக்கைகளை ஆதரிக்கவில்லை."
ஸ்பேனர் ஆவணம்

GCP கன்சோலில் நிலைமை சிறப்பாக இல்லை - நீங்கள் SELECT வினவல்களை மட்டுமே அனுப்ப முடியும். அதிர்ஷ்டவசமாக, பரிவர்த்தனைகள் உட்பட, சமூகத்தில் இருந்து DML மற்றும் DDLக்கான ஆதரவுடன் ஒரு JDBC இயக்கி உள்ளது. github.com/olavloite/spanner-jdbc. இந்த இயக்கி மிகவும் பயனுள்ளதாக இருந்தாலும், கூகுளின் சொந்த ஜேடிபிசி இயக்கி இல்லாதது ஆச்சரியமாக உள்ளது. அதிர்ஷ்டவசமாக, கிளையன்ட் லைப்ரரிகளுக்கு (gRPC அடிப்படையில்) Google பரந்த ஆதரவை வழங்குகிறது: C#, Go, Java, node.js, PHP, Python மற்றும் Ruby.

கிளவுட் ஸ்பேனர் தனிப்பயன் ஏபிஐகளின் கிட்டத்தட்ட கட்டாயப் பயன்பாடு (ஜேடிபிசியில் டிடிஎல் மற்றும் டிஎம்எல் இல்லாததால்) இணைப்புக் குளங்கள் அல்லது டேட்டாபேஸ் பைண்டிங் ஃப்ரேம்வொர்க்குகள் (எ.கா. ஸ்பிரிங் எம்விசி) போன்ற தொடர்புடைய குறியீடு பகுதிகளுக்கு சில வரம்புகளை ஏற்படுத்துகிறது. பொதுவாக, ஜேடிபிசியைப் பயன்படுத்தும் போது, ​​உங்களுக்குப் பிடித்தமான இணைப்புக் குழுவை (எ.கா. ஹிகாரிசிபி, டிபிசிபி, சி3பிஓ, முதலியன) தேர்வு செய்து, நன்றாக வேலை செய்யும். தனிப்பயன் ஸ்பேனர் ஏபிஐகளின் விஷயத்தில், நாமே உருவாக்கிய ஃப்ரேம்வொர்க்குகள்/பைண்டிங் பூல்கள்/செஷன்களை நம்பியிருக்க வேண்டும்.

முதன்மை விசை (பிசி) மைய வடிவமைப்பு, பிசி வழியாக தரவை அணுகும்போது கிளவுட் ஸ்பேனரை மிக வேகமாக இருக்க அனுமதிக்கிறது, ஆனால் சில வினவல் சிக்கல்களையும் அறிமுகப்படுத்துகிறது.

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

இரண்டாம் நிலை குறியீடுகள்?

Google Cloud Spanner ஆனது இரண்டாம் நிலை குறியீடுகளுக்கான உள்ளமைக்கப்பட்ட ஆதரவைக் கொண்டுள்ளது. இது மற்ற தொழில்நுட்பங்களில் எப்போதும் இல்லாத ஒரு நல்ல அம்சமாகும். Apache Kudu தற்போது இரண்டாம் நிலை குறியீடுகளை ஆதரிக்கவில்லை, மேலும் Apache HBase நேரடியாக குறியீடுகளை ஆதரிக்காது, ஆனால் Apache Phoenix மூலம் அவற்றைச் சேர்க்கலாம்.

Kudu மற்றும் HBase இல் உள்ள குறியீடுகள் முதன்மை விசைகளின் வேறுபட்ட கலவையுடன் ஒரு தனி அட்டவணையாக வடிவமைக்கப்படலாம், ஆனால் பெற்றோர் அட்டவணை மற்றும் அதனுடன் தொடர்புடைய குறியீட்டு அட்டவணையில் செய்யப்படும் செயல்பாடுகளின் அணுத்தன்மையானது பயன்பாட்டு மட்டத்தில் செய்யப்பட வேண்டும் மற்றும் சரியாகச் செயல்படுத்துவது சாதாரணமானது அல்ல.

கிளவுட் ஸ்பேனர் மதிப்பாய்வில் குறிப்பிட்டுள்ளபடி, அதன் குறியீடுகள் MySQL குறியீடுகளிலிருந்து வேறுபடலாம். எனவே, வினவல்கள் மற்றும் விவரக்குறிப்புகளை கட்டமைக்கும் போது, ​​சரியான குறியீடு தேவைப்படும் இடத்தில் பயன்படுத்தப்படுவதை உறுதி செய்ய சிறப்பு கவனம் எடுக்கப்பட வேண்டும்.

பிரதிநிதித்துவமா?

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

ஒதுக்கீடுகள் மற்றும் கட்டுப்பாடுகளை விவரிக்கும் ஒரு பகுதிக்கான கிளவுட் ஸ்பேனர் ஆவணத்தைப் பார்க்கவும் (ஸ்பேனர்/கோட்டாக்கள்), சில பயன்பாடுகளுக்கு சிக்கலாக இருக்கும் குறிப்பாக ஒன்று உள்ளது: கிளவுட் ஸ்பேனர் அவுட் ஆஃப் தி பாக்ஸில் அதிகபட்சமாக 100 தரவுத்தளங்கள் ஒரு நிகழ்விற்கு வரம்பு உள்ளது. வெளிப்படையாக, இது 100 க்கும் மேற்பட்ட தரவுத்தளங்களுக்கு அளவிட வடிவமைக்கப்பட்ட ஒரு தரவுத்தளத்திற்கு ஒரு பெரிய இடையூறாக இருக்கலாம். அதிர்ஷ்டவசமாக, எங்கள் Google தொழில்நுட்ப பிரதிநிதியுடன் பேசிய பிறகு, Google ஆதரவு மூலம் இந்த வரம்பை எந்த மதிப்பிலும் அதிகரிக்க முடியும் என்பதைக் கண்டறிந்தோம்.

வளர்ச்சி ஆதரவு?

கிளவுட் ஸ்பேனர் அதன் API உடன் பணிபுரிய அழகான ஒழுக்கமான நிரலாக்க மொழி ஆதரவை வழங்குகிறது. அதிகாரப்பூர்வமாக ஆதரிக்கப்படும் நூலகங்கள் C#, Go, Java, node.js, PHP, Python மற்றும் Ruby ஆகிய பகுதிகளில் உள்ளன. ஆவணப்படுத்தல் மிகவும் விரிவானது, ஆனால் மற்ற மேம்பட்ட தொழில்நுட்பங்களைப் போலவே, மிகவும் பிரபலமான தரவுத்தள தொழில்நுட்பங்களுடன் ஒப்பிடும்போது சமூகம் மிகவும் சிறியதாக உள்ளது, இது குறைவான பொதுவான பயன்பாட்டு வழக்குகள் அல்லது சிக்கல்களைத் தீர்க்க அதிக நேரம் செலவிட வழிவகுக்கும்.

எனவே உள்ளூர் வளர்ச்சியை ஆதரிப்பது பற்றி என்ன?

வளாகத்தில் கிளவுட் ஸ்பேனர் நிகழ்வை உருவாக்குவதற்கான வழியை எங்களால் கண்டுபிடிக்க முடியவில்லை. எங்களுக்கு மிக நெருக்கமான விஷயம் ஒரு டோக்கர் படம். கரப்பான் பூச்சி, இது கொள்கையில் ஒத்திருக்கிறது, ஆனால் நடைமுறையில் மிகவும் வித்தியாசமானது. எடுத்துக்காட்டாக, CockroachDB PostgreSQL JDBC ஐப் பயன்படுத்தலாம். வளர்ச்சி சூழல் முடிந்தவரை உற்பத்தி சூழலுக்கு நெருக்கமாக இருக்க வேண்டும் என்பதால், கிளவுட் ஸ்பேனர் சிறந்ததல்ல, ஏனெனில் அது முழு ஸ்பேனர் நிகழ்வை நம்பியிருக்க வேண்டும். செலவுகளைச் சேமிக்க, நீங்கள் ஒரு பிராந்திய நிகழ்வைத் தேர்ந்தெடுக்கலாம்.

நிர்வாக ஆதரவு?

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

கூகுள் கன்சோலில் உள்ள ஸ்பேனர் பக்கத்திலிருந்து பல அடிப்படை அளவீடுகளை நேரடியாக அணுகலாம். ஸ்டாக்டிரைவர் மூலம் மேலும் விரிவான பார்வைகள் கிடைக்கும், அங்கு நீங்கள் மெட்ரிக் வரம்புகள் மற்றும் விழிப்பூட்டல் கொள்கைகளையும் அமைக்கலாம்.

வளங்களை அணுகவா?

MySQL பயனர் அனுமதிகள்/பாத்திரங்களுக்கான விரிவான மற்றும் மிகவும் சிறுமணி அமைப்புகளை வழங்குகிறது. ஒரு குறிப்பிட்ட அட்டவணை அல்லது அதன் நெடுவரிசைகளின் துணைத்தொகுப்புக்கான அணுகலை நீங்கள் எளிதாக உள்ளமைக்கலாம். Cloud Spanner ஆனது Google இன் Identity & Access Management (IAM) கருவியைப் பயன்படுத்துகிறது, இது கொள்கைகளையும் அனுமதிகளையும் மிக உயர்ந்த மட்டத்தில் அமைக்க மட்டுமே உங்களை அனுமதிக்கிறது. தரவுத்தள அளவிலான தெளிவுத்திறன் மிகவும் சிறுமணி விருப்பமாகும், இது பெரும்பாலான உற்பத்தி பயன்பாட்டு நிகழ்வுகளுக்கு பொருந்தாது. இந்த வரம்பு உங்கள் குறியீடு, உள்கட்டமைப்பு அல்லது இரண்டிலும் கூடுதல் பாதுகாப்பு நடவடிக்கைகளைச் சேர்க்க உங்களைத் தூண்டுகிறது, இது ஸ்பேனர் ஆதாரங்களின் அங்கீகரிக்கப்படாத பயன்பாட்டைத் தடுக்கிறது.

காப்புப்பிரதிகள்?

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

செயல்திறனை வினவவா?

தரவை ஏற்றவும் வினவல்களை சோதிக்கவும் Yahoo!ஐப் பயன்படுத்தினோம். கிளவுட் சர்விங் பெஞ்ச்மார்க். கீழே உள்ள அட்டவணை YCSB பணிச்சுமை B ஐ 95% படிக்கும் முதல் 5% எழுதும் விகிதத்துடன் காட்டுகிறது.

Google Cloud Spanner: நல்லது, கெட்டது மற்றும் அசிங்கமானது

* சுமை சோதனையானது n1-ஸ்டாண்டர்டு-32 கம்ப்யூட் எஞ்சினில் (CE) (32 vCPU, 120 GB நினைவகம்) இயக்கப்பட்டது, மேலும் சோதனை நிகழ்வு சோதனைகளில் ஒரு தடையாக இருக்கவில்லை.
** ஒரு YCSB நிகழ்வில் உள்ள அதிகபட்ச நூல்களின் எண்ணிக்கை 400. மொத்தம் 2400 த்ரெட்களைப் பெற, YCSB சோதனைகளின் மொத்தம் ஆறு இணையான நிகழ்வுகளை இயக்க வேண்டும்.

பெஞ்ச்மார்க் முடிவுகளைப் பார்க்கும்போது, ​​குறிப்பாக CPU சுமை மற்றும் TPS ஆகியவற்றின் கலவையானது, Cloud Spanner அளவுகள் நன்றாக இருப்பதை நாம் தெளிவாகக் காணலாம். அதிக எண்ணிக்கையிலான நூல்களால் உருவாக்கப்பட்ட அதிக சுமை கிளவுட் ஸ்பேனர் கிளஸ்டரில் உள்ள அதிக எண்ணிக்கையிலான முனைகளால் ஈடுசெய்யப்படுகிறது. குறிப்பாக 2400 த்ரெட்களுடன் இயங்கும் போது, ​​தாமதமானது மிகவும் அதிகமாகத் தோன்றினாலும், மிகவும் துல்லியமான எண்களைப் பெற, கணினி இயந்திரத்தின் 6 சிறிய நிகழ்வுகளுடன் மீண்டும் சோதனை செய்வது அவசியமாக இருக்கலாம். ஒவ்வொரு நிகழ்வும் 6 இணைச் சோதனைகளுடன் ஒரு பெரிய CE நிகழ்வுக்குப் பதிலாக ஒரு YCSB சோதனையை இயக்கும். இந்த வழியில், Cloud Spanner கோரிக்கை தாமதம் மற்றும் Cloud Spanner மற்றும் சோதனையில் இயங்கும் CE நிகழ்வு ஆகியவற்றுக்கு இடையேயான பிணைய இணைப்பால் சேர்க்கப்படும் தாமதம் ஆகியவற்றை வேறுபடுத்துவது எளிதாக இருக்கும்.

கிளவுட் ஸ்பேனர் OLAP ஆக எவ்வாறு செயல்படுகிறது?

பிரிவினையா?

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

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

தரவை ஏற்றுகிறதா?

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

  • முதன்மை விசை மூலம் உங்கள் தரவை வரிசைப்படுத்தவும்.
  • அவற்றை 10 ஆல் வகுக்கவும்*முனைகளின் எண்ணிக்கை தனி பிரிவுகள்.
  • தரவை இணையாக ஏற்றும் பணிப் பணிகளின் தொகுப்பை உருவாக்கவும்.

இந்த தரவு ஏற்றுதல் அனைத்து Cloud Spanner முனைகளையும் பயன்படுத்துகிறது.

10M வரிசைகளின் தரவுத்தொகுப்பை உருவாக்க YCSB பணிச்சுமை A ஐப் பயன்படுத்தினோம்.

Google Cloud Spanner: நல்லது, கெட்டது மற்றும் அசிங்கமானது

* சுமை சோதனையானது n1-ஸ்டாண்டர்டு-32 கம்ப்யூட் எஞ்சினில் (32 vCPU, 120 GB நினைவகம்) இயக்கப்பட்டது, மேலும் சோதனை நிகழ்வானது சோதனைகளில் ஒரு தடையாக இருக்கவில்லை.
** எந்த உற்பத்தி பணிச்சுமைக்கும் ஒற்றை முனை அமைப்பு பரிந்துரைக்கப்படவில்லை.

மேலே குறிப்பிட்டுள்ளபடி, கிளவுட் ஸ்பேனர் தானாகவே அவற்றின் சுமைகளின் அடிப்படையில் பிளவுகளை செயலாக்குகிறது, எனவே தொடர்ச்சியான பல சோதனைகளுக்குப் பிறகு முடிவுகள் மேம்படும். இங்கு வழங்கப்பட்ட முடிவுகள் நாங்கள் பெற்ற சிறந்த முடிவுகளாகும். மேலே உள்ள எண்களைப் பார்க்கும்போது, ​​கிளஸ்டரில் உள்ள முனைகளின் எண்ணிக்கை அதிகரிக்கும்போது, ​​கிளவுட் ஸ்பேனர் எவ்வாறு செதில்கள் (நன்றாக) என்பதை நாம் பார்க்கலாம். தனித்து நிற்கும் எண்கள், மேலே உள்ள பிரிவில் விவரிக்கப்பட்டுள்ளபடி, கலவையான பணிச்சுமைகளுக்கான (95% படித்தல் மற்றும் 5% எழுதுதல்) முடிவுகளுடன் ஒப்பிடும் மிகக் குறைந்த சராசரி தாமதங்கள் ஆகும்.

அளவிடுதல்?

கிளவுட் ஸ்பேனர் நோட்களின் எண்ணிக்கையை கூட்டுவதும் குறைப்பதும் ஒரே கிளிக்கில் செய்யக்கூடிய பணியாகும். நீங்கள் விரைவாக தரவை ஏற்ற விரும்பினால், உங்கள் நிகழ்வை அதிகபட்சமாக (எங்கள் விஷயத்தில் இது US-கிழக்கு பிராந்தியத்தில் 25 முனைகளாக இருந்தது) அதிகரிப்பதை நீங்கள் பரிசீலிக்கலாம், பின்னர் எல்லா தரவும் உள்ள நிலையில் உங்கள் இயல்பான சுமைக்கு தகுதியான முனைகளின் எண்ணிக்கையை குறைக்கலாம். தரவுத்தளமானது 2TB/நோட் வரம்பைக் குறிக்கிறது.

மிகவும் சிறிய தரவுத்தளத்துடன் கூட இந்த வரம்பை நினைவூட்டினோம். சுமை சோதனைகளின் பல ஓட்டங்களுக்குப் பிறகு, எங்கள் தரவுத்தளம் சுமார் 155 ஜிபி அளவில் இருந்தது, மேலும் 1 முனை நிகழ்வாக அளவிடப்பட்டபோது, ​​பின்வரும் பிழையைப் பெற்றோம்:

Google Cloud Spanner: நல்லது, கெட்டது மற்றும் அசிங்கமானது

நாங்கள் 25 முதல் 2 நிகழ்வுகளை குறைக்க முடிந்தது, ஆனால் நாங்கள் இரண்டு முனைகளில் சிக்கிக்கொண்டோம்.

கிளவுட் ஸ்பேனர் கிளஸ்டரில் உள்ள முனைகளின் எண்ணிக்கையை அதிகரிப்பதும் குறைப்பதும் REST API ஐப் பயன்படுத்தி தானியங்குபடுத்தப்படலாம். பிஸியான வேலை நேரங்களில் அதிகரித்த கணினி சுமையைக் குறைக்க இது மிகவும் பயனுள்ளதாக இருக்கும்.

OLAP வினவல்களின் செயல்திறன்?

இந்த பகுதியில் ஸ்பேனரின் மதிப்பீட்டில் கணிசமான நேரத்தை செலவிட நாங்கள் முதலில் திட்டமிட்டோம். பல SELECT COUNTகளுக்குப் பிறகு, சோதனை குறுகியதாக இருக்கும் என்பதையும், OLAPக்கு ஸ்பேனர் பொருத்தமான இயந்திரமாக இருக்காது என்பதையும் நாங்கள் உடனடியாக உணர்ந்தோம். கிளஸ்டரில் உள்ள முனைகளின் எண்ணிக்கையைப் பொருட்படுத்தாமல், 10M வரிசை அட்டவணையில் உள்ள வரிசைகளின் எண்ணிக்கையைத் தேர்ந்தெடுப்பதற்கு 55 முதல் 60 வினாடிகள் வரை ஆகும். கூடுதலாக, இடைநிலை முடிவுகளைச் சேமிக்க அதிக நினைவகம் தேவைப்படும் எந்த வினவலும் OOM பிழையால் தோல்வியடைந்தது.

SELECT COUNT(DISTINCT(field0)) FROM usertable; — (10M distinct values)-> SpoolingHashAggregateIterator ran out of memory during new row.

TPC-H வினவல்களுக்கான சில எண்களை டாட் லிப்கானின் கட்டுரையில் காணலாம் Nosql-kudu-spanner-slides.html, ஸ்லைடுகள் 42 மற்றும் 43. இந்த எண்கள் எங்கள் சொந்த முடிவுகளுடன் ஒத்துப்போகின்றன (துரதிர்ஷ்டவசமாக).

Google Cloud Spanner: நல்லது, கெட்டது மற்றும் அசிங்கமானது

4. எங்கள் முடிவுகள்

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

கிளவுட் ஸ்பேனரை மதிப்பீடு செய்யத் தொடங்கியபோது, ​​அதன் நிர்வாக அம்சங்கள் மற்ற Google SQL தீர்வுகளுக்கு இணையாக இருக்கும் அல்லது குறைந்த பட்சம் வெகு தொலைவில் இல்லை என்று நாங்கள் எதிர்பார்த்தோம். ஆனால் காப்புப்பிரதிகளின் முழுமையான பற்றாக்குறை மற்றும் வளங்களுக்கான அணுகல் மீதான மிகக் குறைந்த கட்டுப்பாட்டால் நாங்கள் ஆச்சரியப்பட்டோம். பார்வைகள் இல்லை, உள்ளூர் மேம்பாட்டு சூழல் இல்லை, ஆதரிக்கப்படாத காட்சிகள், DML மற்றும் DDL ஆதரவு இல்லாத JDBC, மற்றும் பல.

எனவே பரிவர்த்தனை தரவுத்தளத்தை அளவிட வேண்டிய ஒருவர் எங்கு செல்கிறார்? எல்லா பயன்பாட்டு நிகழ்வுகளுக்கும் பொருந்தக்கூடிய ஒரு தீர்வு சந்தையில் இருப்பதாகத் தெரியவில்லை. பல மூடிய மற்றும் திறந்த மூல தீர்வுகள் உள்ளன (அவற்றில் சில இந்த கட்டுரையில் குறிப்பிடப்பட்டுள்ளன), ஒவ்வொன்றும் அதன் சொந்த பலம் மற்றும் பலவீனங்களைக் கொண்டுள்ளன, ஆனால் அவை எதுவும் 99,999% SLA மற்றும் உயர் நிலைத்தன்மையுடன் SaaS ஐ வழங்கவில்லை. உயர் SLA உங்களின் முக்கிய குறிக்கோள் மற்றும் தனிப்பயன் மல்டி கிளவுட் தீர்வை உருவாக்க நீங்கள் விரும்பவில்லை என்றால், கிளவுட் ஸ்பேனர் நீங்கள் தேடும் தீர்வாக இருக்கலாம். ஆனால் அதன் அனைத்து வரம்புகளையும் நீங்கள் அறிந்திருக்க வேண்டும்.

சரியாகச் சொல்வதானால், கிளவுட் ஸ்பேனர் 2017 ஆம் ஆண்டின் வசந்த காலத்தில் மட்டுமே பொதுமக்களுக்கு வெளியிடப்பட்டது, எனவே அதன் தற்போதைய குறைபாடுகளில் சில இறுதியில் மறைந்துவிடும் என்று எதிர்பார்ப்பது நியாயமானது (நம்பிக்கையுடன்), அவர்கள் செய்யும் போது, ​​அது ஒரு கேம் சேஞ்சராக இருக்கலாம். எல்லாவற்றிற்கும் மேலாக, கிளவுட் ஸ்பேனர் என்பது கூகிளின் பக்கத் திட்டம் மட்டுமல்ல. பிற Google தயாரிப்புகளுக்கு Google அதை அடிப்படையாகப் பயன்படுத்துகிறது. கூகுள் சமீபத்தில் கூகுள் கிளவுட் ஸ்டோரேஜில் உள்ள மெகாஸ்டோரை கிளவுட் ஸ்பேனருடன் மாற்றியபோது, ​​அது கூகுள் கிளவுட் ஸ்டோரேஜை உலகளாவிய அளவில் உள்ள பொருட்களின் பட்டியல்களுக்கு மிகவும் சீரானதாக மாற்ற அனுமதித்தது (இது இன்னும் அப்படி இல்லை. அமேசான் S3).

எனவே, இன்னும் நம்பிக்கை இருக்கிறது... நம்புகிறோம்.

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

அனைவரும் வருகை தருமாறு அழைக்கிறோம் இலவச webinar அதற்குள் பாடத்தைப் பற்றி விரிவாகச் சொல்வோம் "டெவலப்பர்களுக்கான AWS" OTUS இலிருந்து.

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

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