譯文:物件/關係阻抗已經被解決了嗎?

banq發表於2005-11-22
Has the Objects/Relational Impedance Mismatch been Solved?
這是JavaLobby上的一篇文章,現將大意翻譯如下:

http://www.javalobby.org/java/forums/t54475.html

At last with JDO and EJB, with Hibernate and TopLink, with Kodo and OJB, there is no longer any need to write SQL, or even use a relational database. So where's the catch?
終於我們使用JDO和EJB,或者Hibernate和TopLink,或者Kodo和OJB等,再也不需要寫任何SQL語句,甚至無需使用關聯式資料庫了,那麼這些都是目的嗎?

關聯式資料庫最初勝出是因為相對基於檔案的分層資料庫系統,並不是關聯式資料庫有更好的效能或效率等,而是他的關係模型。而SQL語句是自己成功的犧牲品。

什麼是面向程式設計的潛在缺點呢?我們喜歡將每件事分類,將它們放入合資,然後創造抽象概念來表達它們,而無需關注細節,我們可以很有效地使用這種構造方法:我們能分類這個地球上任何組織、國家 家庭等,然後可以明白它們的相似點like,如飛機類似bus,也是交通工具等。

但是我們不知道,這種方式也有不能表達的情況。模型系統並不適合在所有系統,每套方法論有自己的應用範圍。物件導向程式設計是基於人類豐富自由的行為,也就是說OO是基於人類認識世界的角度出發的,但是有時客觀事物並不是以人的認識意志存在的。

實際上,關係模型是一種正規的數學模型符號。數學上的抽象是有用的,它們能夠幫助我們幫助我們以普通意義上方式解決問題難點。關聯式資料庫在解決資料問題時是有效的。
Relational databases are a formal mathematical representation that is useful when solving data problems
SQL是一種代表或操控關係代數學的標準,這個亮點使得物件導向程式設計和關聯式資料庫的阻抗存在變得現實(注:這裡沒有提到面向資料庫程式設計,關聯式資料庫應該回到它的特長關係資料處理層面上。)This highlights the true impedance mismatch between object oriented programming and relational databases

譯者注:看來這兩種矛盾是兩種思維方式的衝突,不是技術本質衝突。

作者最後認為:透過消滅SQL,也許失去了一種操作關係資料的方法,也許將來你需要操作它們時,無從下手了。

譯者注:本文主要觀點是在當前物件導向分析方法全面勝利,佔據程式設計主流時提出的一個客觀提醒,雖然O/R mapping工具幫助我們更加純潔了程式設計的物件化,解決一些兩者阻抗問題,這樣我們使用OO分析程式設計更加順手方便,但是並不是說,關聯式資料庫完全退出了,它還在資料持久方面有其價值,在處理關係資料有其特殊價值。

相關文章