ఇన్-మెమరీ అనేది అప్లికేషన్ యొక్క RAMలో నిల్వ చేయబడినప్పుడు డేటాను నిల్వ చేయడానికి మరియు డిస్క్ బ్యాకప్ కోసం ఉపయోగించబడుతుంది. క్లాసికల్ విధానాలలో, డేటా డిస్క్లో నిల్వ చేయబడుతుంది మరియు మెమరీ కాష్లో నిల్వ చేయబడుతుంది. ఉదాహరణకు, డేటాను ప్రాసెస్ చేయడం కోసం బ్యాకెండ్ ఉన్న వెబ్ అప్లికేషన్ దానిని స్టోరేజీకి అభ్యర్థిస్తుంది: అది దాన్ని స్వీకరిస్తుంది, రూపాంతరం చేస్తుంది మరియు నెట్వర్క్ ద్వారా చాలా డేటా బదిలీ చేయబడుతుంది. ఇన్-మెమొరీలో, లెక్కలు డేటాకు పంపబడతాయి - నిల్వకు, అవి ప్రాసెస్ చేయబడతాయి మరియు నెట్వర్క్ తక్కువ లోడ్ చేయబడుతుంది.
ఇన్-మెమొరీతో ఏ ఇతర అవకాశాలు అందుబాటులో ఉన్నాయి మరియు ఇది ఎలాంటి విధానం? వ్లాదిమిర్ ప్లిగిన్ - గ్రిడ్గెయిన్లో ఇంజనీర్. ఇన్-మెమరీతో పని చేయని మరియు ప్రయత్నించాలనుకునే లేదా సాఫ్ట్వేర్ డెవలప్మెంట్ మరియు ఆర్కిటెక్చర్ డిజైన్లో ఆధునిక పోకడలపై ఆసక్తి ఉన్న వెబ్ అప్లికేషన్ బ్యాకెండ్ డెవలపర్లకు ఈ రివ్యూ మెటీరియల్ ఉపయోగకరంగా ఉంటుంది.
వ్యాఖ్య. ఈ కథనం #GetIT కాన్ఫ్లో వ్లాదిమిర్ నివేదిక యొక్క ట్రాన్స్క్రిప్ట్ ఆధారంగా రూపొందించబడింది. స్వీయ-ఒంటరితనం ప్రవేశపెట్టడానికి ముందు, మేము మాస్కో మరియు సెయింట్ పీటర్స్బర్గ్లలో డెవలపర్ల కోసం క్రమం తప్పకుండా సమావేశాలు మరియు సమావేశాలను నిర్వహించాము: మేము ట్రెండ్లు, ప్రస్తుత అభివృద్ధి సమస్యలు, సమస్యలు మరియు వాటి పరిష్కారాలను చర్చించాము. ఇప్పుడు సమావేశాన్ని నిర్వహించడం సాధ్యం కాదు, కానీ గతం నుండి ఉపయోగకరమైన పదార్థాలను పంచుకోవడానికి ఇది సమయం.
ఇన్-మెమరీని ఎవరు మరియు ఎలా ఉపయోగిస్తున్నారు
వేగవంతమైన వినియోగదారు పరస్పర చర్య లేదా పెద్ద మొత్తంలో డేటా ప్రాసెసింగ్ అవసరమయ్యే చోట ఇన్-మెమరీ చాలా తరచుగా ఉపయోగించబడుతుంది.
- బ్యాంకులు ఇన్-మెమొరీని ఉపయోగించండి, ఉదాహరణకు, క్లయింట్లు అప్లికేషన్లను ఉపయోగించినప్పుడు ఆలస్యాన్ని తగ్గించడానికి లేదా రుణం జారీ చేసే ముందు క్లయింట్ను విశ్లేషించడానికి.
- ఫిన్టెక్ డేటా ప్రాసెసింగ్ మరియు విశ్లేషణను అవుట్సోర్స్ చేసే బ్యాంకుల కోసం సేవలు మరియు అప్లికేషన్ల పనితీరును మెరుగుపరచడానికి ఇన్-మెమరీని ఉపయోగిస్తుంది.
- భీమా సంస్థలు: రిస్క్లను లెక్కించడానికి, ఉదాహరణకు, అనేక సంవత్సరాలుగా కస్టమర్ డేటాను విశ్లేషించడం ద్వారా.
- లాజిస్టిక్స్ కంపెనీలు. వారు చాలా డేటాను ప్రాసెస్ చేస్తారు, ఉదాహరణకు, వేలకొద్దీ పారామితులతో సరుకు రవాణా మరియు ప్రయాణీకుల రవాణా కోసం సరైన మార్గాలను లెక్కించేందుకు మరియు సరుకుల స్థితిని ట్రాక్ చేయడానికి.
- రిటైల్. ఇన్-మెమరీ సొల్యూషన్లు కస్టమర్లకు వేగంగా సేవలు అందించడానికి మరియు పెద్ద మొత్తంలో సమాచారాన్ని ప్రాసెస్ చేయడానికి సహాయపడతాయి: షిప్మెంట్లు, ఇన్వాయిస్లు, లావాదేవీలు, గిడ్డంగులలో వేలకొద్దీ వస్తువులు ఉండటం మరియు విశ్లేషణాత్మక నివేదికలను సిద్ధం చేయడం.
- В IOT ఇన్-మెమొరీ సాంప్రదాయ డేటాబేస్లను భర్తీ చేస్తుంది.
- ఫార్మాస్యూటికల్ కంపెనీలు ఇన్-మెమరీని ఉపయోగిస్తాయి, ఉదాహరణకు, ఔషధ కూర్పుల కలయికల ద్వారా క్రమబద్ధీకరించడానికి.
మా క్లయింట్లు ఇన్-మెమరీ సొల్యూషన్లను ఎలా ఉపయోగిస్తారో మరియు వాటిని మీరే ఎలా అమలు చేయవచ్చో నేను మీకు కొన్ని ఉదాహరణలను చెబుతాను.
ప్రాథమిక నిల్వగా ఇన్-మెమొరీ
మా క్లయింట్లలో ఒకరు USA నుండి వైద్య శాస్త్రీయ పరికరాల యొక్క పెద్ద సరఫరాదారు. వారు తమ ప్రధాన డేటా నిల్వగా ఇన్-మెమరీ పరిష్కారాన్ని ఉపయోగిస్తారు. మొత్తం డేటా డిస్క్లో నిల్వ చేయబడుతుంది మరియు చురుకుగా ఉపయోగించబడే డేటా యొక్క ఉపసమితి RAMలో ఉంచబడుతుంది. నిల్వ యాక్సెస్ పద్ధతులు ప్రామాణికమైనవి - GDBC (జనరిక్ డేటాబేస్ కనెక్టర్) మరియు SQL ప్రశ్న భాష.
సమిష్టిగా దీనిని ఇన్-మెమరీ డేటాబేస్ (IMDB) లేదా మెమరీ-సెంట్రిక్ స్టోరేజ్ అంటారు. ఈ తరగతి పరిష్కారాలకు చాలా పేర్లు ఉన్నాయి, ఇవి మాత్రమే కాదు.
IMDB ఫీచర్లు:
- ఇన్-మెమరీలో నిల్వ చేయబడిన మరియు SQL ద్వారా యాక్సెస్ చేయబడిన డేటా ఇతర విధానాలలో వలె ఉంటుంది. అవి సమకాలీకరించబడ్డాయి, ప్రెజెంటేషన్ మార్గం మాత్రమే, వాటిని పరిష్కరించే విధానం భిన్నంగా ఉంటుంది. డేటా మధ్య లావాదేవీలు పని చేస్తాయి.
- IMDB రిలేషనల్ డేటాబేస్ల కంటే వేగంగా ఉంటుంది ఎందుకంటే డిస్క్ నుండి కంటే RAM నుండి సమాచారాన్ని తిరిగి పొందడం వేగంగా ఉంటుంది.
- అంతర్గత ఆప్టిమైజేషన్ అల్గారిథమ్లు తక్కువ సూచనలను కలిగి ఉంటాయి.
- అప్లికేషన్లలో డేటా, ఈవెంట్లు మరియు లావాదేవీలను నిర్వహించడానికి IMDBలు అనుకూలంగా ఉంటాయి.
IMDBలు పాక్షికంగా ACIDకి మద్దతిస్తాయి: అటామిసిటీ, కన్సిస్టెన్సీ మరియు ఐసోలేషన్. కానీ అవి “మన్నిక”కి మద్దతు ఇవ్వవు - పవర్ ఆఫ్ చేయబడినప్పుడు, మొత్తం డేటా పోతుంది. సమస్యను పరిష్కరించడానికి, మీరు స్నాప్షాట్లను ఉపయోగించవచ్చు - డేటాబేస్ యొక్క “స్నాప్షాట్”, హార్డ్ డ్రైవ్లోని డేటాబేస్ బ్యాకప్కు సారూప్యంగా ఉంటుంది లేదా రీబూట్ చేసిన తర్వాత డేటాను పునరుద్ధరించడానికి లావాదేవీలను రికార్డ్ చేయండి (లాగ్లు).
తప్పు-తట్టుకునే అప్లికేషన్లను రూపొందించడానికి
తప్పును తట్టుకునే వెబ్ అప్లికేషన్ యొక్క క్లాసిక్ ఆర్కిటెక్చర్ని ఊహించుకుందాం. ఇది ఇలా పనిచేస్తుంది: అన్ని అభ్యర్థనలు సర్వర్ల మధ్య వెబ్ బ్యాలెన్సర్ ద్వారా పంపిణీ చేయబడతాయి. ఈ వ్యవస్థ స్థిరంగా ఉంటుంది ఎందుకంటే సర్వర్లు ఒకదానికొకటి డూప్లికేట్ అవుతాయి మరియు సంఘటనలు జరిగినప్పుడు బ్యాకప్ చేస్తాయి.
బ్యాలెన్సర్ ఒక సెషన్ నుండి అన్ని అభ్యర్థనలను ఖచ్చితంగా ఒక సర్వర్కు నిర్దేశిస్తుంది. ఇది స్టిక్ సెషన్ మెకానిజం: ప్రతి సెషన్ స్థానికంగా నిల్వ చేయబడిన మరియు ప్రాసెస్ చేయబడిన సర్వర్తో అనుబంధించబడుతుంది.
సర్వర్లలో ఒకటి విఫలమైనప్పుడు ఏమి జరుగుతుంది?
ఆర్కిటెక్చర్ డూప్లికేట్ అయినందున సేవ ప్రభావితం కాదు. కానీ మేము చనిపోయిన సర్వర్ సెషన్ల ఉపసమితిని కోల్పోతాము. మరియు అదే సమయంలో, ఈ సెషన్లతో ముడిపడి ఉన్న వినియోగదారులు. ఉదాహరణకు, ఒక క్లయింట్ ఆర్డర్ చేసి, అకస్మాత్తుగా అతనిని ఆఫీసు నుండి బయటకు విసిరేస్తాడు. అతను మళ్లీ లాగిన్ చేసి, ప్రతిదీ మళ్లీ చేయాల్సి ఉంటుందని గుర్తించినప్పుడు అతను అసంతృప్తి చెందుతాడు.
అధిక సంఖ్యలో వినియోగదారులకు మద్దతు ఇవ్వడానికి వెబ్ అప్లికేషన్ అవసరం మరియు వారు సౌకర్యవంతంగా పని చేయడానికి వేగాన్ని తగ్గించకూడదు. కానీ అది తిరస్కరించబడితే, ప్రతి తదుపరి అభ్యర్థనతో సెషన్ స్టోర్తో కమ్యూనికేట్ చేయడానికి పట్టే సమయం పెరుగుతుంది. ఇది ఇతర వినియోగదారులకు సగటు జాప్యాన్ని పెంచుతుంది. కానీ వారు అలవాటు కంటే ఎక్కువ కాలం వేచి ఉండకూడదు.
USAకి చెందిన పెద్ద PASS ప్రొవైడర్ అయిన మా ఇతర క్లయింట్ లాగా ఈ సమస్య కూడా పరిష్కరించబడుతుంది. ఇది వెబ్ సెషన్లను క్లస్టర్ చేయడానికి ఇన్-మెమరీని ఉపయోగిస్తుంది. దీన్ని చేయడానికి, ఇది వాటిని స్థానికంగా కాకుండా కేంద్రంగా - ఇన్-మెమరీ క్లస్టర్లో నిల్వ చేస్తుంది. ఈ సందర్భంలో, సెషన్లు చాలా వేగంగా అందుబాటులో ఉంటాయి ఎందుకంటే అవి ఇప్పటికే RAMలో ఉన్నాయి.
సర్వర్ క్రాష్ అయినప్పుడు, బ్యాలెన్సర్ క్లాసికల్ ఆర్కిటెక్చర్లో వలె క్రాష్ అయిన సర్వర్ నుండి ఇతర సర్వర్లకు అభ్యర్థనలను పంపుతుంది. కానీ ఒక ముఖ్యమైన తేడా ఉంది: సెషన్లు ఇన్-మెమరీ క్లస్టర్లో నిల్వ చేయబడతాయి మరియు సర్వర్లు పడిపోయిన సర్వర్ యొక్క సెషన్లకు ప్రాప్యతను కలిగి ఉంటాయి.
ఈ ఆర్కిటెక్చర్ మొత్తం వ్యవస్థ యొక్క తప్పు సహనాన్ని పెంచుతుంది. అంతేకాకుండా, స్టిక్ సెషన్ మెకానిజంను పూర్తిగా వదిలివేయడం సాధ్యమవుతుంది.
హైబ్రిడ్ ట్రాన్సాక్షనల్ అనలిటికల్ ప్రాసెసింగ్ (HTAP)
సాధారణంగా, లావాదేవీ మరియు విశ్లేషణాత్మక వ్యవస్థలు వేరుగా ఉంచబడతాయి. అవి విడిపోయినప్పుడు, ప్రధాన ఆధారం లోడ్ కిందకు వస్తుంది. విశ్లేషణాత్మక ప్రాసెసింగ్ కోసం, డేటా ప్రతిరూపానికి కాపీ చేయబడుతుంది, తద్వారా విశ్లేషణాత్మక ప్రాసెసింగ్ లావాదేవీ ప్రక్రియలతో జోక్యం చేసుకోదు. కానీ కాపీ చేయడం లాగ్తో జరుగుతుంది - లాగ్ లేకుండా ప్రతిరూపం చేయడం అసాధ్యం. మేము దీన్ని సమకాలీకరించినట్లయితే, ఇది ప్రధాన స్థావరాన్ని కూడా నెమ్మదిస్తుంది మరియు మనకు ఎటువంటి విజయాలు లభించవు.
HTAPలో, ప్రతిదీ భిన్నంగా పని చేస్తుంది - అదే డేటా స్టోర్ అప్లికేషన్ల నుండి లావాదేవీల లోడ్ కోసం మరియు పూర్తి చేయడానికి చాలా సమయం పట్టే విశ్లేషణాత్మక ప్రశ్నల కోసం ఉపయోగించబడుతుంది. డేటా RAMలో ఉన్నప్పుడు, విశ్లేషణాత్మక ప్రశ్నలు వేగంగా అమలు చేయబడతాయి మరియు డేటాబేస్తో ఉన్న సర్వర్ తక్కువగా లోడ్ చేయబడుతుంది (సగటున).
హైబ్రిడ్ విధానం లావాదేవీల ప్రాసెసింగ్ మరియు విశ్లేషణల మధ్య గోడను విచ్ఛిన్నం చేస్తుంది. మేము అదే నిల్వలో విశ్లేషణలను నిర్వహిస్తే, RAM నుండి డేటాపై విశ్లేషణాత్మక ప్రశ్నలు ప్రారంభించబడతాయి. అవి చాలా ఖచ్చితమైనవి, మరింత అర్థమయ్యేలా మరియు సరిపోతాయి.
ఇన్-మెమరీ పరిష్కారాల ఏకీకరణ
ఒక (సాపేక్షంగా) సులభమైన మార్గం - మొదటి నుండి ప్రతిదీ అభివృద్ధి చేయండి. మేము డేటాను డిస్క్లో ఉంచుతాము మరియు మెమరీలో హాట్ డేటాను నిల్వ చేస్తాము. ఇది సర్వర్ రీబూట్లు లేదా అంతరాయాల నుండి బయటపడటానికి సహాయపడుతుంది.
డిస్క్లో డేటా నిల్వ చేయబడినప్పుడు ఇక్కడ పని చేసే రెండు ప్రధాన దృశ్యాలు ఉన్నాయి. మొదటిది, మేము క్రాష్లు లేదా క్లస్టర్ లేదా భాగాల సాధారణ రీబూట్లను తట్టుకుని ఉండాలనుకుంటున్నాము - మేము దానిని సాధారణ డేటాబేస్గా ఉపయోగించాలనుకుంటున్నాము. రెండవ దృష్టాంతంలో, చాలా ఎక్కువ డేటా ఉన్నప్పుడు, దానిలో కొంత మెమరీలో ఉంటుంది.
మొదటి నుండి ప్రతిదీ నిర్మించడం సాధ్యం కానట్లయితే, ఇన్-మెమరీని ఇప్పటికే చేర్చడం సాధ్యమవుతుంది ఇప్పటికే ఉన్న నిర్మాణం. కానీ అన్ని ఇన్-మెమరీ సొల్యూషన్స్ దీనికి తగినవి కావు. మూడు తప్పనిసరి షరతులు ఉన్నాయి. ఇన్-మెమరీ సొల్యూషన్ తప్పనిసరిగా సపోర్ట్ చేయాలి:
- దాని క్రింద ఉన్న డేటాబేస్కు కనెక్ట్ చేయడానికి ప్రామాణిక మార్గం (ఉదాహరణకు, MySQL);
- ఒక ప్రామాణిక ప్రశ్న భాష, తద్వారా నిల్వతో పరస్పర చర్య యొక్క తర్కాన్ని తిరిగి వ్రాయకుండా మరియు మార్చకూడదు;
- లావాదేవీలు - పరస్పర చర్య యొక్క అర్థాలను సంరక్షించండి.
మూడు షరతులు నెరవేరినట్లయితే, ఏకీకరణ సాధ్యమవుతుంది. మేము అప్లికేషన్ మరియు డేటాబేస్ మధ్య ఇన్-మెమరీ డేటా గ్రిడ్ను ఉంచుతాము. ఇప్పుడు రైట్ రిక్వెస్ట్లు అంతర్లీన డేటాబేస్కు డెలిగేట్ చేయబడతాయి మరియు డేటా కాష్లో లేకుంటే రీడ్ రిక్వెస్ట్లు అంతర్లీన డేటాబేస్కు డెలిగేట్ చేయబడతాయి.
డేటాకు వేగవంతమైన యాక్సెస్ మరియు దాని ప్రాసెసింగ్ మీకు ముఖ్యమైనది అయితే, ఉదాహరణకు, వ్యాపార విశ్లేషణల కోసం, మీరు ఇన్-మెమరీని అమలు చేయడం గురించి ఆలోచించవచ్చు. మరియు అమలు కోసం, కొత్త నిర్మాణాన్ని రూపొందించేటప్పుడు మీరు రెండు పద్ధతులను ఉపయోగించవచ్చు.
మూలం: www.habr.com