기계덕후 안보

ODBC란? 본문

전기공부

ODBC란?

안보 2019. 6. 10. 09:45

   ODBC [open database connectivity]

   어떤 응용프로그램을 사용하는지에 관계없이, 데이터베이스를 자유롭게 사용하기 위하여

   만든 응용프로그램의 표준방법을 말한다.

 

  DBMS에 관계없이 어떤 응용 프로그램에서나 모두 접근하여 사용할 수 있도록 하기 위하여

  마이크로소프트에서 개발한 표준방법을 말하는데, 응용 프로그램과 DBMS 중간에 데이터베이스

  처리 프로그램을 두어 이를 가능하게 한다

 

 프로그램 내에 ODBC 문장을 사용하면 여러 종류의 데이터베이스를 액세스할 수 있다,

 프로그램들이 데이터베이스의 독점적인 인터페이스에 대해 알지 못하더라도,

 데이터베이스 접근이 가능하게 한다.

 SQL 요청을 받아서 그것을 개개의 데이터베이스 시스템들이 이해할 수 있도록 변환하기 때문이다.

 

 ODBC 구조

 각각의 데이터베이스들은 자신의 데이터 소스를 접근할 수 있도록

 ODBC규약에 맞는 드라이버를 제공한다. 이 드라이버가 시스템에 설치되면

 각각의 데이터베이스에 접근하기 위해 각 벤더들마다 상이한 인터페이스 대신

 표준화된 ODBC API 만 알고 있으면 데이터 소스를 쉽게 액세스 할 수 있게 된다.

 ODBC 드라이버 관리자(ODBC32.DLL)가 각 DBMS벤더들이 제공하는  드라이버와

 ODBC API를 연결해 주기 때문이다.

 

ODBC의 응용

 ODBC API를 통해 통신

ODBC는 데이터베이스에 접근하기 위한 표준 규격으로, 모든 DBMS에 접근하는 방법을 통일

이 규격에 따라서 DBMS는 자기네 Vender API에 접근하여 조종하는 "ODBC Driver"라는 것을 만들어 제공한다.

MySql ODBC Driver, Oracle ODBC Driver, MS-SQL ODBC Driver가 각각 다 있다 그 말.

(Excel ODBC Driver도 있음!)

 

ODBC !

 ODBC 규격        

MySQL ODBC Driver            

MySQL Vender API               

MySQL DBMS

Oracle ODBC Driver              

Oracle Vender API                

Oracle DBMS

 

 

특징 하나) DBMS 비종속적이다!

위에서 말했듯, ODBC는 "표준 규격"이다.

즉, ODBC는 모든 DBMS의 기능을 다룰 수 있어야 한다.

따라서 ODBC는 온갖 종류의 DBMS의 모든 기능들을 다 가지고 있다.

그래서 개발자는 ODBC API에 맞춰서 프로그램을 개발하고, 어떤 DBMS를 쓸지 결정만 하면된다. 

저 DBMS나 이 DBMS나 어차피 똑같은 코드를 사용하니까.

 

그.러.나 주의할 것은,

ODBC에 정의된 함수라고 해서 모든 DBMS에서 사용 가능한 것이 아니다.

 

즉, ODBC Driver라고 해서 ODBC API에 정의된 모든 기능이 있는 것이 아니다. 

ODBC Driver는 해당 DBMS가 지원 가능한 기능만 만들었기 때문이다.

 

그치만,

어쩌다가 MySQL에만 있는 기능을 썼는데 Oracle DBMS와 통신해야 한다면 그 부분만 조건문으로 처리해서  다른 방향으로 호출하면 될 것이다.

이전처럼 완전히 따로 작성하는 것보다 간단하다.

고객사 입장에서도 DBMS 선택에 있어서 이전보다 자유로울 수 있다. 

Oracle사를 썼다가 다른 DBMS로 갈아타기가 이전보다 수월해졌다는 얘기, 그들의 갑질에서 벗어날 수 있다는 말씀.

 

특징 둘) 속도가 느리다.

ODBC Driver를 이용하면 Vender API를 직접 사용하는것보다 느리다.

그러나 충분히 DBMS 비종속적이라는 것만으로도 큰 이점이 있다.

 

Comments