ඩේටාබේස් එකකට නව required column එකක් එක්කන්න යනවා කියලා අහලම, "එය ඉතා සරල වැඩක්" කියලා හිතනවා. නමුත් එය production පරිසරයක, තත්පරයට ගණනක් ලියන code එකක් තියෙන තැනේ කරලා බලන විට, අසාමාන්ය ගැටළු බොහොමයක් එළිදැක්වෙයි.
ඉතිහාසයේ වැඩිම වැරදි දෙකක් තියෙනවා. එකක් column එක NOT NULL ලෙස තත්කාලිකව එකතු කරලා migration එක දමා දෙනවා – එවිට පරණ රෝන් ගණනාවට value එකක් නොතිබීම නිසා migration එක අසාර්ථක වෙයි, හෝ table එක lock වෙලා performance එක අඩුවේ. දෙවැනි වැරදි නම් column එක NULLABLE කරලා පසුබැසීමක් නොකර ඉදිරියට යනවා – මේකෙන් constraint එක කිසිවක් enforce නොකරන නිසා, මාස ගණනාවකට පසුත් අඩු පිරිසක්ම null value වලින් පිරී ඉතිරි වෙයි.
මෙම ගැටලුව විසඳීමට Backfill Pattern කියන සරල, නමුත් සවිස්තරාත්මක පියවර හතරක් අනුගමනය කරනවා. මෙය නිවැරදිව කළොත් downtime, lock, හා data inconsistency වැනි අවාසි තොරව column එක අවශ්ය තත්ත්වයට ගෙනිය හැක.
Backfill රීතියේ පියවර හතර
- 1. Column එක Nullable ලෙස සකසන්න – මේ පියවරෙන් migration එක ඉක්මනින්, error නැතිව සිදු වේ. පරණ code එකට කිසිම බාධාවක් නොවේ.
- 2. Backfill කරන්න – පවතින සියලු rows සඳහා batch wise update කරලා column එක පුරවන්න. Batch size එක වැදගත්; එකවර මිලියන ගණනක් rows update කිරීම table lock කරයි.
- 3. API එකෙන් value යවන්න – නව rows සෑදෙන විට column value එක සමඟ යවන්න. මෙය data completeness එක තවදුරටත් වැඩි කරයි.
- 4. Column එක NOT NULL බවට පත් කරන්න – දැන් සියලු rows වල value ඇත; migration එක error නොවී, lock නොවී ක්රියාත්මක වේ.
මෙම ක්රමය සරලයි, නමුත් ක්රමවත් අනුගමනය කිරීම අත්යවශ්ය. Backfill කිරීමේ පසුබැසීම, API update, හා constraint enforcement අතර නිවැරදි අනුක්රමය නොමැතිනම්, ඔබට තවත් ගැටළු මතුවේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
- සිසුන්ට Database Migration පිළිබඳ ප්රායෝගික උදාහරණයක් ලැබේ, ඉගෙනීමේ ගැඹුරු බව වැඩිවේ.
- දේශීය developers සඳහා downtime‑රහිත migration ක්රමයක් හඳුන්වා දී, production system reliability වැඩි කරයි.
- ව්යාපාරිකයන්ට data loss හෝ performance drop නොවී, නව features ඉක්මනින් roll‑out කිරීමේ හැකියාව ලැබේ.
- කොඩින් ප්රජාවට expand → migrate → switch → contract යන pattern එක අත්යවශ්ය best practice එකක් ලෙස පවත්වාගැනීමට අවස්ථාව ලැබේ.
අවසානයේ, Backfill රීතිය තනිම පදයක් නොව, නිවැරදි ක්රමවේදය, patience, හා නිසි අනුක්රමය මත පදනම් වූ migration strategy එකකි. ඔබේ ඊළඟ database change එක මෙය අනුගමනය කරලා, downtime‑රහිතව සිදු කරමු.