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 104 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 104
ODBC 와 JDBC 를 이용한 데이터로의 접근 (III)
작성자
정재익(advance)
작성일
2001-12-01 22:20
조회수
6,592

Data Access Via ODBC and JDBC

 

JDBC

 

JDBC 는 Java 프로그램에서 call-level SQL API 를 제공하기 위한 database access middleware driver 들의 집합을 말한다. Java applets 와 응용프로그램들은 데이터베이스로 연결하고, 데이터베이스 내용을 저장하고 추출하고, 그리고 sotred procedures 를 실행하기 위해서 dirver 의 API 를 이용할수 있다. 그리하여 JDBC 를 Java 환경에서 SQL 을 위한 전달 메커니즘으로 만들수 있다. Java 프로그램에서 JDBC 라는 Java 이외의 언어에서 ODBC 로 생각할수 잇다. 사실 JDBC 의 기본적인 구성은 ODBC 에 그 기반을 두고 있다.

 

Sun Microsystems 에서 Java 프로그램에서 SQL 문장을 사용할수 있도록 하기 위해서 개발된 JDBC 는 초기에는 Java 프로그램을 로딩할때 분리된 class 로 구성되어 있었다. 개발자에게 이들 class 는 프로그램머나 응용프로그램 디자이너 들을 위해 database 접속 과정을 추상화시키는 역할을 했다. 1996년 말에 Sun 은 JDK ver 1.1 (Java Developer's Kit)을 출시했다. 그리고 이 최후의 JDK 에는 JDBC 를 core function 으로서 포함시켰었다. (분리된 형태가 아닌) Microsoft 와 Netscape 의 최신 브라우즈는 JDK 1.1 표준을 채용하고 있다.

 

Sun Microsystems 는 Java 프로그램에서 SQL API 를 사용하도록 하는 역할 외에 몇가지 추가적인 목적을 가지고 있다. Sun 은 JDBC 가 SQL 표준에 일치하고 범용 데이터베이스 인터페이스를 통해서 작업이 가능하며, 그리하여 사용하기 쉽고, 속도가 빠른 인터페이스가 되길 원했다.

 

ODBC 와 JDBC 둘다 데이터베이스로 명명된 접속 (named connection) 을 가능하게 하귀 위해서 DSN 이라는 개념에 의존하고 있다. JDBC 는 connection 의 형식을 추가적으로 dirver, host, port 번호 그리고 DSN을 포함하는 URL 의 개념을 사용해서 표시한다. 다음은 응용프로그램이 데이터베이스로 접속하기 위해서 사용하는 URL 의 예제이다. 호스트가 JDBC driver 를 client 로 보낸다는 것에 주의하기 바란다. 관리자는 JDBC 접속을 위해서 개별적으로 client 에 JDBC 를 설정할 필요가 없다. 필요한 것은 오로지 Java 가 가능한 browser 뿐이다.

 

jdbc:openlink://jupiter:5000/DSN=Accounts

 

JDBC Driver Types

 

JDBC 표준은 네가지의 driver type 을 명시하고 있다. 이들 driver 들은 데이터베이스 서버와 통신하기 위해서 사용하는 프로토콜 뿐만 아니라 각각 얼마나 많은 Java code 를 얼마나 많이 포함하는가에 차이가 있다. 여러분들이 JDBC driver type 에 관해서 배우고자 한다면, Java 의 규칙중의 하나를 명심해야 한다 : Java security 는 브라우저 환경의 Java 프로그램 (Applet) 에서 native-code software 를 실행하는 것을 금지한다는 것이다. 이것은 다른 것들 중에서도, Java applets 는 반드시 DLL (Dynamic Link Libraries) 의 사용과 다른 local native code 로의 접근을 금지한다는 것이다. Applets 는 ODBC 나 다른 밴더들의 interface 를 직접적으로 기동시킬수 없다. 그들은 데이터베이스로 접근하기 위해서 반드시 JDBC 를 사용해야 한다.

 

Driver type 1 은 JDBC-ODBC bridge 이다. 이는 ODBC driver 를 통해서 JDBC 접속을 제공하는 것이다. ODBC 프로그램 코드 와 데이터베이스-특이적인 클라이언트 코드는 반드시 JDBC-ODBC bridge 를 사용하고자하는 client machine 에서 로드시켜야만 한다. Sun 은 driver type 은 소프트웨어 밴더들이 다른 세가지 type 의 driver 를 개발할때까지 사용할 편의성의 목적으로 driver type 1 을 정의했다는 것에 유의하기 바란다. 이것은 관리자들이 각각의 client machine 상에 ODBC 드라이브를 설치하고 설정해 주어야 한다.

 

Driver type 2 는 부분적으로 Java 를 쓰여진 것이며, Java 프로그램이 밴더들이 제공하는 database access middleware (예를 들면 Oracle SQL*Net 나 또는 Sybase Open Client)로 접속하기 위한 인터페이스로 구성되어 있다. Type 2 JDBC 드라이버들은 전형적으로 데이터베이스 제품들의 독점적인 call-level API (예를 들면 Oracle OCI)로 직접적인 가교 (bridge) 역할을 한다. 이것은 ODBC 를 설치할 필요는 없다. 그러나 이것은 관리자가 데이터베이스 밴더들이 제공하는 독점적인 database access middleware 를 설치하고 설정해야 한다.

 

Driver type 3 는 클라이언트에서 JDBC call 을 데이터베이스에 의존하지 않는 넷트워크 프로토콜 (database-independent network protocol)로 전환시켜 주는 순수한 Java driver 이다. 서버에서 독립된 driver component 가 database-independent JDBC 요구를 database-specific native call 로 전환시켜 준다. Type 3 driver 는 자바 기반의 클라이언트가 서버측에 개발된 드라이버에 상관없이 어떤 형식의 데이터베이스로던지 접속할수 있도록 만들어 준다. Type 3 driver 는 클라이언트에서 기본적인 넷트워크 접속을 필요로 한다는 것을 알기 바란다. (TCP/IP protocol stack) 그러나 밴더들이 제공하는 독점적인 middleware 나 ODBC 를 필요로 하지는 않는다. Type 3 driver 는 firewall 을 포함하여 다양한 넷트워크 환경에서 동작할수 있도록 충분히 고려해 주는 것이 필요가 있다. Type 3 driver 를 사용하는 Java 프로그램은 Java 가 가능한 어떻한 플랫폼에서도 TCP/IP 를 통해 데이터베이스 서버로 접속가능해야 하므로 아주 범용적이어야 한다. 이러한 장점들 중에서, type 3 driver 는 인터넷상에서 사용하기 아주 적합하게 되어 있다는 것이다.

 

Driver type 4 는 JDBC 요구를 특정 데이터베이스 밴더들의 넷트워크 프로토콜로 변환해 주는 순수한 Java driver 이다. 이렇게 해서 Java client 에서 밴더들의 데이터베이스 제품으로 접속할수 있도록 허용해 준다. Type 4 driver 는 Internet 에서 사용하기 보다는 Intranet 에서 사용하기에 더 적합하다. 왜냐하면 이것은 database 밴더들의 독점적인 데이터베이스 접속 프로토콜에 의존적이기 때문이다. Type 4 driver 는 third party 업체 보다는 데이터베이스 밴더들에 의해서 발표되는 경우가 더 많다.

 

JDBC Performance

 

우아하고 유용한 언어인 Java 는 몇가지 장점을 가진다 : 이동성 (portability), 보다 적은 프로그램머의 에러 (less likelihood of programmer errors), 객체의 재사용성 (reusability of object) 그리고 인터넷/인트라넷 기술의 집적 (Integration of Intranet/Internet technology). 그러나 Java 는 인터프리터 언어이다. 즉 여러분들은 컴퓨터 프로그램을 실행시켜야만 한다. (Java Virtual Machine 또는 browser) 다시 말하면 Java 프로그램 내에서 명령을 실행해야 한다. 순수하게 Java 로 작성된 또는 부분적으로 Java로 작성된 JDBC driver 는 여러분들이 원하는 것 보다 느리게 동작할 수 있다. JIT (Just-In-Time) compilers, Java run-time optimization 그리고 심지어는 Java-specific CPU chip 들이 이러한 문제점을 해결하는 방법들이다. Java 의 퍼포먼스는 시간이 지날수록 좋아지고 있다. 그리고 현재 관심사는 보다 나은 사용자 인터페이스를 제공하는 것이다. Java Virtual Machine 이 실행중인 컴퓨터는 자료를 입력하는 것이 키보드를 이용하는 것 보다 몇배 더 빠르다. 그럼에도 불고하고, Java 로 작성된 driver 인 JDBC performance 는 문제가 되고 있다.

 

JDBC 를 기반으로 한 applet 를 먼저 실행할때, JDBC class 와 driver 는 웹서버로 부터 downlink 된다. 완전한 Java 응용프로그램은 applet 보다 좀더 넓은 범위의 native code 를 사용할수 있다. Applet 에서는 class file 의 크기, JDBC driver manager 그리고 JDBC driver 등이 로디시에 퍼포먼스에 영향을 미친다.

 

JDBC 는 Java run-time environment 에다가 class file, driver manager, JDBC driver 자체 등 많은 수의 모듈들을 추가해야 한다. 만약 여러분들이 JDBC-to-ODBC birdge 를 사용하고자 한다면, ODBC driver ㄴ느 또다른 층을 구성한다. Code 의 extra layer 는 부가적인 처리를 해야 하며, 보다 긴 초기화 시간을 요구한다. 여러분들은 applet (또는 응용프로그램) 에서 순수하게 Java 로 작성된 JDBC driver 를 통하여 database 로 직접 접속하고자 할때 데이터베이스 서버 뿐만 아니라 웹서버도 선택해야 한다. 대안으로 분리된 데이터베이스 서버로 컴퓨터로 proxy connection 하도록 웹서버를 설정할수 있다. 이 방법은 프랫폼의 선택에서 좀더 여유를 줄것이다.

 

Problems with JDBC

 

Database 와 드라이버 밴더들은 JDBC를 실제로 사용하기 전에 성능을 어느정도 향상시킬 필요성이 있다. 일차적으로 향상시켜야 할 것은 scrollable cursor 이다. 현재 여러분들은 일련의 table row 를 forward direction으로만 fetch 할수 있다. 그러나 여러분들이 이전에 fetch 한 row 의 backward 로 fetch 할수는 없다. 이들 row 를 reload 하기 위해서 program code 뿐만이 아니라 많은 시간을 들여서 query 를 다시 실행하던지 해야 한다.

 

JDBC driver 는 단일 메시지의 결과로 돌아오는 multiple row 들을 deblocking 시킬수 있어야 한다. 한번의 query 의 결과로 한 테이블로 부터 돌아오는 결과 set 이 20 rows 라고 가정해 보자. 각각의 row 를 한번에 한개씩 보낸다면 처리가 대단히 느릴 것이다. 데이터베이스는 한번의 반응에 여러개의 row 를 보낼수 있다. 그리고 JDBC driver 는 이들 반응을 deblocking 에 의해서 응용프로그램으로 다음 row 를 전달할수 있다.

 

Summary

 

NETWORK COMPUTING's Network Design Manual 의 이번장에서 우리는 일반적인 database access middleware 특히 ODBC 와 JDBC 에 대해서 알아 보았다. 우리는 왜 ODBC 와 JDBC 가 중요한가에 대해서 설명했으며, 이들 interface 가 어떻게 동작하는 가 하는 것, 그리고 어떻게 ODBC 와 JDBC 를 가장 잘 사용할수 있는 가 하는 것을 설명했다.


[Top]
No.
제목
작성자
작성일
조회
132연관 규칙과 의사결정트리를 이용한 패턴 탐사
정재익
2001-12-06
5647
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
7429
86Modeling, Metadata, and XML (영문)
정재익
2001-11-19
4007
58ODBC 와 JDBC 를 이용한 데이터로의 접근 (I)
정재익
2001-11-04
6637
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다