10-modul · 4-dars: Database Migration
Daraja: Ilg'or
Database Migration. Advanced backend bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Database Migration tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Database migration schema o'zgarishini ketma-ket, takrorlanuvchi va tekshiriladigan fayllarda saqlaydi. Gitdagi kod yangi ustunga muhtoj bo'lsa barcha muhitda shu ustun bir xil yaratilishi kerak. Hibernate auto-update production migration tarixi va data backfill nazoratining o'rnini bosmaydi. Flyway versioned migrationni tartib bo'yicha bir marta, repeatable migrationni checksum o'zgarganda tegishli tartibda qayta bajaradi. Ishlagan versioned faylni o'zgartirmang: yangi versiya qo'shing. Undo migration imkoniyati nashr/litsenziya va konfiguratsiyaga bog'liq; forward-only rollback rejasini oldindan tayyorlang. Destructive schema rollback yo'qolgan ma'lumotni sehrli qaytarmaydi. Liquibase changelog va changesetlar bilan o'zgarishlarni ifodalaydi; SQL hamda strukturalangan formatlarni qo'llaydi. Flyway va Liquibase tanlovi format, jamoa va deployment jarayoniga bog'liq. Expand-contract usuli avval mos yangi schema, keyin kod/backfill, oxirida eski ustunni olib tashlashni ajratadi. Backup olishning o'zi yetmaydi: restore sinovi va katta jadvaldagi lock vaqti ham tekshiriladi.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/10-module%28Spring%20Boot%20Part%20%7C%7C%29.md) [Rasmiy qo‘llanma](https://docs.spring.io/spring-boot/reference/)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
-- V9__study_note_summary.sql (misol, joriy loyihada avtomatik ishlatmang)
ALTER TABLE study_note ADD COLUMN summary text;
-- Backfill va NOT NULL alohida nazoratli bosqichlarda qo'shiladi.
Keng tarqalgan xatolar
- Allaqachon prod'da ishlagan V1 faylni tuzatib qayta deploy qilish checksum xatosini keltiradi.
Mashqlar
- Yangi required maydon uchun eski kod bilan mos expand-contract migration rejasini yozing.
- Yangi migratsiya yozib qo'llang, keyin eski faylni o'zgartirib deploy qilishga urinib ko'ring.
Teglar: nazariya, pdp, modul-10