FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird 강좌/문서
[23] [프세 리뷰기사] 파이어버드로 거듭나는 인터베이스 6.0
박지훈.임프 [cbuilder] 10317 읽음    2005-11-25 02:27
볼랜드의 DBMS인 인터베이스 6.0은 델파이와 환상적인 궁합을 이루며 Win32와 리눅스, 솔라리스에서 실행되는 전천후 DBMS이다. 현재는 파이어버드 프로젝트를 통해 소스가 공개돼 라이센스 비용이 없이 누구나 부담없이 사용할 수 있지만 불과 얼마 전까지만 해도 몇백만원대에 판매되던 제품이다. 오라클이나 SQL 서버와 견주어도 전혀 손색없는 진흙 속의 진주 같은 우수한 DBMS, 인터베이스 6.0을 소개한다.

글.노규남 BARD@hitel.net

리눅스가 불러일으킨 오픈소스의 열풍은 다른 분야에도 예외는 아니어서 사용자들은 과거에는 매우 비싼 비용을 지불해야 했던 프로그램들을 이제는 무료로 구할 수 있거나 혹은 그 소스까지 볼 수 있게 되었다. 특히 리눅스 계열에서는 이런 경향이 두드러져서 운영체제부터 많이 사용되는 DBMS와 각종 데몬들이 거의 무료인 것 같다.

DBMS쪽을 보자면 작고 가벼운 mSQL부터 웹과의 연동에 자주 사용되는 MySQL, 그리고 postgreSQL이 주로 사용된다. 하지만 상대적으로 윈도우 계열의 운영체제에서는 무료로 사용할 수 있는 DBMS가 드문 편이다. 물론 MySQL의 윈도우 버전이 있기는 있다. 하지만 MySQL은 트랜잭션을 지원하지 않고 SQL92의 아주 제한된 서브셋만을 사용하기 때문에 비상업적이고 부하가 적은 사이트에 적합한 반면, 매우 복잡한 트랜잭션과 높은 DBMS의 파워가 요구되는 분야에는 잘 맞지 않는다. postgreSQL의 경우는 역시 Win32 버전이 존재하고 MySQL보다는 상업적인 용도에 맞는 좀더 많은 기능들을 제공하고 있으나 SQL 서버의 엔터프라이즈 매니저 같은 GUI 환경의 관리도구나 I-SQL류의 쿼리 애널라이저가 없어서 사용에 불편함이 있으며, 무엇보다도 시그너스(cygnus)의 win32 툴들을 별도로 설치해야 하는 등 설치가 매우 까다롭다는 단점이 있다.

물론 상용인 오라클, SQL 서버 등을 채택하게 되면 앞서 얘기했던 여러가지 상업적인 목적을 위한 기능들을 모두 제공하는데 더해 GUI 기반의 관리 도구 및 잘 정리된 문서들까지 받을 수 있으므로 좋지만 아무래도 공짜에는 비할 바 없는 것 아니겠는가.

만약 필자와 같은 고민을 하고 있는 이가 있다면 인프라이즈의 인터베이스 6.0이 그 해답이 될 수 있을 것이다. 인터베이스 6.0은 Win32와 리눅스, 솔라리스에서 실행되며 라이센스 비용이 없고 소스가 공개된 무료 DBMS로, 얼마 전까지만 해도 몇백만원 정도의 상당히 고가에 판매되던 제품이었다.

볼랜드 관계사 인터베이스가 개발
인터베이스란 지금은 인프라이즈로 이름을 바꾼(이제 곧 다시 볼랜드로 개명한다고 한다) 볼랜드의 DBMS로, 볼랜드에서 직접 만든 것은 아니고 자회사 정도 되는 인터베이스사에서 개발하던 제품이다. 인터베이스는 별도로 판매되기도 했으나 주로 인프라이즈의 개발툴인 델파이/C++ 빌더 등에 포함된 제품이 사용되었다. 델파이와 인터베이스의 관계는 비주얼 스튜디오와 SQL 서버와의 관계와 비슷한 것으로, 상업적인 애플리케이션이라는 것은 DBMS를 동반하는 경우가 많으므로 각각 자사의 개발툴에서 최고의 성능을 발휘할 수 있도록 컴패니언의 형식으로 만들어진 DBMS였다. 델파이 프로페셔널에는 로컬 인터베이스가, 그리고 델파이 C/S 버전에는 리모트 인터베이스가 포함되어 배포되었는데 로컬 인터베이스는 원격에서 접속이 불가능한 로컬 전용의 DBMS였고, 리모트 인터베이스는 C/S 환경의 구축에 사용되는, 원격지 접속이 가능한 DBMS이다. 델파이에 포함된 것은 개발자 라이센스만을 갖춘 것으로 개발용으로는 사용할 수 있었지만 이를 이용한 솔루션을 판매하고자 하면 별도의 라이센스를 구입해야 했다.

인터베이스는 5.x 버전까지 만들어지면서 강력한 기능들을 계속해서 추가해 나갔으나 6.0으로 업그레이드 되면서 인프라이즈는 인터베이스의 소스 공개를 선언했고 이후 인터베이스는 IPL(Interbase Public License) 하에서 무료로 사용할 수 있게 되었다.

IPL은 모질라의 GPL(General Public License)을 다소 변형한 것으로 전체적인 내용은 거의 차이가 없다고 보아도 무방하다. 실제 인터베이스 6.0이 소스 포함해서 공개된 것은 작년 7월 16일이었는데 워낙 이 인프라이즈라는 회사가 무슨 일을 소리소문없이 하는지라 약 6개월이 지난 지금까지 공개된 사실조차 아는 사람은 알고 모르는 사람은 모르는 그런 실정이다. 재미있는 것은 인터베이스를 소스 공개하면서도 인프라이즈는 인터베이스의 상업적인 사용에 대한 빌미를 남겨두었는데 이것은 마치 레드햇의 전략과도 비슷한 것으로, 소스나 바이너리는 공개하지만 이에 대한 기술적인 지원 부분은 비용을 받는다는 것이다. 따라서 인터베이스를 가져다가 사용하는 것은 아무런 제약이 없으나 이에 대해 기술적인 지원을 필요로 한다면 그것이 애플리케이션의 개발이든 운용상의 문제이든 인프라이즈에 비용을 지불해야 한다. 프로그램은 공짜이지만 기술 지원은 유료라는 전략이 얼마나 시장에 먹혀들는지는 미지수이지만, 어쨌든 여기서 확실한 것은 인프라이즈에 비용을 지불할 의사가 전혀 없는 우리들은 모든 리스크를 떠안고 작업을 해야 한다는 사실이다. 어느 누구도 앞으로의 작업에 대해서 책임을 져주지는 않는다.

시스템 요구 사양
다음은 Win32 버전의 인터베이스 6.0에 포함된 문서에서 발췌한 시스템 요구사양이다. 여기서는 Win32와 솔라리스, 두가지 버전에 대한 사양을 명기하고 있는데 실제로 구동해 보면 인터베이스가 소비하는 리소스가 별로 크지 않다는 점을 분명하게 알 수 있을 것이다. 리눅스나 FreeBSD도 비슷한 정도의 사양이면 무리없이 구동시킬 수 있다고 생각된다. 개발도구로는 비주얼 C++ 4.2와 C++ 빌더 3을 명시했는데 C/C++ 컴파일러의 호환은 별로 문제가 되지 않는 것이 실제로 윈도우에서 인터베이스에 접속해 작업하는 경우는 ODBC나 BDE를 쓰게 되기 때문이다. 아마도 여기에 명기된 C/C++ 컴파일러는 예제로 포함된 C 소스와 임베디드 SQL을 컴파일하기 위한 것이라고 추측된다. 이에 대해서는 뒤에서 좀더 자세하게 얘기하겠다.

MS 윈도우 NT와 윈도우 95/98
- OS : 윈도우 NT 4.0 with 서비스팩 5 or 윈도우 95/98
- 메모리 : 최소 16MB, 64MB 이상 권장
- CPU : 최소 486, 펜티엄-II 이상 권장
- C/C++ 컴파일러 : MS 비주얼 C++ 4.2/볼랜드 C++ 빌더 3

썬 솔라리스
- OS : 솔라리스 2.6.x or 7
- 메모리 : 최소 32MB, 64MB 이상 권장
- CPU : 스팍(SPARC) 혹은 울트라스팍(SPARC)

오라클이나 SQL 서버와 같은 등급
현재 사용되는 DBMS를 보면 크게 세 종류로 구분할 수 있다. 하나는 패러독스나 액세스와 같이 항상 서비스 가능한 데몬이 커넥션과 권한 등을 관리하지 않고, 단지 파일에 락(lock)만을 걸어서 사용하는 수준인 파일 DB이며, 두 번째는 적은 사용자와 복잡하지 않은 쿼리를 수행하기 위해 단순화된 서비스를 갖는 DBMS로 mSQL이나 MySQL이 이 부류에 해당한다. mSQL이나 MySQL은 설치나 관리가 간편하고 쉽지만 다음에 언급할 세 번째 종류의 DBMS에 비하면 상대적으로 지원하지 않는 기능들이 많이 있다.

마지막으로 트랜잭션, 스토어드 프로시저, 서브 쿼리 등의 강력한 기능을 포함하는 주로 상용인 DBMS로 오라클이나 SQL 서버, 인포믹스, postgreSQL 등이 이 마지막 부류에 속한다. 특히 세 번째 부류의 DBMS들은 많은 기능을 지원하는 만큼 크기도 크고 자원 소모량이 많은데, 이 부류의 DBMS에서 무료는 아주 드물다. 인터베이스는 원래 상용으로 개발되던 DBMS가 오픈된 것이므로 마지막에 해당하며, 명확히 하자면 오라클이나 SQL 서버 등와 같은 등급의 DBMS인 것이다.

<표 1>에 간단하게 인터베이스와 가장 많이 사용되는 DBMS들을 비교해 놓았다. 이 도표는 절대적인 것은 아니고 각 DBMS들이 지원하는 기능들을 알기 쉽게 비교해 보기 위해 만든 것이므로 참고만 하기 바란다. MySQL의 경우는 아래의 <표 1>에서 가장 많은 기능을 지원하지 않지만 간단한 설계 방식으로 인해 퍼포먼스 측면에서는 다른 DBMS보다 이점이 있으며, 오라클은 모든 기능들을 지원하고 있으나 상용이기 때문에 그만큼 매력이 덜해진다. 어떤 DBMS를 선택하는가 하는 것은 전적으로 상황과 용도에 맞추어서 결정해야 할 것이다.

기능 인터베이스 6.0 PostgreSQL 오라클 8i MySQL
프리 소스 O O X O
클라이언트-서버 O O O O
멀티스레디드 수퍼 서버 키트에서 지원 O O X
NSI/ISO SQL 92 엔트리레벨 O partial O X
ODBC O O O O
Win32 지원 O Client Only O O
GUI-based 어드민 툴(Win32) O X O X
임베디드 SQL O X O X
PHP4 지원 O O O O
Perl 지원 O O O O
C/C++ 지원 O O O O
<표 1. 인터베이스와 가장 많이 사용되는 DBMS 비교표

다음은 Release Note에 포함된 인터베이스 6의 새로운 특징들이다.

- IBConsole : 인터베이스 6는 GUI 기반의 관리 도구인 IBConsole을 제공한다. 이 도구는 SQL 서버의 엔터프라이즈 매니저에 해당하는 것으로 이제 인터베이스 사용자는 비주얼한 환경에서 좀더 편리하게 데이터베이스를 관리할 수 있다.

- Dialects : 인터베이스는 DSQL(Dynamic-SQL)이라는 형태의 SQL 문법을 지원하는데, 인터베이스 6 이후로는 이 문법이 표준 SQL을 따르는 쪽으로 발전될 전망이다. 그러나 이러한 변화 때문에 이전에 만들어진 데이터베이스(인터베이스 5.x 이하)를 쓰고 있는 사용자들은 호환성의 문제를 겪게 되었다. 대표적인 예가 이전의 데이트 타입이 SQL 표준의 DATE/TIME/TIMESTAMP 타입으로 바뀐 것이다. 이렇게 이전 스타일의 데이터베이스를 인터베이스 6로 전환하는데 도움을 주기 위해 만들어진 것이 Dialect로 1, 2, 3의 세가지가 있다.

Dialect 1은 이전(인터베이스 5.x 이하) 데이터베이스와 호환을 유지하기 위해 만들어진 모드로 이전의 SQL문들만을 지원하기 때문에 인터베이스 6의 추가된 특성을 충분히 살린 코딩은 불가능하다.

Dialect 3은 인터베이스의 모든 새로운 기능들을 전부 사용할 수 있는, 가장 일반적으로 사용되는 형태이며, Dialect 2는 이전(Transition)을 위한 테스트 용도로만 사용된다. 새롭게 인터베이스를 접하는 사용자들은 Dialect 3으로만 사용하면 문제가 없다.

- SQL delimited Identifiers : 인터베이스 6에서는 겹따옴표(")를 제한자로 사용할 수 있다. 이로서 인터베이스 6에서는 키워드나 공백이 들어가는 이름, non-ASCII 문자 등을 모두 객체 이름으로 사용할 수 있게 되었다. 따라서 다음과 같은 SQL이 가능하다. 이것은 Dialect 3에서 지원된다.

create table "bard roh"
("my name" char(20),
"my address" char(60));

- 인터베이스 익스프레스 for 델파이 유저 : 델파이를 쓰는 독자라면 반길만한 소식이다. 인터베이스 6에는 인터베이스 익스프레스(IBX라고 흔히 표기함)라는 새로운 컨트롤이 추가되어 BDE를 사용하지 않고 직접 접속할 수 있게 되었다.

이밖에도 여러가지 특징들이 있으나 여기서는 이 정도만 설명하도록 하겠다. 포함된 문서인 ReleaseNotes.pdf에 인터베이스가 어떤 특징들을 갖는지에 대해서 잘 설명하고 있으므로 이를 한번 읽어보기를 권한다.

공개 버전 '파이어버드' 프로젝트
인터베이스는 크게 두가지 에디션이 존재한다. 하나는 인프라이즈에서 직접 소스를 관리하고 개발하는 버전으로, 인터베이스라는 이전의 이름을 계속 이어가고 있다. 현재 버전은 6.01이며 공식 사이트인 www.interbase.com에서 다운로드할 수 있으며, Win32 버전과 리눅스의 tar.gz/rpm 버전, 그리고 솔라리스와 FreeBSD용의 바이너리를 같이 배포하고 있다. 또한 JDBC 접속용의 드라이버인 InterClient와 인터베이스의 Win32 어드민 툴인 IB콘솔도 여기서 업그레이드하고 배포한다. 물론 공개되었으니 소스도 같이 배포하고 있다.

다른 하나는 소스포지(source forge)에 등록된 인터베이스의 공개 버전으로 현재 '파이어버드(Firebird)'라는 이름으로 프로젝트가 진행중이다. 파이어버드와 인터베이스의 관계는 넷스케이프와 모질라의 관계와 비슷하다고 생각하면 맞을 것이다. 즉, 공개된 시점의 소스 배포본으로부터 같이 출발해서 조금씩 다르게 진화해 나가는 중에 있는 것이다. 현재는 어느 쪽을 사용하더라도 크게 다른 점은 없다. 아직 파이어버드가 기존의 인터베이스 6.0에 비해 많이 다른 모습을 보여주지 않고 있기 때문이다.

인터베이스의 공식 사이트에서 파일을 다운로드 하려면 볼랜드 커뮤니티에 등록하고 로그인 한 후에 가능한데 2001년 1월 15일 현재 이 서비스는 제대로 이루어지지 않고 있다. 따라서 현재 인터베이스의 바이너리와 소스를 받을 수 있는 최적의 사이트는 파이어버드를 개발하고 업그레이드 하는 www.ibphoenix.com와 www.interbase2000.com이다. 필자는 여기서 리눅스용의 rpm과 소스를 받았고, Win32용은 http://ibwise.delphihost.com/download/ibwin32.zip 에 있는 파일을 권장한다. 뒤에서 다시 설명하겠지만 이것은 가장 잘 작동하는 무료 ODBC 드라이버를 포함하고 있기 때문이다.

참고로 말해두자면 파이어버드 유닉스 버전에는 클래식 서버와 수퍼 서버의 두 가지가 있는데, 클래식 서버는 기존의 인터베이스와 같은 구성, 즉 1 유저에 1 프로세스를 할당하는 프로세스 모델을 갖는 것이며 수퍼 서버는 멀티스레드를 사용해 한 프로세스에서 동시에 여러 사용자를 지원하는 형태의 서버 키트이다. 어느 쪽이 좋다고 단정적으로 말할 수 있는 문제는 아니며 상황과 환경에 따라 취사선택 해 사용할 수 있으므로 선택은 사용자의 몫이 될 것이다. 유닉스 버전에서 'SS'로 끝나는 것은 수퍼 서버 키트이고 'CS'로 끝나는 것은 클래식 서버 키트이니 참고하기 바란다.

Win32에서의 설치
인터베이스 Win32 버전은 윈도우 95/98/NT/2000 어느 운영체제에서도 작동시킬 수 있으며 설치도 매우 간단하다. 위에서 받은 파일을 임의의 디렉토리에 압축을 푼 후 안의 setup.exe를 실행시키면 Wise Installation으로 진행되는 설치스크립트가 작동된다. 설치는 보통의 윈도우 애플리케이션과 마찬가지로 몇 개의 다이알로그에 대답하면 끝이며 인터베이스의 서버, 커맨드 라인 툴들과 Win32 전용 어드민 툴인 IB콘솔, PDF로 1,000매에 달하는 문서 자료, 예제 애플리케이션의 소스들을 모두 같이 설치해준다. 특히 Win32 버전의 인터베이스가 리눅스나 FreeBSD에 비해서 좋은 점은 GUI 환경의 관리도구인 IB콘솔을 포함한다는 점인데 이로서 손이 많이 가는 커맨드 라인 툴을 사용하지 않고도 편리하게 관리할 수 있게 되었다. Win32 버전은 설치하면 자동적으로 관리자에 해당하는 계정인 sysdba를 만드는데 이 계정의 암호는 디폴트로 'masterkey'로 되어 있다. 접속시 항상 요구하게 되므로 잊지 않도록 하자.

리눅스에서의 설치
리눅스에서 설치할 때는 tar.gz 혹은 rpm으로 된 이미지 중의 하나를 받아서 설치하면 된다. 리눅스 버전은 PDF와 예제 파일 등 IB콘솔을 제외한 Win32 버전의 모든 컴포넌트를 포함하고 있다. 필자가 다운로드한 것은 IBPheonix의 파이어버드 0.9 버전으로 FirebirdSS-0.9-4.i386.rpm라는 이름을 가지고 있으며, 아무 디렉토리에나 복사한 후 rpm -Uvh로 설치하면 디폴트로 /opt/interbase 하위에 모든 파일들이 설치되며 동시에 파이어버드 서버가 시작된다. Win32 버전의 인터베이스와 다른 점은 IB콘솔이 없다는 것과 설치시 관리자라고 할 수 있는 sysdba의 암호를 자동으로 생성한다는 것이다. 설치가 끝난 후 '/opt/interbase/SYSDBA.password'라는 파일을 열어보면 생성된 암호가 포함되어 있다. 현재 버전의 파이어버드와 인터베이스는 관리나 시스템구성 등 모든 면에서 거의 일치하므로 인터베이스에 적용되는 모든 작업은 파이어버드에도 똑같이 적용할 수 있다는 점도 알아두기 바란다.

DB관련 작업은 IB콘솔로
윈도우 버전의 인터베이스를 설치했다면 모든 데이터베이스 관련 작업은 IB콘솔을 통해서 하기를 권장한다. 물론 리눅스나 솔라리스 등 모든 운영체제에 공통적으로 제공되는 커맨드라인 툴들이 있지만 IB콘솔은 Win32 버전에서만 제공되는 관리용 도구로서 윈도우의 이점을 십분 발휘해 오브젝트 트리를 통해 모든 작업을 비주얼하게 할 수 있는 편리한 도구이다. 또한 IB콘솔에서는 선택된 데이터베이스에 접속해 여기서 바로 쿼리를 실행할 수 있는 isql의 GUI 버전을 제공하는데 이 또한 매우 편리한 인터페이스를 갖추고 있다. 인터베이스를 설치한 후 IB콘솔을 실행시키면 인터베이스 서버가 작동중이지 않을 경우 서버를 구동하겠는지를 묻는 메시지가 뜰 것이다. 서버를 구동시켜 주고 나면 SQL 서버의 엔터프라이즈 매니저 등에서 친숙한 화면을 양분한 인터페이스가 나타난다. 여기는 여러 개의 서버를 등록해서 함께 관리할 수 있으며, 각 서버를 더블클릭하면 최소한의 인증인 사용자 이름과 암호쌍을 입력할 것을 요구받는다. 최초의 실행시에는 sysdba-masterkey를 입력해주면 서버에 등록된 데이터베이스의 리스트를 얻을 수 있을 것이다. 여기서 새롭게 데이터베이스를 만들 수도 있고, 또 이미 만들어진 데이터베이스를 등록할 수도 있다.

각 데이터베이스는 *.gdb라는 확장자를 갖고 있으며 내부적으로 Table, View, Domain, Stored Procedure 등 데이터베이스 작업에 필요한 모든 객체들을 포함하고 있다. 필자가 추천한 배포본에는 employee.gdb라는 예제 데이터베이스가 포함되어 있으니 이를 가지고 간단한 테스트가 가능할 것이다. 이 상태에서 Tools-Interactive SQL을 선택해주면 앞서 언급한 isql의 GUI버전이 실행되는데 여기서 여러가지 쿼리를 실행하고 그 결과를 볼 수도 있다. 주의할 점은 IB콘솔의 isql은 커맨드라인 버전의 isql에 대해 몇가지 지원하지 않는 명령들이 있다는 사실인데, 이는 그러한 명령들을 IB콘솔에서 모두 처리할 수 있기 때문으로 생각된다. 자세한 구동 방법은 doc 폴더의 OpGuide.pdf를 읽으면 충분히 이해할 수 있을 것이다. IB콘솔로 할 수 있는 작업들은 다음과 같다.

- 데이터베이스의 생성 및 조작
- 서버의 설정 및 조작
- 인터랙티브 SQL을 구동
- 서버의 보안 계정을 설정
- 데이터베이스 백업 및 복원
- 데이터베이스와 서버의 정책 조회/수정

IB콘솔은 Win32에서만 구동되지만 여기에 로컬뿐만 아니라 원격의 서버를 등록해서 같이 관리할 수 있으므로 리눅스나 솔라리스 등의 서버에 인터베이스를 설치했다고 하더라도 윈도 클라이언트에서 비주얼하게 DBMS를 관리하는 매우 편리한 도구가 될 수 있다.

모든 OS에 공통인 커맨드라인 툴, isql
isql은 모든 운영체제에 공통적으로 제공되는 커맨드라인 툴로, 텍스트로 SQL문을 입력하고 그에 대한 결과를 받아보는, 데이터베이스를 사용해 본 사람이라면 매우 친숙한 형태의 도구이다. 인터베이스는 표준 SQL인 SQL92를 지원하며 더불어 인터베이스 고유의 명령어셋을 포함한 DSQL(Dynamic SQL)이라는 SQL의 수퍼셋을 제공하고 있다. isql은 서버가 작동중인 상태에서 데이터베이스에 접속해서 쿼리를 수행하거나 혹은 새롭게 데이터베이스를 만들고, 데이터베이스의 구조를 덤프하는 등의 여러가지 작업에 사용될 수 있다.

IB콘솔은 매우 편리한 도구이지만 Win32에만 제공되기 때문에 리눅스나 기타 운영체제를 쓰는 경우라면 isql로 작업을 해야 할 것이다. isql은 postgreSQL의 psql이나 MySQL의 mysql과 마찬가지로 실행시에 몇가지 옵션을 주어서 사용자나 데이터베이스를 선택할 수 있도록 하고 있다.

다음은 가장 일반적으로 사용되는 isql의 구동 방법으로, sysdba라는 사용자로 로그인하며, masterkey라는 암호를 사용하고, /new.gdb라는 데이터베이스에 접속한다는 의미로 해석할 수 있다.

isql -user sysdba -password masterkey /new.gdb

문제가 없다면 SQL을 입력받을 수 있음을 나타내는 'SQL>' 프롬프트가 떨어지고 여기서 SQL문을 입력해 여러 가지 작업을 수행할 수 있다. SQL문은 여러 줄을 동시에 쓸 수 있으나 항상 종료를 나타내는 세미콜론(;)을 사용해야 한다. isql의 더 자세한 사용방법은 doc 폴더의 OpGuide.pdf의 isql 편을 참조하고 사용가능한 SQL문에 대해서는 LangRef.pdf를 읽기를 권한다. 인터베이스에 관한 거의 모든 필수적인 작업은 isql에서 수행할 수 있으며, 백업이라든가 하는 특별한 작업의 경우에만 같이 포함된 다른 유틸리티들을 사용하게 된다.

개발 툴과의 연동
윈도우에서 인터베이스에 연동하는 데이터베이스 애플리케이션을 만든다면 대개는 비주얼 베이직이나 델파이 같은 RAD 툴로 작업하게 될 것이다. 여기서 델파이는 인터베이스와 연동하는데 전혀 문제가 없다. BDE가 인터베이스를 지원하기 때문에 BDE를 경유한 접속을 해도 되고 특히 인터베이스 6부터는 IBX(InterBase Express)라는 인터베이스와 연결하기 위한 전용 컴포넌트가 지원되기 때문에 전혀 불편함없이 작업할 수 있다.

문제가 되는 것은 비주얼 베이직 등 다른 회사의 개발도구를 사용할 때이다. 물론 인터베이스는 C Functions 타입의 API를 제공하고 있고 이를 이용해 접속하면 모든 기능을 제한없이 사용할 수 있다. 하지만 그렇게 하게 되면 RAD 툴의 가장 큰 장점인 컴포넌트를 이용한 빠른 개발이 불가능해지기 때문에 문제가 된다. 이 경우는 액티브X로 많이 쓰이는 DAO/RDO/ADO 컴포넌트뿐만 아니라 TrueDBGrid 등 수많은 종류의 데이터베이스 관련 써드파티 컨트롤도 전혀 사용할 수 없게 되기 때문에 곤란해진다.

인터베이스만한 DBMS를 공짜로 사용할 수 있다는 점은 분명히 매력적이지만 이를 위해 볼랜드의 개발 도구만을 써야 한다면 아무래도 망설여지는 것은 어쩔 수 없다. 이 경우 가능한 연결 방법은 데이터베이스 연결의 표준규약인 ODBC나 OLE DB 서비스 프로바이더를 사용하는 것일텐데 필자가 가장 어려움을 겪은 것이 바로 이 부분이다. 볼랜드에서 제공하는 인터베이스 패키지에는 ODBC가 빠져 있었고, 인터넷을 다니면서 얻은 인터베이스 6용의 ODBC 드라이버는 전부 평가판 내지는 100달러 정도의 상용이었다. 사실 DBMS는 무료인데 이를 연동하기 위한 드라이버에 100달러나 돈을 투자한다는 것은 뭔가 주객이 전도된 것 같은 느낌이 들어 기분이 나쁘다. 또한 과거 버전의 ODBC 드라이버는 인터베이스 6에는 잘 맞지 않았다. 여러 종류의 ODBC 드라이버들을 테스트해 보았는데 어떤 것은 작동되지 않고 또 어떤 것은 7일 혹은 31일만 사용가능한 평가 버전이었고, 오로지 한 드라이버만 아무 제한이나 에러없이 사용할 수 있었다.

앞서 말한대로 인터베이스는 소스 오픈된 이후 여러가지 변종들이 많이 배포되고 있는데 필자가 권장하는 것은 http://ibwise.delphihost.com/download/ibwin32.zip 의 설치 이미지로 여기에는 인터베이스의 설치 이미지와 더불어 패치된 IB콘솔과 클라이언트 툴, 문서, 그리고 접속을 위한 예제 프로그램과 가장 중요한 ODBC 드라이버까지 포함되어 있다. ODBC 드라이버는 5.x대의 것이지만 문제없이 잘 작동한다.

또한 윈도우에서는 새로운 데이터베이스 객체인 ADO 모델이 도입되면서 OLE DB 프로바이더를 사용하게 되었는데, 인터베이스는 아직 OLE 데이터베이스를 지원하지 않고 있다. 하지만 여러 곳에서 OLE DB를 지원하게끔 하려는 시도가 지속적으로 이루어지고 있으므로 조만간 OLE DB도 사용할 수 있게 되리라 기대해 봄직하다.

그외 PHP에서는 인터베이스 관련 함수들이 제공되고 있고, 펄을 위한 모듈도 개발되어 있으므로 웹 페이지와의 연동에는 전혀 무리가 없을 것으로 보인다. 앞서 언급한 대로 API에 C코드로 직접 접근해서 쓰는 방법도 있는데, 여기에는 임베디드 SQL이라는 매우 훌륭한 요소가 하나 있다. 임베디드 SQL에 대해서는 다음 단락에서 좀더 자세히 다루도록 하자.

임베디드 SQL 지원
임베디드 SQL은 제대로만 사용하면 인터베이스가 다른 공개 DBMS에 대해서 대단한 강점을 가질 수 있다고 생각되는 부분중의 하나이다. 현재 가장 많이 사용되는 DBMS의 하나인 오라클에는 전용의 프리프로세서인 Pro*C/C++이 있다는 것은 이미 널리 알려진 사실이다. Pro*C/C++을 사용하면 표준 C/C++의 코드 안에 오라클의 SQL 명령문들을 내장해서 C/C++의 함수들로부터 인자를 주고받을 수 있기 때문에 데이터베이스를 사용하는 애플리케이션에서는 대단히 편리하고 강력하게 사용될 수 있다. 하지만 이런 임베디드 SQL은 특정 DBMS와 같이 공급되는 개발 도구를 사용해야 가능한 일이었는데, 잘 알려지지 않은 사실이지만 인터베이스는 이러한 형태의 임베디드 SQL을 지원하고 있다.

인터베이스는 오라클과 같이 C 소스 안에 'EXEC SQL'로 시작하는 SQL 문장 블록을 끼워 넣으면 그대로 실행되는 파일을 만들 수 있다. 하지만 별도의 컴파일러를 제공하는 것은 아니며, 이렇게 해서 만든 소스를 인터베이스의 SQL 프리프로세서인 gpre로 처리하면 사용된 임베디드 SQL을 C로 전환한 소스를 얻게 되고 바로 컴파일할 수 있게 된다. 현재 임베디드 SQL을 지원하는 DBMS는 극히 적은데 공개된 인터베이스가 이런 기능을 지원한다는 점은 매우 놀라운 일이다.

윈도우에서는 개발 도구의 특성상 애플리케이션이 데이터베이스에 접속할 때 주로 ODBC나 OLE DB, IBX와 같은 표준화된 컴포넌트를 이용하게 되기 때문에 임베디드 SQL의 효용은 높지 않겠지만 주로 C를 이용해 API 코딩하게 되는 리눅스/유닉스상의 애플리케이션을 개발한다면 임베디드 SQL은 상당한 위력을 발휘할 것이다.

인터베이스용 JDBC 드라이버, 인터클라이언트
요즈음은 웹사이트 상에서 EJB나 JSP를 사용하는 경우가 점점 늘고 있다. 이는 자바의 확장성과 견고함 등이 인정받은 결과일텐데, 이런 사이트의 경우에도 인터베이스는 훌륭하게 사용될 수 있다. 인터베이스용의 JDBC 드라이버가 존재하기 때문이다. 이 드라이버의 이름은 '인터클라이언트(InterClient)'로 배포본에 포함되어 있지는 않으며, 역시 인터베이스의 공식 사이트에 가면 무료로 다운로드할 수 있다.

JRE 1.2를 사용하며 설치하면 예제 파일과 문서, 그리고 다분히 전략적으로 보이는 JBuilder용의 도움말이 포함되어 있다. 사용하는 방법은 간단하게 서비스에 해당하는 인터서버를 구동시킨 후 JDBC 규약에 의해서 접속하면 된다. 아마도 인프라이즈의 개발 도구인 JBuilder를 의식해서 이런 드라이버를 제공한다고 생각되는데 앞으로도 인터베이스가 자바에 대해 충분한 지원을 할 것이라는 기대를 해봄직하다. 참고로, 인터클라이언트는 바이너리만이 배포되고 있으며, Win32, 리눅스, 솔라리스 x86, HP 유닉스용의 이미지를 받을 수 있다.

인터베이스 커뮤니티, IBPheonix와 IBDI
현재 인터베이스는 먼저 소스가 오픈된 넷스케이프와 거의 비슷한 길을 걷고 있다. 넷스케이프사는 넷스케이프 6의 소스를 공개하고 오픈 소스 공동체에서 자유롭게 개발할 수 있도록 GPL을 적용했지만 다르게 말한다면 소스를 공동체에 맡겨버린 것이나 다름없다. 즉, 여태까지는 상업적인 가치를 갖는 상품이었기 때문에 회사 차원에서 비용을 들여서 업그레이드하고 시장에 내놓았지만 앞으로도 그러리라고는 기대할 수 없다는 것이다. 상품을 개발하는 데는 많은 비용이 들어가며 어디선가 그 비용이 충당되어야 한다. 가치를 창출할 수 없다면 회사 입장에서는 후방 지원은 할지언정 적극적으로 손댈 수 없음은 분명한 일이다.

이런 문제 때문에 넷스케이프는 경쟁자인 익스플로러 보다 매우 점진적으로 업그레이드되고 있고 그로 인해 사용자들의 많은 불만을 사고 있다. 이런 현실을 생각하면 일단 오픈소스 공동체로 넘어온 프로젝트는 공동체의 것으로 인식하고 성원들이 서로 협조하여 스스로 잘 키워나가지 않으면 안된다는 생각을 갖게 된다. 인터베이스 역시 앞으로 인프라이즈가 적극적으로 업그레이드해 나갈 것이라고 기대할 수는 없으며 따라서 사용자가 스스로 발전시켜 나가지 않으면 안될 것이다.

IBPheonix(www.ibphoenix.com)와 IBDI(www.interbase2000.com)는 이런 취지에서 결성된 웹사이트상의 그룹으로서 인터베이스의 업그레이드와 다른 운영체제로의 이식, 각종 개발 도구를 위한 모듈들을 만들고 배포하고 있다. 이미 어느 정도 가시적인 성과를 거두고 있는데 대표적으로 인터베이스를 FreeBSD로 이식한 것과 인터베이스를 지원하는 Perl/PHP모듈 등을 들 수 있다. 또한, 앞서 말한대로 넷스케이프가 공개되어 모질라라는 이름으로 다시 태어나는 것처럼 인터베이스도 소스포지에 둥지를 틀고 새로운 프로젝트명으로 새롭게 업그레이드 되어가고 있다. 그 이름은 파이어버드로, 인터베이스 6.0에 기초를 두고 여러가지 버그를 개선했으며 새로운 기능들을 추가해 현재 0.9 버전에 이르고 있다.

네트워크 상의 다른 그룹은 http://ibwise.delphihost.com 으로, 여기서는 인터베이스의 바이너리와 설치 이미지를 제공하고 있다. 여기서는 'Powered by Firebird'라는 로고도 제안하고 있으니 인터베이스를 유용하게 쓰고 있다면 좀더 많은 사람들이 그 혜택을 누릴 수 있도록 사이트 귀퉁이에 조그만 로고를 하나 붙여주는 것도 인터베이스의 발전에 기여할 수 있는 일이 아닐까. 결국 오픈소스 프로젝트는 이런 공동체 성원 하나하나의 지지에 의해 운영되는 것이기 때문이다.

인터베이스가 공개된지 그럭저럭 반년 가까이 지났지만 아직 잘 알려지지 않고 또 특정 개발 도구 전용 DBMS라는 오해 때문에 별로 사용되지 않는 현실이 아쉬워서 이런 글을 쓰게 되었는데 충분히 홍보가 되었기를 바랄 뿐이다. 앞서 언급한 대로 인터베이스는 현재 무료로 사용할 수 있는 가장 뛰어난 DBMS 솔루션중의 하나라고 말할 수 있으며, 이제 인프라이즈는 인터베이스를 공개했으니 이를 잘 키우고 가꿔나가는 것은 오픈소스 공동체의 몫이 되었다. 하지만 사용하는 사람들이 많아지고 관심을 가져야 인터베이스가 좀더 좋은 기능으로 앞으로도 잘 발전할 수 있으리라 생각된다. 짧은 글이지만 이 글로 인해 인터베이스가 널리 알려지고 한 사람이라도 더 사용하게 된다면 그걸로 자족할 수 있을 것 같다. (*)

- 정리·조혜란 기자 hrcho@pserang.co.kr
박지훈.임프 [cbuilder]   2005-11-25 02:31 X
몇년전에 지금은 폐간된 "프로그램세계"에 리뷰 기사로 실렸던 글입니다.
파이어버드 프로젝트가 겨우 본궤도에 올랐던 초기의 기사라 지금은 이런 저런 사정이 많이 바뀐 것이 많습니다만, 그래도 볼만한 부분도 적지 않아 퍼둡니다.

프로그램세계가 폐간되고 나서 프세에 실렸던 많은 좋은 기사들이 사장되어버렸는데, 다행히 이 기사는 제 피씨에 저장되어 있었네요.

+ -

관련 글 리스트
23 [프세 리뷰기사] 파이어버드로 거듭나는 인터베이스 6.0 박지훈.임프 10317 2005/11/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.