【发布时间】:2019-07-24 09:18:08
【问题描述】:
我有一些关于数据库抽象层 (dbal) 的基本问题。我想更好地理解这一点。我已经知道 dbal 是一个应用程序编程接口。我使用 PHP 作为我的基本编程语言和 MySQL 作为数据库,所以我的问题将基于它。让我们开始...
-
MySQL Shell 是否已经是更深层次的 dbal? 我给你一个例子,下面的命令将打印结果,我可以在我的脚本上处理它。所以在我看来它就像一个 api,一个非常糟糕的,但它会起作用。
mysql --batch -u root -p -e "select * from foobar" MySQL 改进扩展和 PHP 数据对象也是 dbal 吗? 我会说是的,因为它为我提供了一个很好的 api 来处理 PHP 中与数据库相关的东西。
很长时间以来,我一直认为在一个 api 中处理不同的数据库是 dbal 背后的主要思想。但是我意识到这是与数据库无关的,而不是 dbal。因此,当 dbal 可以处理多个数据库时,它与数据库无关,我是对的吗?
最后一个问题。在我参与这个话题之后,我意识到 dbal 是门面。那么每个 dbal 都是一个编程接口,这一定意味着,每个 api 都是设计模式意义上的外观?是这样吗?
感谢您的帮助:)
【问题讨论】:
-
我从未听说过 DBAL 这个词,而且我从事软件工作已有 20 多年了。但是,我可以评论您强调的一些内容。软件中一个潜在的主要问题是它需要访问数据库,但更愿意以不与任何特定供应商(例如 MySQL 或 SQL Server)紧密耦合的方式进行访问。因此,开发人员希望使用一些数据库接口,而不用担心实际使用的是哪个数据库。