我們有一個體面的面向對象的應用程序。每當應用程序中的對象發生更改時,對象更改都會保存回數據庫。但是,這已經變得不太理想。什麼是存儲和搜索對象事務的最佳方式?
目前,交易存儲爲交易和一組交易LI。
事務表具有who,what,when,why,foreignKey和foreignTable的字段。前四個是不言自明的。 ForeignKey和foreignTable用於確定哪個對象已更改。
TransactionLI有時間戳,鍵,val,oldVal和一個事務ID。這基本上是一個key/value/oldValue存儲系統。
問題是,這兩個表用於應用程序中的每個對象,所以他們現在是非常大的表。將它們用於任何事情都很慢。索引只有很多幫助。
因此,我們正在考慮其他方式來做這樣的事情。我們到目前爲止考慮過的事情: - 按照時間戳之類的東西對這些表進行分片。 - 將兩個表格非規範化併合併爲一個。 - 以上兩者的組合。 - 做一些改變後的序列化每個對象的行,並將其存儲在subversion中。 - 可能是別的,但現在我想不起來。
整個問題是我們希望有一些機制來正確存儲和搜索事務數據。是的,你可以強迫關係數據庫的飼料,但實際上,它是交易數據,應該相應地存儲。
其他人在做什麼?
你正在使用什麼數據庫?您可能需要在SQL 2008中調查SQL更改跟蹤。它不會跟蹤您的對象,但它會跟蹤您的數據更改並對它們進行版本控制。 – D3vtr0n 2008-12-04 02:14:23