Google Cloud Spanner: మంచిది, చెడ్డది, అగ్లీ

హలో, ఖబ్రోవైట్స్. సాంప్రదాయకంగా, మేము కొత్త కోర్సుల ప్రారంభం సందర్భంగా ఆసక్తికరమైన విషయాలను పంచుకోవడం కొనసాగిస్తాము. ఈ రోజు, ప్రత్యేకించి మీ కోసం, మేము Google Cloud Spanner గురించిన కథనాన్ని అనువదించాము, ఇది కోర్సు యొక్క ప్రారంభ సమయానికి సంబంధించినది "డెవలపర్‌ల కోసం AWS".

Google Cloud Spanner: మంచిది, చెడ్డది, అగ్లీ

లో మొదట ప్రచురించబడింది లైట్‌స్పీడ్ హెచ్‌క్యూ బ్లాగ్.

ప్రపంచవ్యాప్తంగా ఉన్న రిటైలర్‌లు, రెస్టారెంట్‌లు మరియు ఆన్‌లైన్ వ్యాపారుల కోసం వివిధ క్లౌడ్-ఆధారిత POS సొల్యూషన్‌లను అందించే కంపెనీగా, లైట్‌స్పీడ్ వివిధ రకాల లావాదేవీలు, విశ్లేషణలు మరియు శోధన వినియోగ కేసుల కోసం అనేక రకాల డేటాబేస్ ప్లాట్‌ఫారమ్‌లను ఉపయోగిస్తుంది. ఈ డేటాబేస్ ప్లాట్‌ఫారమ్‌లలో ప్రతి దాని స్వంత బలాలు మరియు బలహీనతలు ఉన్నాయి. అందువల్ల, Google క్లౌడ్ స్పేనర్‌ను మార్కెట్‌కి ప్రవేశపెట్టినప్పుడు - వాస్తవికంగా అపరిమిత సమాంతర స్కేలబిలిటీ మరియు 99,999% సేవా స్థాయి ఒప్పందం (SLA) వంటి రిలేషనల్ డేటాబేస్‌ల ప్రపంచంలో కనిపించని ఆశాజనకమైన ఫీచర్‌లు , ఆమెను మన చేతుల్లోకి తీసుకునే అవకాశాన్ని మేము వదులుకోలేము!

క్లౌడ్ స్పేనర్‌తో మా అనుభవాన్ని, అలాగే మేము ఉపయోగించిన మూల్యాంకన ప్రమాణాలను సమగ్రంగా అందించడానికి, మేము ఈ క్రింది అంశాలను కవర్ చేస్తాము:

  1. మా మూల్యాంకన ప్రమాణాలు
  2. క్లుప్తంగా క్లౌడ్ స్పానర్
  3. మా అంచనా
  4. మా పరిశోధనలు

Google Cloud Spanner: మంచిది, చెడ్డది, అగ్లీ

1. మా మూల్యాంకన ప్రమాణాలు

క్లౌడ్ స్పానర్ యొక్క ప్రత్యేకతలు, మార్కెట్‌లోని ఇతర పరిష్కారాలతో దాని సారూప్యతలు మరియు వ్యత్యాసాల గురించి తెలుసుకునే ముందు, మా ఇన్‌ఫ్రాస్ట్రక్చర్‌లో క్లౌడ్ స్పేనర్‌ను ఎక్కడ అమలు చేయాలో పరిశీలిస్తున్నప్పుడు మనం దృష్టిలో ఉంచుకున్న ప్రధాన వినియోగ సందర్భాల గురించి ముందుగా మాట్లాడుకుందాం:

  • (ప్రబలంగా ఉన్న) సాంప్రదాయ SQL డేటాబేస్ పరిష్కారానికి ప్రత్యామ్నాయంగా
  • OLAP-ప్రారంభించబడిన OLTP పరిష్కారంగా

గమనిక: పోలిక సౌలభ్యం కోసం, ఈ కథనం GCP క్లౌడ్ SQL మరియు Amazon AWS RDS సొల్యూషన్ కుటుంబాల MySQL వేరియంట్‌లతో క్లౌడ్ స్పానర్‌ని పోలుస్తుంది.

సాంప్రదాయ SQL డేటాబేస్ పరిష్కారానికి ప్రత్యామ్నాయంగా క్లౌడ్ స్పేనర్‌ని ఉపయోగించడం

వాతావరణంలో సంప్రదాయకమైన డేటాబేస్, డేటాబేస్ ప్రశ్నకు ప్రతిస్పందన సమయం సమీపించినప్పుడు లేదా ముందే నిర్వచించిన అప్లికేషన్ థ్రెషోల్డ్‌లను మించిపోయినప్పుడు (ప్రధానంగా వినియోగదారుల సంఖ్య మరియు/లేదా అభ్యర్థనల పెరుగుదల కారణంగా), ప్రతిస్పందన సమయాన్ని ఆమోదయోగ్యమైన స్థాయిలకు తగ్గించడానికి అనేక మార్గాలు ఉన్నాయి. అయినప్పటికీ, ఈ పరిష్కారాలలో చాలా వరకు మాన్యువల్ జోక్యం ఉంటుంది.

ఉదాహరణకు, వివిధ పనితీరు-సంబంధిత డేటాబేస్ సెట్టింగ్‌లను చూడటం మరియు వాటిని ఉత్తమంగా సరిపోలే అప్లికేషన్ వినియోగ దృశ్య నమూనాలకు ట్యూన్ చేయడం మొదటి దశ. ఇది సరిపోకపోతే, మీరు డేటాబేస్ను నిలువుగా లేదా అడ్డంగా స్కేల్ చేయడానికి ఎంచుకోవచ్చు.

అప్లికేషన్‌ను స్కేలింగ్ చేయడం అనేది సర్వర్ ఉదాహరణను అప్‌డేట్ చేస్తుంది, సాధారణంగా మరిన్ని ప్రాసెసర్‌లు/కోర్‌లు, మరింత RAM, వేగవంతమైన నిల్వ మొదలైనవి జోడించడం ద్వారా. మరిన్ని హార్డ్‌వేర్ వనరులను జోడించడం వలన డేటాబేస్ పనితీరు పెరుగుతుంది, ప్రధానంగా సెకనుకు లావాదేవీలు మరియు OLTP సిస్టమ్‌ల కోసం లావాదేవీల జాప్యం పెరుగుతుంది. MySQL వంటి రిలేషనల్ డేటాబేస్ సిస్టమ్‌లు (బహుళ-థ్రెడ్ విధానాన్ని ఉపయోగిస్తాయి) నిలువుగా బాగా ఉంటాయి.

ఈ విధానానికి అనేక లోపాలు ఉన్నాయి, కానీ అత్యంత స్పష్టమైనది మార్కెట్లో గరిష్ట సర్వర్ పరిమాణం. అతిపెద్ద సర్వర్ ఉదాహరణ పరిమితిని చేరుకున్న తర్వాత, ఒకే ఒక మార్గం మిగిలి ఉంది: స్కేల్ అవుట్.

స్కేల్-అవుట్ అనేది ఒక క్లస్టర్‌కి మరిన్ని సర్వర్‌లను జోడించే విధానం, ఇది మరిన్ని సర్వర్‌లు జోడించబడినందున పనితీరును సరళంగా పెంచడానికి ఆదర్శవంతంగా ఉంటుంది. మెజారిటీ సంప్రదాయకమైన డేటాబేస్ వ్యవస్థలు బాగా స్కేల్ చేయవు లేదా స్కేల్ చేయవు. ఉదాహరణకు, MySQL స్లేవ్ రీడర్‌లను జోడించడం ద్వారా రీడ్‌ల కోసం స్కేల్ అవుట్ చేయగలదు, కానీ అది రైట్‌ల కోసం స్కేల్ అవుట్ చేయదు.

మరోవైపు, దాని స్వభావం కారణంగా, క్లౌడ్ స్పానర్ తక్కువ జోక్యంతో సులభంగా అడ్డంగా స్కేల్ చేయగలదు.

పూర్తి ఫీచర్ చేయబడింది సేవగా DBMS విభిన్న దృక్కోణాల నుండి మూల్యాంకనం చేయాలి. Google, GCP Cloud SQL మరియు Amazon, AWS RDS కోసం - మేము క్లౌడ్‌లో అత్యంత ప్రజాదరణ పొందిన DBMSని ప్రాతిపదికగా తీసుకున్నాము. మా మూల్యాంకనంలో, మేము ఈ క్రింది వర్గాలపై దృష్టి సారించాము:

  • ఫీచర్ మ్యాపింగ్: SQL పరిధి, DDL, DML; కనెక్షన్ లైబ్రరీలు/కనెక్టర్లు, లావాదేవీల మద్దతు మొదలైనవి.
  • అభివృద్ధి మద్దతు: అభివృద్ధి మరియు పరీక్షల సౌలభ్యం.
  • అడ్మినిస్ట్రేషన్ మద్దతు: స్కేలింగ్ అప్/డౌన్ మరియు అప్‌గ్రేడ్ ఇన్‌స్టాన్స్ వంటి ఇన్‌స్టాన్స్ మేనేజ్‌మెంట్; SLA, బ్యాకప్ మరియు రికవరీ; భద్రత/యాక్సెస్ నియంత్రణ.

క్లౌడ్ స్పానర్‌ని OLAP-ప్రారంభించబడిన OLTP సొల్యూషన్‌గా ఉపయోగించడం

క్లౌడ్ స్పానర్ అనలిటిక్స్ కోసం అని Google స్పష్టంగా చెప్పనప్పటికీ, ఇది OLAP పనిభారం కోసం రూపొందించబడిన Apache Impala & Kudu మరియు YugaByte వంటి ఇతర ఇంజిన్‌లతో కొన్ని లక్షణాలను పంచుకుంటుంది.

క్లౌడ్ స్పానర్ (ఎక్కువ లేదా తక్కువ) ఉపయోగించగల OLAP ఫీచర్ సెట్‌తో స్థిరమైన స్కేల్-అవుట్ HTAP (హైబ్రిడ్ ట్రాన్సాక్షనల్/ఎనలిటిక్ ప్రాసెసింగ్) ఇంజిన్‌ను కలిగి ఉండే చిన్న అవకాశం మాత్రమే ఉన్నప్పటికీ, అది మా దృష్టికి తగినదని మేము భావిస్తున్నాము.

దీన్ని దృష్టిలో ఉంచుకుని, మేము ఈ క్రింది వర్గాలను పరిశీలించాము:

  • డేటా లోడింగ్, సూచికలు మరియు విభజన మద్దతు
  • ప్రశ్న పనితీరు మరియు DML

2. క్లుప్తంగా క్లౌడ్ స్పానర్

Google Spanner అనేది క్లస్టర్డ్ రిలేషనల్ డేటాబేస్ మేనేజ్‌మెంట్ సిస్టమ్ (RDBMS), ఇది Google తన స్వంత సేవలకు ఉపయోగిస్తుంది. Google 2017 ప్రారంభంలో Google క్లౌడ్ ప్లాట్‌ఫారమ్ వినియోగదారులకు పబ్లిక్‌గా అందుబాటులో ఉంచింది.

క్లౌడ్ స్పేనర్ లక్షణాలలో కొన్ని ఇక్కడ ఉన్నాయి:

  • అత్యంత స్థిరమైన, స్కేలబుల్ RDBMS క్లస్టర్: డేటా అనుగుణ్యతను నిర్ధారించడానికి హార్డ్‌వేర్ సమయ సమకాలీకరణను ఉపయోగిస్తుంది.
  • క్రాస్-టేబుల్ లావాదేవీల మద్దతు: లావాదేవీలు బహుళ పట్టికలను విస్తరించగలవు - తప్పనిసరిగా ఒకే టేబుల్‌కు పరిమితం కానవసరం లేదు (Apache HBase లేదా Apache Kudu వలె కాకుండా).
  • ప్రాథమిక కీ ఆధారిత పట్టికలు: అన్ని పట్టికలు తప్పనిసరిగా డిక్లేర్డ్ ప్రైమరీ కీ (PC)ని కలిగి ఉండాలి, ఇది బహుళ పట్టిక నిలువు వరుసలను కలిగి ఉంటుంది. పట్టిక డేటా PC క్రమంలో నిల్వ చేయబడుతుంది, ఇది PC శోధనల కోసం చాలా సమర్థవంతంగా మరియు వేగవంతమైనదిగా చేస్తుంది. ఇతర PC-ఆధారిత సిస్టమ్‌ల మాదిరిగానే, అమలును సాధించడానికి ముందుగా ఊహించిన వినియోగ కేసులకు అనుగుణంగా ఉండాలి. అత్యుత్తమ ప్రదర్శన.
  • చారల పట్టికలు: పట్టికలు ఒకదానికొకటి భౌతిక పరాధీనతలను కలిగి ఉంటాయి. చైల్డ్ టేబుల్ యొక్క అడ్డు వరుసలు పేరెంట్ టేబుల్ యొక్క వరుసలతో సరిపోలవచ్చు. ఈ విధానం డేటా మోడలింగ్ దశలో నిర్ణయించబడే సంబంధాల కోసం శోధనను వేగవంతం చేస్తుంది, ఉదాహరణకు, కస్టమర్‌లు మరియు వారి ఇన్‌వాయిస్‌లను ఒకచోట చేర్చేటప్పుడు.
  • సూచికలు: క్లౌడ్ స్పానర్ ద్వితీయ సూచికలకు మద్దతు ఇస్తుంది. ఇండెక్స్‌లో ఇండెక్స్ చేయబడిన నిలువు వరుసలు మరియు అన్ని PC నిలువు వరుసలు ఉంటాయి. ఐచ్ఛికంగా, ఇండెక్స్ ఇతర నాన్-ఇండెక్స్డ్ నిలువు వరుసలను కూడా కలిగి ఉంటుంది. ప్రశ్నలను వేగవంతం చేయడానికి సూచికను పేరెంట్ టేబుల్‌తో ఇంటర్‌లీవ్ చేయవచ్చు. ఇండెక్స్‌లో నిల్వ చేయగల గరిష్ట సంఖ్యలో అదనపు నిలువు వరుసల వంటి అనేక పరిమితులు సూచికలకు వర్తిస్తాయి. అలాగే, ఇండెక్స్‌ల ద్వారా ప్రశ్నలు ఇతర RDBMSలలో వలె సూటిగా ఉండకపోవచ్చు.

“క్లౌడ్ స్పానర్ అరుదైన సందర్భాల్లో మాత్రమే ఇండెక్స్‌ను ఆటోమేటిక్‌గా ఎంచుకుంటుంది. ప్రత్యేకించి, ప్రశ్న నిల్వ చేయని ఏవైనా నిలువు వరుసలను అభ్యర్థిస్తే క్లౌడ్ స్పేనర్ స్వయంచాలకంగా ద్వితీయ సూచికను ఎంచుకోదు సూచిక ".

  • సేవా స్థాయి ఒప్పందం (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. మా అంచనా

కాబట్టి, మేమంతా క్లౌడ్ స్పానర్ ప్రయోజనాల గురించి Google యొక్క ప్రకటనలను చదివాము - అధిక స్థిరత్వం మరియు చాలా ఎక్కువ SLAని కొనసాగిస్తూ వాస్తవంగా అపరిమిత సమాంతర స్కేలింగ్. ఈ క్లెయిమ్‌లు ఏ సందర్భంలోనైనా సాధించడం చాలా కష్టమైనప్పటికీ, వాటిని తిరస్కరించడం మా లక్ష్యం కాదు. బదులుగా, చాలా మంది డేటాబేస్ వినియోగదారులు శ్రద్ధ వహించే ఇతర విషయాలపై దృష్టి పెడదాం: సమానత్వం మరియు వినియోగం.

మేము Cloud Spannerని Sharded MySQLకి ప్రత్యామ్నాయంగా రేట్ చేసాము

Google Cloud SQL మరియు Amazon AWS RDS, క్లౌడ్ మార్కెట్‌లో అత్యంత ప్రజాదరణ పొందిన OLTP డేటాబేస్‌లలో రెండు చాలా పెద్ద ఫీచర్ సెట్‌ను కలిగి ఉన్నాయి. అయితే, ఈ డేటాబేస్‌లను ఒకే నోడ్ పరిమాణానికి మించి స్కేల్ చేయడానికి, మీరు అప్లికేషన్ విభజనను నిర్వహించాలి. ఈ విధానం అప్లికేషన్లు మరియు పరిపాలన రెండింటికీ అదనపు సంక్లిష్టతను సృష్టిస్తుంది. బహుళ ముక్కలను ఒక ఉదాహరణగా కలపడం మరియు ఏ ఫీచర్లు (ఏదైనా ఉంటే) త్యాగం చేయాల్సిన దృష్టాంతంలో స్పానర్ ఎలా సరిపోతుందో మేము చూశాము.

SQL, DML మరియు DDL, అలాగే కనెక్టర్ మరియు లైబ్రరీలకు మద్దతు ఉందా?

మొదట, ఏదైనా డేటాబేస్తో ప్రారంభించినప్పుడు, మీరు డేటా మోడల్‌ను సృష్టించాలి. మీరు JDBC స్పానర్‌ను మీకు ఇష్టమైన SQL సాధనానికి కనెక్ట్ చేయవచ్చని మీరు భావిస్తే, మీరు దానితో మీ డేటాను ప్రశ్నించవచ్చని మీరు కనుగొంటారు, కానీ మీరు పట్టికను సృష్టించడానికి లేదా నవీకరణ (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, పైథాన్ మరియు రూబీ.

క్లౌడ్ స్పానర్ యొక్క కస్టమ్ APIల యొక్క దాదాపు తప్పనిసరి ఉపయోగం (JDBCలో DDL మరియు DML లేకపోవడం వల్ల) కనెక్షన్ పూలింగ్ లేదా డేటాబేస్ బైండింగ్ ఫ్రేమ్‌వర్క్‌లు (స్ప్రింగ్ MVC వంటివి) వంటి సంబంధిత కోడ్‌లకు కొన్ని పరిమితులను కలిగిస్తుంది. సాధారణంగా, JDBCని ఉపయోగిస్తున్నప్పుడు, మీరు మీకు ఇష్టమైన కనెక్షన్ పూల్‌ను ఎంచుకోవచ్చు (ఉదా. HikariCP, DBCP, C3PO, మొదలైనవి) అది పరీక్షించబడి బాగా పని చేస్తుంది. కస్టమ్ స్పానర్ APIల విషయంలో, మనం స్వయంగా సృష్టించుకున్న ఫ్రేమ్‌వర్క్‌లు/బైండింగ్/సెషన్ పూల్‌లపై ఆధారపడాలి.

ప్రాథమిక కీ (PC) ఆధారిత డిజైన్ PC ద్వారా డేటాను యాక్సెస్ చేస్తున్నప్పుడు క్లౌడ్ స్పేనర్ చాలా వేగంగా ఉండటానికి అనుమతిస్తుంది, కానీ కొన్ని ప్రశ్న సమస్యలను కూడా పరిచయం చేస్తుంది.

  • మీరు ప్రాథమిక కీ విలువను నవీకరించలేరు; మీరు ముందుగా ఒరిజినల్ PC ఎంట్రీని తొలగించి, కొత్త విలువతో దాన్ని మళ్లీ చొప్పించాలి. (ఇది ఇతర PC ఆధారిత డేటాబేస్/స్టోరేజ్ ఇంజిన్‌ల మాదిరిగానే ఉంటుంది.)
  • ఏదైనా UPDATE మరియు DELETE స్టేట్‌మెంట్‌లు తప్పనిసరిగా PCని WHEREలో పేర్కొనాలి, కాబట్టి, అన్ని స్టేట్‌మెంట్‌లను తొలగించండి ఖాళీగా ఉండకూడదు - ఎల్లప్పుడూ సబ్‌క్వెరీ ఉండాలి, ఉదాహరణకు: xxx ఎక్కడ ఐడిలో అప్‌డేట్ చేయండి (టేబుల్1 నుండి ఐడిని ఎంచుకోండి)
  • PC ఫీల్డ్ కోసం క్రమాన్ని సెట్ చేసే ఆటో-ఇంక్రిమెంట్ ఎంపిక లేదా అలాంటిదే లేకపోవడం. ఇది పని చేయడానికి, అప్లికేషన్ వైపు సంబంధిత విలువ తప్పనిసరిగా సృష్టించబడాలి.

ద్వితీయ సూచీలు?

Google Cloud Spanner సెకండరీ ఇండెక్స్‌లకు అంతర్నిర్మిత మద్దతును కలిగి ఉంది. ఇది చాలా మంచి ఫీచర్, ఇది ఇతర సాంకేతికతలలో ఎల్లప్పుడూ ఉండదు. Apache Kudu ప్రస్తుతం ద్వితీయ సూచికలకు మద్దతు ఇవ్వదు మరియు Apache HBase నేరుగా సూచికలకు మద్దతు ఇవ్వదు, కానీ Apache Phoenix ద్వారా వాటిని జోడించవచ్చు.

కుడు మరియు హెచ్‌బేస్‌లోని ఇండెక్స్‌లను వేర్వేరు ప్రాథమిక కీల కూర్పుతో ప్రత్యేక పట్టికగా రూపొందించవచ్చు, అయితే పేరెంట్ టేబుల్ మరియు సంబంధిత ఇండెక్స్ టేబుల్‌లపై చేసే ఆపరేషన్‌ల యొక్క పరమాణుత్వం తప్పనిసరిగా అప్లికేషన్ స్థాయిలో నిర్వహించబడాలి మరియు సరిగ్గా అమలు చేయడం చిన్నవిషయం కాదు.

క్లౌడ్ స్పానర్ సమీక్షలో పేర్కొన్నట్లుగా, దాని సూచికలు MySQL సూచికల నుండి భిన్నంగా ఉండవచ్చు. అందువల్ల, సరైన సూచిక అవసరమైన చోట ఉపయోగించబడుతుందని నిర్ధారించడానికి ప్రశ్న భవనం మరియు ప్రొఫైలింగ్‌లో ప్రత్యేక శ్రద్ధ తీసుకోవాలి.

ప్రాతినిథ్యం?

డేటాబేస్లో చాలా ప్రజాదరణ పొందిన మరియు ఉపయోగకరమైన వస్తువు వీక్షణలు. అవి పెద్ద సంఖ్యలో వినియోగ సందర్భాలకు ఉపయోగపడతాయి; నా రెండు ఇష్టమైనవి లాజికల్ అబ్‌స్ట్రాక్షన్ లేయర్ మరియు సెక్యూరిటీ లేయర్. దురదృష్టవశాత్తూ Cloud Spanner వీక్షణలకు మద్దతు ఇవ్వదు. అయితే, వీక్షణలు ఆమోదయోగ్యమైన పరిష్కారంగా ఉండే యాక్సెస్ అనుమతుల కోసం కాలమ్-స్థాయి గ్రాన్యులారిటీ లేనందున ఇది మమ్మల్ని పాక్షికంగా మాత్రమే పరిమితం చేస్తుంది.

కోటాలు మరియు పరిమితులను వివరించే విభాగం కోసం క్లౌడ్ స్పానర్ డాక్యుమెంటేషన్‌ను చూడండి (స్పానర్/కోటాలు), కొన్ని అప్లికేషన్‌లకు సమస్యాత్మకంగా ఉండే ప్రత్యేకత ఒకటి ఉంది: Cloud Spanner out of the box ఒక్కో ఉదాహరణకి గరిష్టంగా 100 డేటాబేస్‌లను కలిగి ఉంటుంది. సహజంగానే, ఇది 100 డేటాబేస్‌లకు స్కేల్ చేయడానికి రూపొందించబడిన డేటాబేస్‌కు ప్రధాన అడ్డంకిగా ఉంటుంది. అదృష్టవశాత్తూ, మా Google సాంకేతిక ప్రతినిధితో మాట్లాడిన తర్వాత, Google మద్దతు ద్వారా ఈ పరిమితిని దాదాపు ఏ విలువకైనా పెంచవచ్చని మేము కనుగొన్నాము.

అభివృద్ధికి తోడ్పాటునా?

క్లౌడ్ స్పానర్ దాని APIతో పని చేయడానికి చాలా మంచి ప్రోగ్రామింగ్ లాంగ్వేజ్ మద్దతును అందిస్తుంది. అధికారికంగా మద్దతు ఇచ్చే లైబ్రరీలు C#, Go, Java, node.js, PHP, పైథాన్ మరియు రూబీ ప్రాంతంలో ఉన్నాయి. డాక్యుమెంటేషన్ చాలా వివరంగా ఉంది, కానీ ఇతర అత్యాధునిక సాంకేతికతల మాదిరిగానే, అత్యంత ప్రజాదరణ పొందిన డేటాబేస్ సాంకేతికతలతో పోలిస్తే సంఘం చాలా చిన్నది, దీని వలన తక్కువ సాధారణ వినియోగ కేసులు లేదా సమస్యలపై ఎక్కువ సమయం వెచ్చించవచ్చు.

కాబట్టి స్థానిక అభివృద్ధి మద్దతు గురించి ఏమిటి?

మేము ప్రాంగణంలో క్లౌడ్ స్పేనర్ ఉదాహరణను సృష్టించడానికి మార్గాన్ని కనుగొనలేదు. మాకు దగ్గరిది డాకర్ చిత్రం బొద్దింక డిబిఇది సూత్రంలో సమానంగా ఉంటుంది, కానీ ఆచరణలో చాలా భిన్నంగా ఉంటుంది. ఉదాహరణకు CockroachDB PostgreSQL JDBCని ఉపయోగించవచ్చు. డెవలప్‌మెంట్ వాతావరణం ఉత్పాదక వాతావరణానికి వీలైనంత దగ్గరగా ఉండాలి కాబట్టి, క్లౌడ్ స్పేనర్ అనువైనది కాదు ఎందుకంటే మీరు పూర్తి స్పేనర్ ఉదాహరణపై ఆధారపడాలి. ఖర్చులను ఆదా చేయడానికి, మీరు ఒకే ప్రాంత ఉదాహరణను ఎంచుకోవచ్చు.

పరిపాలన మద్దతు?

క్లౌడ్ స్పానర్ ఉదాహరణను సృష్టించడం చాలా సులభం. మీరు బహుళ-ప్రాంతం లేదా ఒకే-ప్రాంత ఉదాహరణని సృష్టించడం మధ్య ఎంచుకోవాలి, ప్రాంతం(లు) మరియు నోడ్‌ల సంఖ్యను పేర్కొనండి. ఒక నిమిషం కంటే తక్కువ వ్యవధిలో, ఉదాహరణ అమలులోకి వస్తుంది.

అనేక ప్రాథమిక కొలమానాలు నేరుగా Google కన్సోల్‌లోని స్పానర్ పేజీలో అందుబాటులో ఉన్నాయి. Stackdriver ద్వారా మరింత వివరణాత్మక వీక్షణలు అందుబాటులో ఉన్నాయి, ఇక్కడ మీరు మెట్రిక్ థ్రెషోల్డ్‌లు మరియు హెచ్చరిక విధానాలను కూడా సెట్ చేయవచ్చు.

వనరులకు ప్రాప్యత?

MySQL విస్తృతమైన మరియు చాలా గ్రాన్యులర్ యూజర్ అనుమతి/పాత్ర సెట్టింగ్‌లను అందిస్తుంది. మీరు నిర్దిష్ట పట్టికకు లేదా దాని నిలువు వరుసల ఉపసమితికి ప్రాప్యతను సులభంగా అనుకూలీకరించవచ్చు. క్లౌడ్ స్పానర్ Google ఐడెంటిటీ & యాక్సెస్ మేనేజ్‌మెంట్ (IAM) సాధనాన్ని ఉపయోగిస్తుంది, ఇది చాలా ఎక్కువ స్థాయిలో విధానాలు మరియు అనుమతులను సెట్ చేయడానికి మాత్రమే మిమ్మల్ని అనుమతిస్తుంది. అత్యంత గ్రాన్యులర్ ఎంపిక డేటాబేస్-స్థాయి అనుమతి, ఇది చాలా ఉత్పత్తి సందర్భాలలో సరిపోదు. స్పానర్ వనరుల అనధికారిక వినియోగాన్ని నిరోధించడానికి మీ కోడ్, మౌలిక సదుపాయాలు లేదా రెండింటికి అదనపు భద్రతా చర్యలను జోడించడానికి ఈ పరిమితి మిమ్మల్ని బలవంతం చేస్తుంది.

బ్యాకప్‌లు?

సరళంగా చెప్పాలంటే, క్లౌడ్ స్పానర్‌లో బ్యాకప్‌లు లేవు. Google యొక్క అధిక SLA అవసరాలు హార్డ్‌వేర్ లేదా డేటాబేస్ వైఫల్యాలు, మానవ తప్పిదాలు, అప్లికేషన్ లోపాలు మొదలైన వాటి కారణంగా మీరు ఏ డేటాను కోల్పోకుండా ఉండేలా చూసుకోవచ్చు. మనందరికీ ఈ నియమం తెలుసు: అధిక లభ్యత అనేది స్మార్ట్ బ్యాకప్ వ్యూహానికి ప్రత్యామ్నాయం కాదు. ప్రస్తుతం, డేటాను బ్యాకప్ చేయడానికి ఏకైక మార్గం డేటాబేస్ నుండి ప్రత్యేక స్టోరేజ్ ఎన్విరాన్మెంట్‌కు ప్రోగ్రామ్‌ల ద్వారా ప్రసారం చేయడం.

పనితీరును ప్రశ్నించాలా?

మేము డేటాను లోడ్ చేయడానికి మరియు ప్రశ్నలను పరీక్షించడానికి Yahoo!ని ఉపయోగించాము. క్లౌడ్ సర్వింగ్ బెంచ్‌మార్క్. దిగువ పట్టిక B YCSB పనిభారాన్ని 95% రీడ్ టు 5% రైట్ రేషియోతో చూపుతుంది.

Google Cloud Spanner: మంచిది, చెడ్డది, అగ్లీ

* లోడ్ పరీక్ష n1-స్టాండర్డ్-32 కంప్యూట్ ఇంజిన్ (CE) (32 vCPUలు, 120 GB మెమరీ)పై అమలు చేయబడింది మరియు పరీక్షా సందర్భం పరీక్షలలో ఎప్పుడూ అడ్డంకి కాదు.
** ఒక YCSB ఉదాహరణలో గరిష్ట సంఖ్య థ్రెడ్‌లు 400. మొత్తంగా, మొత్తం 2400 థ్రెడ్‌లను పొందడానికి YCSB పరీక్షల యొక్క ఆరు సమాంతర సందర్భాలను అమలు చేయాలి.

బెంచ్‌మార్క్ ఫలితాలను చూస్తే, ముఖ్యంగా CPU లోడ్ మరియు TPS కలయిక, క్లౌడ్ స్పేనర్ స్కేల్‌లు బాగా ఉన్నాయని మనం స్పష్టంగా చూడవచ్చు. పెద్ద సంఖ్యలో థ్రెడ్‌ల ద్వారా సృష్టించబడిన పెద్ద లోడ్ క్లౌడ్ స్పానర్ క్లస్టర్‌లోని పెద్ద సంఖ్యలో నోడ్‌ల ద్వారా ఆఫ్‌సెట్ చేయబడుతుంది. జాప్యం చాలా ఎక్కువగా కనిపిస్తున్నప్పటికీ, ప్రత్యేకించి 2400 థ్రెడ్‌ల వద్ద నడుస్తున్నప్పుడు, మరింత ఖచ్చితమైన సంఖ్యలను పొందడానికి కంప్యూట్ ఇంజిన్ యొక్క 6 చిన్న ఉదాహరణలతో మళ్లీ పరీక్షించడం అవసరం కావచ్చు. ప్రతి ఉదాహరణ 6 సమాంతర పరీక్షలతో ఒక పెద్ద CE ఉదాహరణకి బదులుగా ఒక YCSB పరీక్షను అమలు చేస్తుంది. ఇది Cloud Spanner అభ్యర్థన ఆలస్యం మరియు Cloud Spanner మధ్య నెట్‌వర్క్ కనెక్షన్ ద్వారా జోడించబడిన ఆలస్యం మరియు పరీక్షను అమలు చేస్తున్న CE ఉదాహరణల మధ్య తేడాను గుర్తించడం సులభం చేస్తుంది.

క్లౌడ్ స్పానర్ OLAPగా ఎలా పని చేస్తుంది?

విభజన చేస్తారా?

డేటాను భౌతికంగా మరియు/లేదా తార్కికంగా స్వతంత్ర విభాగాలుగా విభజించడం, విభజనలు అని పిలుస్తారు, ఇది చాలా OLAP ఇంజిన్‌లలో కనిపించే చాలా ప్రజాదరణ పొందిన భావన. విభజనలు ప్రశ్న పనితీరును మరియు డేటాబేస్ నిర్వహణను బాగా మెరుగుపరుస్తాయి. విభజన గురించి మరింత లోతుగా పరిశోధించడం ఒక ప్రత్యేక కథనం(లు) అవుతుంది, కాబట్టి విభజన పథకం మరియు ఉప-విభజన యొక్క ప్రాముఖ్యతను మాత్రమే ప్రస్తావిద్దాం. డేటాను విభజనలుగా మరియు ఉప-విభజనలుగా విభజించగల సామర్థ్యం విశ్లేషణాత్మక ప్రశ్నల పనితీరుకు కీలకం.

క్లౌడ్ స్పేనర్ ఒక్కొక్కటిగా విభజనలకు మద్దతు ఇవ్వదు. ఇది డేటాను అంతర్గతంగా పిలవబడే వాటిగా వేరు చేస్తుంది స్ప్లిట్-లు ప్రాథమిక కీ పరిధుల ఆధారంగా. క్లౌడ్ స్పానర్ క్లస్టర్‌పై లోడ్‌ను బ్యాలెన్స్ చేయడానికి విభజన స్వయంచాలకంగా జరుగుతుంది. క్లౌడ్ స్పేనర్ యొక్క చాలా సులభ లక్షణం పేరెంట్ టేబుల్ యొక్క బేస్ లోడ్‌ను విభజించడం (ఒక టేబుల్‌తో మరొకదానితో ముడిపడి ఉండదు). అది కలిగి ఉంటే స్పానర్ స్వయంచాలకంగా గుర్తిస్తుంది స్ప్లిట్ ఇతర డేటా కంటే తరచుగా చదవబడే డేటా స్ప్లిట్-అహ్, మరియు తదుపరి విభజనపై నిర్ణయం తీసుకోవచ్చు. అందువల్ల, అభ్యర్థనలో మరిన్ని నోడ్‌లు పాల్గొనవచ్చు, ఇది నిర్గమాంశను కూడా సమర్థవంతంగా పెంచుతుంది.

డేటాను లోడ్ చేస్తున్నారా?

బల్క్ డేటా కోసం క్లౌడ్ స్పానర్ పద్ధతి సాధారణ అప్‌లోడ్‌కు సమానంగా ఉంటుంది. గరిష్ట పనితీరు కోసం, మీరు కొన్ని మార్గదర్శకాలను అనుసరించాలి, వీటితో సహా:

  • ప్రాథమిక కీ ద్వారా మీ డేటాను క్రమబద్ధీకరించండి.
  • వాటిని 10తో భాగించండి*నోడ్ల సంఖ్య వ్యక్తిగత విభాగాలు.
  • డేటాను సమాంతరంగా లోడ్ చేసే వర్కర్ టాస్క్‌ల సమితిని సృష్టించండి.

ఈ డేటా లోడ్ అన్ని క్లౌడ్ స్పానర్ నోడ్‌లను ఉపయోగిస్తుంది.

మేము 10M వరుస డేటాసెట్‌ను రూపొందించడానికి A YCSB పనిభారాన్ని ఉపయోగించాము.

Google Cloud Spanner: మంచిది, చెడ్డది, అగ్లీ

* లోడ్ పరీక్ష n1-స్టాండర్డ్-32 కంప్యూట్ ఇంజన్ (32 vCPUలు, 120 GB మెమరీ)పై అమలు చేయబడింది మరియు పరీక్ష సందర్భం ఎప్పుడూ పరీక్షలలో అడ్డంకి కాదు.
** ఏ ఉత్పత్తి పనిభారానికి 1 నోడ్ సెటప్ సిఫార్సు చేయబడదు.

పైన పేర్కొన్నట్లుగా, క్లౌడ్ స్పేనర్ వాటి లోడ్‌ను బట్టి స్వయంచాలకంగా విభజనలను ప్రాసెస్ చేస్తుంది, కాబట్టి పరీక్ష యొక్క అనేక వరుస పునరావృతాల తర్వాత ఫలితాలు మెరుగుపడతాయి. ఇక్కడ అందించిన ఫలితాలు మేము అందుకున్న ఉత్తమ ఫలితాలు. పై సంఖ్యలను చూస్తే, క్లస్టర్‌లోని నోడ్‌ల సంఖ్య పెరిగే కొద్దీ క్లౌడ్ స్పానర్ స్కేల్‌లు (బాగా) ఎలా ఉంటాయో మనం చూడవచ్చు. ప్రత్యేకంగా కనిపించే సంఖ్యలు చాలా తక్కువ సగటు జాప్యం, ఇది ఎగువ విభాగంలో వివరించిన విధంగా మిశ్రమ పనిభారం (95% చదవడం మరియు 5% వ్రాయడం) ఫలితాలతో విభేదిస్తుంది.

స్కేలింగ్?

క్లౌడ్ స్పేనర్ నోడ్‌ల సంఖ్యను పెంచడం మరియు తగ్గించడం అనేది ఒక క్లిక్ పని. మీరు డేటాను త్వరగా లోడ్ చేయాలనుకుంటే, గరిష్ట స్థాయికి ఉదాహరణను పెంచడాన్ని మీరు పరిగణించవచ్చు (మా విషయంలో ఇది US-EAST ప్రాంతంలో 25 నోడ్‌లు) ఆపై మొత్తం డేటా తర్వాత మీ సాధారణ లోడ్‌కు తగిన నోడ్‌ల సంఖ్యను తగ్గించండి. డేటాబేస్లో 2 TB/నోడ్ పరిమితిని దృష్టిలో ఉంచుకుని.

మేము చాలా చిన్న డేటాబేస్తో కూడా ఈ పరిమితిని గుర్తుచేసుకున్నాము. అనేక లోడ్ టెస్ట్ పరుగుల తర్వాత, మా డేటాబేస్ పరిమాణం 155 GB ఉంది మరియు 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 దీన్ని ఇతర Google ఉత్పత్తులకు ఆధారంగా ఉపయోగిస్తుంది. మరియు Google ఇటీవల Google క్లౌడ్ స్టోరేజ్‌లోని Megastoreని క్లౌడ్ స్పానర్‌తో భర్తీ చేసినప్పుడు, అది Google Cloud Storageని గ్లోబల్ స్కేల్‌లో ఆబ్జెక్ట్ జాబితాలకు అత్యంత స్థిరంగా ఉండేలా అనుమతించింది (ఇది ఇప్పటికీ అలా కాదు. అమెజాన్ యొక్క S3).

కాబట్టి, ఇంకా ఆశ ఉంది... మేము ఆశిస్తున్నాము.

అంతే. వ్యాసం యొక్క రచయిత వలె, మేము కూడా ఆశిస్తున్నాము, అయితే దీని గురించి మీరు ఏమనుకుంటున్నారు? వ్యాఖ్యలలో వ్రాయండి

మా సందర్శించడానికి ప్రతి ఒక్కరినీ ఆహ్వానిస్తున్నాము ఉచిత webinar దీనిలో మేము మీకు కోర్సు గురించి వివరంగా తెలియజేస్తాము "డెవలపర్‌ల కోసం AWS" OTUS నుండి.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి