Что такое миграция базы данных

«Что такое миграция базы данных» — вопрос из категории Базы данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Миграция базы данных — это процесс изменения структуры БД (например, таблиц, индексов) без потери данных. В Android используется Room с классами Migration, где указываются изменения между версиями.

Пример:

val MIGRATION_1_2 = object : Migration(1, 2) {  
    override fun migrate(database: SupportSQLiteDatabase) {  
        database.execSQL("ALTER TABLE User ADD COLUMN age INTEGER NOT NULL DEFAULT 0")  
    }  
}  

// Добавляем в RoomDatabase.Builder  
Room.databaseBuilder(context, AppDatabase::class.java, "db")  
    .addMigrations(MIGRATION_1_2)  
    .build()  

Нюансы:

  • При ошибке в SQL-запросе приложение упадёт.
  • Для сложных изменений (например, переименование столбца) может потребоваться временная таблица.
  • Миграции должны быть последовательными (1→2, 2→3, а не 1→3).