දත්ත සමුදා සංශෝධන වල වැරදි නිසා වෙළඳපොළේ අඛණ්ඩ සේවාවක් අහෝසි වීමේ අවදානම ඉතා ඉහලයි. PostgreSQL භාවිතා කරන සංවර්ධකයන්ට මේ අවදානම අවම කිරීම සඳහා pg-migration-guard නවීන මෙවලම හඳුන්වා දී ඇත.
මෙම මෙවලම SQL මයිග්රේෂන් ගොනු විශ්ලේෂණය කර, ලොක් (lock) ගත කරන ඕනෑම විධානයක් වහාම හඳුනා ගනී. උදාහරණයක් ලෙස, CREATE INDEX නියමයෙන් (without CONCURRENTLY) ක්රියාත්මක කරන්නේ නම්, විශාල වගුවකට ලොක් එකක් අත්කර ගනිමින් ලියන ක්රියාකාරකම් නතර වේ. එමෙන්ම SET NOT NULL නියමයෙන් ක්රියාත්මක කිරීමත් සම්පූර්ණ වගුව පරීක්ෂා කර, ACCESS EXCLUSIVE ලොක් එකක් තබයි.
pg-migration-guard මෙම අවදානම් විධානවලට WARN හෝ BLOCKER ලෙස ලේබල් කර, GitHub Action එකක් මගින් Pull Request එකේදී පරීක්ෂා කරයි. මෙය CI පරිසරයේ ස්වයංක්රීයව ක්රියාත්මක වන නිසා, අනිවාර්යයෙන්ම වැරදි මයිග්රේෂන් ප්රොඩක්ෂන් වෙත යාමට පෙර නවතා දීමට හැකියාව ලැබේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තාක්ෂණික සමාජය තවදුරටත් දත්ත-අධාරිත ඇප්ලි케ෂන් සහ වෙබ් සේවා පදනම් කරගෙන වැඩ කරයි. මේ නිසා:
- දත්ත සමුදා නඩත්තු කිරීමේ වැරදි නිසා වෙබ් අඩවි බිඳ වැටීමේ අවදානම අඩු වේ.
- විශ්වවිද්යාල සිසුන් සහ නව සංවර්ධකයන්ට මයිග්රේෂන් ආරක්ෂා කිරීමේ නව පදනමක් ලැබේ.
- ව්යාපාරික පද්ධතිවල ධාරිතාවය සහ පාරිභෝගික විශ්වාසය ඉහළ යයි.
ඉන්පසු, මෙවලම Python 3.8+ සමඟ සරලව ස්ථාපනය කර, pip install pg-migration-guard ලෙස භාවිතා කළ හැක. GitHub Action එකේ සකස් කිරීමේ උදාහරණයක්:
name: migration-guard
on: pull_request:
paths: ["db/migration/**/*.sql"]
jobs:
guard:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: technical-turtle/pg-migration-guard@v1
with:
path: db/migration
fail-on: blocker
මෙම ක්රියාවලිය මඟින් අදාළ වරදකාරී ලයින් එකතු කරන විධානවලට සෘජු සටහනක් (annotation) දක්වයි, එවිට සංවර්ධකයාට තෙරුම් ගත හැකියාව ලැබේ.
සාරාංශයෙන්, pg-migration-guard මගින් PostgreSQL මයිග්රේෂන් වල ඇති ලොක්-සම්බන්ධ අවදානම් ඉතා හොඳින් හඳුනාගෙන, CI පද්ධතියේම නවතා දීමට හැකියාව ලැබේ. ඔබේ ඊළඟ ප්රොඩක්ෂන් නිකුතුව ආරක්ෂිතව කරගැනීමට අදම මෙම මෙවලම භාවිතා කර බලන්න.