성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Roll A Lisp In C - Reading ; https...
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <div style='font-family: 맑은 고딕, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>.NET 프로그래머에게도 유용한 Firebird 무료 데이터베이스</div> <br /> Microsoft 제품군으로 개발을 하다 보면 무료 데이터베이스 사용에 고민이 되는 경우가 있습니다. 프로그래밍 수준에서 늘상 사용하던 SQL Compact/Express Edition과 궁합은 잘 맞는 데 각각 4GB, 10GB 한계가 있기 때문입니다. 눈을 돌려서 MySQL로 가자니 상업용에는 라이선스 제한이 걸리고, SQLite로 하려니 다중 EXE 프로세스에서의 접근성이 약하고.<br /> <br /> 그러다, 아래의 질문을 통해서 Firebird를 알게 되었습니다. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > 안녕하세요 다시 한번 문의를 드립니다.. ; <a target='_tab' href='http://www.sysnet.pe.kr/3/0/968'>http://www.sysnet.pe.kr/3/0/968</a> </pre> <br /> 비록 위의 질문에 대한 답변은 모자랐지만, 오히려 제가 위의 질문에 첨부된 소스 코드 덕분에 Firebird를 알게 되었습니다. ^^<br /> <br /> 검색을 해보니, 볼랜드 측에서 공개한 인터베이스 DB의 소스 코드를 개선해서 만든 RDBMS라고 하는군요. 특이한 것은 상업적인 응용 프로그램에도 아무런 장애없이 사용할 수 있다는 파격적인 라이선스입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > Firebird ; <a target='_tab' href='http://www.firebirdsql.org'>http://www.firebirdsql.org</a> </pre> <br /> Firebird는 classic과 super server라는 2가지 설치 모델이 있는데, 윈도우 운영체제라면 super server가 적합하다고 합니다. Super Server는 전용 프로세스가 제공이 되며 클라이언트 프로세스는 해당 DB 파일을 직접 열 수 없고 모든 SQL 명령을 서버 프로세스를 경유해서 실행하는 모델입니다.<br /> <br /> 제가 테스트 한 버전은 2010-10-04일에 릴리즈한 2.5.0 버전으로 Windows의 경우 다음과 같이 x86/x64에 대해 각각 2가지 파일이 제공됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > Firebird-2.5.0.26074_1_Win32.exe ; <a target='_tab' href='http://sourceforge.net/projects/firebird/files/firebird-win32/2.5-Release/Firebird-2.5.0.26074_1_Win32.exe/download'>http://sourceforge.net/projects/firebird/files/firebird-win32/2.5-Release/Firebird-2.5.0.26074_1_Win32.exe/download</a> Firebird-2.5.0.26074-0_Win32.zip ; <a target='_tab' href='http://sourceforge.net/projects/firebird/files/firebird-win32/2.5-Release/Firebird-2.5.0.26074-0_Win32.zip/download'>http://sourceforge.net/projects/firebird/files/firebird-win32/2.5-Release/Firebird-2.5.0.26074-0_Win32.zip/download</a> Firebird-2.5.0.26074_1_x64.exe ; <a target='_tab' href='http://sourceforge.net/projects/firebird/files/firebird-win64/2.5-Release/Firebird-2.5.0.26074_1_x64.exe/download'>http://sourceforge.net/projects/firebird/files/firebird-win64/2.5-Release/Firebird-2.5.0.26074_1_x64.exe/download</a> Firebird-2.5.0.26074-0_x64.zip ; <a target='_tab' href='http://sourceforge.net/projects/firebird/files/firebird-win64/2.5-Release/Firebird-2.5.0.26074-0_x64.zip/download'>http://sourceforge.net/projects/firebird/files/firebird-win64/2.5-Release/Firebird-2.5.0.26074-0_x64.zip/download</a> </pre> <br /> .exe 설치 파일을 통해 셋업을 하는 것도 가능하지만, .zip 파일의 압축을 풀고 명령행에서 배치 파일을 통해 수작업 셋업을 할 수 도 있습니다. 웹 자료의 대부분을 보면 설치 프로그램을 통해 설명이 되어 있어서 그 부분은 생략하고, 배치 파일을 통한 셋업의 경우에는 다음의 문서에서 자세하게 설명해 주고 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > Firebird 처음 사용하기 ; <a target='_tab' href='http://javaseed.com/tc/ccj/204'>http://javaseed.com/tc/ccj/204</a> </pre> <br /> 위의 문서에도 나오듯이 수작업 설치 자체도 상당히 간편한데, 단순히 다운로드 받은 zip 압축을 풀고 (관리자 권한으로) install_super.bat을 실행시키면 끝입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > C:\temp\Firebird-2.5.0.26074-0_Win32\bin><b style='COLOR: blue'>install_super.bat</b> instreg version WI-V2.5.0.26074 Firebird 2.5 Firebird has been successfully installed in the registry. instsvc version WI-V2.5.0.26074 Firebird 2.5 Service "<b style='COLOR: blue'>Firebird Guardian - DefaultInstance</b>" successfully created. Service "<b style='COLOR: blue'>Firebird Server - DefaultInstance</b>" successfully created. Service "Firebird Guardian - DefaultInstance" successfully started. </pre> <br /> 그럼, NT 서비스 관리자에서 "Firebird Guardian - DefaultInstance"와 "Firebird Server - DefaultInstance"라는 새로운 서비스가 등록된 것을 확인할 수 있고, 사용하는 소켓 포트는 기본적으로 TCP 3050으로 결정되고, 아울러 설치 경로를 알 수 있도록 다음과 같은 레지스트리 등록도 함께 설정됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > x86/x64 Key : <b style='COLOR: blue'>HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances</b> x64 Wow6432 Key: <b style='COLOR: blue'>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Firebird Project\Firebird Server\Instances</b> Type: <b style='COLOR: blue'>REG_SZ</b> Name: <b style='COLOR: blue'>DefaultInstance</b> Data: C:\temp\Firebird-2.5.0.26074-0_Win32\ </pre> <br /> 물론, 다중 NT 서비스를 설치하는 것도 가능합니다. 예를 들어, 이미 "DefaultInstance" 관련 NT 서비스가 설치된 상태에서 다음과 같이 명령을 내리면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > C:\temp\Firebird-2.5.0.26074-0_Win32\bin><b style='COLOR: blue'>install_super.bat TestInstance</b> instsvc version WI-V2.5.0.26074 Firebird 2.5 Service "<b style='COLOR: blue'>Firebird Guardian - TestInstance</b>" successfully created. Service "<b style='COLOR: blue'>Firebird Server - TestInstance</b>" successfully created. Service "Firebird Guardian - TestInstance" successfully started. </pre> <br /> 보는 바와 같이 "Firebird Guardian - TestInstance"와 "Firebird Server - TestInstance" 2개의 NT 서비스가 추가되지만 레지스트리에는 여전히 DefaultInstance 하나만 있습니다. 왜냐하면, install_super.bat 파일 내용을 보면, 인자가 지정되어 실행되는 경우에는 레지스트리 설정을 안하도록 되어 있기 때문입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > ==== install_super.bat ==== @echo off <b style='COLOR: blue'>if "%1"=="" ( instreg install -z )</b> setlocal set INSTALL_SERVICE=install -auto -superserver -guardian -z set START_SERVICE=start if not "%1"=="" ( set INSTALL_SERVICE=%INSTALL_SERVICE% -n %1 set START_SERVICE=%START_SERVICE% -n %1 ) instsvc %INSTALL_SERVICE% instsvc %START_SERVICE% endlocal </pre> <br /> 확실하게는 파악하지는 않았지만, 다중 인스턴스를 사용하는 경우를 꼽으라면 아래의 문서에 나오는 것처럼 다중 버전의 Firebird를 설치하는 경우가 될 듯 싶습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > Running several Firebird Instances per Server Machine ; <a target='_tab' href='http://www.destructor.de/firebird/multiinstance.htm'>http://www.destructor.de/firebird/multiinstance.htm</a> </pre> <br /> 이는 SQL 서버와도 약간 비슷한 개념이긴 한데, Firebird의 경우 다중 인스턴스를 설치하면 포트를 반드시 바꿔주어야 하는 제약이 있습니다. 예를 들어, 1.5 버전은 3050 포트에서 서비스하고, 2.0 버전은 3051 포트에서 서비스하도록 지정해야 의미가 있는 것입니다. (아마도, SQL 서버처럼 연결 문자열에서 ".\SQLEXPRESS"와 같은 식으로 인스턴스를 지정하는 것처럼 Firebird도 포트를 바꾸지 않고 인스턴스를 지정하는 방법이 있을 것 같은데... 못 찾았습니다.)<br /> <br /> 인스턴스 관련해서 또 한가지 문제가 있는데요. Firebird를 설치하는 경우 레지스트리 키(HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances)가 등록된다고 했는데, uninstall.bat 파일의 내용에 따르면 '인자' 없이 실행한 uninstall.bat에 의해서 모든 레지스트리 키 항목이 삭제된다는 점입니다. (레지스트리 관련해서는 정책이 다소 혼동스러운 것 같습니다.)<br /> <br /> 따라서, 제 생각에는 Firebird 관련 응용 프로그램을 만들 때 (HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances) 키에 의존하지 않는 편이 좋을 것 같습니다. 즉, 자신의 응용 프로그램을 위해 배포되는 전용 Firebird를 설치한다고 가정하고 아예 install_super.bat 실행 시에 무조건 인자를 넣어서 레지스트리에 아무런 등록도 발생하지 않도록 실행하고, 포트 중복도 피하기 위해 "[설치폴더]/firebird.conf" 파일에 RemoteServicePort 값을 바꿔주는 것이 권장됩니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 이것으로, 설치가 완료되었으면 테스트를 해봐야 할텐데, 역시 그다지 어렵지 않습니다.<br /> <br /> (위의 예제에 따라 정해진) C:\temp\Firebird-2.5.0.26074-0_Win32\bin 폴더로 이동해서 isql.exe를 실행한 후, 다음과 같이 차례대로 실행하면서 DB 생성 및 제거까지를 해보면 되겠습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > SQL> <b style='COLOR: blue'>create database</b> 'c:\temp\test.fdb' <b style='COLOR: blue'>user</b> 'SYSDBA' <b style='COLOR: blue'>password</b> 'masterkey'; SQL> <b style='COLOR: blue'>commit;</b> SQL> <b style='COLOR: blue'>connect</b> 'c:\temp\test.fdb' <b style='COLOR: blue'>user</b> 'SYSDBA' <b style='COLOR: blue'>password</b> 'masterkey'; Database: 'c:\temp\test.fdb', User: SYSDBA SQL> <b style='COLOR: blue'>CREATE TABLE</b> TESTTABLE (NAME <b style='COLOR: blue'>VARCHAR(50) NOT NULL PRIMARY KEY</b>, DESCRIPTION <b style='COLOR: blue'>VARCHAR(150) NOT NULL</b>); SQL> <b style='COLOR: blue'>show tables;</b> TESTTABLE SQL> <b style='COLOR: blue'>DROP DATABASE;</b> SQL> <b style='COLOR: blue'>quit;</b> </pre> <br /> 실행한 SQL 쿼리 구문에 대해서 외부 파일을 지정하는 것도 가능합니다. 예를 들어, 다음과 같이 test.txt 파일을 구성하고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > ==== test.txt ==== create database 'c:\temp\test.fdb' user 'SYSDBA' password 'masterkey'; commit; connect 'c:\temp\test.fdb' user 'SYSDBA' password 'masterkey'; CREATE TABLE TESTTABLE (NAME VARCHAR(50) NOT NULL PRIMARY KEY, DESCRIPTION VARCHAR(150) NOT NULL); </pre> <br /> 아래와 같이 "-i" 옵션으로 해당 파일을 지정해서 isql을 실행하면 끝!<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > C:\temp\Firebird-2.5.0.26074-0_Win32\bin><b style='COLOR: blue'>isql -i "C:\temp\test.txt"</b> Use CONNECT or CREATE DATABASE to specify a database C:\temp\Firebird-2.5.0.26074-0_Win32\bin> </pre> <br /> 어떠세요? 이만하면 설치도 간편하고, 용량 제한도 없는 데다 RDBMS라서 SQL 서버와 유사하게 사용도 되니 상당히 유용한 무료 데이터베이스가 될 것 같습니다.<br /> <br /><br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
2125
(왼쪽의 숫자를 입력해야 합니다.)