'HSQLDB'에 해당되는 글 3건

Using HSQLDB with Ant :: 2009/08/13 23:43

HSQLDB는 작지만 종종 Java 어플리케이션 개발 단계에서 매우 유용하게 쓰이는 DB 중에 하나이다. 어플리케이션 구동과 함께 In-process 모드 구동되어 질수도 있고, TCP 리슨 포트를 사용하는 Server 모드로 구동되어 질 수도 있다. Server 모드로 DB를 시작하는 콘솔 명령과, 스키마 브라우징과 쿼리 실행을 제공하는 Database Manager를 실행하는 명령을 Ant Target으로 작성한 것이다.
<!-- Start HSQLDB Server -->
<!--( java -cp hsqldb.jar org.hsqldb.Server -database.0 file:mydb -dbname.0 xdb )-->
<target name="dbstart" description="Start HSQLDB Server">
    <java classname="org.hsqldb.Server"
          fork="yes"
          classpathref="project.classpath"
          failonerror="true">
        <arg value="-database.0" />
        <arg value="file:db/java2go" />
        <arg value="-dbname.0" />
        <arg value="java2go" />
    </java>
</target>

<!-- Start HSQLDB Manager -->
<!--( java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing )-->
<target name="dbmanager" description="Start HSQLDB Manager">
    <java classname="org.hsqldb.util.DatabaseManagerSwing"
          fork="yes"
          classpathref="project.classpath"
          failonerror="true">
        <arg value="-url" />
        <arg value="jdbc:hsqldb:hsql://localhost/java2go" />
        <arg value="-driver" />
        <arg value="org.hsqldb.jdbcDriver" />
    </java>
</target>

Swing 버전의 HSQL Database Manager를 이용하여 쿼리를 실행한 모습니다.
User inserted image

Database Engine Comparison :: 2009/06/17 23:32

Java DB(Derby, H2, HSQLDB), MySQL, PostgreSQL 데이터베이스 엔진 비교표이다.
Feature H2 Derby HSQLDB MySQL PostgreSQL
Pure Java Yes Yes Yes No No
Embedded Mode (Java) Yes Yes Yes No No
Performance (Embedded) Fast Slow Fast N/A N/A
In-Memory Mode Yes No Yes No No
Transaction Isolation Yes Yes No Yes Yes
Cost Based Optimizer Yes Yes No Yes Yes
Explain Plan Yes No Yes Yes Yes
Clustering Yes No No Yes Yes
Encrypted Database Yes Yes No No No
Linked Tables Yes No Partially *1 Partially *2 No
ODBC Driver Yes No No Yes Yes
Fulltext Search Yes No No Yes Yes
User-Defined Datatypes Yes No No Yes Yes
Files per Database Few Many Few Many Many
Table Level Locking Yes Yes No Yes Yes
Row Level Locking Yes *9 Yes No Yes Yes
Multi Version Concurrency Yes No No No Yes
Role Based Security Yes Yes *3 Yes Yes Yes
Updatable Result Sets Yes Yes *7 No Yes Yes
Sequences Yes No Yes No Yes
Limit and Offset Yes No Yes Yes Yes
Temporary Tables Yes Yes *4 Yes Yes Yes
Information Schema Yes No *8 No *8 Yes Yes
Computed Columns Yes No No No Yes *6
Case Insensitive Columns Yes No Yes Yes Yes *6
Custom Aggregate Functions Yes No No Yes Yes
Footprint (jar/dll size) ~1 MB *5 ~2 MB ~600 KB ~4 MB ~6 MB

*1 HSQLDB supports text tables.
*2 MySQL supports linked MySQL tables under the name 'federated tables'.
*3 Derby support for roles based security and password checking as an option.
*4 Derby only supports global temporary tables.
*5 The default H2 jar file contains debug information, jar files for other databases do not.
*6 PostgreSQL supports functional indexes.
*7 Derby only supports updatable result sets if the query is not sorted.
*8 Derby and HSQLDB don't support standard compliant information schema tables.
*9 H2 supports row level locks when using multi version concurrency.

출처: http://www.h2database.com/html/features.html#comparison

Derby vs. HSQLDB :: 2007/11/23 22:44

자바 임베디드 데이터베이스 중에 Apache Derby, HSQLDB(구 Hypersonic SQL), Berkeley DB Java Edition, H2 등등 많은 순수 자바로 구현된 데이터베이스가 많이 나와 있다.

이중에서 많이 쓰이는 것 중에 구 IBM Cloudscape에서 나온 Apache Derby 와 HSQLDB가 많이 쓰이는 듯 하다. 이들은 자바로 작성되어 있어 자바 가상 머신(JVM)이 있는 어느 곳에서나 실행될 수 있고, 모두 소형 DB에 적합한 형태이다.

구동 방식은 별도의 네트워크 서버로 동작하여 클라이언트-서버 연결(client-server connection) 형태로 동작하거나, Java 어플리케이션의 JVM에 안에 In-memory 형태의 임베디드 데이터베이스(embeded database)로  동작되어 질 수 있다.

Apache Derby 는 SUN의 JDK에 적극 채택되어 Java SE 6.0 에서 Java DB 라는 명칭으로 제공되어지고 있다. Derby 가 HSQLDB 보다 좀 더 큰 DB를 구성하는데 적합하다고 한다. 하지만 최근 HSQLDB도 버전업을 하면서 8G까지 지원을 하며, OpenOffice.org 2.0 의 데이어베이스 엔진으로 사용되어 지고 있고, 속도면에서는 HSQLDB가 Derby보다 우수하다고 한다.

최근 알게된 한 엔지니어에 따르면 국내 유명 APM 솔루션인 제니퍼(Jennifer)가 Derby를 DB로 사용하여 데이터를 게더링하고 있는데, 10G가 넘어도 잘 돌아간다고 Derby에 대한 칭찬을 아까지 않았다.

물론 메인 DB로 사용을 하려면 오라클, MySQL 과 같은 중대형 DB 솔루션을 찾아야 한다. 하지만 소형의 C/S 어플리케이션이나 솔루션에는 Apache Derby 나 HSQLDB 와 같은 소형 임베디드 데이터베이스가 좋은 대안이 될 수 있을 것 같다.