database.sarang.net
UserID
Passwd
Database
ㆍDBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DBMS Tutorials 98 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 98
ODBC 와 JDBC 를 이용한 데이터로의 접근 (II)
작성자
정재익(advance)
작성일
2001-11-28 16:25
조회수
7,432

Data Access Via ODBC and JDBC

 

ODBC

 

ODBC 는 data 로 접근하기 위해서 프로그램이 SQL 구문을 사용할수 있도록 해 주는 multidatabase API 이다. ODBC 를 기반으로 하는 프로그램은 소스코드를 수정하지 않고, 이종의 데이터베이스로 접근할수 있도록 해준다. 하나의 프로그램이 ODBC 인터페이스를 통하여 다른 밴더들의 데이터베이스의 내용을 저장하고 추출할수 있도록 해준다. 이리하여 ODBC 는 SQL 과 database content 를 데이터베이스에 중립적으로 전달할수 있도록 해준다. 그러나 여러분들은 접속하기를 원하는 DBMS 에 대한 각각의 ODBC driver 소프트웨어를 로딩해야만 한다는 것을 알아야 한다. 이전에 언급한 범용 데이터 접근 툴들 (generic data access tools) 과 비교해 보기 바란다.

 

ODBC Basics

 

Microsoft 는 1992년에 SAG (SQL Access Group, 현재는 X/Open 의 일부가 되어 있다) 의 CLI (Call Level Interface) 를 확장하여 ODBC 라는 것을 만들었다. 이것은 Borland's Integrated Database Application Programming Interface (IDAPI) 에서 받아 들여 졌다. ANSI 와 ISO (International Standard Organization) 는 CLI 의 갱신된 최신 버전을 SQL-92 표준의 일부로서 채용했으며, ODBC 3.0 역시 표준으로 지정했다. ODBC driver 는 응용프로그램이 데이터베이스로 접근할때 이용할 수 있는 많은 방법들을 제공해 주며, 이들 driver 들은 metadata (데이터베이스에서 테이블 이름, 컬럼이름, 컬럼 속성 들의 명세서, 그리고 자료를 다루는 다른 좀더 고급 정보들) 들을 추출하고 갱신할 수 있는 능력을 가진 툴을 제공해 준다. 그러나 그들은 특정 밴더들의 데이터베이스에 맞게 설계되어져 있기 때문에, 밴더들이 제공하는 그들만의 database access middleware drivers 를 이용한 응용프로그램과 toole 들이 데이터베이스 내에서 metadata 를 다루는데 훨씬 더 뛰어난 기능을 제공한다. ODBC 는 데이터베이스에 접속하는데 가장 일반적인 방법을 제공한다.

 

Data processing managers, system designers, 그리고 프로그래머 들이 ODBC 를 이용하는 것은 데이터베이스에 중립적이고, 다양한 플랫폼을 제공하고, 표준을 제공하기 때문이다. 몇몇 third party vendor 들 뿐만 아니라 데이테베이스 제품 밴더들은 데이터베이스와 다양한 운영체제상에서 이용가능한 ODBC middleware driver 를 팔던지 또는 제공한다. ODBC 는 오늘날 가장 흔하게 사용되는 database access middleware 이다.

 

 

ODBC as a Layer of Middleware

 

ODBC 는 클라이언트 측에서 데이터베이스로의 접속방법을 제공하며, 서버측에서 제공하는 방법은 아니다. 그리고 ODBC 는 기본적으로 밴더들의 독점적인 driver (오라클의 경우 SQL*Net) 를 기반으로 하고 있다. ODBC driver 는 ODBC call 을 밴더들이 제공하는 함수들의 호출로 변환한다. 결과적으로 넷트워크 관리자는 ODBC 드라이버 뿐만 아니라 밴더들이 제공하는 독점적인 드라이버도 설치해야만 한다. ODBC 호출과 서버로 부터의 반응 결과를 밴더들이 제공하는 특정적인 data access call 로 변환함으로서 발생하는 또다른 결과는 데이터베이스 서버로 오가는 ODBC 네트워크 메시지들을 해석 할 수 없다는 것이다. 만약 여러분들이 데이터베이스 서버 네트워크 트래픽을 분석하기 위해서 프로토콜을 사용한다면 여러분들은 밴더들이 제공하는 드라이버 메시지와 ODBC 네트워크 메시지를 구분할 수 없을 것이다.

 

미들웨어를 감싸는 추가적인 층으로서의 ODBC 추가는 강점과 약점을 동시에 가진다. ODBC 는 밴더들이 제공하는 미들웨어가 어떻 하던지간에 범용적이고 표준적인 인터페이스를 제공해 준다. 그러나 ODBC 는 메모리를 좀더 사용하며, 가장 일찍 구체화되어 나타나게 되며, 느낄수 있을 정도로 데이터 접근 속도를 느리게 한다. INTERSOLV, Visigenic Software 그리고 Information Builders 와 같은 회사들은 최근 들어 이전 버전들에 비해 상당한 성능 향상을 보이는 제품들을 선보이고 있으며, 거의 모든 주요 데이터베이스 제품들을 교차 지원하는 사양들을 선보이고 있다.

 

ODBC 의 네트워크 이용성은 ODBC 드라이버 자체 보다도 그 기저에 깔려 있는 오라클의 SQL*Net 와 같은 밴더들이 제공하는 미들웨어 층에 더 의존한다. 특히 오라클의 ODBC 아래에 있는 database access middleware 층은 네트워크 트래픽을 최소화시켜 준다. 반면 Microsoft 의 DB-Library 를 이용한 SQL 서버의 데이터베이스로의 접속은 상당히 다르다. NetBEUI 는상당히 "수다스러운" 프로토콜이며, IPX/SPX 비교적 덜하다. 그리고 TCP/IP 는 네트워크를 가장 검소하게 사용한다.

 

ODBC Conformance Level (ODBC 일치 레벨)

 

ODBC 표준안에는 ODBC 를 통하여 데이터베이스 서버로 전달되는 SQL 문장이나 또는 Programming interface 둘 다에 conformance level 이라는 것을 명시하고 있다. 이 레벨은 API 에 대해서는 0, 1, 2 이렇게 정의하고 있으며, SQL 문장에 대해서는 minimum, core, extended 이렇게 정의하고 있다. 기술적으로 API 에 대해서 level 2 를 그리고 SQL 문장에 대해서 extended-level SQL 을 지원하도록 만들어야 한다.

 

API 에서 ODBC conformance level 0 는 데이터베이스로 접속하고, SQL 구문을 실행하고, 자료를 뽑아내며, 트랜젝션을을 rolling 또는 committing 을 하는 등의 기본적이고, 기초적인 지원만을 한다. Level 1 은 추가적으로 결과 column 값의 전부 또는 일부로 접근할수 있도록 해 주며 (긴 자료에 유용하다 - 즉 대용량의 자료에서), driver 또는 database 의 능력에 관한 정보를 추출할수 있도록 해 주며, 그리고 metadata 를 취급할 수 있도록 해 준다. 마지막으로 Level 3 는 scroll 할수 있는 cursor, metadata 를 좀더 깊은 부분까지 접근할수 있도록 해 주며 (권한에 관한 정보까지 포함), 그리고 배열인자를 지원하여 ODBC 의 능력을 더욱더 향상시켰다.

 

SQL 문법 지원을 보면, minimum SQL conformance level 은 일반적이고 기본적인 DDL (Data Definition Language) 와 DML (Database Management Language) 을 지원한다. select, update, delete, insert, create table 그리고 drop table 등이 minimum SQL conformance level 의 예이다. core SQL conformance level 은 추가적으로 alter table, create index, drop index, create view, drop view, grant 그리고 revoke 등 DML 문장을 좀더 추가하였다. 그리고 decimal, numeric, smallint, integer, real, float, double precision 등 좀 더 다양한 자료형을 지원한다. minum SQL conformance 를 지원하는 driver 는 반드시 sum 과 min 과 같은 수식을 허용해야만 한다. extended SQL conformance level 은 outer join, positioned update, positioned delete, update 와 union 에서의 select 의 사용 등과 같은 좀더 심오한 DML 구문을 지원해야 한다. bit, tinyint, bigint, binary varbinary, long varbinary, date, time, timestamp 등과 같은 자료 형 뿐만 아니라 substring, abs, date, time, timestamp 같은 sccalar function 들을 지원해야 한다. Extended level driver 는 클라이언트 프로그램이 database 내부에서 stored procedure 를 실행할수 있도록 해야 한다.

 

ODBC's usefulness

 

ODBC driver 는 multiuser relational database 에 대한 접근을 제공할 뿐만 아니라, ODBC driver 는 Microsoft 의 Access 그리고 FoxPro, Borland 의 Paradox 그리고 다른 desktop PC data source 에도 존재한다. Lotus Notes 와 같은 많은 word processor 와 spreadsheets 가 ODBC 를 지원한다. 심지어는 일부 문서 관리 시스템들도 ODBC 인터페이스를 지원한다. 이러한 예들은 ODBC 가 client/server 응용 프로그램에서 보다도 더 많이 사용되는 예일 것이다.

 

전형적인 client/server 접근법에서는 프로그램과 파일 서버에 존재하는 데이터 파일, 그리고 관계형 데이터베이스로의 접근 등의 요소를 가지게 되며, 그리고 때로는 two-tier architecture 를 가지고도 한다. Presentation 그리고 Business logic 는 client 에서 일어나게 되고, 자료의 저장 (data storage) 은 database server 에서 일어나게 된다. 반면에 웹을 기반으로 하는 접근법에서는 presentation software (browser) 를 client 에 두게 되며, business logic 은 application server 에 그리고 data storage 는 여전히 server 에 두게 되는 three-tier architecture 를 가지게 된다. 모든 디자인이 특징적인 묘사처럼 단순하지 않으며, 여러분들은 client/server 와 web 기반의 접근법을 two-tier 와 three-tier 의 접근법으로 이해할 수 있다. Client/server application 은 종종 database connectivity 에 ODBC 에 의존적이 되기도 하며, 왜냐하면, 일차적으로 Visual Basic 와 Delphi 와 같은 개발환경이 사용하기 편한 programming template 를 제공하고 있으며, interface description 이 이해하기 편하기 때문이다. 만약 웹이 가능한 환경에서 appication server 에서 실행중인 컴퓨터 프로그램이 Visual Basic, Delphi 또는 다른 non-Java language 로 작성되어 졌다면, 그들은 그들의 database 로 접근하기 위해서 ODBC 를 사용할 것이다. 반면에 Java 로 작성된 Web 을 이용한 응용프로그램들은 거의 대부분 JDBC 를 이용하게 될것이다.

 

Configuring ODBC

 

응용프로그램 설계자와 프로그램머는 ODBC 의 단순한 인터페이스를 좋아한다. 그러나 이들의 아킬레스건은 설치와 설정이 너무 어렵다는 것이다. 비록 단일 client computer 에서 ODBC 를 통해서 데이터베이스로 접근하는 것은 그렇게 부담이 되지 않는다 - Microsoft 와 다른 밴더들이 자료설정을 위해서 일련의 그래픽환경을 제공해 준다. 그러나 많은 수의 클라이언트 컴퓨터를 모두 설정하는 것은 상당히 더딘 작업이 된다.

 

클라이언트 컴퓨터에 ODBC 를 설정하는 것은 두가지 방법이 존재한다. 먼저 Windows 3.1, Windows 95, Windows NT Workstation 등에서는 control panel 에 있는 ODBC 항목을 이용하는 것이다. 다른 방법은 INI 파일을 수정 (Windows 3.1) 하던지 또는 registry 파일을 직접적으로 수정 (Windows 95 와 NT) 하는 것이다.

 

일반적으로 사용하는 방식은 대부분 다음과 같은 단계를 따른다 : 관리자는 클라이언트와 특정 데이터베이스 서버로의 connection 에 대해서 이름을 부여한다. (이것을 DSN [Data Source Name] 이라고 한다) 그리고 데이터베이스 서버 컴퓨터와, 서버의 데이터베이스 를 확인하고, 데이터베이스 서버의 넷트워크 주소를 제공하며, 접속 계정 ID 와 패스워드 를 명시하여 데이터베이스 서버로의 접속에 필요한 인증을 하게 된다.

 

Windows 95 와 NT 의 registry 파일에서는 ODBC 설정에 관계되는 key 는 다음의 두가지와 비슷하게 보인다:

 

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources 
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\Pubs 

 

다음 예제는 Windows 3.1 에서 Microsoft Access data source 로 접근하기 위한 ODBC.INI 파일의 예를 설명한 것이다.

 

[ODBC Data Sources]
MS Access Databases=Access Data (*.mdb)
MS Access 2.0 Databases=Access 2.0 for MS Office (*.mdb)

[MS Access Databases]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
FileType=RedISAM
SingleUser=False
UseSystemDB=False

[MS Access 2.0 Databases]
Driver=C:\WINDOWS\SYSTEM\ODBCJT16.DLL
DBQ=FLDBEHAV.MDB
DefaultDir=F:\ACCESS
FIL=Microsoft Access
JetIniPath=MSACC20.INI
UID=Admin
[Top]
No.
제목
작성자
작성일
조회
108SQL 함수의 모든 것 - aggregate function
정재익
2001-12-03
11389
107ODBC 와 JDBC 를 이용한 데이터로의 접근 (IV)
정재익
2001-12-02
4798
104ODBC 와 JDBC 를 이용한 데이터로의 접근 (III)
정재익
2001-12-01
6592
98ODBC 와 JDBC 를 이용한 데이터로의 접근 (II)
정재익
2001-11-28
7432
86Modeling, Metadata, and XML (영문)
정재익
2001-11-19
4007
58ODBC 와 JDBC 를 이용한 데이터로의 접근 (I)
정재익
2001-11-04
6640
56Data Access Via ODBC and JDBC - 영문원본
정재익
2001-11-04
4876
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다