我們正在考慮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
。這是一個好方法,爲什麼(不)?