2009-12-24 57 views

Trả lời

19

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.

9

DBI là giao diện. DBD là các triển khai của giao diện đó.

+0

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

14

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 driverOracle 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.

1

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); 
4

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.)

+0

+1 cho định nghĩa ngắn gọn. – Axeman

Các vấn đề liên quan