HSQLDB

From Wikipedia, the free encyclopedia
  (Redirected from HSQL)
Jump to: navigation, search
HSQLDB (HyperSQL DataBase)
Hsql.png
HSQL Database Manager
Initial release 2001
Stable release 2.3.2 / 14 February 2014; 10 months ago (2014-02-14)
Development status Active
Written in Java
Operating system Cross-platform
Size 7.7MB (2.3.2 ZIP file)[1]
Type RDBMS
License BSD license
Website http://hsqldb.org/

HSQLDB (Hyper SQL Database) is a relational database management system written in Java. It has a JDBC driver and supports a large subset of SQL-92 and SQL:2008 standards.[2] It offers a fast,[3] small (around 1300 kilobytes in version 2.2) database engine which offers both in-memory and disk-based tables. Both embedded and server modes are available for purchase.

Additionally, it includes tools such as a minimal web server, command line and GUI management tools (can be run as applets), and a number of demonstration examples. It can run on Java runtimes from version 1.1 upwards, including free Java runtimes such as Kaffe.

HSQLDB is available under a BSD license. It is used as a database and persistence engine in many open source software projects, such as OpenOffice Base, LibreOffice Base, and the Standalone Roller Demo,[4] as well as in commercial products, such as Mathematica and InstallAnywhere (starting with version 8.0).[5]

Transaction support[edit]

HSQLDB version 2.0 has three transaction control modes. It supports read committed and serializable isolation levels[clarify] with table level locks or with multiversion concurrency control (MVCC), or a combination of locks and MVCC. version 1.8.1 supports transaction isolation level 0 (read uncommitted) only.[6]

Data storage[edit]

HSQLDB has two main table types used for durable read-write data storage (i.e. if transaction has been successfully committed, it is guaranteed that the data will survive system failure and will keep its integrity).

The default MEMORY type stores all data changes to the disk in the form of a SQL script. During engine start up, these commands are executed and data is reconstructed into the memory. While this behavior is not suitable for very large tables, it provides highly regarded performance benefits and is easy to debug.

Another table type is CACHED, which allows one to store gigabytes of data, at the cost of the slower performance. HSQLDB engine loads them only partially and synchronizes the data to the disk on transaction commits. However, the engine always loads all rows affected during an update into the memory. This renders very large updates impossible without splitting the work into smaller parts.[7]

Other table types allow for read-write CSV-file access (these tables can participate, for example, in queries with JOINs and simplify spreadsheet processing) and read-write non-durable in-memory data storage.

SQL features[edit]

HSQLDB 2.0 supports all the core features and 148[citation needed] optional features of SQL:2008. Advanced features include user-defined SQL procedures and functions, schemas[clarify], datetime intervals[clarify], updatable views[clarify], arrays[clarify], lobs[clarify], full and lateral joins[clarify] and set operations. Many non-standard functions such as TO_CHAR[clarify] and DECODE[clarify] are also supported. Extensions to Standard SQL include user-defined aggregate functions.

At the time of this release, HyperSQL supports the widest range of SQL standard features among all open source RDBMS.

— HSQLDB manual, Chapter 2[8]

Releases[edit]

Several versions of HSQLDB have been released since 2001. Early versions were based on the discontinued HypersonicSQL database engine. Version 2.0, released in 2010, is mostly new code, written to conform to Standard SQL and JDBC 4 Specification.[9]

Version 2.3.2 is fully multithreaded and supports high performance 2PL and MVCC (multiversion concurrency control) transaction control models. See the list of new features in version 2.3.2.

See also[edit]

References[edit]

  1. ^ "Home / hsqldb / hsqldb_2_3". HyperSQL Database Engine (HSQLDB). SourceForge. 8 October 2013. Retrieved 2 November 2013. 
  2. ^ "HSQLDB SQL Syntax". hsqldb.org. 
  3. ^ "PolePosition Performance Comparison". polepos.org. 
  4. ^ "Standalone Roller Demo". rollerweblogger.org. 
  5. ^ "Software using HSQLDB". hsqldb.org. 
  6. ^ "HSQLDB Documentation". hsqldb.org. 
  7. ^ "HSQLDB Documentation". hsqldb.org. 
  8. ^ HSQLDB Chapter 2: SQL Language
  9. ^ "The new HSQLDB". hsqldb.org. 

External links[edit]