సింగిల్-ఫ్లైట్ క్యాషింగ్: ఒక హాట్ కీ డేటాబేస్‌ను డౌన్ కాకుండా ఎలా నిరోధిస్తుంది

సింగిల్-ఫ్లైట్ క్యాషింగ్: ఒక హాట్ కీ డేటాబేస్‌ను డౌన్ కాకుండా ఎలా నిరోధిస్తుంది

క్యాష్ ఎక్స్‌పైర్ అయిన సమయంలో డేటాబేస్ లోడ్‌ను నిర్వహించడానికి ఒక పరిష్కారం.

ఒక వెబ్‌సైట్‌కు భారీ ట్రాఫిక్ వచ్చినప్పుడు, ప్రత్యేకించి డేటాను తిరిగి పొందడానికి అది డేటాబేస్‌పై ఆధారపడినట్లయితే, అది పనితీరు సమస్యలకు దారితీయవచ్చు. అనేక అప్లికేషన్లు ఎదుర్కొనే ఒక సాధారణ సమస్యకు పరిష్కారాన్ని మనం చర్చిస్తున్నాము: డేటాబేస్‌పై భారం పడకుండా క్యాష్ ఎక్స్‌పైరేషన్‌ను ఎలా నిర్వహించాలి.

సమస్యను అర్థం చేసుకోవడం

podbor-minuta.ru వెబ్‌సైట్‌లో కొన్ని డేటాబేస్ క్వెరీలు చాలా హెవీగా ఉంటాయి. ప్రక్రియను వేగవంతం చేయడానికి, వారు ఫలితాలను క్యాష్‌లో భద్రపరుస్తారు. ఉదాహరణకు, వారు లిస్టింగ్ పేజీల కోసం అపార్ట్‌మెంట్ జాబితాలు మరియు సమగ్ర గణాంకాలను క్యాష్ చేస్తారు. క్యాష్ చెల్లుబాటులో ఉన్నంతవరకు, అంతా సజావుగా సాగుతుంది. అయితే, క్యాష్ ఎక్స్‌పైర్ అయినప్పుడే అసలు సమస్య మొదలవుతుంది.

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

క్యాష్ స్టాంపేడ్ అంటే ఏమిటి?

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

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

సింగిల్-ఫ్లైట్ క్యాషింగ్‌ను అమలు చేయడం

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

దశ 1: క్యాష్‌ను తనిఖీ చేయండి

మొదటగా, ఆ విలువ ఇప్పటికే క్యాష్‌లో ఉందో లేదో అప్లికేషన్ తనిఖీ చేస్తుంది. అది ఉంటే, వెంటనే ఆ విలువను తిరిగి పంపుతుంది.

దశ 2: క్యాష్ మిస్‌లను నిర్వహించండి

విలువ క్యాష్‌లో లేకపోతే, ఆ కీ కోసం గణన ఇప్పటికే పురోగతిలో ఉందో లేదో తనిఖీ చేస్తుంది. అలా ఉన్నట్లయితే, అప్లికేషన్ ఆ గణన పూర్తయ్యే వరకు వేచి ఉండి ఫలితాన్ని అందిస్తుంది.

దశ 3: ప్రామిస్‌ను సృష్టించండి

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

ఇది ఎలా పనిచేస్తుందో వివరించే సరళీకృత కోడ్ ఉదాహరణ ఇక్కడ ఉంది:

const inFlight = new Map<string, Promise<unknown>>();

async function getOrSet<T>(key: string, compute: () => Promise<T>): Promise<T> {
    const cached = cache.get(key);
    if (cached !== undefined) return cached as T;

    const running = inFlight.get(key);
    if (running) return running as Promise<T>;

    const promise = compute().then((value) => {
        cache.set(key, value);
        return value;
    }).finally(() => {
        inFlight.delete(key);
    });

    inFlight.set(key, promise);
    return promise;
}

సింగిల్-ఫ్లైట్ క్యాషింగ్ యొక్క ప్రయోజనాలు

సింగిల్-ఫ్లైట్ క్యాషింగ్‌ను అమలు చేయడం వల్ల అనేక ప్రయోజనాలు లభించాయి:

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

ముగింపు

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

లాభాలు

  • క్యాష్ ఎక్స్‌పైరేషన్ సమయంలో డేటాబేస్ ఓవర్‌లోడ్ కాకుండా నిరోధిస్తుంది.
  • క్యాష్ చేయబడిన డేటా కోసం వేగవంతమైన రెస్పాన్స్ సమయాలను నిర్వహిస్తుంది.
  • డూప్లికేట్ డేటాబేస్ క్వెరీల సంఖ్యను తగ్గిస్తుంది.

పరిమితులు

  • ఇన్-ఫ్లైట్ రిక్వెస్ట్‌లను నిర్వహించడానికి అదనపు లాజిక్ అవసరమవుతుంది.
  • కఠినమైన వాతావరణాల కోసం షేర్డ్ లాక్ అవసరం కావచ్చు, ఇది సంక్లిష్టతను పెంచుతుంది.

హెచ్చరిక

ఈ కథనం విద్యా ప్రయోజనాల కోసం మాత్రమే ఉద్దేశించబడింది. మీరు ఏవైనా క్యాషింగ్ వ్యూహాలను అమలు చేస్తుంటే, ప్లేస్‌హోల్డర్ విలువలను మీ అసలు డేటాతో భర్తీ చేయాలని మరియు వాటిపై ఆధారపడే ముందు అసలు మూలాల ద్వారా వాదనలను ధృవీకరించుకోవాలని నిర్ధారించుకోండి.

తరచుగా అడిగే ప్రశ్నలు

  • సింగిల్-ఫ్లైట్ క్యాషింగ్ అంటే ఏమిటి? — ఇది ఒక నిర్దిష్ట కీ కోసం ఒకేసారి కేవలం ఒక రిక్వెస్ట్‌ను మాత్రమే డేటాను పొందేందుకు అనుమతించే క్యాషింగ్ వ్యూహం, ఇది బహుళ డేటాబేస్ క్వెరీలను నిరోధిస్తుంది.
  • క్యాష్ స్టాంపేడ్ అంటే ఏమిటి? — క్యాష్ మిస్ అయిన తర్వాత ఒకే డేటా కోసం బహుళ రిక్వెస్ట్‌లు ఏకకాలంలో డేటాబేస్‌ను చేరి, డేటాబేస్‌ను ఓవర్‌లోడ్ చేసే పరిస్థితి.
  • క్యాషింగ్ పనితీరును ఎలా మెరుగుపరుస్తుంది? — క్యాషింగ్ తరచుగా యాక్సెస్ చేసే డేటాను మెమరీలో భద్రపరుస్తుంది, డేటాబేస్‌ను క్వెరీ చేయడంతో పోలిస్తే వేగంగా డేటాను తిరిగి పొందేందుకు అనుమతిస్తుంది.
  • క్యాష్ ఎక్స్‌పైర్ అయినప్పుడు ఏమి జరుగుతుంది? — క్యాష్ ఎక్స్‌పైర్ అయినప్పుడు, ఒకే డేటా కోసం రిక్వెస్ట్‌లు డేటాబేస్‌ను ముంచెత్తవచ్చు, సరిగ్గా నిర్వహించకపోతే ఇది పనితీరు సమస్యలకు దారితీస్తుంది.
  • సింగిల్-ఫ్లైట్ క్యాషింగ్‌ను బహుళ సర్వర్లతో ఉపయోగించవచ్చా? — అవును, కానీ వివిధ సర్వర్లలో రిక్వెస్ట్‌లను సమర్థవంతంగా నిర్వహించడానికి షేర్డ్ లాక్స్ వంటి అదనపు మెకానిజమ్‌లు అవసరమవుతాయి.
  • క్యాషింగ్ యొక్క ప్రయోజనాలు ఏమిటి? — క్యాషింగ్ డేటాబేస్ లోడ్‌ను తగ్గిస్తుంది, డేటా రికవరీ/రిట్రీవల్‌ను వేగవంతం చేస్తుంది మరియు మొత్తం అప్లికేషన్ పనితీరును మెరుగుపరుస్తుంది.

ట్యాగ్‌లు

#caching #database #performance #webdev #architecture #softwaredevelopment #programming #tech

Free field guide

API Security Testing Checklist

A practical workflow for testing authentication, authorization, input handling, business logic, and evidence without losing track of scope.