U bood nuxurka
GOLE Somali Network
Dood

Database Transactions & ACID

AYUB SAID@aoubakModeratorVerifiedXubin Aasaasi 02 daawasho

🧠 Engineering Insights: 5

Sidee database-ku u ilaaliyaa saxnaanta xogta marka hawlo badan isku mar dhacayaan?

Bal ka fikir inaad dhisayso app lacag lagu kala diro.

A ayaa B u diraya $100.💸

Si wareejintu u guulaysato, nidaamku waa inuu sameeyaa laba hawlood:

  1. Wuxuu $100 ka jarayaa akoonka A.
  2. Wuxuu $100 ku darayaa akoonka B.

Laakiin maxaa dhacaya haddii lacagta laga jaro A, kadibna server-ku cilad la kulmo ka hor inta aan lacagta lagu darin B?

A lacagtiisii way luntay, B-na waxba ma helin.

Dhibaatadani waxay ina tusaysaa sababta ay Database Transactions muhiim ugu yihiin software engineering-ka.

1. Waa maxay Database Transaction?

Transaction waa hawl ka kooban hal ama dhowr tallaabo oo database-ka laga rabo inuu u maareeyo sidii hal hawl oo isku xidhan.

Fikradda aasaasiga ahi waa:

Dhammaan tallaabooyinku ha guulaystaan, ama dhammaan isbeddellada ha la baajiyo.

Tani waxay ka hortagtaa in database-ku ku ekaado xaalad qayb ahaan la beddelay, sida lacag laga jaray akoon iyadoo aan lagu darin akoonka qaadanaya.

SQL gudaheeda, saddex amar ayaa muhiim ah:

  • BEGIN — wuxuu bilaabaa transaction-ka.
  • COMMIT — wuxuu xaqiijiyaa isbeddellada si loo kaydiyo.
  • ROLLBACK — wuxuu baajiyaa isbeddellada transaction-ka ee aan weli la xaqiijin.

Tusaale:

BEGIN;

UPDATE accounts
SET balance = balance - 100
WHERE id = 1;

UPDATE accounts
SET balance = balance + 100
WHERE id = 2;

COMMIT;

Tani waxay tusaale u tahay in labada isbeddel lagu daro hal transaction. Hase yeeshee, tusaalaha keliya weli kuma filna wareejin lacag oo ammaan ah: waa in la xaqiijiyaa in akoonnadu jiraan, lacagta la diri karona jirto, isla markaana haddii tallaabo fashilanto la sameeyo ROLLBACK halkii si toos ah loo samayn lahaa COMMIT.

Halkaas ayay fikradda ACID ka bilaabataa.

2. Waa maxay ACID?

ACID waa afar sifo oo muhiim u ah isku-hallaynta transactions-ka database-ka:

  • A — Atomicity: Dhammaan ama midna.
  • C — Consistency: Xeerarka xogtu ha sii saxnaadaan.
  • I — Isolation: Hawlaha isku mar socda yaanay si khaldan isu faragelin.
  • D — Durability: Isbeddelka la xaqiijiyey ha sii jiro.

Aan mid kasta si qoto dheer u fahanno.

A — Atomicity: Dhammaan ama midna

Atomicity waxay ka dhigan tahay in isbeddellada transaction-ka loo maareeyo sidii hal unug.

Tusaalaha lacagta:

  • $100 waa laga jaray A.
  • $100 waa lagu daray B.

Haddii tallaabada labaad fashilanto ka hor inta aan transaction-ka la xaqiijin, nidaamku waa inuu baajiyaa tallaabada koowaad sidoo kale.

Sidaas darteed, nidaamku kuma ekaanayo xaalad lacagta laga jaray A balse aan B la gaadhsiin.

Goorma ayay muhiim tahay?

  • Wareejinta lacagaha
  • Dalabka badeecadaha
  • Booking-ka duulimaadyada ama hoteellada
  • Cusboonaysiinta xog isku xidhan oo dhowr jadwal ku jirta
  • Maaraynta kaydka alaabta iyo iibka

Casharka developer-ka: Ha u qaadan in laba query oo kala dambeeya ay si toos ah u noqonayaan hal hawl oo dhammeystiran. Waa inaad ku dhex maamushaa transaction sax ah.

C — Consistency: Xeerarka xogtu ha sii saxnaadaan

Consistency waxay ka dhigan tahay in transaction-ku database-ka uga tago xaalad buuxinaysa xeerarka iyo shuruudaha saxnaanta ee nidaamka loo dejiyey.

Tusaale ahaan, nidaamka lacagaha wuxuu yeelan karaa xeer ah in hadhaaga akoonku aanu ka yaraan eber.

CREATE TABLE accounts (
    id BIGINT PRIMARY KEY,
    balance NUMERIC(12, 2) NOT NULL,
    CHECK (balance >= 0)
);

Xeerka CHECK wuxuu database-ka ka caawinayaa inuu diido hadhaaga taban.

Laakiin waxaa jira qodob muhiim ah: Transaction-ku keligiis ma yaqaan dhammaan xeerarka ganacsigaaga. Developer-ku waa inuu qeexaa xeerarka, kuna meeleeyaa database-ka ama logic-ga application-ka meelaha ku habboon.

Tusaale ahaan, haddii alaabtu kaydka ku jirto 5 xabbo, nidaamku ma oggolaan karo iib keenaya in tiradu noqoto −2.

Consistency waxay ku saabsan tahay ilaalinta xeerarka sida:

  • Akoonku inuusan yeelan hadhaag ka hooseeya xadka la oggol yahay.
  • Dalabku inuu tixraaco macmiil sax ah.
  • Aqoonsiga gaarka ahi inuusan laba jeer ku soo noqon meel laga rabo inuu gaar ahaado.
  • Xogta isku xidhan ay buuxiso shuruudaha nidaamka.

Casharka developer-ka: Ha ku tiirsanaan interface-ka oo keliya si aad xogta u ilaaliso. Xeerarka muhiimka ah ka hirgeli meelaha awood u leh inay si la isku halayn karo u xoojiyaan.

I — Isolation: Marka transactions badan isku mar socdaan

Bal qiyaas akoon leh $100.

Laba codsi ayaa isku mar isku dayaya inay mid kasta la baxaan $80.

Haddii labaduba akoonka akhriyaan ka hor inta aan midkoodna lacagta ka jarin, waxay labaduba u malayn karaan in $100 weli yaallo.

Haddii nidaamku aanu si sax ah u maamulin is-waafajinta hawlahaas, waxaa dhici karta in lacag ka badan inta la haysto la bixiyo.

Isolation waxay ka caawisaa in transactions-ka isku mar socda aanay soo saarin natiijooyin khaldan oo ka dhasha isdhexgalkooda.

Database-yadu waxay adeegsadaan farsamooyin kala duwan, sida locks iyo hababka maaraynta noocyada xogta, si ay hawlahaas u xakameeyaan.

SQL gudaheeda, tusaale ahaan:

BEGIN;

SELECT balance
FROM accounts
WHERE id = 1
FOR UPDATE;

-- Hubi hadhaaga, kadibna samee
-- jarista iyo tallaabooyinka loo baahan yahay.

COMMIT;

FOR UPDATE wuxuu codsanayaa lock ku saabsan safka la helay, si loo xakameeyo isbeddellada isdiiddan inta transaction-ku socdo. Faahfaahinta saxda ahi waxay ku xiran tahay database-ka iyo xaaladda query-ga.

Waxaa kale oo jira heerar kala duwan oo isolation ah, sida:

  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLE

Heer kasta wuxuu leeyahay hab uu u maareeyo akhrinta iyo isbeddellada transactions-ka isku mar socda. Heerka adag wuxuu bixin karaa dammaanad dheeraad ah, balse wuxuu sidoo kale kordhin karaa kharashka shaqada ama wuxuu keeni karaa in transaction dib loo tijaabiyo marka khilaaf dhaco.

Casharka developer-ka: Inaad transaction isticmaasho keliya mar walba kuma filna; waa inaad sidoo kale fahanto sida codsiyada isku mar socda u saameyn karaan xogta.

D — Durability: Marka la xaqiijiyo, isbeddelku ha sii jiro

Durability waxay ka dhigan tahay in marka database-ku xaqiijiyo transaction-ka, isbeddelladaas loogu talagalay inay sii jiraan xitaa haddii uu server-ku cilad la kulmo.

Tusaale ahaan, marka lacag diristu guulaysato oo transaction-ka la xaqiijiyo, dib-u-bilaabashada server-ku ma aha inay tirtirto wareejintaas.

Database-yada waxay arrintan u adeegsadaan farsamooyin ay ka mid yihiin qoraallada diiwaangeliya isbeddellada ka hor inta aan si rasmi ah loo dhammaystirin, si dib loogu soo celin karo xaaladda saxda ah haddii cilad dhacdo.

Hase yeeshee, durability ma aha ballanqaad ah in xogtu aanay waligeed ku lumi karin xaalad kasta. Waxay sidoo kale ku xiran tahay habaynta database-ka, kaydinta xogta iyo kaabayaasha uu ku shaqaynayo.

Sidaas darteed, nidaamyada muhiimka ahi weli waxay u baahan yihiin backups iyo qorshe lagu soo celinayo xogta marka musiibo dhacdo.

Casharka developer-ka: Ha u qaadan in fariinta “Success” ee application-ku keliya ay caddaynayso in xogtu si la isku halayn karo u kaydsan tahay. Faham waxa database-ku xaqiijinayo marka COMMIT guulaysto.

3. Maxaa dhacaya marka tallaabo fashilanto?

Aan dib ugu noqonno wareejinta $100.

Habka saxda ahi ma aha in labada UPDATE la fuliyo dabadeedna si indho la'aan ah COMMIT loo sameeyo.

Logic-gu waa inuu noqdaa sidan:

BEGIN TRANSACTION

1. Hubi in akoonka dirayaa jiro.
2. Hubi in lacag ku filan jirto.
3. Ka jar lacagta akoonka diraya.
4. Ku dar lacagta akoonka qaadanaya.
5. Xaqiiji in labada tallaabo guulaysteen.

Haddii wax walba sax yihiin:
    COMMIT

Haddii tallaabo muhiim ahi fashilanto:
    ROLLBACK

Tani waa hab-fikirka muhiimka ah. Marka code dhab ah la qorayo, waa in la hubiyaa tirada safafka la beddelay, lana maareeyaa khaladaadka iyo xaaladaha isku mar dhaca.

Sidoo kale, transaction-ku wuxuu si toos ah u maamulaa isbeddellada ku jira xadka transaction-ka database-ka. Haddii workflow-gu ku lug leeyahay adeeg lacag-bixin oo dibadeed, email ama API kale, ROLLBACK ma baajinayo ficil dibadeed oo hore u dhacay. Nidaamyada noocaas ahi waxay u baahan karaan naqshad dheeraad ah, sida Transactional Outbox ama Saga Pattern.

4. Khaladaadka ay tahay in developers-ku ka fogaadaan

Khaladka 1: In la illoobo in fashilka hal tallaabo uu u baahan yahay in kuwa kale la baajiyo.

Haddii wareejin lacag ahi qayb ahaan fulanto, xogtu waxay noqon kartaa mid aan is waafaqsanayn.

Khaladka 2: In validation-ka lagu sameeyo frontend-ka oo keliya.

Macmiilku wuxuu diri karaa codsi aan soo marin interface-kaaga. Xeerarka muhiimka ahi waa inay sidoo kale ka jiraan backend-ka ama database-ka, iyadoo ku xiran nooca xeerka.

Khaladka 3: In la iska indho tiro concurrency.

Laba codsi oo isku mar socda waxay beddeli karaan isla xogta. Waa inaad doorataa habka locking iyo isolation ee ku habboon hawshaada.

Khaladka 4: In transaction-ka la dheereeyo si aan loo baahnayn.

Transaction furan muddo dheer wuxuu hayn karaa locks, wuxuuna hor istaagi karaa hawlo kale. Ku koob tallaabooyinka database-ka ee u baahan inay wada guulaystaan.

Khaladka 5: In loo maleeyo ACID inuu ka hortagayo khalad kasta.

ACID wuxuu ka caawiyaa ilaalinta saxnaanta transactions-ka, laakiin ma baabi'iyo bugs-ka application-ka, khaladaadka logic-ga ganacsiga ama dhammaan khataraha kaabayaasha.

5. Halkee ayay aqoontani kaga jirtaa real-world engineering?

Haddii aad dhisayso:

  • E-commerce: Hubi in dalabka, kaydka alaabta iyo lacagta gudaha database-ka si isku xidhan loo maareeyo.
  • Fintech: Ilaali saxnaanta hadhaaga iyo dhaqdhaqaaqa lacagaha.
  • Booking system: Ka hortag in isla kursi ama qol laba qof loo qoondeeyo marka codsiyo isku mar yimaadaan.
  • Learning platform: Ilaali xiriirka u dhexeeya ardayda, diiwaangelinta koorsooyinka iyo natiijooyinka.
  • SaaS application: Hubi in hawlaha xogta isku xidhan aanay ka tagin xaalad qayb ahaan la cusboonaysiiyey.

ACID ma aha fikrad loogu talagalay oo keliya injineerrada dhisa bangiyada. Waa qayb ka mid ah fahamka sida loo dhiso software xogtiisa lagu kalsoonaan karo.

Gunaanad

Database wanaagsan ma aha mid xogta kaydiya oo keliya. Waa mid leh hab lagu ilaaliyo saxnaanta xogta marka hawlo fashilmaan, codsiyo badan isku mar yimaadaan, ama server-ku cilad la kulmo.

ACID wuxuu ina xusuusinayaa afar arrimood oo aasaasi ah:

  • Atomicity: Hawshu qayb ahaan yaanay u fulin.
  • Consistency: Xeerarka xogtu yaanay jabin.
  • Isolation: Hawlaha isku mar socda yaanay dhalin natiijooyin khaldan.
  • Durability: Isbeddellada la xaqiijiyey ha sii jiraan.

Fahamka afartan mabda’ wuxuu developer-ka ka caawinayaa inuu ka gudbo qorista queries shaqaynaya oo keliya, una gudbo dhisidda nidaamyo lagu kalsoonaan karo.

💬 Su'aasha doodda

Bal qiyaas inaad dhisayso app lacagaha lagu kala diro: lacagta diraha waa laga jaray, laakiin server-ku cilad ayuu galay ka hor inta aan lacagta qaataha lagu darin.

ACID kee ayaa ugu horreyn kaa caawinaya inaad ka hortagto dhibaatadan, sideese transaction-ku u xallin lahaa?

#GOLE #EngineeringInsights #Database #SQL #SoftwareEngineering #BackendDevelopment

Faallo

Faallooyin

Gal si aad doodda uga qaybqaadato.

Weli faallo ma jirto. Noqo qofka ugu horreeya ee wax ku dara.