2009-12-24 63 views
0

我有一個存儲一些元數據和一些原始字節的域對象。這用於存儲二進制對象,如PDF文檔和圖像。堅持JPA域對象的好設計

我想將元數據保存在數據庫中,以便輕鬆查詢,但出於性能考慮,我想將原始字節存儲在文件系統中。什麼是實現這個目標的好設計?

我是否應該有一個域對象來表示具有自己的DAO的原始字節以執行CRUD並使用單獨的JPA DAO來爲元數據執行相同的操作?

如果是這種情況,元數據的域對象是否包含對被標記爲瞬態的原始字節對象的引用,所以JPA不會嘗試保留它?

我是否遵循過於複雜的設計,而不是在數據庫中存儲原始字節的好處?我使用PostgreSQL 8.x如果有所作爲。

非常感謝。

回答

1

我真的不會這樣做。你有沒有衡量所期望的表現?你將如何保持數據庫中的數據與文件系統上的數據之間的事務性。例如你是否要寫入文件系統,寫入數據庫,如果失敗,則回滾文件系統更改(這不像簡單地刪除文件那樣容易 - 是否有以前版本的二進制數據?)。你如何管理數據庫備份等,並保持一切同步?我強烈建議將所有數據保存在一個地方。

由於您正在談論存儲PDF等文件,因此您可能需要document management system

+0

感謝您的意見。是的,我打算將事務保存在事務中,如果發生異常,請刪除文件並回滾數據庫。你認爲我應該將字節存儲在數據庫中嗎? – Stephen 2009-12-24 17:31:29

+0

我會的。如果修改文檔會發生什麼情況。您必須回滾到以前的文件。我會將所有文檔數據存儲在數據庫中(無論如何都是第一次)。您*可能*想要將元數據和二進制數據分離到不同的表中以實現可管理性或性能 - 這對於更熟悉數據庫的人來說是一個不同的問題。 – 2009-12-24 17:36:01