2011-09-10 36 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