我們正在調查different alternatives存儲對象的變化,並發現JaVers似乎是完全用於此目的的工具。Javers將數據保存在單個表中的潛在可伸縮性問題?
我們已經構建了一個原型(使用MySQL進行變更回購),該原型已經很好地實現並實現了所承諾的內容。到現在爲止還挺好。
但是,JaVers似乎將所有內部數據存儲在4個表中。對於小數據集來說,這不是一個大問題,但是如果原始數據模式具有真正大的表格(每個數百萬/數十億記錄)會發生什麼?在如此大的表中更新記錄意味着向JaVers審計表添加一個記錄,該記錄將會非常大(最有可能比原始數據庫的大小更大)。
從我們之前使用大型審計表的經驗來看,我們遇到了像inserts
開始減慢,查詢絕對年齡等問題。我們需要頻繁地獲得增量,所以這看起來像是一個定時炸彈。
1)是否有可能配置JaVers所以它存儲在單獨的表的變化,每每個實體一個 - 像
foo_global_id
,foo_snapshot
,foo_commit
,foo_commit_property
bar_global_id
,bar_snapshot
,bar_commit
,bar_commit_property
如果目前還不可能,那麼添加這樣的功能有多難(u願意投入時間並提交補丁)?
2)比方說,我們有
class Foo {
String bar;
}
一段時間後,我們決定添加一個字段
class Foo {
String bar;
int baz = 0;
}
我懷疑,如果我們更新的Foo
一個實例,並改變bar
僅但保留baz = 0
,JaVers將會報告說baz=0
已被添加。 JaVers中是否有任何設計用於處理數據模型更改並避免此類誤報的內容?
有趣的問題,將在晚上回答 –