2010-03-05 30 views
40

使用Python編寫應用程序,並使用各種ORM設置和直接SQL進行操作。所有這些都是醜陋的罪過。ZODB In Real Life

我一直在尋找ZODB作爲對象存儲,它看起來很有希望的替代方案...你會推薦它嗎?你的經驗,問題和批評是什麼,特別是關於開發者的觀點,可擴展性,完整性,長期維護和替代方案?任何人都可以用它開始一個項目並將其拋棄?爲什麼?

雖然落後ZODB,Pypersyst和其他有趣的想法,似乎是一個缺乏熱情四處爲他們:(

+0

-1:值判斷:「開始討厭RDBMS /對象不匹配」您能否消除這個問題的價值判斷?有沒有辦法關注事實並減少對你個人仇恨的重視? – 2010-03-06 05:56:39

+16

@ S.Lott - 一個不情願的編輯。不是因爲你不正確,而是因爲-1與一個粗魯的請求聯繫在一起。這不是bayeux掛毯。 – 2010-03-06 11:18:31

回答

25

我已經使用ZODB超過十年了,現在在Zope和外面。如果你的數據是分層的,這很好。客戶運營的最大的數據存儲可能......我不知道...其中100GB?反正這個數量級的東西。

這裏是a performance comparison against Postgres

如果你正在寫一個WSGI web應用程序,這些程序包可能是有用的:

+1

接受。不僅僅是因爲答案,而且當我用Google搜索ZODB的東西時,我總是會發現你的帖子/文章/演示文稿。我知道是誰在進一步提問! ;) – 2010-03-07 23:49:50

+0

這個http://docs.zope.org/zope3/Code/BTrees/index.html也很有用 – amirouche 2011-01-21 18:08:46

+0

真的很有趣的鏈接關於那裏的表現。值得一讀! – fatuhoku 2013-09-21 19:30:39

2

ZODB已用於很多大型數據庫

大多數ZODB用法/是誰遷移的路程,如果他們遷移從Zope的遠

性能也不如relatonal數據庫+ ORM特別是如果你有很多寫的那麼好。大概Zope的用戶

長期維護也不是那麼巴d,你想不時打包數據庫,但可以現場完成。

你必須使用ZEO,如果你要使用多個進程與ZODB比使用ZODB慢了不少直接

我不知道如何ZODB上執行閃存盤。

+0

謝謝你的答案!我想知道ZODB是否適合在webfarm設置中使用ZEO的MySQL。嚴重的緩存將有希望抵消商店的緩慢表現。 – 2010-03-05 19:10:01

+3

ZODB通常在關係數據庫中重複查詢,當數據沒有變化時,即使在ZEO中也是如此,因爲已經存在客戶端緩存。 – 2010-03-05 21:43:06

0

通過酸洗,您應該能夠以類似的方式使用任何key value數據庫。

+3

除非你醃過'a'和'b',每個'c'都肯定會引用'c'嗎? – 2010-03-05 21:07:00

+0

@Aiden,zodb如何處理這種情況? – mikerobi 2010-03-05 21:36:35

+8

ZODB透明地處理它。見http://faassen.n--tree.net/blog/view/weblog/2008/06/20/0 – 2010-03-05 21:40:22

14

與「任何鍵值存儲」相比,ZODB的關鍵特性是屬性更改與實際ACID事務的自動集成,以及對其他持久對象的「任意」引用的乾淨整合。

的ZODB不僅僅是在Zope中默認使用的FileStorage更大:

  • 的RelStorage後端可以讓你把你的數據在可以使用標準工具進行備份,複製等的RDBMS。
  • ZEO可輕鬆擴展應用程序和脫機作業。
  • 兩階段提交支持允許協調多個數據庫之間的事務,包括RDBMSes(假設它們提供了TPC感知層)。
  • 基於對象屬性或遏制的簡單層次結構:您不需要編寫遞歸自連接來模擬它。
  • 基於文件系統的BLOB支持使服務大文件變得微不足道。

總的來說,我很高興使用ZODB幾乎任何問題,其中數據的形狀不明顯是「方形」。

+0

+1 - 有趣的閱讀 – 2010-03-05 22:01:07

4

我會建議它。

我真的沒有任何批評。如果它是您尋找的對象商店,則可以使用該商店。我之前已經存儲了250萬個對象,並沒有感覺到掐。