- HSQLDB 환경 설정
- 사용자 가이드
- Server 모드 설정
- In-process 모드 설정
- 관리자 가이드
- 관리용 SQL
- hsql.bash
- server.properties
- sqltools.rc
- 참고 문헌
Java 기반의 DB인 HSQLDB를 정리 한다.
다운로드 : http://sourceforge.net/project/showfiles.php?group_id=23316
플랫폼 : Java
HSQLDB 환경 설정
Jetty에서 Java 기반의RDBMS인 HSQLDB를 사용하여 RDBMS 개발 환경을 구성해 보자.
환경 변수 정의
$JETTY_HOME : Jetty가 설치된 폴더
$JETTY_WEB_ROOT : Web Application 배포된 Root 폴더, $JETTY_HOME/webapps/test/
http://localhost:8080/ : $JETTY_WEB_ROOT 에 브라우저로 접속하는 URL
HSQLDB 사이트에서 상단의 download 링크를 클릭 한다.
"Download Now!" 버튼을 클릭하여 hsqldb-2.0.0-rc9.zip 파일을 다운로드 한다.
압축을 풀어 hsqldb.jar를 $JETTY_WEB_ROOT/WEB-INF/lib/ 폴더에 복사 한다.
HSQLDB 관리를 위해 $JETTY_HOME/startHsqldbManager.cmd 파일을 다음과 같이 생성 한다.
startHsqldbManager.cmd 를 실행하면 관리자용 GUI가 실행된다.
@echo off
set JAVA_HOME=../java
set PATH=../java/bin;%PATH%
java -classpath webapps/test/WEB-INF/lib/hsqldb.jar org.hsqldb.util.DatabaseManager
rem pause
- $WebContent/WEB-INF/web.xml
$WebContent/WEB-INF/context.xml에서 php.ini 파일 등을 지정 한다.
사용자 가이드
Server 모드 설정
Server 모드는 독립된 서버 프로세스로 실행하는 것으로 로컬 또는 원격지에서 HSQLDB에 접근할 수 있다.
HSQLDB 관리를 위한 GUI 도구
java -classpath hsqldb.jar org.hsqldb.util.DatabaseManager
HSQLDB 실행
java -classpath hsqldb.jar org.hsqldb.Server
HSQLDB 종료
DataManager에서 "shutdown" query를 실행
HSQLDB 설정 파일
server.properties
HSQLDB에서 Database Server 실행
java -classpath hsqldb.jar org.hsqldb.Server -database.0 file:data/test -dbname.0 testUrl
Default Port : 9001
-database.0 file:data/test : 데이터베이스가 사용할 경로와 파일명 형식(test.*)을 명시
data라는 폴더에 test.* 파일이 생성됨
-dbname.0 testUrl : 데이터베이스의 alias를 지정. alias는 애플리케이션에서 jdbc를 통해 hsqldb에 접근할 때 사용
url로 "jdbc:hsqldb:hsql://localhost/testUrl" 를 사용함
인덱스는 0에서 9까지 사용 가능 (예, -database.3)
-port 9001
참고 문헌 : http://www.hsqldb.org/doc/src/org/hsqldb/server/Server.html
HSQLDB 접속
Class.forName("org.hsqldb.jdbc.JDBCDriver");
Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/testUrl", "SA", "");
server.properties
### ============================================================================
### 프로그램 명 : server.properties ver 0.00.001
### 프로그램 설명 : HSQLDB Server를 위한 설정
### 작성자 : 산사랑 (pnuskgh(골뱅이)gmail.com)
### 작성일 : 2013.12.12 ~ 2013.12.12
### --- [관리](History) ---------------------------------------------------------
### 수정자 :
### 수정일 :
### 수정 내용 :
### --- [Copyright](Copyright.md) ------------------------------------------------------------
### Copyright (c) 1995~2013 pnuskgh, 오픈소스 비즈니스 컨설팅
### All rights reserved.
### ============================================================================
### ----------------------------------------------------------------------------
### HSQLDB Server 기본 설정
### server.port : Port, Default port는 9001
### server.database.0 : 0번째 데이터베이스 이름 (0, 1, 2, ..., 9)
### server.dbname.0 : 0번째 데이터베이스에 접속하기 위해 사용하는 이름
### conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/${server.dbname.0}", "SA", "");
### server.silent : true. 콘솔에 다양한 메시지 출력
### ----------------------------------------------------------------------------
server.port=9002
server.database.0=/nas/database/hadoop
server.dbname.0=hadoop
server.silent=true
### ============================================================================
In-process 모드 설정
In-process 모드는 HSQLDB를 애플리케이션과 동일한 프로세스에서 HSQLDB를 실행하는 모드로 자체 DB를 필요로 하는 어플리케이션이나 캐시와 같은 임시 데이터를 처리하는 데 이용 한다.
In-process 모드는 메모리에 DB를 저장할 수 있고 또는 File 형태로 DB를 저장할 수 있다.
HSQLDB 관리를 위한 GUI 도구
java -classpath hsqldb.jar org.hsqldb.util.DatabaseManager
HSQLDB 설정 파일
server.properties
HSQLDB 접속
Class.forName("org.hsqldb.jdbc.JDBCDriver");
Connection c = DriverManager.getConnection("jdbc:hsqldb:file:/opt/db/testdb", "SA", "");
Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:mymemdb", "SA", "");
관리자 가이드
관리용 SQL
테이블 목록 보기
select *
from information_schema.system_tables
where table_type = 'TABLE'
select *
from information_schema.tables
where table_type != 'VIEW';
hsql.bash
#!/usr/bin/env bash
### ----------------------------------------------------------------------------
### funcUsing()
### 사용법 표시
### hsql.bash help
### hsql.bash start #--- 모든 DB startup
### hsql.bash stop default #--- default DB shutdown
### hsql.bash console default #--- default DB에 접속
### hsql.bash console default -e "select * from aaa"
### hsql.bash console default -f ~.sql
### TODO : status, version
### ----------------------------------------------------------------------------
#--- 코드 생략
case "$PROGRAM" in
help)
funcHelp
${JAVA_HOME}/bin/java -classpath ${HSQLDB_CLASSPATH} org.hsqldb.Server --help
;;
start)
cd ${HSQLDB_HOME}/logs
nohup ${JAVA_HOME}/bin/java ${JAVA_OPTS} -classpath ${HSQLDB_CLASSPATH} \
org.hsqldb.Server --props ${HSQLDB_HOME}/conf/server.properties ${ARGS} &
;;
status)
ps -ef | grep org.hsqldb.Server | grep -v grep
;;
stop)
if ["${ARGS}" == "" ](); then
echo "Please run next commands"
for line in `/bin/grep server.dbname ${HSQLDB_HOME}/conf/server.properties | /bin/grep -v "#"`; do
line=`echo $line | sed -e 's/server.dbname.0=//g'`
line=`echo $line | sed -e 's/server.dbname.1=//g'`
line=`echo $line | sed -e 's/server.dbname.2=//g'`
line=`echo $line | sed -e 's/server.dbname.3=//g'`
line=`echo $line | sed -e 's/server.dbname.4=//g'`
line=`echo $line | sed -e 's/server.dbname.5=//g'`
line=`echo $line | sed -e 's/server.dbname.6=//g'`
line=`echo $line | sed -e 's/server.dbname.7=//g'`
line=`echo $line | sed -e 's/server.dbname.8=//g'`
line=`echo $line | sed -e 's/server.dbname.9=//g'`
line=`echo $line`
echo " hsql.bash stop" $line
done
else
${EXEC} ${JAVA_HOME}/bin/java ${JAVA_OPTS} -classpath ${HSQLDB_CLASSPATH} \
-jar ${HSQLDB_HOME}/lib/sqltool.jar \
--rcFile=${HSQLDB_HOME}/conf/sqltool.rc --sql="shutdown;" ${ARGS}
fi
;;
console)
if [-n "${SQL_STR}" ](); then
${EXEC} ${JAVA_HOME}/bin/java ${JAVA_OPTS} -classpath ${HSQLDB_CLASSPATH} \
-jar ${HSQLDB_HOME}/lib/sqltool.jar \
--rcFile=${HSQLDB_HOME}/conf/sqltool.rc --sql="${SQL_STR}" ${ARGS}
elif [-n "${SQL_FILE}" ](); then
${EXEC} ${JAVA_HOME}/bin/java ${JAVA_OPTS} -classpath ${HSQLDB_CLASSPATH} \
-jar ${HSQLDB_HOME}/lib/sqltool.jar \
--rcFile=${HSQLDB_HOME}/conf/sqltool.rc ${ARGS} ${HSQLDB_HOME}/sql/${SQL_FILE}
else
${EXEC} ${JAVA_HOME}/bin/java ${JAVA_OPTS} -classpath ${HSQLDB_CLASSPATH} \
-jar ${HSQLDB_HOME}/lib/sqltool.jar \
--rcFile=${HSQLDB_HOME}/conf/sqltool.rc ${ARGS}
fi
;;
version)
/bin/grep 'HSQLDB server' ${HSQLDB_HOME}/logs/nohup.out | /bin/awk '{print $4, $5, $6, $10, $11}' | /usr/bin/tail -1
;;
esac
exit 0
server.properties
server.port=9003
server.silent=true
server.database.0=file:/nas/appl/hsqldb/database/default
server.dbname.0=default
server.database.1=file:/nas/appl/hsqldb/database/hadoop
server.dbname.1=hadoop
sqltools.rc
urlid default
url jdbc:hsqldb:hsql://node201.hadoop.com:9003/default
username SA
password
urlid hadoop
url jdbc:hsqldb:hsql://node201.hadoop.com:9003/hadoop
username SA
password
참고 문헌
HSQLDB User Guide
[[Category:오픈소스|Category:오픈소스]]
분류: Database