2010-06-14 91 views
0

透明持久性允許您使用常規對象而不是數據庫。這些對象會自動從磁盤讀取或寫入磁盤。這種系統的例子是Gemstone和Rucksack(用於普通的lisp)。實現透明持久性

他們所做的簡化版本:如果您訪問foo.bar並且bar不在內存中,則會從磁盤加載。如果您執行foo.bar = bazfoo對象在磁盤上得到更新。大多數系統還具有某種形式的交易,並且可能支持跨程序甚至跨網絡共享對象。

我的問題是實施這些類型的系統有哪些不同的技術,以及這些實現方法之間的權衡是什麼?

回答

1

我已經在幾個項目上使用了這樣一個系統(ObjectStore),最顯着的是商業信用風險系統和一個用於優化石油管道網絡流量的系統。有關執行的問題太複雜,在這裏討論,但是對於這樣的系統和關係數據庫之間進行權衡:

對象DB優點:

  • 非常非常快的 - 某些查詢也可以是100比關係數據庫快1000倍。實際上,我設計的風險系統不能(根據Sybase自己)在SQL數據庫上實施。

  • 非常容易與C++代碼集成 - 不需要阻抗匹配圖層。

  • 數量有限的麪包和奶油的CRUD應用

關係優勢GUI庫:

  • 即席查詢非常非常容易和比對對象的DB更快。

  • 約一百萬的工具來管理數據庫

  • 很容易地創建GUI應用程序

  • 很多人都有RDBMS經驗

但當然,與所有的工具,你不必選擇一個。我從Sybase數據庫寫入導入數據的風險應用程序,以及Oracle的管道。

+0

感謝您的回答。考慮到折衷,我打算在實現透明持久性的不同方法之間進行權衡,但是對象db和關係數據庫之間的權衡也很有趣。 100-1000x是相當快的速度! – Jules 2010-06-14 20:52:48