gpt4 book ai didi

sql - 不断变化( hibernate )数据模型,如何避免服务器关闭

转载 作者:行者123 更新时间:2023-11-28 23:48:17 24 4
gpt4 key购买 nike

我正在构建一个使用 hibernate、mysql 和 tomcat 的网络应用程序。随着产品的发展,我不断被要求提供新功能,这通常意味着需要更改数据模型。

我现在正在做的是将数据库的所有关键数据导出到一个平面文件中。关闭数据库和服务器,重新配置数据库以匹配新的 hibernate 映射和 mysql 表和列,以编程方式导入保存的数据以适应新的数据模型,然后重新启动服务器。

还有什么推荐的?

最佳答案

如果您对零停机时间部署感兴趣,那么有很多方法可以解决这个问题。我找到了 this概述实现这一目标的不同策略的博客文章。

基本要点是,您在单独的时间对主要应用程序进行数据库升级,并确保数据库具有可为空的列,并且代码可以调整以让列神秘地出现或消失。

作者给出了针对不同技术执行此操作的一些策略 - 但随后承认使用 hibernate 执行此操作有点繁琐:

Hibernate – can be a bit of a bugger in getting it to behave, especially if columns are removed. You usually wind up creating common interfaces for persistent classes, with multiple versions of implementing classes. You can decide which set of classes to wire into Hibernate by using schema or result set metadata before initialising the SessionFactory. Worse issues exist for other persistence technologies in Java, especially the many flavours of JPA that like to instrument the bytecode of classes at startup.

这是一篇很棒且有趣的文章,我建议您全部阅读。

(Facebook 和 Yahoo 不使用 Hibernate!)

从用户的角度来看,要实现零停机时间,通常涉及使用受负载均衡器保护的应用程序集群 - 因此您可以让每个应用程序脱离策略并升级它,而无需用户尝试访问它重新启动。您必须考虑 session 粘性、数据源一致性和各种其他因素——但最主要的是它并不神奇。

关于sql - 不断变化( hibernate )数据模型,如何避免服务器关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11489462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com