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

FireBird 강좌/문서
[11] Firebird 1.5 Embedded Server 사용법
박지훈.임프 [cbuilder] 22118 읽음    2005-08-30 22:19

Firebird 1.5 Embedded Server



1 개요


파이어버드 임베디드 서버는 동적 링크 라이브러리(fbembed.dll)의 형태로 링크되는 완전한 기능을 갖춘 데이터베이스 서버입니다. 임베디드 서버는 일반적인 데이터베이스 서버와 똑같은 기능을 가지고 있으며 표준 파이어버드 API 엔트리포인트들을 엑스포트합니다.

2 주의할 점과 한계점



2.1 레지스트리


파이어버드 레지스트리 항목들은 무시됩니다. 임베디드 서버의 루트 디렉토리는 바이너리 파일(라이브러리)가 존재하는 디렉토리입니다.

2.2 데이터베이스 액세스


클라이언트 액세스는 로컬 프로토콜로만 가능합니다. 예를 들어 서버 이름 "localhost"나 IP 주소 127.0.0.1를 포함하는 TCP/IP 연결 스트링은 사용할 수 없습니다. 임베디드 서버는 서버 이름 없이 데이터베이스 파일에 대한 IPServer "local connect"만을 지원합니다. 클라이언트는 해당 데이터베이스 파일에 대해 배타적인 액세스를 해야 합니다(다른 클라이언트와 동시에 연결할 수 없습니다).
임베디드 서버는 로컬 머신에 존재하는 데이터베이스에 단일 클라이언트 액세스를 하는 로컬 서버로 동작합니다. 또한 보통의 클라이언트 라이브러리(fbclient.dll)처럼 다른 호스트들로의 모든 호출을 리다이렉션하는 원격(remote) 게이트웨이로 동작할 수도 있습니다.

2.3 인증과 보안


보안 데이터베이스(security.fdb)는 임베디드 서버에서 사용되지 않으므로 필요하지 않습니다. 어떤 사용자든지 어떤 데이터베이스든 접속할 수 있습니다. 서버와 클라이언트가 동일한 주소 공간에서 실행되므로, 보안은 클라이언트와 서버 사이에서 쉽게 절충될 수 있는 단순한 동의의 문제가 됩니다.
하지만 SQL 권한(privileges)은 그대로 체크된다는 점을 유의하십시오.

2.4. 호환성


개발자들은 임베디드 서버로 필요한 만큼 얼마든지 많은 애플리케이션을 충돌 없이 실행할 수 있습니다. 인터베이스/파이어버드 서버가 실행중인지 여부는 전혀 문제가 되지 않습니다.
하지만 동시에 여러 임베디드 서버들로부터 단일 데이터베이스를 액세스할 수는 없다는 것을 염두에 두어야 합니다. 임베디드 서버는 슈퍼서버 아키텍처를 사용하기 때문에 연결된 데이터베이스를 배타적으로 잠급니다(lock).

3 사용법


단지 fbembed.dll 파일을 여러분의 애플리케이션과 같은 디렉토리에 복사해두기만 하면 됩니다. 다음으로 그 파일을 여러분의 데이터베이스 연결 소프트웨어에 따라 fbclient.dll 혹은 gds32.dll로 이름을 변경하십시오.
그리고 나서 여러분의 애플리케이션을 실행하면 임베디드 서버는 클라이언트 라이브러리로서 동작하게 되며 로컬 데이터베이스에 액세스할 수 있게 됩니다. 또한 필요한 경우 firebird.msg 파일과 firebird.conf 파일도 같은 디렉토리에 복사해야 합니다.

여러분의 애플리케이션에서 외부 라이브러리가 필요한 경우에는 별도로 배치해야 합니다. 가장 흔하게는, INTL 지원(fbintl.dll)이나 UDF 파이브러리가 이런 경우에 해당합니다. 이들 파일들을 이용하려면 파이어버드 서버와 유사하게 디렉토리를 구성해야 합니다. 예를 들면 /intl 혹은 /udf 서브디렉토리처럼 말입니다.

c:\my_app\app.exe 여러분의 애플리케이션
c:\my_app\gds32.dll fbembed.dll을 이름 변경한 파일
c:\my_app\ib_util.dll 파이어버드 임베디드 서버 패키지에 포함된 파일
c:\my_app\firebird.conf 파이어버드 임베디드 서버 패키지에 포함된 파일
c:\my_app\firebird.msg 파이어버드 임베디드 서버 패키지에 포함된 파일
c:\my_app\intl\fbintl.dll 파이어버드 임베디드 서버 패키지에 포함된 파일
c:\my_app\udf\fbudf.dll 파이어버드 임베디드 서버 패키지에 포함된 파일

만약 이름을 변경한 fbembed.dll을 제외한 나머지 파이어버드 파일들을 별개의 디렉토리에 배치하려고 한다면, 다음의 예와 같이 firebird.conf 파일을 수정해서 RootDirectory를 파이어버드 디렉토리 트리로 설정해야 합니다.
c:\my_app\app.exe
c:\my_app\gds32.dll
c:\my_app\ib_util.dll
c:\my_app\firebird.conf
d:\fb\firebird.msg
d:\fb\intl\fbintl.dll
d:\fb\udf\fbudf.dll
firebird.conf:
RootDirectory = d:\fb

4 최소 설치


최소 설치를 위해서는 여러분의 애플리케이션 디렉토리에 다음과 같은 파일들이 필요합니다.
c:\myapp\app.exe 여러분의 애플리케이션
c:\myapp\fbembed.dll 파이어버드 임베디드 서버 패키지에 포함된 fbembed.dll 파일
(이 파일을 fbclient.dll, gds32.dll 등으로 이름 변경할 수 있고, 만약 여러분의 애플리케이션에서 지원한다면 fbembed.dll라는 이름을 그대로 둘 수도 있습니다.
(역자주: VCL의 dbExpress에서는 클라이언트 라이브러리 파일 이름을 지정할 수 있습니다)
c:\myapp\mydb.fdb 여러분의 데이터베이스 파일 (로컬 드라이브의 어떤 디렉토리이든 관계 없음)
c:\myapp\intl\fbintl.dll 파이어버드 임베디드 서버 패키지에 포함된 fbintl.dll 파일.
이 파일은 intl이라는 이름의 서브디렉토리에 위치해야 한다는 것을 주의하십시오.

여러분의 애플리케이션이 사용자 정의 함수(UDF)를 사용하는 경우 위의 3장에서 설명한 것처럼 위치시켜야 합니다.

원문 : http://www.destructor.de/firebird/1.5/embedded.htm
박지훈.임프 [cbuilder]   2005-08-30 22:19 X
이갑연님이 팁 게시판에 올리신 글도 참고하세요.
http://interbase.borlandforum.com/impboard/impboard.dll?action=read&db=ib_tip&no=7
박지훈.임프 [cbuilder]   2006-06-07 00:39 X
파이어버드 임베디드 2.0에서는 다음 세개의 파일이 추가로 더 필요합니다.
icudt30.dll, icuin30.dll, icuuc30.dll

1.5x 버전에서는 fbembed.dll만이 필수이고 나머지는 모두 없어도 실행 자체에는 문제가 없었지만, 2.0에서는 이 추가된 세개의 dll 파일들이 하나라도 없으면 fbembed.dll이 아예 로드가 안됩니다.

+ -

관련 글 리스트
11 Firebird 1.5 Embedded Server 사용법 박지훈.임프 22118 2005/08/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.