【发布时间】:2020-04-03 01:58:36
【问题描述】:
在考虑在应用程序中使用功能切换时,这个问题最让我困惑。大多数功能都需要对数据库进行一些更改。那么如何实现功能标志以在打开/关闭功能切换的同时顺利恢复数据库更改?特别是当使用某些数据库迁移工具时,例如 flyway 或 liquibase。
让我们举个例子。例如,我有带有 Id、Name 列的简单表播放列表。我想在应用程序中添加向播放列表添加描述的功能。数据库表需要更改。已添加新列。列值不是强制性的。到目前为止很简单。一段时间后,功能将从生产中关闭。解决方案非常简单但很混乱——我们可以将列保留在 db 中,不再在代码中使用它。迁移工具以增量方式工作,因此当我关闭功能切换(或者我错了吗?)时,我看不到任何返回到以前的数据库状态的选项。更难的例子是当字段需要是强制性的。然后我不能只将该字段留在数据库中。它将向后不兼容。那是什么?如何处理这种情况?我认为这是很常见的情况。
此外,即使对 db 稍作更改,我的该类的应用程序模型也会发生变化。 (假设使用了一些 ORM)。这不像用策略模式替换实现那么容易。除非您为 ORM 模型的使用提供大量抽象。所以添加这样一个特征标志似乎很复杂。谁能帮我理解一下如何使用功能工具?或者也许有人有完整的例子来展示?首选Java
【问题讨论】:
标签: java liquibase flyway featuretoggle