2010-09-02 44 views
2

爲什麼沒有很多使用db4o和Cassandra等新型nosql工具進行持久化的DDD故事。爲什麼O/R Mappers似乎是DDD用戶最喜歡的持久性方法?

在我看來,O/R映射所涉及的努力對於返回值來說似乎太高。能夠立即報告數據庫是我可以看到的項目主要優勢。

在另一方面,db4o的看起來幾乎 Repository模式和列族和SuperColumns的Cassandra的概念似乎是完美的定義骨料和它們的價值對象(可擴展性將只是一個額外的好處)。然而,大多數提供DDD項目示例的在線資源似乎總是默認使用[N] Hibernate。

我沒有足夠的時間/資源通過在我的項目上嘗試使用這些較新的工具來承擔很大的風險,這使得我想選擇一種記錄良好的持久性方法。僅僅因爲人們不敢放棄這麼可靠的SQL,O/R映射是否可能仍然是標準呢?我應該跳躍嗎?

回答

2

從我所看到的情況來看,DDD在長期面向業務的代碼庫中最爲常見。到目前爲止,這是一個SQL數據庫思維統治幾乎不受挑戰的領域。一些因素會影響到:

  • 編寫長壽代碼庫的人往往喜歡長期存在的技術。
  • 大型的商業導向項目通常發生在大型企業,這些企業自然是保守的。
  • 如果您正在使用任何現有數據開始您的項目,那麼可能首先在SQL數據庫中,現有代碼可能與此數據綁定在一起。
  • 大多數商業項目對性能不敏感,至少與純技術或以消費者爲中心的努力不同。

而且我相信還有更多。

如果您承擔不起嘗試創新工具帶來的金融風險,那麼您應該堅持已知的事情。一些替代性持久性方法非常棒,可以根據需要爲您提供更多的性能。但他們都在其生命週期的早期。雖然SQL數據庫有很多限制,但至少這些限制是衆所周知的,無論是由您和將繼承您的代碼的開發人員。

0

關係數據庫是爲特定類別的用例而設計的,特別是在商業應用程序中。因此,它們具有某些在這些場景中有價值的功能。數據檢索通常伴隨着複雜的搜索和分析。如果您使用NoSql或對象數據庫,那麼您可能會放棄其他一些功能,例如處理龐大的分佈式數據集,這是NoSQL數據庫通常擅長的任務。

換句話說,您可能需要更多的功能,而不僅僅是數據持久性,即關係數據庫已經提供的功能。關係數據庫是一種成熟的,衆所周知的可預測的技術,許多專家都具有豐富的專業知識。所有這些原因都是繼續選擇關係數據庫而不是更「異國情調」的解決方案的理由。

相關問題