2007. 11. 20. 17:17
:::  개 요 :::
장은 Win32 Assembly로 작성해보는 데이터베이스 프로그래밍의 5개장의 첫부분이다.
현재에는 데이터베이스 프로그래밍이 필수적인 부분으로 자리매김했다.
그래서, 어셈블리로 못할것도 없고, 반드시 내용을 알아야하는 것이다. 물론 상용의
데이터베이스 라이브러리들이 많이 존재하지만, 원리와 여러가지 자신만의 루틴으로
더 빠르고 작은 자신만의 라이브러리를 구축할 수 있도록 개념적인 부분으로
접근해보도록 하겠다.  데이터베이스 와 프로그램을 작성하는데에는 수많은 기법과
이론이 등장한다. 하지만 이러한 배경의 가장 밑부분에서 작동되는 것이 바로
ODBC(Open DataBase Connectivity)이다.  본 파트에서는 바로 ODBC에 대해서 연결하는
것과 기본 개념에 대해서 설명하도록 하겠다. ADO / DAO / BDE / OLEDB등 데이터베이스
툴은 ODBC의 장단점을 수정해서 사용하기 편하도록 변경한 것이다.

또한, 가장 중요한것은 DBMS의 성능이지 그것에 대하여 연결과 명령수행을 하는
프로그래밍은 크게 중요하지 않으므로, 실전에서는 델파이와 파워빌더 VC등을
이용해서 작업하는 것이다. 하지만 근본을 알아두면 여러모로 편리할 것이고,
이전 장에서 설명한 임포트라이브러리 형태로 가져와서 사용하고 자신만의 루틴을
넣어서 사용하게 되면, DevX환경에서도 고급툴이상의 편리함을 가질 수 있고,
이러한 능력은 여러분의 고유한 능력에 달렸다.



::: ODBC :::
ODBC는 마이크로소프트에서 발생한 기술이다. 쉽게 장치관리자의 역활과 동일하다.
예를 들어서, 운영체제에서는 단지 VGA카드를 작동하는 코드만 작성하면 실제
화면에 드로잉하거나 렌더링하는 작업은 VGA드라이버가 하게 된다. 사용자는
단지, 자신에 맞는 드라이버만 설치해주면 끝이나고, 드라이버가 변경되면 단지
드라이버만 맞게 변경해주면 모든게 원활히 작동하는 원리를 데이터베이스에도
적용한 것이다.
여기서, 장치관리자 역활을 하는것이 제어판의 "데이터원본"부분이고, 실제 드라이
이버는 데이터원본 부분에 나오는 드라이버 부분인 것이다.

실제 ODBC에서는 크게 4단계로 작동된다.   환경 -> 연결 -> 명령 -> 설명자  인것이다.
각각, 컨트롤할 핸들이 필요할 것이고, 여지없이 SQL~로 시작하는 함수이다.
대략 4-50여개가 존재하지만 실제 사용하는것은 10개 내외이다. 단지 개념만 파악하고
환경설정만 신경써주면 된다.

ODBC APi들을 이용해서 프로그래밍하는데 이제껏 사용했던 Win32API와 같다.
단지 데이터베이스에 내려질 명령으로 구성되었다고 보면된다. 같은 API명령으로
여러가지 데이터베이스에 소스변경없이 접근해서 명령을 수행할 수 있는것이
바로 ODBC의 목표이다. DBMS가 바뀌면 변경된 드라이버만 설정해주면된다.

::: ODBC의 작동방식 :::
이제 실제 ODBC는 어떻게 작동하는지에 대하여 알아보도록 하자. 상기에서도 설명
했듯이, ODBC는 크게 4부분으로 구성되어있다. 자주사용하는것은 실제 3가지므로
크게 긴장하지 말고 부담없이 보기 바란다. 다시한번, ODBC프로그래밍은 단지
연결해서 명령내리는 부분이고 실제적인 처리는 DataBase에서 처리해서 결과를
넘겨준다는 것이다. 심오한 것은 없다. 단지 에러발생처리에만 신경써주면 된다.
이런 패러다임은 윈도우소켓 프로그래밍에서도 같다. 이미 OS가 모든 처리를 다
해주고 단지 프로그래머는 가져다 쓰면 되는 것이다.
이제, ODBC를 이루는 구성요소에 대하여 알아보자.

  • Application (프로그램)
  • ODBC manager
  • ODBC Drivers
  • Data Sources (데이터베이스)

개략적인 부분은 설명했으므로, 가장중요한 ODBC 매니져에 대해서만 알아보자.
가장 중요하고 실제 프로그래밍이 이루어지는 부분이다.
더 간단한 예를 들자.  고급레스토랑에 갔다고 가정하자. 그곳이 어떻게 움직이는지는
업체마다 다를것이다. 하지만, 방문시 홀입구에서는 홀매니져가 반겨줄 것이고,
간단한 질문을 한뒤 자리를 배정하고, 주문을 하면 요리가 나오게 된다.
손님은 단지 매니져와만 얘기하면 되는 것이다. 실제 요리를 어떻게 할지는 요리사가
알아서 할 것이다. (ODBC Driver)  이러한 기본기를 바탕으로 고급일식집이든 어디를
가도 같은 방식일 것이다. 각 각 마다 고유한 특징이 있기도 하지만 그부분은 별도로
최적화 시켜주면 되는 것이다.  원리에 대해서는 이제 더 설명하지 않아도 알것이다.

요약하면, 명령을 직접 ODBC Driver에게 내리는 경우는 없다. ODBC Manager에게 명령을
내리는 것이다. ODBC Manager는 명령을 분석하고 준비해서 실제 ODBC Driver에게 명령을
수행하도록 하고, 만약 결과가 있다면 넘겨주는 방식이다. DataBase제작사에서 바로
이러한 드라이버를 제공해주는 것이다. "데이터원본" 에서 "드라이버" 부분을
보면 기본적으로 제공한 ODBC드라이버들이 존재할 것이다. 여기서나타나지 않는
부분은 당연히 연결하지 못한다. 하지만 해당 제작사에서 제공하는 드라이버만 설치
해주면 프로그램을 그대로 사용할 수있다.  ODBC의 Open의 의미가 바로 이것이다.

프로그램 <----> ODBC 매니져<----> ODBC 드라이버 <----> 데이터베이스

상기와 같은 구조이며, 이중 가장중요한 ODBC매니져는 마이크로소프트에서 제공했다.

사용자 삽입 이미지
상기화면이 바로 ODBC 매니져이고 보이는 탭이 실제명령을 처리하는 드라이버들이다.


::: ODBC 프로그래밍 순서 :::
ODBC API들은 간단히 사용할 수있다. 문제가 되는것은 API들이 아니라 실제 데이터
베이스에게 명령을 수행하는 SQL문과 데이터베이스 용어들일 것이다. API들은 단지
접속할 환경을 마련해주고, 명령을 전달하고, 결과를 어떻게 처리할지만 다루는것이다.

만약, 필드, 프라이머리키, 레코드, 컬럼, 행등을 처음 들어보았다면, 공부하고 진행
하기 바란다. 본 가이드는 DevX에서 ODBC 프로그래밍을 하는방법을 설명한다.
당연히, 자세한 사항은 MSDN등을 참조하기 바란다.

프로그래밍에 들어가기전에 몇가지에 대해서 미리 알아두기 바란다.
바로 환경 / 연결 / 명령 의 세가지에 대한 설명이다. 본 가이드의 핵심이다.

  • 환경(Environment)
     데이터에 접근하기 위한 전역적인 설정을 다루는 부분이다. ODBC작업을 수행
     하기전에 반드시 환경을 설정해야 한다. 이것은 작업장을 갖추는것과 같다.
  • 연결(Connection)
    데이터베이스의 원하는 데이터에 연결하기 위한 설정을 다루는 부분이다.
    동일한 환경에서 다른 여러가지 연결을 생성할 수도 있다.
  • 명령(Statement)
     ODBC는 SQL문을 사용한다. 명령 부분은 바로 이러한 SQL문을 수행한다.

크게 ODBC의 프로그래밍은 다음과 같은 4단계로 진행하게 된다.

  1. 데이터소스 연결
  2. SQL문을 생성해서 실행
  3. 만약 Select문과 같이 결과값을 반환할 경우 처리
  4. 데이터소스 연결해제

다음 파트부터 각부분에 대하여 배우게 될 것이다.

Posted by openserver