2016-04-28 3 views
1

Я всегда использовал Coredata в своем приложении iOS (быстрое и объективное).Частота изменения структуры Datamodel: лучший способ работы

Теперь в моем новом проекте у меня сложилась такая ситуация; часто меняются данные. Например, атрибут, который ранее был строкой, стал отношением или наоборот, String стал NSNumber, отношение исчезло, оставив Entity отдельно от другой таблицы и т. Д.

Coredata остается лучшим решением? Должен ли я писать сценарий миграции для решения проблемы миграции?

ответ

0

С моей точки зрения Основные данные - лучшее решение, даже в вашем случае вам придется выполнять жесткую миграцию.

  1. (Жесткая) миграция как не простое изменение, как изменение типа объекта или удаление атрибута от объекта и других. Для этого типа миграции вам нужно написать дополнительный скрипт, который называется migration process.
  2. Lightweight migration как простой Изменения в вашей модели, такие как добавление нового атрибута к сущности, а Core Data выполняет автоматическую миграцию данных.

Это только мой взгляд. Посмотрим, что другие люди будут публиковать здесь.

Core Data and Swift: Migration

2

основных данных лучше по сравнению с чем? На какой оси меры? Простота управления миграцией модели данных? Скорость запроса? Объект < -> взаимодействие с хранилищем?

Вы можете сравнить по многим осям.

Во-первых, наблюдение, перенос данных на устройства в поле является проблемой. Любая база данных займет некоторое время для миграции. Время, когда приложение не отвечает. Пользователи могут убить приложение во время миграции, думая, что он мертв. Следовательно, будьте осторожны, как часто вы меняете свою схему. Вы потеряете клиентов за каждое невосприимчивое приложение при запуске. Ваши коллеги могут не понимать, насколько непостоянны клиенты. Пользователи, вероятно, не заботятся о вашем приложении, чтобы страдать от какой-либо длительной миграции.

По моему опыту, Core Data обрабатывает миграцию лучше, чем в большинстве сред. Другие среды, которые используют SQLite, вряд ли будут более эффективными. Использовать другую базу данных? Затем вы переписываете каждый объект в своем приложении? Вау! Тогда у вас проблемы с миграцией.

С вашего вопроса, похоже, что вы подвергаетесь отторжению схемы. Это не является хорошим признаком вашего процесса разработки. Я бы рассмотрел этот отток, прежде чем я рассмотрю изменение баз данных.

Если у вас есть опция, всегда используйте легкую миграцию. Подумайте очень тщательно, прежде чем вам понадобится модель сопоставления для жесткой миграции. Легкая миграция имеет тенденцию быть достаточно эффективной в этой области. Это очень важная характеристика для поддержания. Жесткие миграции - довольно радикальные мутации вашей схемы. Я очень много работаю, чтобы избежать длительных миграций.

Смежные вопросы