본문 바로가기

Java For All

Apache Derby로 개발하기 -- Trifecta: Apache Derby 소개 (한글)


2006 년 5 월 29 일

모든 애플리케이션 개발자들은 데이터를 저장하는 문제에 직면해 있습니다. 인터넷 또는 웹 기반 애플리케이션의 성장과 함께 이러한 필요성은 보다 명확해 졌습니다. 이번 칼럼에서는 표준 기반의 오픈 소스 자바 데이터베이스 시스템인 Apache Derby를 소개합니다. 이것을 다른 데이터베이스 시스템들과 비교하고 다운로드와 설치와 관련한 문제들을 논의합니다.

Apache Derby 프로젝트

Apache Derby 프로젝트에서 개발된 소프트웨어 기술을 연구하고자 기획된 새로운 시리즈 "Apache Derby로 개발하기 -- Hitting the Trifecta"의 첫 번째 글이다. Apache Derby 프로젝트에서 내놓은 소프트웨어는 IBM이 Apache Software Foundation에 기부한 기술을 기반으로 하는 오픈 소스 데이터베이스 시스템이다. Apache Derby 데이터베이스 소프트웨어는 자바로 작성되었기 때문에 이식성이 뛰어나고 작은 패키지에서 놀라운 퍼포먼스를 보인다.

Derby 데이터베이스는 많은 데이터베이스 표준들을 구현하기 때문에, 데이터베이스 사용 경험이 있을 경우 Derby를 사용해도 되고, 기존의 Derby 데이터베이스 애플리케이션을 다른 표준 순응의 데이터베이스 시스템으로 이식할 수도 있다. Derby는 공식적으로 릴리스 된지 일년도 안됐기 때문에 유용한 정보가 부족하다. IBM developerWorks에서 많은 기술자료와 튜토리얼을 제공하고 있다. 본 시리즈는 데이터베이스 시스템을 사용한 경험이 별로 없는 사용자들을 위해 기획되었다. developerWorks 웹 사이트의 다른 기술자료들에도 Apache Derby 데이터베이스 소프트웨어를 소개한 것이 많이 있다. 자바 엔터프라이즈 소프트웨어 스택으로 통합되는 방법을 설명한 자료도 있다.

이 글에서는 먼저 일반적인 데이터베이스 시스템에 대해 설명한 다음, Apache Derby를 설명하도록 하겠다.




위로


데이터베이스 시스템

여러분이 인식하는지는 잘 모르겠지만, 인터텟 서핑을 하다 보면 다양한 데이터베이스 기반 웹 애플리케이션과 인터랙팅 하게 된다. 생소하게 들릴 수 있지만, 여러분이 방문하는 웹 사이트는 데이터베이스에 저장된 데이터를 사용하여 동적으로 생성되는 것이다. 다음과 같은 유형의 웹 사이트를 여러분이 방문했다고 생각해 보자.

  • developerWorks 오픈 소스 프로젝트(그림 1) 같은 정보 포탈.
  • 로컬 뉴스나 스포츠 기사를 다루는 뉴스 웹사이트.
  • 은행 또는 투자 기관 같은 금융 웹 사이트.
  • 도로 지도 웹사이트.
  • 특정 주제에 대한 정보를 담고 있는 웹 사이트를 찾아주는 검색 엔진.

그림 1. developerWorks 오픈 소스 프로젝트
The developerWorks Open source project area 

위 예제들 모두 데이터베이스를 사용하여 정보를 저장, 배치, 검색한다. 이러한 애플리케이션에서 웹 사이트는 사용자에게서 필요한 정보를 모으고(예를 들어, 주소), 애플리케이션 데이터베이스를 쿼리하고, 요청을 받은 데이터를 시각적인 결과로 만들어 낸다.

대부분의 데이터베이스 시스템들은 크고 복잡하다. 정확한 주행 방향을 그림과 함께 제공하기 위해 필요한 지도 정보를 갖고 있다고 생각해 보라. 데이터를 저장하고 이것을 애플리케이션에 사용하는 것은 큰 일임에 분명하다. IBM DB2 ®와 Microsoft SQL Server 등의 많은 벤더들이 개입되었다. 이러한 상용 데이터베이스 시스템들은 완전히 엔터프라이즈급의 기능을 제공한다. 결국 엄청난 데이터 양을 보유할 수 있고 많은 사용자들과 동시에 인터랙팅 할 수 있으며 여러 대형 전산 환경으로 나아갈 수 있다.

데이터베이스 역할

알고 있겠지만, 이러한 시스템을 작동시키는 것은 간단한 일이 아니다. 전통적으로, 데이터베이스를 작동할 때 개입되는 태스크들은 세 가지 범주로 나뉜다. 역할이 가끔은 겹치지만, 개별 책임들은 이해하기 쉽다.

  1. 데이터베이스 관리자 (DBA) -- 데이터베이스 시스템의 전체적인 운영을 책임지고 있다. 기반 하드웨어의 선택과 레이아웃, 데이터베이스 서버의 설치 및 최적화, 데이터베이스 서버의 일반적인 작동(데이터 백업과 복구) 등을 관리한다.
  2. 데이터베이스 개발자 -- 데이터베이스 작동에 대한 실질적인 책임을 맡고 있다. 데이터베이스 설계, 스키마, 테이블, 테이블 관계, 인덱스, 쿼리 최적화 등이 포함된다.
  3. 데이터베이스 애플리케이션 개발자 -- Java Database Connectivity (JDBC)나 Open Database Connectivity (ODBC) 같은 데이터베이스 애플리케이션 프로그래밍 인터페이스(API) 애플리케이션 코드와 기반 데이터베이스를 통합하여 필요할 때 마다 데이터를 저장 및 검색한다.

아직도 이해가 되지 않는다 해도 괜찮다. 원래 데이터베이스는 어려운 법이다. 온라인 뱅킹 예제를 들어보겠다. 은행 웹 사이트로 연결할 때 자신의 정보(사용자이름과 패스워드)를 주고 액세스 할 수 있다. 데이터를 보고, 대금을 지불하고, 자금을 이체할 수 있다. 여러분의 은행이 사용하는 데이터베이스는 관련 정보를 빠르게 배치하고, 트랜잭션을 안전하게 관리하고, 사용자와 보안 상태에서 인터랙팅 하고, 무엇보다도 중요한 것은 데이터를 소실하지 않아야 한다. 은행은 많은 사용자들을 대상으로 이러한 일을 동시에 처리해야 한다.

하지만 모든 애플리케이션들이 꼭 이래야 하는 것은 아니다. 데이터베이스 작동을 그저 배우려고 하거나 데이터베이스 애플리케이션을 빠르게 프로토타이핑 하려는 것이었다면 대부분의 상용 데이터베이스 시스템들이 오히려 거추장스럽다. 다행히도 Apache Derby 데이터베이스를 사용하여 데이터베이스 기반 애플리케이션을 개발하는 것은 생각 보다 쉽다. 앞으로의 시리즈에서는 Apache Derby 데이터베이스를 사용하여 데이터베이스 애플리케이션을 구현하는 방법을 설명하도록 하겠다.




위로


Apache Derby 프로젝트란 무엇인가?

Apache Derby 프로젝트는 완전히 자바 프로그래밍 언어로 작성된 오픈 소스 데이터베이스를 구현하는 프로젝트이다. 데이터베이스를 개발하는 일은 간단한 일이 아니고 Apache Derby 데이터베이스도 예외는 아니다. 하지만 Derby 프로젝트는 기초부터 시작하지 않았다. 1996년 Cloudscape, Inc.가 자바 언어로 작성된 데이터베이스 서버를 구현할 목표를 가지고 설립되었다. 이 회사는 그 다음 해에 첫 번째 릴리스를 내놓았고 결국 제품의 이름도 Cloudscape로 바뀌었다. 1999년에 Cloudscape, Inc.는 대형 데이터베이스 벤더인 Informix Software, Inc.에 인수되었다. Informix Software는 2001년 IBM이 인수했고, IBM Cloudscape™ 데이터베이스 시스템은 많은 IBM 제품들에서 임베디드 데이터베이스 엔진으로 사용되었다. 2004년 4월, IBM은 Cloudscape 데이터베이스 소프트웨어를 Apache Software Foundation에 기부했고 Apache Derby 프로젝트가 생겨났다.(그림 2)


그림 2. Apache Derby 프로젝트 웹사이트
The Apache Derby project Web site 

Cloudscape 데이터베이스는 거의 오십만 줄에 육박하는 자바 코드였고 이것을 Apache Derby 프로젝트로 변환하는데 시간이 걸렸다. 인큐베이션 기간이 지난 후에 Derby는 2005년 7월에 공식적으로 릴리스 되었다. 새로운 것 처럼 보이겠지만 Derby는 거의 10년이나 되는 개발 역사를 갖고 있다.

IBM은 계속해서 Cloudscape 데이터베이스를 관리하고 있다. IBM은 Cloudscape 데이터베이스를 무료 다운로드로 제공하고 있고 유료 컨설팅 서비스도 병행하고 있다. 게다가 Sun Microsystems는 Apache Derby의 패치 버전을 Java DB 제품으로서 포함시킬 것이라고 발표했다. IBM과 Sun의 강력한 지원으로 Apache Derby 데이터베이스의 미래는 밝다. Derby 데이터베이스는 SQL-92와 JDBC, Version 3.0 같은 많은 데이터베이스 표준에 순응한다. 따라서 Derby 데이터베이스 시스템을 사용하여 초기에 개발된 애플리케이션은 IBM DB2 Universal Database™ 같은 데이터베이스 시스템으로 쉽게 이식될 수 있다.

Apache Derby 데이터베이스 개요

Apache Derby는 자바로 작성되었기 때문에 자바 가상 머신(JVM)이 있는 어느 곳에서나 실행될 수 있다. 다시 말해서 Microsoft Windows®, Macintosh, Linux®, UNIX® 플랫폼 같은 어떤 운영 체계에서도 실행될 수 있다는 의미가 된다. Derby는 세 개의 자바 플랫폼- Java 2 Platform, Micro Edition (J2ME), Java 2 Platform, Standard Edition (J2SE), Java 2 Platform, Enterprise Edition (J2EE)-에서도 실행된다. Derby 소프트웨어는 Java Archive (JAR) 파일에 번들된다. (크기는 2MB 정도이다.) Derby 데이터베이스는 풋프린트도 작고 애플리케이션과 함께 쉽게 번들 될 수 있다.

YDerby 데이터베이스를 두 가지 방법으로 사용할 수 있다.

  • 임베디드 데이터베이스(embedded database): 사용자는 데이터베이스의 존재를 인식하지 못한다. 애플리케이션은 데이터베이스를 사용한다. 같은 JVM에서 실행되고 데이터베이스는 로컬 파일 시스템상에 데이터를 저장한다. 임베디드 모델에서 데이터베이스는 같은 JVM에서 실행되는 애플리케이션만 통신한다.
  • 클라이언트-서버 연결(client-server connection): 많은 상용 벤더들이 사용하는 전통적인 모델이다. 이 모델에서, 애플리케이션은 네트워크 연결을 통해 데이터베이스와 통신하고, 애플리케이션과 데이터베이스는 개별 JVM에서 작동한다. 데이터베이스 서버는 다중 클라이언트 애플리케이션들과 통신할 수 있다.

Apache Derby 다운로드 하기

Apache Derby의 작동의 단순함을 제대로 이해하는 한 가지 방법은 직접 실행해 보는 것이다. 이 나머지 섹션에서는 Apache Derby의 버전을 다운로드 하여 확인하는 과정을 설명하도록 하겠다.(참고자료) 그 전에 Java Runtime Environment (JRE)가 설치되어 있어야 한다. 1.3 이후 버전의 JRE면 충분하지만 이 글에서는 Java 1.4.2 이후 버전을 사용한다.

가장 먼저, Apache Derby를 다운로드 한다. 그림 3에서 처럼, 세 개의 다른 버전들-소스, 라이브러리, 바이너리를 다운로드 한다. 소스 버전은 소스 코드를 말한다. 이 버전을 사용하려면 소스 코드를 컴파일 하여 .jar 파일을 구현해야 한다. 라이브러리 버전에는 Derby 데이터베이스용 필수 .jar 파일만 포함되어 있다. 바이너리 버전에는 .jar 파일과 Derby 문서가 포함되어 있다.

간단히 하기 위해, 바이너리 버전을 다운로드 한다. 다운로드의 무결성을 확인하라. 공식 버전임을 보장하는 PGP (Pretty Good Privacy) 서명을 확인하고 다운로드 파일의 무결성을 보증하는 MD5 (Message-Digest algorithm 5) 서명도 확인하라.


그림 3. Apache Derby 데이터베이스 다운로드
Downloading the Apache Derby database 

Apache Derby 설치하기

Derby 데이터베이스 파일들의 다운로드 및 무결성 검사가 끝났다면 설치는 간단하다.(물론 플랫폼에 따라 다르다.)

  1. 알맞은 위치를 선택한다. C:\Apache(Windows) 또는 /opt/Apache (UNIX 기반 시스템)
  2. 터미널 윈도우를 열고(또는 Windows의 경우 명령어 프롬프트), 새로운 디렉토리로 변경하고, Derby 데이터베이스를 포함하고 있는 아카이브를 확장한다. 이렇게 하면 여러분이 설치했던 Derby 데이터베이스 버전으로 새로운 디렉토리가 생성된다. (db-derby-10.1.2.1-bin)
  3. Derby .jar 파일을 CLASSPATH 환경 변수에 추가한다. 명령행 프롬프트가 편하다면 db-derby-10.1.2.1-bin/lib 디렉토리에 있는 derby.jar를 CLASSPATH 변수에 직접 추가한다. 또 다른 방법으로는 db-derby-10.1.2.1-bin\frameworks\embedded\bin 디렉토리에 있는 setEmbeddedCP 스크립트를 실행할 수도 있다. 이 스크립트를 실행하기 전에 DERBY_INSTALL 환경 변수를 설정하거나 이 스크립트를 변경하여DERBY_INSTALL이 해당 디렉토리를 가리키도록 한다.
  4. sysinfo 툴로 설치 상황을 검사한다.(Listing 1)

Listing 1. sysinfo로 Derby 설치 테스트하기 
rb$ java org.apache.derby.tools.sysinfo
------------------ Java Information ------------------
Java Version:    1.4.2_09
Java Vendor:     Apple Computer, Inc.
Java home:       /System/Library/Frameworks/JavaVM.framework/
                         Versions/1.4.2/Home
Java classpath:  /opt/Apache/db-derby-10.1.2.1-bin/lib/derby.jar:/
                          opt/Apache/db-derby-10.1.2.1-bin/lib/derbytools.jar:.
OS name:         Mac OS X
OS architecture: ppc
OS version:      10.4.3
Java user name:  rb
Java user home:  /Users/rb
Java user dir:   /opt/Apache/db-derby-10.1.2.1-bin
java.specification.name: Java Platform API Specification
java.specification.version: 1.4
--------- Derby Information --------
JRE - JDBC: J2SE 1.4.2 - JDBC 3.0
[/opt/Apache/db-derby-10.1.2.1-bin/lib/derby.jar] 10.1.2.1 - (330608)
[/opt/Apache/db-derby-10.1.2.1-bin/lib/derbytools.jar] 10.1.2.1 - 
   (330608)
[/opt/Apache/db-derby-10.1.2.1-bin/lib/derby.jar] 10.1.2.1 - (330608)
[/opt/Apache/db-derby-10.1.2.1-bin/lib/derbytools.jar] 10.1.2.1 - 
   (330608)
------------------------------------------------------
----------------- Locale Information -----------------
------------------------------------------------------

이렇게 해서 데이터베이스 시스템이 생겼다. 독립형 네트워크 서버나 애플리케이션 내에 삽입된 데이터베이스로서 실행할 수 있다. 다음에는 이 두 가지 모델에서 Derby를 실행시키는 방법을 설명하겠다.

Apache Derby 사용하기

데이터베이스 시스템 작동은 어려운 일만은 아니다. Apache Derby를 사용하면 완벽한 기능을 갖춘 데이터베이스 시스템을 실행할 수 있다. Apache Derby는 표준 순응형 데이터베이스이기 때문에 이것을 사용하여 개발된 애플리케이션들은 보다 강력한 데이터베이스 시스템으로 쉽게 마이그레이션 될 수 있다.

기사의 원문보기




출처: http://www.ibm.com/developerworks/kr/library/os-ad-trifecta1/