HSQLDB

HSQLDB(Hyper SQL Database, 하이퍼 SQL 데이터베이스)는 자바로 작성된 관계형 데이터베이스 관리 시스템이다. JDBC 드라이버를 갖추고 있으며 SQL-92, SQL:2008, SQL:2011 표준의 상당 부분을 지원한다. 고속의 소형 (버전 2.2 기준으로 약 1300 킬로바이트) 데이터베이스 엔진을 제공하며 인메모리와 디스크 기반 테이블을 둘 다 제공한다. 임베디드 및 서버 모드 둘 다 이용 가능하다.

게다가 초소형 웹 서버, 명령 줄, GUI 관리 도구(애플릿으로 실행 가능) 등의 도구들과 수많은 데모 예제를 포함하고 있다. Kaffe와 같은 자바 구현체를 포함하여 버전 1.1 이상의 자바 런타임에서 실행할 수 있다.

HSQLDB는 BSD 허가서로 배포된다. 수많은 오픈 소스 소프트웨어 프로젝트의 데이터베이스 및 영구적인 엔진으로 이용되며, 이를테면 오픈오피스 베이스, 리브레오피스 베이스, 스탠드얼론 롤러 데모, Jitsi VoIP, 그리고 버전 2.6 이상의 화상회의 클라이언트를 들 수 있다. 매스매티카와 인스톨애니웨어(버전 8.0부터)와 같은 상용 제품에도 사용된다.

 트랜잭션 지원 
HSQLDB 버전 2.0은 세 가지 트랜잭션 제어 모드를 갖추고 있다. 테이블 수준 잠금 또는 다중 버전 동시성 제어(MVCC), 혹은 잠금과 MVCC의 조합을 통해 Read Committed 및 Serializable 트랜잭션 고립 수준을 지원한다. 버전 1.8.1은 트랜잭션 고립 수준 0(Read Uncommitted)만 지원한다.

 데이터 저장 
HSQLDB는 지속성 있는 읽기-쓰기 데이터 저장에 사용되는 두 가지 주요 테이블 유형을 가지고 있다. 즉, 트랜잭션이 성공적으로 커밋되면 시스템 장애가 발생하더라도 데이터가 유지되고 무결성이 보장된다.

기본값인 MEMORY 유형은 모든 데이터 변경 사항을 SQL 스크립트 형태로 디스크에 저장한다. 엔진이 시작될 때 이 명령들이 실행되어 메모리에 데이터를 재구성한다.

또 다른 테이블 유형인 CACHED는 성능이 다소 떨어지는 대신 더 많은 데이터를 저장할 수 있게 해준다. HSQLDB 엔진은 이를 부분적으로만 로드하며, 트랜잭션 커밋 시 데이터를 디스크와 동기화한다. 그러나 엔진은 업데이트 중에 영향을 받는 모든 행을 항상 메모리에 로드한다. 이로 인해 작업을 더 작은 부분으로 나누지 않고서는 매우 큰 규모의 업데이트를 수행하는 것이 불가능하다.

기타 테이블 유형을 통해 CSV 파일에 접근할 수 있다. 이러한 테이블은 JOIN이 포함된 쿼리에 참여할 수 있으며, 스프레드시트 처리를 간소화하고 지속성이 없는 인메모리 데이터 저장소의 읽기-쓰기를 지원한다.

 SQL 기능 
HSQLDB 2.0은 SQL:2008의 모든 핵심 기능과 많은 선택적 기능을 지원한다. 고급 기능에는 사용자 정의 SQL 프로시저 및 함수, 스키마, 날짜 시간 간격(datetime intervals), 업데이트 가능한 뷰, 배열(arrays), lobs, full 및 lateral join, 그리고 집합 연산이 포함된다. TO_CHAR 및 DECODE와 같은 많은 비표준 함수도 지원된다. 표준 SQL의 확장 기능으로는 사용자 정의 집계 함수가 있다.

 배포 
2001년 이후 여러 버전의 HSQLDB가 배포되었다. 초기 버전은 중단된 HypersonicSQL 데이터베이스 엔진을 기반으로 했다. 2010년에 출시된 버전 2.0은 대부분 새로운 코드로 작성되었으며, 표준 SQL 및 JDBC 4 사양을 준수하도록 설계되었다.

2014년에 배포된 버전 2.3.2는 완전한 멀티스레드 방식으로 동작하며, 고성능 2단계 로킹 및 MVCC (다중 버전 동시성 제어) 트랜잭션 제어 모델을 지원한다.

 같이 보기 
 H2 (DBMS)
 아파치 더비

 각주 

 외부 링크 


 Software using HSQLDB
 Books referring to HSQLDB (Google Books)
 HyperSQL 2.0 New Release 5 Years In the Making

분류:자바 플랫폼 소프트웨어
분류:SQL
분류:BSD 라이선스 소프트웨어
분류:관계형 데이터베이스 관리 시스템
분류:자유 데이터베이스 관리 시스템
분류:임베디드 데이터베이스