我正在使用Grails 2.x开发模块化应用程序,我希望以每个插件/模块在其grails-app/migrations文件夹中托管自己的迁移的方式组织数据库迁移.(而不是将所有迁移放入组合应用程序项目的迁移文件夹中)
组合应用程序项目本身通常没有任何迁移,因为它们存储在插件中.
是否可以在应用程序项目中构建"主"更改日志,并且只按正确的顺序引用插件迁移文件?这样我就可以拥有一个非常干净的迁移系统来处理插件依赖性问题(我将插件迁移文件引用按顺序放置,这些顺序可能会随着时间的推移而变化,因此迁移的顺序可能相当复杂).
默认情况下,Database Migrations插件似乎根本不检查/执行插件迁移(在我的情况下是内联插件).文档没有说明这种情况,他们专注于简单的非模块化开发工作流程.
我已经看到了DB Migrations插件的一个已解决的问题,它以某种方式允许在应用程序的迁移目录之外运行迁移文件,但我认为这将使用某种硬编码的相对/绝对路径,这不是很优雅.
最优雅的解决方案是,如果我还可以为每个迁移"include"语句指定插件,那么我的主更改日志将如下所示.
databaseChangeLog = {
include plugin:'core' ,file:'000-initial.groovy'
include plugin:'accounting' ,file:'000-initial.groovy'
include plugin:'core' ,file:'001-drop-constr-XXX.groovy'
include plugin:'accounting' ,file:'001-add-col-yyy-to-posting-table.groovy'
}
Run Code Online (Sandbox Code Playgroud)
是否可以实现与当前数据库迁移插件类似的东西?
任何帮助/想法表示赞赏.
我有一个在 PostgreSQL 8.3 上运行的中型数据库集群。
数据库将数字文件(图像)存储为 LOB。
数据库集群中有相当多的活动,大量内容以持续的方式创建和删除。
尽管托管 OID 的应用程序表由应用程序正确维护(当删除映像文件时),数据库集群的大小仍在不断增长。
自动清理功能处于活动状态,因此不应发生这种情况。