摘 要:文章給出了在民族古籍數字化保護系統(tǒng)操作中典型的并發(fā)事件(丟失更新)解決的兩種封鎖機制。在操作時,采用適當的封鎖機制,鎖定需要修改的“行”,防止并發(fā)事件的產生,以保證數據庫的完整性和一致性。
關鍵詞:民族古籍數字化保護系統(tǒng);并發(fā)控制;悲觀封鎖;樂觀封鎖
0 引言
在民族古籍數字化保護系統(tǒng)的數據庫中,多個用戶程序(如查詢和著錄)可以并行地存取數據庫,如果不對并發(fā)操作進行控制,會出現存取不正確數據,或破壞數據庫數據的一致性的問題。
1 并發(fā)事件的產生
數據庫是一個共享資源,可為多個應用程序共享。這些應用程序可以串行運行,但在許多情況下,可能多個程序或一個程序的多個進程并行地運行,這就是數據庫的并行操作。并發(fā)操作帶來的數據不一致性包括三類:丟失修改、不可重復讀和讀“臟”數據。
例如:在古書籍子系統(tǒng)的修改操作中,下面的事件依次發(fā)生時會丟失一個更新操作。
(1)用戶1檢索一行數據。
(2)用戶2檢索相同的行。
(3)用戶1修改那個行,更新數據庫并提交。
(4)用戶2修改那個行,更新數據庫并提交。
具體地說,當用戶1移動到屏幕上的“書籍版本(andoctype)”字段時,修改了版本信息,單擊保存,并獲得更新已經成功的確認。但此時,另一個用戶2已經早于用戶1五分鐘前就在查詢記錄了,而且屏幕上顯示的仍然是舊數據。用戶1隨后到來。用戶2隨后更新了“書籍標題(title)”字段,也單擊了保存,用戶2完全沒有意識到他已經重寫了用戶1對字段的更改,填寫了老數據。……