CodeGym /జావా కోర్సు /All lectures for TE purposes /Apache Cassandra: డేటాను క్లస్టర్‌లో నిల్వ చేయడం

Apache Cassandra: డేటాను క్లస్టర్‌లో నిల్వ చేయడం

All lectures for TE purposes
స్థాయి , పాఠం
అందుబాటులో ఉంది

5.1 డేటా పంపిణీ

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

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

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

నేను చెప్పినట్లుగా, RandomPartitioner ప్రతి కీకి 128-bit md5ని లెక్కిస్తుంది. డేటా ఏ నోడ్‌లలో నిల్వ చేయబడుతుందో నిర్ణయించడానికి, ఇది చిన్న నుండి పెద్ద వరకు నోడ్‌ల యొక్క అన్ని లేబుల్‌ల గుండా వెళుతుంది మరియు లేబుల్ విలువ md5 కీ విలువ కంటే ఎక్కువగా మారినప్పుడు, ఈ నోడ్‌తో పాటు నిల్వ కోసం తదుపరి నోడ్‌ల సంఖ్య (లేబుల్‌ల క్రమంలో) ఎంపిక చేయబడింది. ఎంచుకున్న నోడ్‌ల మొత్తం సంఖ్య తప్పనిసరిగా రెప్లికేషన్ ఫ్యాక్టర్‌కి సమానంగా ఉండాలి. ప్రతి కీస్పేస్ కోసం రెప్లికేషన్ స్థాయి సెట్ చేయబడింది మరియు డేటా రిడెండెన్సీని సర్దుబాటు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది (డేటా రిడెండెన్సీ).

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

సమాన అంతరం ఉన్న లేబుల్‌లతో 6 నోడ్‌ల క్లస్టర్ రింగ్‌ను ప్రదర్శించడానికి అంతర్నిర్మిత నోడ్‌టూల్ యుటిలిటీని ఉపయోగించి ఇక్కడ ఒక ఉదాహరణ ఉంది.

5.2 వ్రాసేటప్పుడు డేటా స్థిరత్వం

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

ప్రతి అభ్యర్థన కోసం, చదవడం మరియు వ్రాయడం కోసం, డేటా స్థిరత్వం స్థాయిని సెట్ చేయడం సాధ్యపడుతుంది.

ఒక వ్రాత కోసం, వినియోగదారుకు నియంత్రణను తిరిగి ఇచ్చే ముందు ఆపరేషన్ (డేటా వ్రాసిన) విజయవంతంగా పూర్తయినట్లు నిర్ధారణ కోసం వేచి ఉండే ప్రతిరూప నోడ్‌ల సంఖ్యను ఈ స్థాయి ప్రభావితం చేస్తుంది. రికార్డ్ కోసం, ఈ స్థిరత్వ స్థాయిలు ఉన్నాయి:

  • ONE - కోఆర్డినేటర్ అన్ని ప్రతిరూప నోడ్‌లకు అభ్యర్థనలను పంపుతుంది, కానీ మొదటి నోడ్ నుండి నిర్ధారణ కోసం వేచి ఉన్న తర్వాత, వినియోగదారుకు నియంత్రణను అందిస్తుంది;
  • TWO - అదే, కానీ నియంత్రణ తిరిగి రావడానికి ముందు కోఆర్డినేటర్ మొదటి రెండు నోడ్‌ల నుండి నిర్ధారణ కోసం వేచి ఉంటాడు;
  • THREE - ఇదే, కానీ నియంత్రణ తిరిగి రావడానికి ముందు కోఆర్డినేటర్ మొదటి మూడు నోడ్‌ల నుండి నిర్ధారణ కోసం వేచి ఉంటాడు;
  • QUORUM - కోరం సేకరించబడుతుంది: కోఆర్డినేటర్ సగానికి పైగా ప్రతిరూప నోడ్‌ల నుండి రికార్డ్ యొక్క నిర్ధారణ కోసం వేచి ఉన్నారు, అవి రౌండ్ (N / 2) + 1, ఇక్కడ N ప్రతిరూపణ స్థాయి;
  • LOCAL_QUORUM - కోఆర్డినేటర్ ఉన్న అదే డేటా సెంటర్‌లో సగానికి పైగా ప్రతిరూప నోడ్‌ల నుండి నిర్ధారణ కోసం సమన్వయకర్త వేచి ఉన్నారు (ప్రతి అభ్యర్థనకు భిన్నంగా ఉండవచ్చు). ఇతర డేటా కేంద్రాలకు డేటాను పంపడంలో సంబంధించిన ఆలస్యాలను వదిలించుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది. అనేక డేటా సెంటర్లతో పని చేసే సమస్యలు ఈ వ్యాసంలో ఉత్తీర్ణతలో పరిగణించబడతాయి;
  • EACH_QUORUM - కోఆర్డినేటర్ ప్రతి డేటా సెంటర్‌లోని సగానికి పైగా ప్రతిరూప నోడ్‌ల నుండి స్వతంత్రంగా నిర్ధారణ కోసం వేచి ఉన్నారు;
  • ALL - కోఆర్డినేటర్ అన్ని ప్రతిరూప నోడ్‌ల నుండి నిర్ధారణ కోసం వేచి ఉంటాడు;
  • ఏదైనా - అన్ని ప్రతిరూప నోడ్‌లు ప్రతిస్పందించనప్పటికీ, డేటాను వ్రాయడం సాధ్యం చేస్తుంది. కోఆర్డినేటర్ రెప్లికా నోడ్‌లలో ఒకదాని నుండి మొదటి ప్రతిస్పందన కోసం లేదా కోఆర్డినేటర్‌పై సూచించిన హ్యాండ్‌ఆఫ్‌ని ఉపయోగించి డేటాను నిల్వ చేయడం కోసం వేచి ఉంటారు.

5.3 చదివేటప్పుడు డేటా స్థిరత్వం

రీడ్‌ల కోసం, స్థిరత్వ స్థాయి చదవబడే రెప్లికా నోడ్‌ల సంఖ్యను ప్రభావితం చేస్తుంది. చదవడానికి, ఈ స్థిరత్వ స్థాయిలు ఉన్నాయి:

  • వన్ - కోఆర్డినేటర్ సమీప ప్రతిరూప నోడ్‌కు అభ్యర్థనలను పంపుతుంది. కాసాండ్రా కాన్ఫిగరేషన్‌లో పేర్కొన్న సంభావ్యతతో రీడ్ రిపేర్ కోసం మిగిలిన ప్రతిరూపాలు కూడా చదవబడతాయి;
  • TWO ఒకటే, కానీ సమన్వయకర్త రెండు సమీప నోడ్‌లకు అభ్యర్థనలను పంపుతారు. అతిపెద్ద టైమ్‌స్టాంప్‌తో విలువ ఎంపిక చేయబడింది;
  • THREE - మునుపటి ఎంపికను పోలి ఉంటుంది, కానీ మూడు నోడ్లతో;
  • QUORUM - ఒక కోరమ్ సేకరించబడుతుంది, అనగా, సమన్వయకర్త ప్రతిరూప నోడ్‌లలో సగానికి పైగా అభ్యర్థనలను పంపుతాడు, అవి రౌండ్ (N / 2) + 1, ఇక్కడ N ప్రతిరూపణ స్థాయి;
  • LOCAL_QUORUM - కోఆర్డినేషన్ జరిగే డేటా సెంటర్‌లో కోరం సేకరించబడుతుంది మరియు తాజా టైమ్‌స్టాంప్‌తో డేటా తిరిగి ఇవ్వబడుతుంది;
  • EACH_QUORUM - కోఆర్డినేటర్ ప్రతి డేటా సెంటర్‌లో కోరం సమావేశం తర్వాత డేటాను తిరిగి అందజేస్తారు;
  • ALL - కోఆర్డినేటర్ అన్ని ప్రతిరూప నోడ్‌ల నుండి చదివిన తర్వాత డేటాను అందిస్తుంది.

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

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

ఏదైనా సందర్భంలో, విలువ చివరికి ప్రతిరూపాల మధ్య ప్రచారం చేయబడుతుంది, కానీ సమన్వయ నిరీక్షణ ముగిసిన తర్వాత మాత్రమే. ఈ ప్రచారాన్ని ఆఖరి అనుగుణ్యత అంటారు. వ్రాసే సమయంలో అన్ని రెప్లికా నోడ్‌లు అందుబాటులో లేకుంటే, రెమిడియల్ రీడ్‌లు మరియు యాంటీ-ఎంట్రోపీ నోడ్ రిపేర్ వంటి త్వరగా లేదా తర్వాత రికవరీ సాధనాలు అమలులోకి వస్తాయి. దీని గురించి మరింత తరువాత.

అందువలన, QUORUM చదవడం మరియు వ్రాయడం అనుగుణ్యత స్థాయితో, బలమైన అనుగుణ్యత ఎల్లప్పుడూ నిర్వహించబడుతుంది మరియు ఇది చదవడం మరియు వ్రాయడం జాప్యం మధ్య సమతుల్యతను కలిగి ఉంటుంది. అన్ని రైట్‌లు మరియు వన్ రీడ్‌లతో బలమైన అనుగుణ్యత ఉంటుంది మరియు రీడ్‌లు వేగంగా మరియు మరింత అందుబాటులో ఉంటాయి, అనగా విఫలమైన నోడ్‌ల సంఖ్య QUORUM కంటే ఎక్కువగా ఉంటుంది.

వ్రాత కార్యకలాపాల కోసం, అన్ని రెప్లికా వర్కర్ నోడ్‌లు అవసరం. ఒకదాన్ని వ్రాసేటప్పుడు, అన్నీ చదివేటప్పుడు, కఠినమైన అనుగుణ్యత కూడా ఉంటుంది మరియు వ్రాత కార్యకలాపాలు వేగంగా ఉంటాయి మరియు వ్రాత లభ్యత పెద్దదిగా ఉంటుంది, ఎందుకంటే వ్రాత ఆపరేషన్ కనీసం ఒక సర్వర్‌లో జరిగిందని మాత్రమే నిర్ధారించడానికి సరిపోతుంది. పఠనం నెమ్మదిగా ఉంటుంది మరియు అన్ని ప్రతిరూప నోడ్‌లు అవసరం. అనువర్తనానికి కఠినమైన అనుగుణ్యత అవసరం లేకపోతే, చదవడం మరియు వ్రాయడం రెండింటినీ వేగవంతం చేయడం సాధ్యపడుతుంది, అలాగే తక్కువ స్థిరత్వ స్థాయిలను సెట్ చేయడం ద్వారా లభ్యతను మెరుగుపరచడం సాధ్యమవుతుంది.

వ్యాఖ్యలు
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION