【问题标题】:How to initialize SQL database and tables for a server side application?如何为服务器端应用程序初始化 SQL 数据库和表?
【发布时间】:2017-07-02 09:17:55
【问题描述】:

我正在将 SQL 数据库 (PostgreSQL) 集成到我的第一个 Java 后端系统中。

我现在的困境是应用程序应该自己创建数据库和表,还是应该假设使用表初始化的所需数据库可用?

如果应用程序不应该自己管理数据库,那么在开发人员的机器上复制数据库的最佳方法是什么(我希望能够在本地运行与真实数据库的集成测试)?

【问题讨论】:

  • 如果应用程序不创建/初始化数据库,那么其他人将不得不这样做。如果您让您的应用担心这一点,那么您可以尝试保持一致的行为。
  • 看看liquibaseFlyWay
  • 通常,您不会让应用程序管理数据库。如果您决定放弃 psotgres,请减少返工。最好简单地提供一个 SQL 脚本供其他人运行。更好 - 提供 docker/vagrant 图像。其他人甚至不必担心安装 postgres。
  • 我会在应用程序之外创建数据库。 PL/pgSQL 脚本是创建/填充和维护开发人员数据库的绝佳方式。
  • 感谢大家的 cmets 和想法。在快速查看了我的选项后,我决定按照@Max 的建议继续使用 FlyWay。一旦开始工作,将报告我的经验。

标签: sql database integration-testing database-administration


【解决方案1】:

我最终使用了 @Max 在他的评论中建议的 FlyWay。

设置非常简单直观。我暂时使用默认设置。

在开发机器上设置集成测试轻而易举。

我唯一不喜欢的是,在测试之间使用 FlyWay 清理数据库非常慢,因为它不仅清理表,而且擦除整个方案。

不过,这对我来说现在不是什么大问题(目前有大约 100 个测试),而且如果需要,将来可能不会很难优化。

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 1970-01-01
    • 2015-11-29
    • 2020-07-29
    • 2019-03-08
    • 1970-01-01
    • 2023-03-18
    • 2018-07-18
    • 2012-03-23
    相关资源
    最近更新 更多