首页 > 解决方案 > 在扩展的 Spring 微服务中向后兼容的 postgresql 更新

问题描述

我有一个在 Kubernetes 中运行的 spring 微服务,它可以水平扩展到多个 pod。所有服务实例都指向一个 PostgreSQL 数据库。我正在尝试更新表中一列的名称。绕过它的最佳方法是什么?

我主要关心表更新的时间,但一些服务实例仍然有引用前一个列名的旧代码,事情会中断。这似乎是一个非常常见的用例,但我找不到任何具体的东西。

标签: springdatabasepostgresqlmicroservicesdatabase-migration

解决方案


我看到了执行此迁移的 2 个选项:

  • 您可以添加一个新列(使用您的新名称),而不是更新现有列,然后部署使用新列的应用程序,然后更新表以删除旧列。如果您没有在查询中使用列位置或类似的东西,这应该可以正常工作。
  • 如果您有毫秒级延迟要求并且数据库不是那么大,您可以创建现有数据库的副本,以便在更新原始数据库时为查询提供服务。最后,您部署使用旧数据库但使用新列名的应用程序。无论数据库类型如何,这都有效。

推荐阅读