ప్రోహోస్టర్ > బ్లాగ్ > పరిపాలన > డేటాను నిల్వ చేయడానికి గ్లోబల్స్ నిధి-కత్తులు. చెట్లు. పార్ట్ 1
డేటాను నిల్వ చేయడానికి గ్లోబల్స్ నిధి-కత్తులు. చెట్లు. పార్ట్ 1
నిజమైన డేటాబేస్ కత్తులు - గ్లోబల్స్ - చాలా కాలంగా తెలుసు, కానీ ఇప్పటికీ కొంతమందికి వాటిని సమర్థవంతంగా ఎలా ఉపయోగించాలో తెలుసు లేదా ఈ సూపర్వీపన్ను అస్సలు స్వంతం చేసుకోలేరు.
మీరు గ్లోబల్లను ఉపయోగిస్తే, వారు నిజంగా మంచిగా ఉన్న సమస్యలను పరిష్కరించడంలో, మీరు అత్యుత్తమ ఫలితాలను సాధించవచ్చు. ఉత్పాదకతలో లేదా సమస్య పరిష్కారాన్ని సులభతరం చేయడంలో (1, 2).
గ్లోబల్స్ అనేది SQLలోని టేబుల్ల నుండి పూర్తిగా భిన్నమైన డేటాను నిల్వ చేయడానికి మరియు ప్రాసెస్ చేయడానికి ఒక ప్రత్యేక మార్గం. వారు 1966లో భాషలో కనిపించారు M(UMPS) (పరిణామాత్మక అభివృద్ధి - కాష్ ఆబ్జెక్ట్స్క్రిప్ట్, ఇకపై COS) వైద్య డేటాబేస్లో ఉంది మరియు ఇప్పటికీ ఉంది చురుకుగా ఉపయోగిస్తారు, మరియు విశ్వసనీయత మరియు అధిక పనితీరు అవసరమయ్యే కొన్ని ఇతర రంగాలలోకి కూడా చొచ్చుకుపోయింది: ఫైనాన్స్, ట్రేడింగ్ మొదలైనవి.
ఆధునిక DBMSలలోని గ్లోబల్లు లావాదేవీలు, లాగింగ్, రెప్లికేషన్ మరియు విభజనలకు మద్దతు ఇస్తాయి. ఆ. ఆధునిక, నమ్మదగిన, పంపిణీ చేయబడిన మరియు వేగవంతమైన వ్యవస్థలను నిర్మించడానికి వాటిని ఉపయోగించవచ్చు.
గ్లోబల్స్ మిమ్మల్ని రిలేషనల్ మోడల్కు పరిమితం చేయవు. నిర్దిష్ట పనుల కోసం ఆప్టిమైజ్ చేయబడిన డేటా స్ట్రక్చర్లను అభివృద్ధి చేయడానికి అవి మీకు స్వేచ్ఛను ఇస్తాయి. అనేక అనువర్తనాల కోసం, గ్లోబల్స్ యొక్క స్మార్ట్ ఉపయోగం నిజంగా ఒక రహస్య ఆయుధంగా ఉంటుంది, రిలేషనల్ అప్లికేషన్ డెవలపర్లు కలలు కనే పనితీరును అందిస్తుంది.
డేటాను నిల్వ చేసే మార్గంగా గ్లోబల్లను అనేక ఆధునిక ప్రోగ్రామింగ్ భాషలలో, ఉన్నత-స్థాయి మరియు తక్కువ-స్థాయి రెండింటిలోనూ ఉపయోగించవచ్చు. అందువల్ల, ఈ వ్యాసంలో నేను ప్రత్యేకంగా గ్లోబల్లపై దృష్టి పెడతాను మరియు అవి ఒకసారి వచ్చిన భాషపై కాదు.
2. గ్లోబల్స్ ఎలా పని చేస్తాయి
గ్లోబల్లు ఎలా పని చేస్తాయి మరియు వాటి బలాలు ఏమిటో మొదట అర్థం చేసుకుందాం. గ్లోబల్లను వివిధ కోణాల నుండి చూడవచ్చు. వ్యాసం యొక్క ఈ భాగంలో మేము వాటిని చెట్లుగా చూస్తాము. లేదా క్రమానుగత డేటా గిడ్డంగుల వంటివి.
సరళంగా చెప్పాలంటే, గ్లోబల్ అనేది నిరంతర శ్రేణి. డిస్క్లో స్వయంచాలకంగా సేవ్ చేయబడిన శ్రేణి.
డేటాను నిల్వ చేయడానికి సరళమైనదాన్ని ఊహించడం కష్టం. కోడ్లో (COS/M భాషల్లో) ఇది సాధారణ అనుబంధ శ్రేణి నుండి చిహ్నంలో మాత్రమే భిన్నంగా ఉంటుంది ^ పేరు ముందు.
గ్లోబల్లో డేటాను సేవ్ చేయడానికి, మీరు SQL ప్రశ్న భాషను నేర్చుకోవాల్సిన అవసరం లేదు; వారితో పని చేయడానికి ఆదేశాలు చాలా సులభం. వాటిని గంటలో నేర్చుకోవచ్చు.
సరళమైన ఉదాహరణతో ప్రారంభిద్దాం. 2 శాఖలతో ఒకే-స్థాయి చెట్టు. ఉదాహరణలు COSలో వ్రాయబడ్డాయి.
Set ^a("+7926X") = "John Sidorov"
Set ^a("+7916Y") = "Sergey Smith"
గ్లోబల్ (సెట్ కమాండ్)లోకి సమాచారాన్ని చొప్పించినప్పుడు, 3 విషయాలు స్వయంచాలకంగా జరుగుతాయి:
డిస్క్లో డేటాను సేవ్ చేస్తోంది.
ఇండెక్సింగ్. కుండలీకరణాల్లో ఉన్నది కీలకం (ఇంగ్లీష్ సాహిత్యంలో - “సబ్స్క్రిప్ట్”), మరియు సమానం యొక్క కుడి వైపున విలువ (“నోడ్ విలువ”) ఉంటుంది.
క్రమబద్ధీకరణ. డేటా కీ ద్వారా క్రమబద్ధీకరించబడింది. భవిష్యత్తులో, శ్రేణిని దాటుతున్నప్పుడు, మొదటి మూలకం "సెర్గీ స్మిత్" మరియు రెండవది "జాన్ సిడోరోవ్". గ్లోబల్ నుండి వినియోగదారుల జాబితాను స్వీకరించినప్పుడు, డేటాబేస్ సార్టింగ్ సమయాన్ని వృథా చేయదు. అంతేకాకుండా, మీరు క్రమబద్ధీకరించబడిన జాబితా యొక్క అవుట్పుట్ను అభ్యర్థించవచ్చు, ఏదైనా కీ నుండి ప్రారంభించి, ఉనికిలో లేనిది కూడా (అవుట్పుట్ మొదటి నిజమైన కీ నుండి ప్రారంభమవుతుంది, ఇది ఉనికిలో లేని దాని తర్వాత వస్తుంది).
ఈ కార్యకలాపాలన్నీ చాలా త్వరగా జరుగుతాయి. నా హోమ్ కంప్యూటర్లో నేను ఒకే ప్రక్రియలో 750 ఇన్సర్ట్లు/సెకను వరకు విలువలను పొందుతున్నాను. మల్టీ-కోర్ ప్రాసెసర్లలో విలువలు చేరుకోగలవు పదిలక్షలు ఇన్సర్ట్/సెక.
వాస్తవానికి, చొప్పించే వేగం చాలా చెప్పదు. ఉదాహరణకు, మీరు టెక్స్ట్ ఫైల్లలో సమాచారాన్ని చాలా త్వరగా వ్రాయవచ్చు - ఇలా పుకారు వీసా ప్రాసెసింగ్ పనులు. కానీ గ్లోబల్స్ విషయంలో, మేము ఫలితంగా నిర్మాణాత్మక ఇండెక్స్డ్ స్టోరేజ్ని పొందుతాము, భవిష్యత్తులో దీనితో సులభంగా మరియు త్వరగా పని చేయవచ్చు.
గ్లోబల్స్ యొక్క అతిపెద్ద బలం కొత్త నోడ్లను చొప్పించే వేగం.
గ్లోబల్లోని డేటా ఎల్లప్పుడూ సూచిక చేయబడుతుంది. వాటిని ఒక స్థాయిలో మరియు చెట్టులోకి లోతుగా ప్రయాణించడం ఎల్లప్పుడూ వేగంగా ఉంటుంది.
గ్లోబల్కు రెండవ మరియు మూడవ స్థాయిల యొక్క మరికొన్ని శాఖలను జోడిద్దాము.
Set ^a("+7926X", "city") = "Moscow"
Set ^a("+7926X", "city", "street") = "Req Square"
Set ^a("+7926X", "age") = 25
Set ^a("+7916Y", "city") = "London"
Set ^a("+7916Y", "city", "street") = "Baker Street"
Set ^a("+7916Y", "age") = 36
గ్లోబల్స్ ఆధారంగా బహుళ-స్థాయి చెట్లను నిర్మించవచ్చని స్పష్టంగా తెలుస్తుంది. అంతేకాకుండా, చొప్పించే సమయంలో ఆటో-ఇండెక్సింగ్ కారణంగా ఏదైనా నోడ్కు ప్రాప్యత దాదాపు తక్షణమే అవుతుంది. మరియు చెట్టు యొక్క ఏ స్థాయిలోనైనా, అన్ని శాఖలు కీ ద్వారా క్రమబద్ధీకరించబడతాయి.
మీరు గమనిస్తే, సమాచారాన్ని కీ మరియు విలువ రెండింటిలోనూ నిల్వ చేయవచ్చు. మొత్తం కీ పొడవు (అన్ని సూచికల పొడవుల మొత్తం) చేరుకోవచ్చు 511 బైట్లు, మరియు విలువలు 3.6 MB కాష్ కోసం. చెట్టులోని స్థాయిల సంఖ్య (పరిమాణాల సంఖ్య) 31.
మరో ఆసక్తికరమైన అంశం. ఎగువ స్థాయిల నోడ్ల విలువలను పేర్కొనకుండా మీరు చెట్టును నిర్మించవచ్చు.
Set ^b("a", "b", "c", "d") = 1
Set ^b("a", "b", "c", "e") = 2
Set ^b("a", "b", "f", "g") = 3
ఖాళీ సర్కిల్లు అంటే విలువ కేటాయించని నోడ్లు.
గ్లోబల్లను బాగా అర్థం చేసుకోవడానికి, వాటిని ఇతర చెట్లతో పోల్చి చూద్దాం: తోట చెట్లు మరియు ఫైల్ సిస్టమ్ పేరు చెట్లు.
గ్లోబల్స్లోని చెట్లను మనకు బాగా తెలిసిన క్రమానుగత నిర్మాణాలతో పోల్చి చూద్దాం: తోటలు మరియు పొలాల్లో పెరిగే సాధారణ చెట్లతో పాటు ఫైల్ సిస్టమ్లతో.
తోట చెట్లలో మనం చూస్తున్నట్లుగా, ఆకులు మరియు పండ్లు కొమ్మల చివర్లలో మాత్రమే కనిపిస్తాయి.
ఫైల్ సిస్టమ్స్ - సమాచారం పూర్తిగా అర్హత కలిగిన ఫైల్ పేర్లైన శాఖల చివరలలో మాత్రమే నిల్వ చేయబడుతుంది.
మరియు ఇక్కడ గ్లోబల్ డేటా స్ట్రక్చర్ ఉంది.
తేడాలు:
అంతర్గత నోడ్స్: గ్లోబల్లోని సమాచారాన్ని బ్రాంచ్ల చివర్లలో మాత్రమే కాకుండా ప్రతి నోడ్లో నిల్వ చేయవచ్చు.
బాహ్య నోడ్స్: గ్లోబల్ తప్పనిసరిగా శాఖల చివర్లలో నిర్వచించిన విలువలను కలిగి ఉండాలి, అయితే FS మరియు గార్డెన్ చెట్లు ఉండవు.
అంతర్గత నోడ్ల పరంగా, గ్లోబల్ యొక్క నిర్మాణం ఫైల్ సిస్టమ్స్ మరియు గార్డెన్ చెట్లలో పేరు చెట్ల నిర్మాణం యొక్క సూపర్సెట్ అని మేము చెప్పగలం. ఆ. మరింత సౌకర్యవంతమైన.
సాధారణంగా, గ్లోబల్ ప్రతి నోడ్లో డేటాను నిల్వ చేయగల సామర్థ్యంతో ట్రీని ఆదేశించింది.
గ్లోబల్స్ యొక్క పనిని బాగా అర్థం చేసుకోవడానికి, ఫైల్ సిస్టమ్స్ యొక్క సృష్టికర్తలు సమాచారాన్ని నిల్వ చేయడానికి గ్లోబల్స్ మాదిరిగానే ఒక విధానాన్ని ఉపయోగిస్తే ఏమి జరుగుతుందో ఊహించండి?
డైరెక్టరీలోని ఒక ఫైల్ను తొలగించడం వలన డైరెక్టరీని స్వయంచాలకంగా తొలగించబడుతుంది, అలాగే ఇప్పుడు తొలగించబడిన ఒక డైరెక్టరీని మాత్రమే కలిగి ఉన్న అన్ని ఓవర్లైయింగ్ డైరెక్టరీలు స్వయంచాలకంగా తొలగించబడతాయి.
డైరెక్టరీల అవసరం ఉండదు. సబ్ఫైల్లతో ఫైల్లు మరియు సబ్ఫైల్స్ లేని ఫైల్లు ఉంటాయి. ఒక సాధారణ చెట్టుతో పోల్చినట్లయితే, ప్రతి కొమ్మ ఒక పండు అవుతుంది.
README.txt ఫైల్ల వంటి అంశాలు అవసరం ఉండకపోవచ్చు. డైరెక్టరీ యొక్క కంటెంట్ల గురించి చెప్పాల్సిన ప్రతిదీ డైరెక్టరీ ఫైల్లోనే వ్రాయబడుతుంది. పాత్ స్పేస్లో, ఫైల్ పేరు డైరెక్టరీ పేరు నుండి వేరు చేయబడదు, కాబట్టి కేవలం ఫైల్లతో పొందడం సాధ్యమైంది.
సమూహ ఉప డైరెక్టరీలు మరియు ఫైల్లతో డైరెక్టరీలను తొలగించే వేగం నాటకీయంగా పెరుగుతుంది. మిలియన్ల కొద్దీ చిన్న ఫైల్లను తొలగించడం ఎంత కాలం మరియు కష్టమైనదో హబ్రేలో చాలా సార్లు కథనాలు వచ్చాయి (1, 2) అయితే, మీరు గ్లోబల్లో ఒక నకిలీ-ఫైల్ సిస్టమ్ను తయారు చేస్తే, దానికి సెకన్లు లేదా భిన్నాలు పడుతుంది. నేను హోమ్ కంప్యూటర్లో సబ్ట్రీలను తొలగించడాన్ని పరీక్షించినప్పుడు, అది 1 సెకనులో HDD (SSD కాదు)లోని రెండు-స్థాయి ట్రీ నుండి 96-341 మిలియన్ నోడ్లను తీసివేసింది. అంతేకాకుండా, మేము చెట్టు యొక్క భాగాన్ని తొలగించడం గురించి మాట్లాడుతున్నాము మరియు గ్లోబల్స్తో మొత్తం ఫైల్ మాత్రమే కాదు.
సబ్ట్రీలను తీసివేయడం అనేది గ్లోబల్ల యొక్క మరొక బలమైన అంశం. దీని కోసం మీకు పునరావృతం అవసరం లేదు. ఇది చాలా త్వరగా జరుగుతుంది.
మా చెట్టులో ఇది ఆదేశంతో చేయవచ్చు కిల్.
Kill ^a("+7926X")
గ్లోబల్లలో మాకు ఏ చర్యలు అందుబాటులో ఉన్నాయో బాగా అర్థం చేసుకోవడానికి, నేను ఒక చిన్న పట్టికను అందిస్తాను.
COSలో గ్లోబల్లతో పని చేయడానికి ప్రాథమిక ఆదేశాలు మరియు విధులు
సెట్
బ్రాంచ్లను నోడ్కి (ఇంకా నిర్వచించకపోతే) మరియు నోడ్ విలువలకు అమర్చడం