2010-01-20 1 views
11

Есть по крайней мере два Grails плагинов, которые эмулируют функциональность миграции базы данных в Rails:базы данных Grails миграции плагинов

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

ответ

13

В настоящее время имеется standard Grails database migration plugin. Согласно this blog post, по крайней мере, плагин Liquibase, следовательно, больше не будет поддерживаться после выпуска Liquibase 1.9.

Новый плагин миграции базы данных имеет built-in functionality для выполнения изменений при запуске и поддерживает определение изменений в Groovy DSL, так что это, вероятно, то, что вы ищете.

3

Я использую Autobase (который построен поверх Liquibase), поскольку он (последний раз, когда я проверял) позволяет автоматически проверять/применять ваши миграции при запуске приложения. С плагином Liquibase я должен сделать это сам в коде init init. Это позволяет вам установить источник данных dbCreate = none и позволить Autobase обрабатывать DB в форме.

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

Я думаю, что некоторые из плагинов Autobase (например, groovy dsl) переносятся обратно в плагин Liquibase, но вам нужно будет это проверить.

Единственным недостатком Autobase является отсутствие хорошей документации. Есть некоторые, но это еще не все. К счастью, dsl совпадает с тегами Liquibase xml, поэтому вы можете работать с большинством из них.

+0

просто смотрел страницу autobase - теперь она устарела в пользу Liquibase –

+1

Я не думаю, что Liquibase имеет возможность обновлять БД при запуске приложения, что является действительно хорошей функцией ,Я все равно буду использовать Autobase до тех пор, пока миграции не станут частью ядра Grails (который запланирован на Grails 1.4). – leebutts

+0

@leebutts. На момент написания этой статьи плагин dbMigrations (преемник плагина Liquibase) _ поддерживает обновление базы данных при запуске приложения. – cdeszaq

1

Я использую Liquibase, я не уверен, что Роберт все еще активно поддерживает Autobase и xml, который предоставляет Liquibase, на самом деле довольно DSL-подобный. Я думаю, что это также немного отделяет ваши команды от базы данных и не делает его укорененным в процессе запуска (некоторые могут предпочесть обратное).

0

Я слышал, что Autobase по-прежнему поддерживается, но учтите, что плагин миграции баз данных Grails написан основной командой и, вероятно, будет официально поддерживаться.

Другими словами, рекомендуем вам подождать на Grails 1.4 ->roadmap перед тем, как выбрать один из плагинов выше.

1

По крайней мере, начиная с Grails2.0, database migration plugin является дефактовым способом обработки нетривиальных изменений базы данных. Плагин построен на Liquibase и является автором Springsource - всегда является признаком качества. Я написал introduction to the database migration plugin, который может быть полезен для кого-то, кто это читает.