2012-03-09 4 views
2

Существует небольшой проект моей разработки, основанный на squeryl - типичная структура реляционных баз данных для Scala (язык на основе JVM).Как перенести существующие данные с помощью sqeryl?

Я предвижу несколько обновлений после первоначального развертывания. Данные, введенные в базу данных, должны быть сохранены над ними. Это невозможно без какой-либо процедуры переноса данных, обновления данных для более новой схемы БД. Использование старых данных для тестирования нового кода также требует исправлений совместимости.

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

Существуют ли методы, которые позволяют легко и формализовать перенос данных в измененную схему без полного отказа от создания автоматической схемы?

До сих пор я могу видеть только простой способ добавления столбцов: мы даем старые данные, предоставляем значения по умолчанию для новых столбцов, восстанавливаем схему и восстанавливаем старые данные.

Как удалить, переименовать, изменить типы столбцов или семантику?

Если генерация схемы не полезна для миграции базы данных на производство, каковы стандартные процедуры для обычной переустановки вручную/сценария?

ответ

1

Об этом в списке Squeryl было несколько обсуждений. Консенсус, как правило, заключается в том, что нет реальной лучшей практики, которая работает для всех. Автоматический процесс обновления вашей схемы на основе вашей модели является хрупким (не может обрабатывать ситуации, такие как переименования столбцов) и может быть опасным в производстве. Лично мне нравится идея «миграции», где все ваши изменения схемы написаны как SQL. Есть несколько рамок, которые помогают в этом, и вы можете найти некоторые из них here. Лично я просто использую световую обертку вокруг утилиты командной строки psql для миграции схем и загрузки данных, поскольку для них намного быстрее, чем для подачи данных по JDBC.

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