2011-09-10 35 views
1

我一直在使用一段時間實現phpBB DBAL的代碼。最近我不得不圍繞它實現一個更完整的包,並決定在整個過程中使用DBAL。總的來說,這沒問題。但偶爾有些情況下我看不到使用它的邏輯。它似乎使簡單更復雜。使用數據庫抽象層有什麼好處?

DBAL提供什麼好處,而不是直接編寫sql語句?

回答

1

維基百科(http://en.wikipedia.org/wiki/Database_abstraction_layer):

API的抽象級別

圖書館等OpenDBX通過提供單個低級編程接口,以統一對數據庫的訪問應用程序開發者。 它們的優點通常是速度和靈活性,因爲它們不受特定查詢語言(子集)的束縛,只需實現薄層以達到其目標。應用程序開發人員可以從所有語言功能中進行選擇,但必須提供用於查詢或更改表格的可配置語句。否則,他的申請也將被綁定到一個數據庫。

1

烹飪菜餚時,你不想讓幾個大廚進入鍋。他們都可能添加香料,但不知道另一名廚師已經添加了香料。理想的情況下,你想要一個單一的廚師,作爲一個單一的訪問點,以避免損壞湯。

與數據庫相同。單點訪問可以避免多種服務以不同方式訪問數據的問題。

+0

我喜歡你的比喻,但我沒有完全獲得'單點訪問'。你的意思是總是用相同的格式編碼數據庫查詢? – DavidM

+0

是的,但更重要的是,更新。如果需要更新兩個表,則一個進程可以鎖定表A並等待表B,另一個進程可以鎖定表B並等待表A ...死鎖!如果兩個進程使用相同的更新代碼,則這絕不會發生。 –

+0

有趣。我會檢查phpBB DBAL,看看它在'幕後'做了多少。謝謝。 – DavidM