간단하게 말하자면 아래 그림처럼
DBI는 DB interface이고
DBD는 DB driver입니다.
DBD로 각각의 DB종류에 따라 연결 드라이브를 작성하고
DBI는 그 위에서 동일한 인터페이스를 통해 DB에 접근하도록
추상화해주는 계층으로 보시면 됩니다.
PHP의 경우 DB에 따라 DB접속 함수가 mysql 이면 mysql_connect
Oracle이면 oci_connect등 처럼 DBI같은 추상화 계층 없이 구조적으로
중구난방인데 반해 Perl은 DB접근계층을 처음부터 체계적으로 설계했습니다.
따라서 경우에 따라 DB driver만 다르게 지정하면 DBI->connect라는 동일한
인터페이스를 통해 DB에 접속가능합니다.
그래서 Perl DBI를 모델로 삼아 Python의 DB Api나 Ruby의 DBI도 개발이
시작됐고 그 완성도를 높혀가고 있죠..
여기를 참고하세요.
기본에 충실해서 해당 모듈 문서를 보면 자세한 설명과 예제가 있습니다.
DBI
http://search.cpan.org/perldoc?DBI
DBD::mysql
http://search.cpan.org/perldoc?DBD::mysql
간단하게 말하자면 아래 그림처럼

DBI는 DB interface이고
DBD는 DB driver입니다.
DBD로 각각의 DB종류에 따라 연결 드라이브를 작성하고
DBI는 그 위에서 동일한 인터페이스를 통해 DB에 접근하도록
추상화해주는 계층으로 보시면 됩니다.
PHP의 경우 DB에 따라 DB접속 함수가 mysql 이면 mysql_connect
Oracle이면 oci_connect등 처럼 DBI같은 추상화 계층 없이 구조적으로
중구난방인데 반해 Perl은 DB접근계층을 처음부터 체계적으로 설계했습니다.
따라서 경우에 따라 DB driver만 다르게 지정하면 DBI->connect라는 동일한
인터페이스를 통해 DB에 접속가능합니다.
그래서 Perl DBI를 모델로 삼아 Python의 DB Api나 Ruby의 DBI도 개발이
시작됐고 그 완성도를 높혀가고 있죠..
댓글 달기