什么是 DBI?它有什么用?

问题描述 投票:0回答:1

我想知道DBI是什么,它有什么用,有没有“DBI数据库”之类的东西

perl dbi
1个回答
0
投票

这个问题怎么十年都没有答案?! :)

Perl 的 DBI 是“DataBase Interface”,是 Tim Bunce 发明的东西。它是一个通用接口,用于连接到许多不同的数据库服务器,而无需了解特定于服务器的接口。每个受支持的服务器都有一个“DBD”(数据库驱动程序)。例如,DBD::Pg是Postgres的DBI后端。而且,好处是 DBI 项目不必制作 DBD。任何人都可以编写 DBD 来支持他们想要的任何内容,并且不同的组可以支持各个驱动程序,因此开发可以以不同的速度进行。我认为任何同时使用过数据库和 Perl 的人都可能欠 Tim 至少在酒吧度过一晚。

例如,您可以使用 DBI 连接到 MySQL,然后将后端更改为 Postgres,而无需更改代码。大多。您仍然可以执行特定于服务器的操作,但这些都是边缘情况。您可能必须更新或更改某些查询,但发送查询、接收结果和迭代结果的方式是相同的。

有了这个统一的界面,就可以做一些奇怪的事情,比如从 CSV 文件支持的“数据库”开始,然后在不更改代码的情况下更改为 SQLite,然后在不更改代码的情况下更改为 Postgres(所有这些都假设带有简单查询的简单模式)。这在今天看来并不神奇,但当 Tim Bunce 第一次发明 DBI 时,它就像巫师魔法一样。

以前,您可以根据要使用的数据库编译不同版本的 perl。像“oraperl”和“syperl”之类的东西已经存在——您可以针对那些特定的供应商库编译 perl,并且必须使用 oracle 或 sybase 库提供的接口。然后你就被锁定了。新的库版本?是时候重新编译 perl 了。

© www.soinside.com 2019 - 2024. All rights reserved.