【问题标题】:What are the beneifts of using a database abstraction layer?使用数据库抽象层有什么好处?
【发布时间】:2011-11-14 10:22:01
【问题描述】:

一段时间以来,我一直在使用一些实现 phpBB DBAL 的代码。最近我不得不围绕它实现一个更完整的包,并决定始终使用 DBAL。大体上,一切正常。但有时在某些情况下我看不到使用它的逻辑。它似乎使简单的事情变得复杂得多。

与直接编写 sql 语句相比,DBAL 有什么好处?

【问题讨论】:

    标签: dbal


    【解决方案1】:

    来自维基百科 (http://en.wikipedia.org/wiki/Database_abstraction_layer):

    API 级抽象

    OpenDBX 等库通过为应用程序开发人员提供单一的低级编程接口来统一对数据库的访问。 它们的优势通常是速度和灵活性,因为它们不依赖于特定的查询语言(子集),只需实现一个薄层即可实现其目标。应用程序开发人员可以从所有语言功能中进行选择,但必须提供用于查询或更改表的可配置语句。否则他的应用程序也将绑定到一个数据库。

    【讨论】:

      【解决方案2】:

      在烹饪一道菜时,您不希望有几位厨师可以使用锅。他们可能都在添加香料,却不知道另一位厨师已经添加了香料。理想情况下,您需要一名厨师作为单一访问点,以避免变质汤。

      数据库也是如此。单点访问可以避免多个服务以不同方式访问数据的问题。

      【讨论】:

      • 我喜欢你的类比,但我没有完全理解“单一访问点”。您的意思是始终以相同的格式对数据库查询进行编码吗?
      • 是的,但更重要的是,更新。如果需要更新两张表,一个进程可以锁定表 A 并等待表 B,另一个进程可以锁定表 B 并等待表 A...死锁!如果两个进程使用相同的更新代码,这将永远不会发生。
      • 有趣。我会检查 phpBB DBAL,看看它在“幕后”做了多少。谢谢。
      猜你喜欢
      • 2019-07-24
      • 2011-02-19
      • 2010-10-15
      • 2010-11-16
      • 2011-04-21
      • 2010-12-31
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      相关资源
      最近更新 更多