티스토리 뷰
요즘 Apache 프로젝트 중 DBMS 개발 프로젝트인 Derby에 대해 살펴보고 있다. Derby는 IBM의 Cloudscape DB의 오픈소스 버전이다. 실제로는 Derby와 Cloudscape는 같은 소스를 사용하고 있으며 매뉴얼도 동일하다. 차이점은 매뉴얼에 Derby라는 단어가 Cloudscape로 바뀌었을 뿐이다.
오라클과 같은 우리가 흔히 사용하는 DBMS의 경우 DB 서버를 구동시키고, 클라이언트는 SQL*Net과 같은 DBMS에 제공하는 네트워크(TCP/IP)기반의 도구를 이용하여 DB 서버에 접근하는 방법이다. Derby의 경우 이런 방식도 지원하지만 Embeded 모드도 지원한다.
- Network Server 또는 Client/Server 방식 : Oracle과 같이 네트워크 기반의 DBMS 서버 방식.
- Embeded 방식 : 데이터베이스를 사용하는 Application에 포함되어 해당 Application과 동일한 JVM에서 수행되는 방식이다. 이런 방식은 웹 애플리케이션 보다는 범용 애플리케이션(예를 들면 서브버전과 같은 형상관리 도구 또는 PC에 설치되는 비디오 대여점 관리 애플리케이션 등)에서 데이터 관리가 필요한 경우 사용될 수 있다. Embeded 방식의 경우 동시에 여러 Connection을 설정할 수 없다.
이 두가지 방식에 따라 클라이언트가 사용하는 JDBC 드라이버도 다르게 설정해야 한다. Network Server 방식의 경우 "org.apache.derby.jdbc.ClientDriver"를 Embeded 방식의 경우 "org.apache.derby.jdbc.EmbeddedDriver"를 사용한다.
Network Server 방식도 엄밀히 말하면 Embeded 방식이라고 할 수 있는데 이것은 org.apache.derby.drda.NetworkServerControl 이라는 Java Application을 만들어 여기에서 네트워크로부터 전송된 클라이언트의 요청을 처리하도록 구현되어 있다.
결과적으로 Derby는 기본적으로 DBMS에서 핵심이라고 할 수 있는 데이터 저장을 위한 파일 구조와 SQL 처리를 core로 구성한 후 이것을 필요에 따라서 쉽게 변경하여 사용할 수 있도록 구현되어 있는 것이다.
그렇다고 Network Server 방식이 기능적으로 떨어지지는 않는다. 4가지 모드의 Transaction Isolation Level을 지원하여 commit; rollback; 처리를 할 수 있다. 다만 조금 부족한 것은 오라클과 같은 상용 DBMS에서 제공하는 GUI 환경의 뛰어난 관리도구와 DBMS의 메타데이터를 관리하는 능력에서는 현저하게 떨어진다고 할 수 있다.
어제부터 설치와 관련된 주요 이슈는 다음과 같다.
1.환경 설정
derby의 경우 jdk1.4와 1.3으로 개발되었다. 소스내에 보면 enum을 변수로 사용하고 있는데 jdk1.5에서는 enum은 예약어라 변수명으로 사용할 수 없다. 따라서 jdk를 1.4로 사용할 것을 추천한다.
set path=C:j2sdk1.4.2_07?in;C:db-derby-10.1.3.1-binframeworksNetworkServer?in;%PATH%
set CLASSPATH=C:db-derby-10.1.3.1-binlibderbyclient.jar;
C:db-derby-10.1.3.1-binlibderby.jar;
C:db-derby-10.1.3.1-binlibderbynet.jar;
C:db-derby-10.1.3.1-binlibderbytools.jar;
C:db-derby-10.1.3.1-bin;%CLASSPATH%
set JAVA_HOME=C:j2sdk1.4.2_07
2. Network Server 시작
- java org.apache.derby.drda.NetworkServerControl start
- Network Server와 관련된 모든 내용은 NetworkServerControl 클래스를 이용한다.
위 화면은 아무런 옵션을 주지 않고 실행한 화면이다. 사용 가능한 옵션에 대한 정보를 보여준다. 서버를 종료하기 위해서는 shutdown 옵션을 사용한다.
-p 옵션은 DBMS 서버의 리스너 port를 지정하는데 사용한다. 기본 port는 1527 이다.
3. ij를 이용하여 서버 접속 테스트
Derby는 자체에 몇가지 도구를 제공하고 있는데 ij는 오라클의 SQL*PLUS에 해당하는 도구이다. 이 도구를 이용하여 DB에 접속하고 테이블 생성, SQL문 실행 등의 작업을 할 수 있다.
실행은 1번에서의 환경설정을 동일하게 한 후 ij.bat라고 치면 된다(Linux의 경우 ij.ksh)
DB에 연결하기 위해서는 먼저 DB를 생성해야 하는데 create database와 같은 명령은 존재하지 않고 connect할 때 없으면 만들도록 하는 옵션을 이용한다.
connect 'jdbc:derby://localhost:1527/testdb;create=true';
위의 connection 명령은 "testdb"라는 이름을 가진 database로 접속을 하는데 없는 경우 만들어라는 명령이다. testdb의 실제 저장 파일은 Derby 설치 디렉토리 하단에 생성된다. 별도의 디렉토리를 설정하고 싶은 경우 connection url을 다음과 같이 하면 된다.
jdbc:derby://localhost:1527/c:/my-db-dir/testdb;create=true
오라클의 desc와 같이 테이블 정보를 보는 기능을 제공하지 않는다. 이것은 Eclipse Database Plugin을 이용하거나 별도의 도구를 이용하는 방법밖에 없다.
ij에서 사용 가능한 명령어는 help; 를 치면 나타난다.
4. 사용자 설정
3번까지의 경우에는 연결할 때 별도의 사용자 인증 절차없이 로그인 하였다. DBMS 서버의 경우 데이터를 관리하고 있기 때문에 보안 관련하여 아주 민감한 서버라 할 수 있다. 따라서 반드시 DBMS에 접속하기 위해서는 사용자 인증을 받도록 해야 한다.
아직 이 부분에 대해서 좀 더 확인해야 하지만 현재까지 파악된 내용은 사용자 설정과 관련하여 몇가지 옵션을 제공하고 있으며 Property, OS, LDAP 사용자 등을 이용하는 방법이 있다.
여기서는 Property를 이용하여 설정하는 방법에 대해 설명한다.
먼저 derby.properties 파일을 Derby home에 만든다. 앞의 환경설정에서 Derby home 디렉토리 자체를 CLASSPATH 상에 두었는데 이 properties 파일을 인식하게 하기 위해서 였다.
derby.properties에서는 port와 같은 기본적인 설정뿐만 아니라 max thread 수와 같은 성능 관련된 내용도 설정할 수 있다.
derby.connection.requireAuthentication=true
derby.authentication.provider=BUILTIN
derby.user.dbuser=123456
위와 같이 설정하여 사용자 인증을 사용하도록 하고 인증 방법은 "BUILTIN"을 이용하고 사용자 ID는 "dbuser", 패스워드는 "123456"을 사용하도록 지정한 후 Derby Server를 다시 실행한다.
사용자 설정이 된 후 DB에 접속 하기 위해서는 다음과 같이 id, pwd를 준다.
jdbc:derby://localhost:1527/testdb;create=true;user=dbuser;password=123456
5. 원격 client에서 접속 가능하도록 설정
다른 장비 또는 PC에서 DB 서버에 접속하도록 하기 위해서는 host 설정을 반드시 해주어야 한다. host 설정은 DB Server 시작시 -h 옵션을 이용할 수고 있고, properties 파일에서 다음을 추가할 수 있다.
derby.drda.host=hostName
hostname이 없는 경우 ip를 주면 된다. 이렇게 구성한 다음에 서버에 접속할 때에는 반드시 여기서 설정된 hostname을 이용하여 접속해야 한다.
출처 : http://www.jaso.co.kr/91
오라클과 같은 우리가 흔히 사용하는 DBMS의 경우 DB 서버를 구동시키고, 클라이언트는 SQL*Net과 같은 DBMS에 제공하는 네트워크(TCP/IP)기반의 도구를 이용하여 DB 서버에 접근하는 방법이다. Derby의 경우 이런 방식도 지원하지만 Embeded 모드도 지원한다.
- Network Server 또는 Client/Server 방식 : Oracle과 같이 네트워크 기반의 DBMS 서버 방식.
- Embeded 방식 : 데이터베이스를 사용하는 Application에 포함되어 해당 Application과 동일한 JVM에서 수행되는 방식이다. 이런 방식은 웹 애플리케이션 보다는 범용 애플리케이션(예를 들면 서브버전과 같은 형상관리 도구 또는 PC에 설치되는 비디오 대여점 관리 애플리케이션 등)에서 데이터 관리가 필요한 경우 사용될 수 있다. Embeded 방식의 경우 동시에 여러 Connection을 설정할 수 없다.
이 두가지 방식에 따라 클라이언트가 사용하는 JDBC 드라이버도 다르게 설정해야 한다. Network Server 방식의 경우 "org.apache.derby.jdbc.ClientDriver"를 Embeded 방식의 경우 "org.apache.derby.jdbc.EmbeddedDriver"를 사용한다.
Network Server 방식도 엄밀히 말하면 Embeded 방식이라고 할 수 있는데 이것은 org.apache.derby.drda.NetworkServerControl 이라는 Java Application을 만들어 여기에서 네트워크로부터 전송된 클라이언트의 요청을 처리하도록 구현되어 있다.
결과적으로 Derby는 기본적으로 DBMS에서 핵심이라고 할 수 있는 데이터 저장을 위한 파일 구조와 SQL 처리를 core로 구성한 후 이것을 필요에 따라서 쉽게 변경하여 사용할 수 있도록 구현되어 있는 것이다.
그렇다고 Network Server 방식이 기능적으로 떨어지지는 않는다. 4가지 모드의 Transaction Isolation Level을 지원하여 commit; rollback; 처리를 할 수 있다. 다만 조금 부족한 것은 오라클과 같은 상용 DBMS에서 제공하는 GUI 환경의 뛰어난 관리도구와 DBMS의 메타데이터를 관리하는 능력에서는 현저하게 떨어진다고 할 수 있다.
어제부터 설치와 관련된 주요 이슈는 다음과 같다.
1.환경 설정
derby의 경우 jdk1.4와 1.3으로 개발되었다. 소스내에 보면 enum을 변수로 사용하고 있는데 jdk1.5에서는 enum은 예약어라 변수명으로 사용할 수 없다. 따라서 jdk를 1.4로 사용할 것을 추천한다.
set path=C:j2sdk1.4.2_07?in;C:db-derby-10.1.3.1-binframeworksNetworkServer?in;%PATH%
set CLASSPATH=C:db-derby-10.1.3.1-binlibderbyclient.jar;
C:db-derby-10.1.3.1-binlibderby.jar;
C:db-derby-10.1.3.1-binlibderbynet.jar;
C:db-derby-10.1.3.1-binlibderbytools.jar;
C:db-derby-10.1.3.1-bin;%CLASSPATH%
set JAVA_HOME=C:j2sdk1.4.2_07
2. Network Server 시작
- java org.apache.derby.drda.NetworkServerControl start
- Network Server와 관련된 모든 내용은 NetworkServerControl 클래스를 이용한다.

위 화면은 아무런 옵션을 주지 않고 실행한 화면이다. 사용 가능한 옵션에 대한 정보를 보여준다. 서버를 종료하기 위해서는 shutdown 옵션을 사용한다.
-p 옵션은 DBMS 서버의 리스너 port를 지정하는데 사용한다. 기본 port는 1527 이다.
3. ij를 이용하여 서버 접속 테스트
Derby는 자체에 몇가지 도구를 제공하고 있는데 ij는 오라클의 SQL*PLUS에 해당하는 도구이다. 이 도구를 이용하여 DB에 접속하고 테이블 생성, SQL문 실행 등의 작업을 할 수 있다.
실행은 1번에서의 환경설정을 동일하게 한 후 ij.bat라고 치면 된다(Linux의 경우 ij.ksh)
DB에 연결하기 위해서는 먼저 DB를 생성해야 하는데 create database와 같은 명령은 존재하지 않고 connect할 때 없으면 만들도록 하는 옵션을 이용한다.
connect 'jdbc:derby://localhost:1527/testdb;create=true';
위의 connection 명령은 "testdb"라는 이름을 가진 database로 접속을 하는데 없는 경우 만들어라는 명령이다. testdb의 실제 저장 파일은 Derby 설치 디렉토리 하단에 생성된다. 별도의 디렉토리를 설정하고 싶은 경우 connection url을 다음과 같이 하면 된다.
jdbc:derby://localhost:1527/c:/my-db-dir/testdb;create=true

오라클의 desc와 같이 테이블 정보를 보는 기능을 제공하지 않는다. 이것은 Eclipse Database Plugin을 이용하거나 별도의 도구를 이용하는 방법밖에 없다.
ij에서 사용 가능한 명령어는 help; 를 치면 나타난다.
4. 사용자 설정
3번까지의 경우에는 연결할 때 별도의 사용자 인증 절차없이 로그인 하였다. DBMS 서버의 경우 데이터를 관리하고 있기 때문에 보안 관련하여 아주 민감한 서버라 할 수 있다. 따라서 반드시 DBMS에 접속하기 위해서는 사용자 인증을 받도록 해야 한다.
아직 이 부분에 대해서 좀 더 확인해야 하지만 현재까지 파악된 내용은 사용자 설정과 관련하여 몇가지 옵션을 제공하고 있으며 Property, OS, LDAP 사용자 등을 이용하는 방법이 있다.
여기서는 Property를 이용하여 설정하는 방법에 대해 설명한다.
먼저 derby.properties 파일을 Derby home에 만든다. 앞의 환경설정에서 Derby home 디렉토리 자체를 CLASSPATH 상에 두었는데 이 properties 파일을 인식하게 하기 위해서 였다.
derby.properties에서는 port와 같은 기본적인 설정뿐만 아니라 max thread 수와 같은 성능 관련된 내용도 설정할 수 있다.
derby.connection.requireAuthentication=true
derby.authentication.provider=BUILTIN
derby.user.dbuser=123456
위와 같이 설정하여 사용자 인증을 사용하도록 하고 인증 방법은 "BUILTIN"을 이용하고 사용자 ID는 "dbuser", 패스워드는 "123456"을 사용하도록 지정한 후 Derby Server를 다시 실행한다.
사용자 설정이 된 후 DB에 접속 하기 위해서는 다음과 같이 id, pwd를 준다.
jdbc:derby://localhost:1527/testdb;create=true;user=dbuser;password=123456
5. 원격 client에서 접속 가능하도록 설정
다른 장비 또는 PC에서 DB 서버에 접속하도록 하기 위해서는 host 설정을 반드시 해주어야 한다. host 설정은 DB Server 시작시 -h 옵션을 이용할 수고 있고, properties 파일에서 다음을 추가할 수 있다.
derby.drda.host=hostName
hostname이 없는 경우 ip를 주면 된다. 이렇게 구성한 다음에 서버에 접속할 때에는 반드시 여기서 설정된 hostname을 이용하여 접속해야 한다.
출처 : http://www.jaso.co.kr/91
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- gmlduqrhdwn
- judyOh blog
- naplez.net [ SCJP 1.4 ]
- DB
- web
- 한글 Mozilla 포럼 [실전웹표준가이드]
- (블로그)웹표준연구소 [마루아라소프트]
- 웹 프로그램 및 디자인관련 강좌 사이트
- (블로그)검색엔진 최적화 | 검색엔진 마케팅
- DB 툴 [DB에 대한 정보]
- PHP( 객체 지향 언어로써의 PHP )
- w3c표준규격 번역
- 서버 주무르기
- 검색엔진 마스터
- apache-kr.org
- 한국 썬 개발자 네트워크
- 검색엔진 최적화 블로그
- 피라시스닷컴(SVN관련)
- 웹기반 DNS 서비스 DNSEver.com
- JEUS / Tmax / WebtoB
- 웹기반 무료 DNS서버
- JAVA 강좌
- 少年易老學難成, 一寸光陰不可輕. 未覺池塘春草夢, 階前梧…
- MyJavaServer ( JSP 무료 호스팅 )
- I GOT IT (IT`S CRADLE & INCUBA…
- Todayis(HS)
- oracleclub.com
- Prototype (JavaScript Framewor…
- JSPWiki (openframework.or.kr)
- 제갈장비(JAVA_BLOG)
- jakartaproject
- Oracle_download
- jQuery plugin
- Test
- 안드로이드 앱 개발
- 행복한 개발자입니다.
- Flex & etc
- Flex & Design
- (iBatis)참고
- FLEX참고 사이트
- 대용량파일에 대한 watchservice 참고
- win7 update pack
TAG
- flex
- 다운로드
- 비교문
- 뚜비
- 구글
- 머먹구사냐
- 오라클
- vi
- php
- excel
- 자동증가
- 롤링
- mybatipse #egovframework3.8
- 정보보호전문자격
- derby
- Linux
- Eclipse
- iBatis
- mysql
- apache
- Ajax
- SEO
- ASP
- DOM
- 시퀀스생성
- java
- GD
- CSS
- sw기술자 경력관리
- find
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함