Google Cloud Spanner: හොඳ, නරක, කැත

හලෝ, Khabrovites. සාම්ප්‍රදායිකව, අපි නව පාඨමාලා ආරම්භය ආසන්නයේ රසවත් තොරතුරු බෙදාහදා ගන්නෙමු. අද, විශේෂයෙන් ඔබ වෙනුවෙන්, අපි පාඨමාලාව දියත් කිරීමට සමගාමීව Google Cloud Spanner පිළිබඳ ලිපියක් පරිවර්තනය කර ඇත. "සංවර්ධකයින් සඳහා AWS".

Google Cloud Spanner: හොඳ, නරක, කැත

මුලින් ප්‍රකාශයට පත් කරන ලදී Lightspeed HQ බ්ලොග්.

ලොව පුරා සිටින සිල්ලර වෙළෙන්දන්, ආපනශාලා හිමියන් සහ සබැඳි වෙළෙන්දන් සඳහා විවිධ වලාකුළු මත පදනම් වූ POS විසඳුම් සපයන සමාගමක් ලෙස, Lightspeed විවිධ ගනුදෙනු, විශ්ලේෂණ සහ සෙවුම් භාවිත අවස්ථා සඳහා විවිධ වර්ගයේ දත්ත සමුදා වේදිකා කිහිපයක් භාවිතා කරයි. මෙම සෑම දත්ත සමුදා වේදිකාවකටම තමන්ගේම ශක්තීන් සහ දුර්වලතා ඇත.එබැවින්, Google විසින් Cloud Spanner වෙළඳපොළට හඳුන්වා දුන් විට - අතථ්‍ය වශයෙන් අසීමිත තිරස් පරිමාණය සහ 99,999% සේවා මට්ටමේ ගිවිසුමක් (SLA) වැනි සම්බන්ධතා දත්ත සමුදා ලෝකයේ නොදුටු පොරොන්දු විශේෂාංග , ඇයව අපේ අතේ තබා ගැනීමේ අවස්ථාව අපට මග හැරිය නොහැකි විය!

Cloud Spanner සමඟ අපගේ අත්දැකීම් මෙන්ම අප භාවිතා කළ ඇගයීම් නිර්ණායක පිළිබඳ සවිස්තරාත්මක දළ විශ්ලේෂණයක් ලබා දීමට, අපි පහත මාතෘකා ආවරණය කරන්නෙමු:

  1. අපගේ ඇගයීමේ නිර්ණායක
  2. Cloud Spanner කෙටියෙන්
  3. අපගේ තක්සේරුව
  4. අපේ සොයා ගැනීම්

Google Cloud Spanner: හොඳ, නරක, කැත

1. අපගේ ඇගයීමේ නිර්ණායක

Cloud Spanner හි විශේෂතා, වෙළඳපොලේ ඇති අනෙකුත් විසඳුම් සමඟ එහි සමානකම් සහ වෙනස්කම් ගැන කිමිදීමට පෙර, අපගේ යටිතල ව්‍යුහය තුළ Cloud Spanner යෙදවිය යුතු ස්ථානය සලකා බැලීමේදී අප සිතේ තිබූ ප්‍රධාන භාවිත අවස්ථා ගැන මුලින්ම කතා කරමු:

  • (පවත්නා) සාම්ප්‍රදායික SQL දත්ත සමුදා විසඳුම සඳහා ආදේශකයක් ලෙස
  • OLAP-සක්‍රීය OLTP විසඳුමක් ලෙස

සටහන: සැසඳීමේ පහසුව සඳහා, මෙම ලිපිය GCP Cloud SQL සහ Amazon AWS RDS විසඳුම් පවුල්වල MySQL ප්‍රභේද සමඟ Cloud Spanner සංසන්දනය කරයි.

සාම්ප්‍රදායික SQL දත්ත සමුදා විසඳුමක් සඳහා ආදේශකයක් ලෙස Cloud Spanner භාවිතා කිරීම

පරිසරය තුළ සම්ප්රදායික දත්ත සමුදායන්, දත්ත සමුදා විමසුමකට ප්‍රතිචාර දැක්වීමේ කාලය ළඟා වන විට හෝ පූර්ව නිශ්චිත යෙදුම් සීමාවන් ඉක්මවා යන විට (මූලික වශයෙන් පරිශීලකයින් සංඛ්‍යාව සහ/හෝ ඉල්ලීම් වැඩි වීම හේතුවෙන්), ප්‍රතිචාර කාලය පිළිගත හැකි මට්ටමට අඩු කිරීමට ක්‍රම කිහිපයක් තිබේ. කෙසේ වෙතත්, මෙම විසඳුම් බොහොමයක් අතින් මැදිහත්වීම් ඇතුළත් වේ.

උදාහරණයක් ලෙස, ගත යුතු පළමු පියවර වන්නේ විවිධ කාර්ය සාධනය සම්බන්ධ දත්ත සමුදා සැකසුම් දෙස බලා ඒවා හොඳම යෙදුම් භාවිත අවස්ථා රටා වලට ගැලපෙන ලෙස සකස් කිරීමයි. මෙය ප්‍රමාණවත් නොවේ නම්, ඔබට දත්ත සමුදාය සිරස් අතට හෝ තිරස් අතට පරිමාණය කිරීමට තෝරාගත හැක.

යෙදුමක් විශාල කිරීම යනු සාමාන්‍යයෙන් වැඩි ප්‍රොසෙසර/කෝර් එකතු කිරීම, වැඩි RAM, වේගවත් ආචයනය යනාදිය මඟින් සේවාදායක අවස්ථාව යාවත්කාලීන කිරීමයි. වැඩි දෘඩාංග සම්පත් එකතු කිරීමෙන් දත්ත සමුදායේ ක්‍රියාකාරිත්වය වැඩි වේ, ප්‍රධාන වශයෙන් තත්පරයට ගනුදෙනු වලදී මනිනු ලැබේ, සහ OLTP පද්ධති සඳහා ගනුදෙනු ප්‍රමාදය. MySQL පරිමාණය වැනි සම්බන්ධතා දත්ත සමුදා පද්ධති (බහු නූල් ප්‍රවේශයක් භාවිතා කරයි) සිරස් අතට.

මෙම ප්‍රවේශයට අවාසි කිහිපයක් ඇත, නමුත් වඩාත්ම පැහැදිලි වන්නේ වෙළඳපොලේ ඇති උපරිම සේවාදායක ප්‍රමාණයයි. විශාලතම සේවාදායක නිදර්ශන සීමාවට ළඟා වූ පසු, ඉතිරිව ඇත්තේ එක් මාර්ගයක් පමණි: පරිමාණය ඉවත් කරන්න.

Scale-out යනු තවත් සේවාදායකයන් එකතු වන විට කාර්ය සාධනය රේඛීයව ඉහළ නැංවීම සඳහා පොකුරකට තවත් සේවාදායකයන් එකතු කරන ප්‍රවේශයකි. බහුතරය සම්ප්රදායික දත්ත සමුදා පද්ධති හොඳින් පරිමාණය නොකරයි හෝ කිසිසේත් පරිමාණය නොකරයි. උදාහරණයක් ලෙස, MySQL හට වහල් කියවන්නන් එකතු කිරීමෙන් කියවීම් සඳහා පරිමාණය කළ හැකි නමුත් එය ලිවීම් සඳහා පරිමාණය කළ නොහැක.

අනෙක් අතට, එහි ස්වභාවය නිසා, Cloud Spanner හට අවම මැදිහත්වීමකින් පහසුවෙන් තිරස් අතට පරිමාණය කළ හැකිය.

සම්පූර්ණ විශේෂාංග සේවාවක් ලෙස DBMS විවිධ දෘෂ්ටිකෝණවලින් ඇගයීමට ලක් කළ යුතුය. පදනමක් ලෙස, අපි වලාකුළේ වඩාත්ම ජනප්‍රිය DBMS ගත්තෙමු - Google, GCP Cloud SQL සහ Amazon සඳහා, AWS RDS සඳහා. අපගේ ඇගයීමේදී, අපි පහත සඳහන් කාණ්ඩ කෙරෙහි අවධානය යොමු කළෙමු:

  • විශේෂාංග සිතියම්ගත කිරීම: SQL ප්‍රමාණය, DDL, DML; සම්බන්ධක පුස්තකාල/සම්බන්ධක, ගනුදෙනු සහාය, සහ යනාදිය.
  • සංවර්ධන සහාය: සංවර්ධනය සහ පරීක්ෂා කිරීමේ පහසුව.
  • පරිපාලන සහාය: විශාලනය/පහළ කිරීම සහ අවස්ථා උත්ශ්‍රේණි කිරීම වැනි අවස්ථා කළමනාකරණය; SLA, උපස්ථ සහ ප්රතිසාධනය; ආරක්ෂාව / ප්රවේශ පාලනය.

OLAP-සක්‍රීය OLTP විසඳුමක් ලෙස Cloud Spanner භාවිතා කිරීම

Cloud Spanner යනු විශ්ලේෂණ සඳහා බව Google නිශ්චිතව ප්‍රකාශ නොකරන අතර, එය OLAP වැඩ බර සඳහා නිර්මාණය කර ඇති Apache Impala & Kudu සහ YugaByte වැනි අනෙකුත් එන්ජින් සමඟ සමහර ගුණාංග බෙදා ගනී.

Cloud Spanner හි (වැඩි හෝ අඩු) භාවිතා කළ හැකි OLAP විශේෂාංග කට්ටලයක් සහිත ස්ථාවර පරිමාණයෙන් බැහැර HTAP (හයිබ්‍රිඩ් ගනුදෙනු/විශ්ලේෂණ සැකසුම්) එන්ජිමක් ඇතුළත් වීමට කුඩා අවස්ථාවක් පමණක් තිබුණද, එය අපගේ අවධානයට ලක් වනු ඇතැයි අපි සිතමු.

එය මනසේ තබාගෙන, අපි පහත සඳහන් කාණ්ඩ දෙස බැලුවෙමු:

  • දත්ත පැටවීම, දර්ශක සහ කොටස් කිරීමේ සහාය
  • විමසුම් කාර්ය සාධනය සහ DML

2. කෙටියෙන් Cloud Spanner

Google Spanner යනු Google තමන්ගේම සේවාවන් කිහිපයක් සඳහා භාවිතා කරන පොකුරු සම්බන්ධතා දත්ත සමුදා කළමනාකරණ පද්ධතියකි (RDBMS). Google විසින් 2017 මුලදී Google Cloud Platform පරිශීලකයින්ට එය ප්‍රසිද්ධියේ ලබා ගත හැකි විය.

මෙන්න Cloud Spanner attributes කිහිපයක්:

  • ඉහළ ස්ථාවර, පරිමාණය කළ හැකි RDBMS පොකුර: දත්ත අනුකූලතාව සහතික කිරීම සඳහා දෘඪාංග කාල සමමුහුර්තකරණය භාවිතා කරයි.
  • හරස් වගු ගනුදෙනු සහාය: ගනුදෙනුවලට වගු කිහිපයක් විහිදිය හැක - අවශ්‍යයෙන්ම තනි වගුවකට සීමා නොවේ (Apache HBase හෝ Apache Kudu මෙන් නොව).
  • ප්‍රාථමික යතුරු පාදක වගු: සියලුම වගු වල වගු තීරු කිහිපයකින් සමන්විත විය හැකි ප්‍රකාශිත ප්‍රාථමික යතුරක් (PC) තිබිය යුතුය. වගු දත්ත PC අනුපිළිවෙලෙහි ගබඩා කර ඇති අතර, එය PC සෙවීම් සඳහා ඉතා කාර්යක්ෂම සහ වේගවත් කරයි. අනෙකුත් PC-පදනම් වූ පද්ධති මෙන්ම, ක්‍රියාත්මක කිරීම සාක්ෂාත් කර ගැනීම සඳහා පූර්ව උපකල්පිත භාවිත අවස්ථා වලට එරෙහිව ආදර්ශනය කළ යුතුය. හොඳම කාර්ය සාධනය.
  • ඉරි සහිත වගු: වගු එකිනෙකා මත භෞතික පරායත්තතා තිබිය හැක. ළමා මේසයේ පේළි මාපිය වගුවේ පේළි සමඟ සැසඳිය හැක. මෙම ප්‍රවේශය දත්ත ආකෘතිකරණ අදියරේදී තීරණය කළ හැකි සම්බන්ධතා සෙවීම වේගවත් කරයි, උදාහරණයක් ලෙස, ගනුදෙනුකරුවන් සහ ඔවුන්ගේ ඉන්වොයිසි එකට තැබීමේදී.
  • දර්ශක: Cloud Spanner ද්විතියික දර්ශක සඳහා සහය දක්වයි. දර්ශකයක් සුචිගත තීරු සහ සියලුම පරිගණක තීරු වලින් සමන්විත වේ. විකල්ප වශයෙන්, දර්ශකයෙහි වෙනත් සුචිගත නොවන තීරු ද අඩංගු විය හැක. විමසුම් වේගවත් කිරීම සඳහා දර්ශකය මාපිය වගුව සමඟ අන්තර් සම්බන්ධ කළ හැක. සුචියක ගබඩා කළ හැකි උපරිම අතිරේක තීරු ගණන වැනි සීමාවන් කිහිපයක් දර්ශක සඳහා අදාළ වේ. එසේම, දර්ශක හරහා කෙරෙන විමසුම් අනෙකුත් RDBMS වල මෙන් සරල නොවිය හැක.

“Cloud Spanner ස්වයංක්‍රීයව දර්ශකයක් තෝරා ගන්නේ දුර්ලභ අවස්ථාවන්හිදී පමණි. විශේෂයෙන්, විමසුම මඟින් ගබඩා කර නොමැති තීරු කිසිවක් ඉල්ලා සිටින්නේ නම්, Cloud Spanner ස්වයංක්‍රීයව ද්විතීයික දර්ශකයක් තෝරා නොගනී. දර්ශකය ".

  • සේවා මට්ටමේ ගිවිසුම (SLA): 99,99% SLA සමඟ තනි කලාපයක් යෙදවීම; 99,999% SLA සමඟ බහු-කලාපීය යෙදවීම්. SLA යනු ගිවිසුමක් පමණක් වන අතර කිසිදු ආකාරයක සහතිකයක් නොවන අතර, එවැනි ප්‍රබල හිමිකම් පෑමක් කිරීමට Google පුද්ගලයන්ට අපහසු දත්ත කිහිපයක් ඇති බව මම විශ්වාස කරමි. (යොමු කිරීම සඳහා, 99,999% යනු මසකට සේවා අක්‍රිය කාලය තත්පර 26,3 කි.)
  • තවත්: https://cloud.google.com/spanner/

සටහන: Apache Tephra ව්‍යාපෘතිය Apache HBase වෙත උසස් ගනුදෙනු සහාය එක් කරයි (දැන් Apache Phoenix හි බීටා ලෙස ක්‍රියාත්මක වේ).

3. අපගේ තක්සේරුව

එබැවින්, අපි සැවොම Cloud Spanner හි ප්‍රතිලාභ ගැන Google හි ප්‍රකාශ කියවා ඇත්තෙමු - ඉහළ අනුකූලතාවයක් සහ ඉතා ඉහළ SLA පවත්වා ගනිමින් පාහේ අසීමිත තිරස් පරිමාණය. මෙම ප්‍රකාශයන් කෙසේ වෙතත්, සාක්ෂාත් කර ගැනීම අතිශයින් දුෂ්කර වුවද, අපගේ ඉලක්කය වූයේ ඒවා ප්‍රතික්ෂේප කිරීම නොවේ. ඒ වෙනුවට, බොහෝ දත්ත සමුදා භාවිතා කරන්නන් සැලකිලිමත් වන වෙනත් දේවල් කෙරෙහි අවධානය යොමු කරමු: සමානාත්මතාවය සහ උපයෝගීතාවය.

අපි Sharded MySQL සඳහා ආදේශකයක් ලෙස Cloud Spanner ශ්‍රේණිගත කළෙමු

Google Cloud SQL සහ Amazon AWS RDS, cloud market හි වඩාත් ජනප්‍රිය OLTP දත්ත සමුදායන් දෙකක්, ඉතා විශාල විශේෂාංග කට්ටලයක් ඇත. කෙසේ වෙතත්, මෙම දත්ත සමුදායන් තනි නෝඩයක ප්‍රමාණයෙන් ඔබ්බට පරිමාණය කිරීම සඳහා, ඔබ යෙදුම් බෙදීම සිදු කළ යුතුය. මෙම ප්රවේශය යෙදුම් සහ පරිපාලනය යන දෙකම සඳහා අතිරේක සංකීර්ණතාවයක් ඇති කරයි. අපි බැලුවා Spanner එක අවස්තාවකට කැබලි කිහිපයක් ඒකාබද්ධ කිරීමේ අවස්ථාවට ගැලපෙන ආකාරය සහ කුමන විශේෂාංග (ඇත්නම්) කැප කළ යුතුද යන්න.

SQL, DML සහ DDL, මෙන්ම සම්බන්ධකය සහ පුස්තකාල සඳහා සහය?

පළමුව, ඕනෑම දත්ත සමුදායක් සමඟ ආරම්භ කරන විට, ඔබ දත්ත ආකෘතියක් නිර්මාණය කළ යුතුය. ඔබට ඔබේ ප්‍රියතම SQL මෙවලමට JDBC Spanner සම්බන්ධ කළ හැකි යැයි ඔබ සිතන්නේ නම්, ඔබට එය සමඟින් ඔබේ දත්ත විමසිය හැකි බව ඔබට පෙනී යනු ඇත, නමුත් ඔබට එය වගුවක් සෑදීමට හෝ යාවත්කාලීන කිරීමට (DDL) හෝ කිසියම් ඇතුළු කිරීමට/යාවත්කාලීන කිරීමට/මැකීමට භාවිත කළ නොහැක. මෙහෙයුම් (DML). Google හි නිල JDBC ද සහාය නොදක්වයි.

"රියදුරන් දැනට DML හෝ DDL ප්‍රකාශ සඳහා සහය නොදක්වයි."
ස්පැනර් ලේඛනගත කිරීම

GCP කොන්සෝලය සමඟ තත්වය වඩා හොඳ නැත - ඔබට යැවිය හැක්කේ SELECT විමසුම් පමණි. වාසනාවකට මෙන්, ගනුදෙනු ඇතුළුව ප්‍රජාවෙන් DML සහ DDL සහාය ඇති JDBC ධාවකයක් ඇත github.com/olavloite/spanner-jdbc. මෙම ධාවකය අතිශයින්ම ප්‍රයෝජනවත් වන අතර, Google හිම JDBC ධාවකයක් නොමැති වීම පුදුමයට කරුණකි. වාසනාවකට මෙන්, Google තරමක් පුළුල් සේවාදායක පුස්තකාල සහාය ලබා දෙයි (gRPC මත පදනම්ව): C#, Go, Java, node.js, PHP, Python, සහ Ruby.

Cloud Spanner හි අභිරුචි API වල අනිවාර්ය භාවිතය (JDBC හි DDL සහ DML නොමැතිකම හේතුවෙන්) සම්බන්ධතා එකතු කිරීම හෝ දත්ත සමුදා බන්ධන රාමු (වසන්ත MVC වැනි) වැනි කේත ආශ්‍රිත ක්ෂේත්‍ර සඳහා යම් සීමාවන් ඇති කරයි. සාමාන්‍යයෙන්, JDBC භාවිතා කරන විට, පරීක්‍ෂා කර හොඳින් ක්‍රියා කරන ඔබේ ප්‍රියතම සම්බන්ධතා සංචිතය (උදා: HikariCP, DBCP, C3PO, ආදිය) තෝරා ගැනීමට ඔබට නිදහස ඇත. අභිරුචි ස්පැනර් API සම්බන්ධයෙන්, අපට අප විසින්ම නිර්මාණය කර ඇති රාමු/බන්ධන/සැසි සංචිත මත විශ්වාසය තැබිය යුතුය.

ප්‍රාථමික යතුර (PC) නැඹුරු සැලසුම පරිගණකය හරහා දත්ත ප්‍රවේශ කිරීමේදී Cloud Spanner හට ඉතා වේගවත් වීමට ඉඩ සලසයි, නමුත් සමහර විමසුම් ගැටළු ද හඳුන්වා දෙයි.

  • ඔබට ප්‍රාථමික යතුරක අගය යාවත්කාලීන කළ නොහැක; ඔබ ප්‍රථමයෙන් මුල් පරිගණක ප්‍රවේශය මකා දමා නව අගය සමඟ එය නැවත ඇතුල් කළ යුතුය. (මෙය අනෙකුත් පරිගණක නැඹුරු දත්ත සමුදාය/ගබඩා එන්ජින් වලට සමාන වේ.)
  • ඕනෑම UPDATE සහ DELETE ප්‍රකාශයක් කොතැනක හෝ පරිගණකය සඳහන් කළ යුතුය, එබැවින්, හිස් විය නොහැක සියලුම ප්‍රකාශ මකන්න - සෑම විටම උප විමසුමක් තිබිය යුතුය, උදාහරණයක් ලෙස: යාවත්කාලීන xxx id IN (වගුව 1 සිට id තෝරන්න)
  • ස්වයංක්‍රීය වර්ධක විකල්පයක් නොමැතිකම හෝ PC ක්ෂේත්‍රය සඳහා අනුපිළිවෙල සකසන සමාන දෙයක්. මෙය ක්‍රියා කිරීමට නම්, යෙදුම් පැත්තේ අනුරූප අගය නිර්මාණය කළ යුතුය.

ද්විතියික දර්ශක?

Google Cloud Spanner හට ද්විතීයික දර්ශක සඳහා සහය ඇත. මෙය වෙනත් තාක්ෂණයන්හි සෑම විටම නොපවතින ඉතා හොඳ ලක්ෂණයකි. Apache Kudu දැනට ද්විතියික දර්ශක සඳහා කිසිසේත්ම සහය නොදක්වන අතර Apache HBase සෘජුවම දර්ශක සඳහා සහය නොදක්වයි, නමුත් Apache Phoenix හරහා ඒවා එක් කළ හැක.

කුඩු සහ HBase හි ඇති දර්ශක ප්‍රාථමික යතුරුවල විවිධ සංයුතිය සහිත වෙනම වගුවක් ලෙස ආදර්ශනය කළ හැකි නමුත් මව් වගුවේ සහ අදාළ දර්ශක වගුවල සිදු කරන මෙහෙයුම්වල පරමාණුකත්වය යෙදුම් මට්ටමින් සිදු කළ යුතු අතර එය නිවැරදිව ක්‍රියාත්මක කිරීම සුළුපටු නොවේ.

Cloud Spanner සමාලෝචනයේ සඳහන් කර ඇති පරිදි, එහි දර්ශක MySQL දර්ශක වලින් වෙනස් විය හැක. මේ අනුව, නිවැරදි දර්ශකය අවශ්‍ය තැන්වල භාවිතා කරන බව සහතික කිරීම සඳහා විමසුම් ගොඩනැගීමේ සහ පැතිකඩ සැකසීමේදී විශේෂ සැලකිල්ලක් දැක්විය යුතුය.

නිරූපණය?

දත්ත සමුදායක ඉතා ජනප්‍රිය සහ ප්‍රයෝජනවත් වස්තුවක් වන්නේ බැලීම් ය. භාවිත අවස්ථා විශාල සංඛ්‍යාවක් සඳහා ඒවා ප්‍රයෝජනවත් විය හැකිය; මගේ ප්‍රියතමයන් දෙක වන්නේ තාර්කික වියුක්ත ස්තරය සහ ආරක්ෂක ස්තරයයි. අවාසනාවන්ත ලෙස Cloud Spanner බැලීම් සඳහා සහය නොදක්වයි. කෙසේ වෙතත්, දර්ශන පිළිගත හැකි විසඳුමක් විය හැකි ප්‍රවේශ අවසර සඳහා තීරු මට්ටමේ කැටිති නොමැති බැවින් මෙය අපව අර්ධ වශයෙන් සීමා කරයි.

කෝටා සහ සීමාවන් විස්තර කරන කොටස සඳහා Cloud Spanner ලේඛන බලන්න (spanner/quotas), සමහර යෙදුම් සඳහා ගැටලුකාරී විය හැකි විශේෂයෙන් එකක් තිබේ: Cloud Spanner out of the box එකකට උපරිම දත්ත සමුදායන් 100 ක් ඇත. පැහැදිලිවම, දත්ත සමුදායන් 100කට වඩා වැඩි කිරීමට සැලසුම් කර ඇති දත්ත සමුදායක් සඳහා මෙය විශාල බාධාවක් විය හැකිය. වාසනාවකට මෙන්, අපගේ Google තාක්ෂණික නියෝජිතයා සමඟ කතා කිරීමෙන් පසුව, Google සහාය හරහා මෙම සීමාව ඕනෑම අගයකට වැඩි කළ හැකි බව අපට පෙනී ගියේය.

සංවර්ධන සහාය?

Cloud Spanner එහි API සමඟ වැඩ කිරීම සඳහා ඉතා හොඳ ක්‍රමලේඛන භාෂා සහාය ලබා දෙයි. නිල වශයෙන් සහාය දක්වන පුස්තකාල C#, Go, Java, node.js, PHP, Python සහ Ruby යන ප්‍රදේශයේ ඇත. ප්‍රලේඛනය තරමක් සවිස්තරාත්මක ය, නමුත් අනෙකුත් අති නවීන තාක්‍ෂණයන් මෙන්, ප්‍රජාව බොහෝ ජනප්‍රිය දත්ත සමුදා තාක්‍ෂණයන් හා සසඳන විට තරමක් කුඩා වන අතර එමඟින් අඩු පොදු භාවිත අවස්ථා හෝ ගැටළු සඳහා වැඩි කාලයක් ගත කළ හැකිය.

ඉතින් දේශීය සංවර්ධන ආධාර ගැන කුමක් කිව හැකිද?

අපි පරිශ්‍රයේ Cloud Spanner අවස්ථාවක් නිර්මාණය කිරීමට ක්‍රමයක් සොයාගෙන නැත. අපට ආසන්නතම වන්නේ ඩොකර් රූපයකි කුකුළා ඩී.බී.එය ප්‍රතිපත්තිමය වශයෙන් සමාන නමුත් ප්‍රායෝගිකව බෙහෙවින් වෙනස් ය. උදාහරණයක් ලෙස CockroachDB හට PostgreSQL JDBC භාවිතා කළ හැක. සංවර්ධන පරිසරය නිෂ්පාදන පරිසරයට හැකි තරම් සමීප විය යුතු බැවින්, Cloud Spanner සුදුසු නොවේ, මන්ද ඔබ සම්පූර්ණ Spanner අවස්ථාවක් මත විශ්වාසය තැබිය යුතුය. පිරිවැය ඉතිරි කිරීම සඳහා, ඔබට තනි කලාපීය අවස්ථාවක් තෝරාගත හැක.

පරිපාලන සහාය?

Cloud Spanner උදාහරණයක් නිර්මාණය කිරීම ඉතා සරල ය. ඔබට අවශ්‍ය වන්නේ බහු-කලාපයක් හෝ තනි-කලාප අවස්ථාවක් සෑදීම අතර, කලාපය(ය) සහ නෝඩ් ගණන සඳහන් කරන්න. මිනිත්තුවකට වඩා අඩු කාලයකදී, එම අවස්ථාව ක්‍රියාත්මක වනු ඇත.

Google Console හි Spanner පිටුවෙහි මූලික මිතික කිහිපයක් සෘජුවම ලබා ගත හැක. Stackdriver හරහා වඩාත් සවිස්තරාත්මක බැලීම් ලබා ගත හැකි අතර, ඔබට මෙට්‍රික් සීමාවන් සහ ඇඟවීම් ප්‍රතිපත්ති සැකසීමටද හැකිය.

සම්පත් වෙත ප්රවේශය?

MySQL පුළුල් සහ ඉතා කැටිති පරිශීලක අවසර/භූමිකාව සැකසීම් ඉදිරිපත් කරයි. ඔබට නිශ්චිත වගුවකට ප්‍රවේශය පහසුවෙන් අභිරුචිකරණය කළ හැකිය, නැතහොත් එහි තීරු වල උප කුලකයක් පවා. Cloud Spanner Google Identity & Access Management (IAM) මෙවලම භාවිතා කරයි, එය ඔබට ප්‍රතිපත්ති සහ අවසර ඉතා ඉහළ මට්ටමකින් සැකසීමට පමණක් ඉඩ සලසයි. වඩාත්ම කැටිති විකල්පය වන්නේ දත්ත සමුදා මට්ටමේ අවසරයයි, එය බොහෝ නිෂ්පාදන අවස්ථා සඳහා නොගැලපේ. Spanner සම්පත් අනවසරයෙන් භාවිතා කිරීම වැලැක්වීම සඳහා ඔබගේ කේතය, යටිතල පහසුකම් හෝ දෙකටම අමතර ආරක්ෂක පියවරයන් එක් කිරීමට මෙම සීමාව ඔබට බල කරයි.

උපස්ථද?

සරලව කිවහොත්, Cloud Spanner හි උපස්ථ නොමැත. Google හි ඉහළ SLA අවශ්‍යතා මඟින් දෘඪාංග හෝ දත්ත සමුදාය අසාර්ථක වීම, මානව දෝෂ, යෙදුම් දෝෂ යනාදිය හේතුවෙන් ඔබට කිසිදු දත්තයක් අහිමි නොවන බව සහතික කළ හැකි අතර. අපි සැවොම දන්නා රීතිය: ඉහළ උපයෝගිතා ස්මාර්ට් උපස්ථ උපාය මාර්ගයක් සඳහා ආදේශකයක් නොවේ. දැනට, දත්ත උපස්ථ කිරීමට ඇති එකම ක්‍රමය වන්නේ දත්ත සමුදායේ සිට වෙනම ගබඩා පරිසරයකට එය ක්‍රමලේඛනගතව ප්‍රවාහ කිරීමයි.

කාර්ය සාධනය විමසන්න?

දත්ත පූරණය කිරීමට සහ ඉල්ලීම් පරීක්ෂා කිරීමට අපි Yahoo! භාවිතා කළෙමු. Cloud Serving Benchmark. පහත වගුව 95% කියවීමේ සිට 5% දක්වා ලිවීමේ අනුපාතයක් සහිත B YCSB කාර්ය භාරය පෙන්වයි.

Google Cloud Spanner: හොඳ, නරක, කැත

* පැටවීමේ පරීක්ෂණය n1-standard-32 Compute Engine (CE) (32 vCPUs, 120 GB මතකය) මත ධාවනය කරන ලද අතර පරීක්ෂණ අවස්ථාව කිසි විටෙකත් පරීක්ෂණවල බාධාවක් නොවීය.
** එක් YCSB අවස්ථාවක උපරිම නූල් සංඛ්‍යාව 400 කි. සමස්තයක් වශයෙන්, සම්පූර්ණ නූල් 2400 ක් ලබා ගැනීම සඳහා YCSB පරීක්ෂණවල සමාන්තර අවස්ථා හයක් ධාවනය කිරීමට සිදු විය.

මිණුම් දණ්ඩේ ප්‍රතිඵල දෙස බලන විට, විශේෂයෙන්ම CPU load සහ TPS සංයෝගය, Cloud Spanner පරිමාණය හොඳින් සිදුවන බව අපට පැහැදිලිව දැකගත හැකිය. නූල් විශාල සංඛ්යාවක් විසින් නිර්මාණය කරන ලද විශාල භාරය Cloud Spanner පොකුරේ ඇති නෝඩ් විශාල සංඛ්යාවක් මගින් පියවා ඇත. ප්‍රමාදය තරමක් ඉහළ ලෙස පෙනෙන අතර, විශේෂයෙන් නූල් 2400කින් ධාවනය වන විට, වඩාත් නිවැරදි සංඛ්‍යා ලබා ගැනීම සඳහා පරිගණක එන්ජිමේ කුඩා අවස්ථා 6ක් සමඟ නැවත පරීක්ෂා කිරීම අවශ්‍ය විය හැකිය. සෑම අවස්ථාවක්ම සමාන්තර පරීක්ෂණ 6ක් සහිත විශාල CE අවස්ථාවක් වෙනුවට YCSB පරීක්ෂණයක් ක්‍රියාත්මක කරනු ඇත. මෙය Cloud Spanner ඉල්ලීම් ප්‍රමාදයන් සහ Cloud Spanner අතර ඇති ජාල සම්බන්ධතාව සහ පරීක්ෂණය ක්‍රියාත්මක වන CE අවස්ථාව අතර ඇති ප්‍රමාදයන් අතර වෙනස හඳුනා ගැනීම පහසු කරයි.

Cloud Spanner OLAP එකක් ලෙස ක්‍රියා කරන්නේ කෙසේද?

කොටස් කරනවාද?

කොටස් ලෙස හැඳින්වෙන භෞතිකව සහ/හෝ තාර්කිකව ස්වාධීන කොටස් වලට දත්ත බෙදීම, බොහෝ OLAP එන්ජින්වල දක්නට ලැබෙන ඉතා ජනප්‍රිය සංකල්පයකි. කොටස් මඟින් විමසුම් කාර්ය සාධනය සහ දත්ත සමුදා නඩත්තු කිරීමේ හැකියාව බෙහෙවින් වැඩි දියුණු කළ හැක. කොටස් කිරීම සඳහා තවදුරටත් කැණීම වෙනම ලිපියක් වනු ඇත, එබැවින් කොටස් කිරීමේ ක්‍රමයක් සහ උප-කොටස් කිරීමේ වැදගත්කම පමණක් සඳහන් කරමු. දත්ත කොටස් වලට සහ තවත් උප කොටස් වලට බෙදීමේ හැකියාව විශ්ලේෂණාත්මක විමසුම්වල ක්‍රියාකාරිත්වයට ප්‍රධාන වේ.

Cloud Spanner එක කොටස් වලට සහය නොදක්වයි. එය අභ්‍යන්තරව දත්ත ඊනියා ලෙස වෙන් කරයි බෙදුණු-s මූලික යතුරු පරාසයන් මත පදනම් වේ. Cloud Spanner පොකුරේ බර සමතුලිත කිරීම සඳහා කොටස් කිරීම ස්වයංක්‍රීයව සිදු කෙරේ. Cloud Spanner හි ඉතා පහසු අංගයක් වන්නේ මාපිය වගුවක මූලික භාරය (වෙනත් එකක් සමඟ අන්තර් සම්බන්ධිත නොවන වගුවක්) බෙදීමයි. ස්පැනර් එහි අඩංගු නම් ස්වයංක්‍රීයව හඳුනා ගනී බෙදුණු අනෙක් දත්ත වලට වඩා නිතර කියවන දත්ත බෙදුණු-ah, සහ තවත් වෙන්වීමක් තීරණය කළ හැකිය. මේ අනුව, වැඩි නෝඩ් ඉල්ලීමකට සම්බන්ධ විය හැකි අතර, එය ප්‍රතිදානය ඵලදායී ලෙස වැඩි කරයි.

දත්ත පූරණය කරනවාද?

තොග දත්ත සඳහා Cloud Spanner ක්‍රමය සාමාන්‍ය උඩුගත කිරීමක් සඳහා සමාන වේ. උපරිම කාර්ය සාධනය සඳහා, ඔබ ඇතුළුව සමහර මාර්ගෝපදේශ අනුගමනය කළ යුතුය:

  • ප්‍රාථමික යතුර මගින් ඔබගේ දත්ත වර්ග කරන්න.
  • ඒවා 10*න් බෙදන්නනෝඩ් ගණන තනි කොටස්.
  • සමාන්තරව දත්ත පූරණය කරන සේවක කාර්යයන් සමූහයක් සාදන්න.

මෙම දත්ත පැටවීම සියලුම Cloud Spanner nodes භාවිතා කරයි.

අපි 10M පේළි දත්ත කට්ටලයක් උත්පාදනය කිරීමට A YCSB කාර්ය භාරය භාවිතා කළෙමු.

Google Cloud Spanner: හොඳ, නරක, කැත

* පැටවීමේ පරීක්ෂණය n1-සම්මත-32 පරිගණක එන්ජිම (32 vCPUs, 120 GB මතකය) මත ධාවනය කරන ලද අතර පරීක්ෂණ අවස්ථාව කිසි විටෙකත් පරීක්ෂණවල බාධාවක් නොවීය.
** කිසිදු නිෂ්පාදන කාර්ය භාරයක් සඳහා 1 නෝඩ් සැකසුම නිර්දේශ නොකරයි.

ඉහත සඳහන් කළ පරිදි, Cloud Spanner ස්වයංක්‍රීයව ඒවායේ භාරය අනුව බෙදීම් සකසයි, එම නිසා පරීක්ෂණයේ අඛණ්ඩ පුනරාවර්තන කිහිපයකින් පසුව ප්‍රතිඵල වැඩි දියුණු වේ. මෙහි ඉදිරිපත් කර ඇති ප්‍රතිඵල අපට ලැබී ඇති හොඳම ප්‍රතිඵල වේ. ඉහත සංඛ්‍යා දෙස බලන විට, පොකුරේ ඇති නෝඩ් ගණන වැඩි වන විට Cloud Spanner පරිමාණය (හොඳින්) සිදුවන ආකාරය අපට දැකගත හැකිය. කැපී පෙනෙන සංඛ්‍යා අතිශයින් අඩු සාමාන්‍ය ප්‍රමාදයක් වන අතර, එය ඉහත කොටසේ විස්තර කර ඇති පරිදි මිශ්‍ර වැඩ බර (95% කියවීම සහ 5% ලිවීම) ප්‍රතිඵල සමඟ වෙනස් වේ.

පරිමාණය කරනවාද?

Cloud Spanner nodes ගණන වැඩි කිරීම සහ අඩු කිරීම එක් ක්ලික් කිරීමේ කාර්යයකි. ඔබට ඉක්මනින් දත්ත පූරණය කිරීමට අවශ්‍ය නම්, එම අවස්ථාව උපරිමයට වැඩි කිරීම සලකා බැලීමට ඔබට අවශ්‍ය විය හැකිය (අපගේ නඩුවේදී එය US-EAST කලාපයේ නෝඩ් 25ක් විය) ඉන්පසු සියලු දත්තවලින් පසු ඔබේ සාමාන්‍ය පැටවීමට සුදුසු නෝඩ් ගණන අඩු කරන්න. දත්ත සමුදාය තුළ, 2 TB/node සීමාව මනසේ තබාගෙන.

ඉතා කුඩා දත්ත ගබඩාවක් සමඟ පවා මෙම සීමාව අපට මතක් විය. පැටවීමේ පරීක්ෂණ ධාවන කිහිපයකට පසුව, අපගේ දත්ත සමුදාය ප්‍රමාණයෙන් 155 GB පමණ වූ අතර, 1 නෝඩ් අවස්ථාවක් දක්වා පරිමාණය කළ විට, අපට පහත දෝෂය ඇති විය:

Google Cloud Spanner: හොඳ, නරක, කැත

අපට අවස්ථා 25 සිට 2 දක්වා පරිමාණය කිරීමට හැකි විය, නමුත් අපි නෝඩ් දෙකක සිරවී සිටිමු.

Cloud Spanner පොකුරක නෝඩ් ගණන වැඩි කිරීම සහ අඩු කිරීම REST API භාවිතයෙන් ස්වයංක්‍රීය කළ හැක. කාර්යබහුල වේලාවන්හිදී පද්ධතියේ වැඩි බර අඩු කිරීම සඳහා මෙය විශේෂයෙන් ප්රයෝජනවත් විය හැකිය.

OLAP විමසුම් කාර්ය සාධනය?

අපි මුලින් සැලසුම් කළේ මෙම කොටසෙහි ස්පානර් පිළිබඳ අපගේ ඇගයීම සඳහා සැලකිය යුතු කාලයක් කැප කිරීමටයි. SELECT COUNT කීපයකට පසු, පරීක්ෂණය කෙටි වන බවත් Spanner OLAP සඳහා සුදුසු එන්ජිමක් නොවන බවත් අපට වහාම වැටහුණි. පොකුරේ ඇති නෝඩ් ගණන කුමක් වුවත්, 10M පේළි වගුවක පේළි ගණන තෝරා ගැනීමට තත්පර 55 සිට 60 දක්වා ගත විය. එසේම, අතරමැදි ප්‍රතිඵල ගබඩා කිරීමට වැඩි මතකයක් අවශ්‍ය වූ ඕනෑම විමසුමක් OOM දෝෂයක් සමඟ අසාර්ථක විය.

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

TPC-H විමසුම් සඳහා සමහර අංක Todd Lipcon ගේ ලිපියෙන් සොයා ගත හැක nosql-kudu-spanner-slides.html, විනිවිදක 42 සහ 43. මෙම සංඛ්‍යා අපගේම ප්‍රතිඵලවලට අනුකූල වේ (අවාසනාවකට).

Google Cloud Spanner: හොඳ, නරක, කැත

4. අපගේ සොයාගැනීම්

Cloud Spanner හි විශේෂාංගවල වර්තමාන තත්ත්වය අනුව, එය පවතින OLTP විසඳුමක් සඳහා සරල ආදේශකයක් ලෙස දැකීම දුෂ්කර ය, විශේෂයෙන් ඔබේ අවශ්‍යතා එය ඉක්මවා යන විට. Cloud Spanner හි අඩුපාඩු වටා විසඳුමක් ගොඩනැගීමට සැලකිය යුතු කාලයක් වැය කිරීමට සිදුවනු ඇත.

අපි ක්ලවුඩ් ස්පැනර් ඇගයීමට පටන් ගත් විට, එහි කළමනාකරණ විශේෂාංග වෙනත් Google SQL විසඳුම් සමඟ සමානව හෝ අඩුම තරමින් දුරින් නොතිබෙනු ඇතැයි අපි අපේක්ෂා කළෙමු. නමුත් උපස්ථ නොමැතිකම සහ සම්පත් වෙත ඉතා සීමිත ප්‍රවේශ පාලනයකින් අප පුදුමයට පත් විය. කිසිදු දසුන්, ප්‍රාදේශීය සංවර්ධන පරිසරයක්, සහය නොදක්වන අනුපිළිවෙලවල්, DML සහ DDL සහාය නොමැතිව JDBC යනාදිය ගැන සඳහන් නොකරන්න.

ඉතින්, ගනුදෙනු දත්ත සමුදායක් පරිමාණය කිරීමට අවශ්‍ය කෙනෙකුට යා යුත්තේ කොතැනටද? සියලුම භාවිත අවස්ථා වලට ගැලපෙන තනි විසඳුමක් තවමත් වෙළඳපොලේ ඇති බවක් නොපෙනේ. බොහෝ සංවෘත සහ විවෘත මූලාශ්‍ර විසඳුම් ඇත (ඒවායින් සමහරක් මෙම ලිපියේ සඳහන් කර ඇත), ඒ සෑම එකක්ම තමන්ගේම ශක්තීන් සහ දුර්වලතා ඇත, නමුත් ඒවා කිසිවක් 99,999% SLA සහ ඉහළ මට්ටමේ අනුකූලතාවයක් සමඟ SaaS ලබා නොදේ. ඉහළ SLA ඔබේ මූලික ඉලක්කය නම් සහ බහු වලාකුළු සඳහා ඔබේම විසඳුමක් ගොඩනඟා ගැනීමට ඔබ නැඹුරු නොවන්නේ නම්, Cloud Spanner ඔබ සොයන විසඳුම විය හැකිය. නමුත් ඔබ එහි සියලු සීමාවන් පිළිබඳව දැනුවත් විය යුතුය.

සාධාරණව කිවහොත්, Cloud Spanner මහජනතාවට නිකුත් කරනු ලැබුවේ 2017 වසන්තයේ දී පමණි, එබැවින් එහි පවතින සමහර අඩුපාඩු අවසානයේ (බලාපොරොත්තුවෙන්) පහව යනු ඇතැයි අපේක්ෂා කිරීම සාධාරණ වන අතර එය එසේ වූ විට එය ක්‍රීඩාව වෙනස් කරන්නෙකු විය හැකිය. සියල්ලට පසු, Cloud Spanner යනු Google සඳහා අතුරු ව්‍යාපෘතියක් පමණක් නොවේ. Google එය අනෙකුත් Google නිෂ්පාදන සඳහා පදනම ලෙස භාවිතා කරයි. තවද Google මෑතකදී Google Cloud Storage හි Megastore වෙනුවට Cloud Spanner සමඟ ආදේශ කළ විට, එය Google Cloud Storage හට ගෝලීය පරිමාණයෙන් වස්තු ලැයිස්තු සඳහා බෙහෙවින් අනුකූල වීමට ඉඩ ලබා දුන්නේය (එය තවමත් එසේ නොවේ. ඇමේසන්ගේ S3).

ඉතින් තවම බලාපොරොත්තුවක් තියෙනවා... අපි බලාපොරොත්තු වෙනවා.

එච්චරයි. ලිපියේ කතුවරයා මෙන්, අපි ද දිගටම බලාපොරොත්තු වෙමු, නමුත් ඔබ මේ ගැන සිතන්නේ කුමක්ද? අදහස් වල ලියන්න

අපගේ සංචාරයට පැමිණෙන ලෙස අපි සැමට ආරාධනා කරමු නොමිලේ webinar එහිදී අපි ඔබට පාඨමාලාව ගැන විස්තරාත්මකව කියන්නෙමු "සංවර්ධකයින් සඳහා AWS" OTUS වෙතින්.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න