3.1 ACID యొక్క ఆవిర్భావం

ACID అనే సంక్షిప్త పదం మొదట 1983లో థియో హెర్డర్ మరియు ఆండ్రియాస్ రాయిటర్ రాసిన వ్యాసంలో కనిపించింది. వచనాన్ని సరళీకృతం చేయడానికి మరియు దానిని మరింత నమ్మకంగా చేయడానికి, నేను ఈ వ్యాసంలోని ఒక భాగాన్ని (స్వల్ప తగ్గింపులతో) అనువాదాన్ని ఇస్తాను. ఈ స్నిప్పెట్ బ్యాంక్ లావాదేవీకి ఒక ఉదాహరణను ఉపయోగిస్తుంది, దీనిలో డబ్బు ఒక ఖాతా నుండి మరొక ఖాతాకు బదిలీ చేయబడుతుంది.

లావాదేవీ యొక్క భావన, ఉదాహరణలో $BEGIN_TRANSACTIONమరియు మధ్య డేటాబేస్‌తో అన్ని పరస్పర చర్యలను కలిగి $COMMIT_TRANSACTIONఉంటుంది, అన్ని చర్యలను విడదీయకుండా నిర్వహించడం అవసరం: అన్ని చర్యలు డేటాబేస్ స్థితిలో సరిగ్గా ప్రతిబింబిస్తాయి లేదా ఏమీ జరగవు. $COMMIT_TRANSACTIONవినియోగదారు చేరుకోవడానికి ముందు ఏ సమయంలోనైనా ERRORకలిగి ఉన్న స్టేట్‌మెంట్‌ను నమోదు చేస్తే $RESTORE_TRANSACTION, డేటాబేస్‌లో ఎటువంటి మార్పులు కనిపించవు.

ఈ అవిభాజ్యతను సాధించడానికి, లావాదేవీ కింది నాలుగు లక్షణాలను కలిగి ఉండాలి:

అటామిసిటీ (అటామిసిటీ). లావాదేవీ తప్పనిసరిగా పైన వివరించిన అన్ని లేదా ఏమీ లేని రకంగా ఉండాలి మరియు ఏమి జరిగినా, లావాదేవీ ఏ స్థితిలో ఉందో వినియోగదారు తప్పనిసరిగా తెలుసుకోవాలి.

స్థిరత్వం (అనుకూలత). లావాదేవీ దాని సాధారణ ముగింపు (EOT)కి చేరుకుంటుంది మరియు దాని ఫలితాలు డేటాబేస్ స్థిరత్వాన్ని నిర్వహిస్తాయి. మరో మాటలో చెప్పాలంటే, ప్రతి విజయవంతమైన లావాదేవీ, నిర్వచనం ప్రకారం, చెల్లుబాటు అయ్యే ఫలితాలను మాత్రమే చేస్తుంది. నాల్గవ ఆస్తికి మద్దతు ఇవ్వడానికి ఈ పరిస్థితి అవసరం - మన్నిక.

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

మన్నిక (మన్నిక). లావాదేవీని పూర్తి చేసి, దాని ఫలితాలను డేటాబేస్‌కు అందించిన తర్వాత, ఆ ఫలితాలు ఏవైనా తదుపరి వైఫల్యాలను తట్టుకుని ఉండేలా సిస్టమ్ తప్పనిసరిగా నిర్ధారించాలి. లావాదేవీల సెట్‌లను విస్తరించే నియంత్రణ పరిధి లేనందున, డేటాబేస్ మేనేజ్‌మెంట్ సిస్టమ్ (DBMS) లావాదేవీల సరిహద్దులను దాటి నియంత్రణను కలిగి ఉండదు.

అందువల్ల, ఏదో జరిగిందని సిస్టమ్ అతనికి తెలియజేస్తే, ఈ "ఏదో" నిజంగా జరిగిందని వినియోగదారుకు హామీ ఇవ్వాలి. నిర్వచనం ప్రకారం, ఏదైనా (విజయవంతంగా పూర్తయింది - S.K.) లావాదేవీ సరైనది కనుక, అనివార్యంగా కనిపించే తప్పు లావాదేవీల ఫలితాలు (అంటే తప్పుడు డేటాను కలిగి ఉన్న లావాదేవీలు) సంబంధిత "కౌంటర్" లావాదేవీ (ప్రతి లావాదేవీ) ద్వారా మాత్రమే తొలగించబడతాయి.

3.2 లావాదేవీల ఆవిర్భావం

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

ఒక ఖాతా నుండి మరొక ఖాతాకు నిధులను బదిలీ చేసే సాధారణ PL/1-SQL ప్రోగ్రామ్.

FUNDS_TRANSFER. PROCEDURE,
 $BEGIN_TRANSACTION;
 ON ERROR DO;                                   /* in case of error */
          $RESTORE_TRANSACTION,                 /* undo all work */
          GET INPUT MESSAGE;                    /* reacquire input */
          PUT MESSAGE ('TRANSFER FAILED');      /* report failure */
          GO TO COMMIT;
          END;
 GET INPUT MESSAGE;                             /* get and parse input */
 EXTRACT ACCOUNT_EBIT, ACCOUNT_CREDIT,
  AMOUNT FROM MESSAGE,
 $UPDATE ACCOUNTS                               /* do debit */
              SET BALANCE ffi BALANCE - AMOUNT
     WHERE ACCOUNTS.NUMBER = ACCOUNT_DEBIT;
 $UPDATE ACCOUNTS                               /* do credit */
              SET BALANCE = BALANCE + AMOUNT
     WHERE ACCOUNTS.NUMBER = ACCOUNT_CREDIT;
 $INSERT INTO HISTORY                           /* keep audit trail */
    <DATE, MESSAGE>;
 PUT MESSAGE ('TRANSFER DONE');                 /* report success */
COMMIT:                                         /* commit updates */
 $COMMIT_TRANSACTION;
 END;                                           /* end of program */

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

3.3 ACID కనెక్టివిటీ

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

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

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

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

మరియు మరోసారి నేను ACID లక్షణాలు, వాస్తవానికి, లావాదేవీ యొక్క భావనను నిర్వచించడాన్ని గమనించాను. నా అభిప్రాయం ప్రకారం, లావాదేవీ అనుగుణ్యత యొక్క ఆస్తికి మద్దతు లేని లావాదేవీ డేటా నిర్వహణ వ్యవస్థ గురించి మాట్లాడటానికి కనీసం కొంత అవకాశం ఉండాలంటే, ఈ సందర్భంలో లావాదేవీ అనే పదానికి అర్థం ఏమిటో నిర్వచించడం ఖచ్చితంగా అవసరం.

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

ఇప్పుడు మనం CAP యొక్క "సిద్ధాంతం"తో వ్యవహరిస్తాము మరియు బ్రూవర్ యొక్క అర్థంలో స్థిరత్వం అంటే ఏమిటో గుర్తించడానికి ప్రయత్నిద్దాం.