在功能修改数据库时,是否可以使用功能标志/切换?
在考虑在应用程序中使用功能切换时,这个问题最让我感到困惑。大多数功能都需要对数据库进行一些更改。然后如何实现功能标志,以便能够顺利地恢复数据库更改以及打开/关闭功能切换?特别是当使用一些数据库迁移工具时,如flyway或lquibase。
让我们举个例子。例如,我有简单的表播放列表,带有Id,名称列。我想添加在应用程序中向播放列表添加描述的功能。需要更改数据库表。添加了新列。列值不是必需的。到目前为止很简单。一段时间后,功能将从生产中关闭。解决方案非常简单但很混乱 - 我们可以在数据库中保留列,并且不再在代码中使用它。迁移工具以增量方式工作,因此当我关闭功能切换时,我看不到任何选项可以恢复到以前的数据库状态(或者我错了吗?更难的例子是当字段需要是强制性的。然后我不能只把那个字段留在db中。它将向后不兼容。那么那又是什么呢?如何处理这种情况?我认为这是很常见的情况。
此外,即使对 db 稍有更改,该类的应用程序模型也会更改。(假设使用某些 ORM)。这并不像用策略模式取代实现那么容易。除非您为ORM模型的使用提供了很多抽象。因此,添加这样的功能标志似乎非常复杂。任何人都可以帮助我理解它是如何使用功能图格尔的?或者也许有人有完整的例子来展示?在 Java 中首选