Не относится только к SQLLite или Android, однако я работал над торговым приложением Windows, где пользователи могли сохранять «документы» в формате XML - то есть: настраиваемое представление, сохраняющее свои предпочтения в отношении отчетов и различные другие флаги, которые затем можно было бы распространить среди команды. , При запуске был загружен профиль пользователя и проанализированы его документы для настройки пользовательского интерфейса.
Приложение должно было выпускать каждые 3 недели, а существующие документы были необходимы для работы с новым приложением. Это было проблемой, так как иногда схема XML изменялась, приводя к новым или удаленным полям.
Мы решили создать абстрактный тип с именем Patcher
. Каждый выпуск может иметь один или несколько типов DerivedPatcher
, которые запускались при первой загрузке после обновления. У Patcher
будет абстрактный метод для исправления документов XMl. Это означает, что документ XML будет загружен со старой схемой и обновлен, сохранен на месте с использованием новой схемы. Патчер также будет иметь метод отката, чтобы разрешить развертывание в случае возникновения ошибки.
Тот же подход может быть применен к таблицам в базе данных. По сути, если вы можете создать патчер или PatchManager
для сериализации таблиц ключей в XML в памяти, а затем применить изменения в БД и записать данные обратно, вы сможете выполнить миграцию базы данных универсальным, многократно используемым способом.
Ключевым преимуществом этого метода является возможность его тестирования на ПК разработчика перед развертыванием, если у вас есть доступ к некоторым образцам данных SQLLite. Знание того, как ваши пользователи используют ваше приложение, является ключевым здесь.