Database Migrations Explained in Sinhala

Database Migrations Explained in Sinhala

Thanura Manjitha Peiris

Thanura Manjitha Peiris

Author·
Share

Software Development කරද්දී Database manage කරන එක, හදපු code manage කරන එකට වඩා tricky. Project එක grow වෙද්දි Database schema එකත් change වෙනවා... අලුත් tables එනවා, columns modify වෙනවා, සමහර fields remove වෙනවා. මේ changes කිසි අවුලක් නැතුව, predictable විදිහට handle කරන්න migrations කියන්නේ අත්‍යවශ්‍යම tool එකක්.

What Are Database Migrations? (මොකක්ද මේ Migrations කියන්නේ?)
සරලවම කියන්න ඕනෙ නම් Migrations = Database schema එකට Version Control. Git වලින් අපේ code changes track කරනවා වගේ, migrations වලින් database structure එකේ වෙන changes track කරනවා. මේ නිසා ඔයා කරන හැම වෙනස්කමක්ම migration file එකක් විදියට document වෙනවා, ඕනෙ නම් ආපහු හරවන්න (reversible) පුළුවන්, ඒ වගේම team එකත් එක්ක වැඩ කරද්දි ගොඩක් ලේසියි (team-friendly).

Why Migrations Matter (Migrations වැදගත් වෙන්නේ ඇයි?)

1️⃣ Version Control for Your Database DB structure එකේ හැම update එකක්ම migration file එකක්. මොකක් හරි අවුලක් ගියොත් (Something breaks?) ලේසියෙන්ම ඒක review කරන්න, audit කරන්න, එහෙමත් නැත්නම් (ORM support කරන විදියට) rollback කරන්න පුළුවන්.

2️⃣ Smooth Team Collaboration Team එකේ dev කෙනෙක් table/column change කරලා, migration එක commit කළාම, අනිත් අයට simple command එකකින් තමන්ගේ schema එක sync කරගන්න පුළුවන්. "මගේ DB එකේ මේ table එක නෑනේ" කියන issues ආයේ එන්නේ නෑ.

3️⃣ Code-First Development (Less Manual SQL) අපි Models/Classes update කරනකොට ORM එකෙන්ම ඒකට අදාළ SQL auto-generate කරනවා. මේ නිසා duplicate work අඩුවෙයි, mistakes අඩුයි. හැබැයි complex queries ආවොත් නම් අපිට manual SQL ලියන්න වෙනවා.

4️⃣ Avoid Human Errors Production DB එකේ manually SQL run කරන්න ගිහින් අහම්බෙන් issues create වෙන්න තියෙන අවදානම මේකෙන් අඩු කරනවා. Migrations නිසා අපේ schema changes,

  • මොකක්ද වෙන්නේ කියලා කලින්ම දැනගන්න පුළුවන් (Predictable)

  • DB එකට දාන්න කලින් Test කරන්න පුළුවන් (Testable)

  • අනිත් අයට Review කරන්න පුළුවන් (Reviewable)

  • අවුලක් ගියොත් ආපහු හරවන්න පුළුවන් (Reversible) තත්වයට පත් වෙනවා.

ප්‍රධාන Programming Languages වල අපි පාවිච්චි කරන ජනප්‍රිය ORMs කීපයක්:

  • Node.js / TypeScript: Prisma, TypeORM, Sequelize

  • Python: Django ORM, SQLAlchemy

  • C# / .NET: Entity Framework (EF Core)

  • PHP: Eloquent (Laravel)

  • Java: Hibernate

මේවායින් ඔයා වැඩියෙන්ම පාවිච්චි කරන ORM එක මොකක්ද? එහෙමත් නැත්නම් තාමත් Raw SQL ලියන්නද කැමති? අදහස් පහළින් Comment කරගෙන යමු!