HSQLDB (''Hyper SQL Database'') is a
relational database management system
A relational database is a (most commonly digital) database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relati ...
written in
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
. It has a
JDBC driver and supports a large subset of
SQL-92,
SQL:2008,
SQL:2011, and
SQL:2016 standards. It offers a fast, small (around 1300 kilobytes in version 2.2)
database engine
A database engine (or storage engine) is the underlying software component that a database management system (DBMS) uses to create, read, update and delete (CRUD) data from a database. Most database management systems include their own applicatio ...
which offers both
in-memory
An in-memory database (IMDB, or main memory database system (MMDB) or memory resident database) is a database management system that primarily relies on main memory for computer data storage. It is contrasted with database management systems that e ...
and disk-based tables. Both embedded and server modes are available.
Additionally, it includes tools such as a minimal
Web server
A web server is computer software and underlying hardware that accepts requests via HTTP (the network protocol created to distribute web content) or its secure variant HTTPS. A user agent, commonly a web browser or web crawler, initi ...
, 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 implementations such as
Kaffe.
HSQLDB is available under a
BSD license
BSD licenses are a family of permissive free software licenses, imposing minimal restrictions on the use and distribution of covered software. This is in contrast to copyleft licenses, which have share-alike requirements. The original BSD li ...
. It is used as a database and persistence engine in many
open source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
software projects, such as descendants of
OpenOffice.org Base
OpenOffice.org (OOo), commonly known as OpenOffice, is a discontinued open-source office suite. Active successor projects include LibreOffice (the most actively developed), Apache OpenOffice, Collabora Online (enterprise ready LibreOffice ...
(i.e.,
Apache OpenOffice Base,
LibreOffice Base, etc.), and the
Jitsi
Jitsi is a collection of free and open-source multiplatform voice (VoIP), video conferencing and instant messaging applications for the web platform, Windows, Linux, macOS, iOS and Android. The Jitsi project began with the Jitsi Desktop (previous ...
VoIP and video-conference client since version 2.6. It is also used in commercial products, such as
Mathematica
Wolfram Mathematica is a software system with built-in libraries for several areas of technical computing that allow machine learning, statistics, symbolic computation, data manipulation, network analysis, time series analysis, NLP, optimi ...
and InstallAnywhere (starting with version 8.0).
Transaction support
HSQLDB version 2.0 has three transaction control modes. It supports with table level locks or with
multiversion concurrency control
Multiversion concurrency control (MCC or MVCC), is a concurrency control method commonly used by database management systems to provide concurrent access to the database and in programming languages to implement transactional memory.
Descriptio ...
(MVCC), or a combination of locks and MVCC. version 1.8.1 supports
transaction isolation level 0 (read uncommitted) only.
Data storage
HSQLDB has two main table types used for durable read-write data storage, i.e., if a transaction has been successfully committed, it is guaranteed that the data will survive system failure and will keep their 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 are reconstructed into the memory.
Another table type is CACHED, which allows one to store more data, at the cost of the slower performance. The 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.
Other table types allow access to
comma-separated values
A comma-separated values (CSV) file is a delimited text file that uses a comma to separate values. Each line of the file is a data record. Each record consists of one or more fields, separated by commas. The use of the comma as a field separat ...
(CSV) files. 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
HSQLDB 2.0 supports all the core features and many optional features of
SQL:2008. Advanced features include user-defined SQL procedures and functions, schemas, datetime intervals, updatable views, arrays, lobs, full and lateral joins and
set operations. Many non-standard functions such as TO_CHAR and DECODE are also supported. Extensions to standard SQL include user-defined
aggregate function
In database management, an aggregate function or aggregation function is a function where the values of multiple rows are grouped together to form a single summary value.
Common aggregate functions include:
* Average (i.e., arithmetic mean)
* ...
s.
Releases
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.
Version 2.3.2 (released in 2014) is fully multi-threaded and supports high performance
two-phase locking and
MVCC (multiversion concurrency control) transaction control models.
See also
*
List of relational database management systems
*
Comparison of relational database management systems
The following tables compare general and technical information for a number of relational database management systems. Please see the individual products' articles for further information. Unless otherwise specified in footnotes, comparisons are ba ...
*
Apache Derby
*
H2
References
External links
*{{official website
Free database management systems
Java platform software
SQL
Relational database management systems
Relational database management software for Linux
Software using the BSD license
Embedded databases
Database engines