This question包含一些如何爲數據(如數字或多選字段)設計數據庫歷史記錄/修訂方案的優秀報道。用於文本修訂的數據庫設計
然而,關於大型文本字段的討論並不多,正如博客/ Q & A/wiki /文檔類型系統中常見的那樣。
那麼,在基於數據庫的編輯系統中存儲文本字段的歷史記錄會被認爲是一種好的做法嗎?將它存儲在數據庫中甚至是一個好主意?
This question包含一些如何爲數據(如數字或多選字段)設計數據庫歷史記錄/修訂方案的優秀報道。用於文本修訂的數據庫設計
然而,關於大型文本字段的討論並不多,正如博客/ Q & A/wiki /文檔類型系統中常見的那樣。
那麼,在基於數據庫的編輯系統中存儲文本字段的歷史記錄會被認爲是一種好的做法嗎?將它存儲在數據庫中甚至是一個好主意?
我開發了一個wiki引擎,頁面/文章修訂版存儲在數據庫表中。每個版本都有一個連續的修訂版本號,而「當前」修訂版則標記爲-1(僅用於避免NULL)。
修訂文本是按原樣存儲的,不是diffd或類似的東西。
我認爲性能不是問題,因爲您不太可能經常訪問舊版本。
我做了同樣的事情,到目前爲止對我來說工作得很好。該系統現在是2年左右。 – 2009-04-15 09:22:03
通常,跟蹤文檔版本的最明智的方式是跟蹤對其進行的更改。然後,如果請求了特定版本,則可以從當前文檔和部分更改集重建。
所以,如果你有一個很好的方法來描述文檔的變化類型(這主要取決於文檔是什麼以及它是如何使用的),那麼通過一切手段使用數據庫來跟蹤變化,因此版本。
由於硬盤技術的當前狀態,它只是不值得努力嘗試優化文本存儲機制:Document (ID, Name)
和DocumentRevision (ID, DocumentID, Contents)
表將做的工作。 DocumentRevision
中的ID
也可以用作「儲存庫」全修訂版號碼。如果這不是您想要的行爲,請爲每個文檔修訂分配一個單獨的VersionID
。
我假設你想嵌入一個鏈接(「這個問題包含...」),所以請編輯你的文章,幷包括它。 – 2009-04-15 08:35:52
更正鏈接格式。 – Cerebrus 2009-04-15 08:43:41