我们正在考虑Terracotta为我们的下一个项目。我对它提供数据持久性的潜力感兴趣,而不需要单独的DBMS。 (另请参阅On using Terracotta as a persistence solution)对于兵马俑中的持久数据,如何进化类?
软件演进的一个主要难题是使现有生产数据符合新的数据模型。对于RDBMS,您可能在部署时使用SQL更改脚本。对于兵马俑支持的数据,我不清楚如何处理非平凡的进化。
有一个couple of paragraphs on Class Evolution in the Terracotta documentation,但它似乎特定于DSO并保持相当肤浅。
- 什么是可能的方式来处理存储在兵马俑持久性数据的数据模型演变?我对非DSO方案(即通过Terracotta Toolkit API)特别感兴趣。
- Terracotta DSO和Toolkit API在对进化类定义的反应方面有所不同吗?
- 要了解类演化的局限性,它将有助于了解Terracotta如何表示/传送对象数据;有没有一个规范?
- 也许有OODBMS世界中适用于兵马俑的模式演化技术?
作为一个简单的例子,假设我有一大堆的存储Car
的对象,我已经改变了Car
类的modelYear
领域从String
到int
。根据文档,这不能即时运行。我可以想象一个解决方案,我的旧Car
由应用程序启动时由单独的类加载器加载,然后转换为新的Car
。这是一个好方法,为什么(不)?