我有一個複雜的對象結構,其中描述了產品配置的多級嵌套關係。配置更改超時,我需要能夠在將來的任何時候參考不同的配置。在任何時候,整個系統都與特定版本的產品相關聯,並以某種方式抽象出產品版本的整體概念。帶有多級嵌套關係版本控制的對象
實現此目的最直接的方法是每次請求新版本時克隆產品的整體結構並將不同版本鏈接在一起。然而,這是數據庫負載方面的矯枉過正。有沒有更好的辦法 ?
我也想過要單獨跟蹤更改,並在需要版本時重新構建產品,但似乎相當複雜,需要使用多級嵌套關係才能實現。
或者
保存最小的元數據數據庫來跟蹤一個版本,序列化使用工具的整個產品結構,如GIT。
我同意你的看法,這是一個功能,應該這樣對待。作爲單獨的表/存儲庫的存檔將存儲不同的版本,但是,整個系統應該能夠在任何時候任何用戶選擇時鏈接到特定版本,因此數據庫不能爲了反映特定情況而被交換版。將產品克隆和存儲在同一張表中,可能在某個時候使用分區對我來說似乎是將整個系統從不同產品版本的存在中抽象出來的唯一方法。 – ken
然後,您應該在數據庫內的單個歸檔表中歸檔 - 如果這是用戶可以切換的內容,那麼您需要開始將其視爲應用程序功能,而不是數據庫管理/版本控制任務。使用與主產品鏈接的ProductID跟蹤ProductArchive表中的每個版本。然後編寫代碼按日期/版本號/任何您需要的方式獲取特定版本。 –
如果我使用ProductArchive方式,我需要爲每個相關表(ProductItems,ProductXXX ....)創建一個Archive表)或者每個表需要有一個完全低效的ProductID和ProductArchiveID :( – ken