Ai đó có thể làm sáng tỏ một số chính xác về DBI và DBD không? Khi nào thì nên sử dụng một và lợi ích của việc sử dụng cái này đến cái kia.Sự khác biệt giữa DBI và DBD là gì?
Trả lời
DBI là thư viện truy cập cơ sở dữ liệu, trong khi DBD là "trình điều khiển" được DBI sử dụng để truy cập cơ sở dữ liệu cụ thể (ví dụ: có một DBD cho MySQL, một DBD khác cho PostgreSQL, v.v.). Bạn nên sử dụng DBI thay vì trực tiếp DBD.
DBI là giao diện. DBD là các triển khai của giao diện đó.
Từ DBI docs:
|<- Scope of DBI ->|
.-. .--------------. .-------------.
.-------. | |---| XYZ Driver |---| XYZ Engine |
| Perl | | | `--------------' `-------------'
| script| |A| |D| .--------------. .-------------.
| using |--|P|--|B|---|Oracle Driver |---|Oracle Engine|
| DBI | |I| |I| `--------------' `-------------'
| API | | |...
|methods| | |... Other drivers
`-------' | |...
`-'
Các hộp có nhãn XYZ driver
và Oracle driver
là DBD mô-đun.
Vì vậy, mã của bạn trao đổi với DBI. DBI nói chuyện với mô-đun DBD thích hợp cho cơ sở dữ liệu của bạn. Mô-đun DBD nói chuyện với cơ sở dữ liệu của bạn. Điều này dẫn đến một giao diện duy nhất, nhất quán cho các cơ sở dữ liệu khác nhau.
Sử dụng chúng cùng nhau. Ví dụ, với MySQL:
use DBI;
$dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
$dbh = DBI->connect($dsn, $user, $password);
$sth = $dbh->prepare("SELECT * FROM foo WHERE bla");
$sth->execute;
Nếu thay vào đó bạn đang nói chuyện với một cơ sở dữ liệu Oracle, bạn có thể nhận được ngay với chỉ thay đổi $data_source
lập luận để DBI::connect
:
$dbh = DBI->connect("dbi:Oracle:host=$host;sid=$sid", $user, $password);
DBI là viết tắt của giao diện cơ sở dữ liệu. DBD là viết tắt của trình điều khiển cơ sở dữ liệu.
Là một lập trình viên, bạn nên luôn sử dụng giao diện (DBI). Giao diện, lần lượt, sử dụng trình điều khiển. Lý do để sử dụng DBI thay vì sử dụng DBD trực tiếp là nó cung cấp một lớp trừu tượng nhất quán để làm việc với các cơ sở dữ liệu. Có many DBD modules nhưng bạn chỉ cần tìm hiểu một giao diện. Ngoài ra, điều này làm cho nó tương đối dễ dàng để thay đổi cơ sở dữ liệu ứng dụng của bạn sử dụng bằng cách thay đổi trình điều khiển. Giao diện là như nhau. (Cú pháp truy vấn có thể hơi khác một chút.)
+1 cho định nghĩa ngắn gọn. – Axeman
Sắp xếp. Nó giống DBI hơn là giao diện bên ngoài và DBD là giao diện nội bộ. DBD không biết về DBI (theo lý thuyết), và người dùng DBI không biết về DBD. – jrockway