hsqldb Database Engine 1.8.0 review

by rbytes.net on

HSQLDB is the leading SQL relational database engine written in Java

License: BSD License
File size: 0K
Developer: The hsqldb Development Team
0 stars award from rbytes.net

HSQLDB is the leading SQL relational database engine written in Java. hsqldb Database Engine has a JDBC driver and supports a rich subset of ANSI-92 SQL (BNF tree format) plus SQL 99 and 2003 enhancements.

It offers a small (less than 100k in one version), fast database engine which offers both in-memory and disk-based tables. Embedded and server modes are available. Additionally, it includes tools such as a minimal web server, in-memory query and management tools (can be run as applets) and a number of demonstration examples.

The product is currently being used as a database and persistence engine in many Open Source Software projects and even in commercial projects and products. In it's current version it is extremely stable and reliable. It is best known for its small size, ability to execute completely in memory and its speed.

This feature-packed software is completely free under our licenses , based on the standard BSD license. Yes, that's right, completely free of cost or onerous restrictions and fully compatible with all major open source licenses. Java source code and extensive documentation always included!

Here are some key features of "hsqldb Database Engine":
100% Java
A full RDBMS (Relational Database Management System), with the Object capabilities of Java
Switchable source code to support JDK 1.1.x, JDK 1.2.x, JDK (SE) 1.3.x, JDK (SE) 1.4.x.
Standard SQL (Structured Query Language) syntax
Correlated subqueries, inner and outer joins are possible
Views, Temp tables and sequences
Text Tables (with external file data sources such as csv files)
Primary key, unique and check constraints on single or multiple columns
ORDER BY, GROUP BY and HAVING are supported
COUNT, SUM, MIN, MAX, AVG, alone and in expressions
Full support for SQL language expressions such as CASE .. WHEN .. ELSE .. , NULLIF etc.
Transaction support
Supports Referential Integrity (foreign keys) with full cascading options (delete, update, set null, set default)
Java Stored Procedures and Functions can be called
Database Security functions
95% JDBC interface support with full metadata and batch statement functionality
All JDBC 1 data types supported, also 'Object' , Blob and Clob
In-memory, Standalone and Client-Server operating modes
A small WebServer and a Servlet is included
It can be used in Applets and Applications
Autoincrement column support
Cached or Text tables up to 2 gigabytes
Size of strings and binary data only limited by memory
Indexes can be created for one or many fields
JDBC Metadata support
Readonly connection and database support
An SQL script describing the database can be created

Database security

There is a built-in security system using users, passwords and access rights. There exists by default a 'System Administrator' with the user name 'sa' and the password '' (empty password). This special user can create new users, drop users and grant and revoke access rights for tables or stored procedures to other users. The general users can only change their own password and connect as another user. All this user administration can be done by SQL scripts (GRANT, REVOKE). Access can be granted also to PUBLIC.

Identity (autoincrement) column type

Identity columns can be used to serve as automatic unique row identifier for a table. When a new row is added to the table and the identity column is not inserted (or a NULL value is inserted), then HSQLDB provides a unique, incremental value for the column. The identity column is automatically the primary key of the table. Only one identity column can be created per table. In HSQLDB, any value can be used for updating or inserting in an identity column provided it does not violate the primary key constraint.

Metadata support

HSQLDB supports extensive system tables that are build dynamically when a query is made to them. These tables provide database metadata. The names of the tables are 'SYSTEM_' followed by the corresponding JDBC DatabaseMetaData method. For example the methode 'getColumns(...)' queries the table 'SYSTEM_COLUMNS'. There are several other system tables reporting on database tables, indexes, primary keys, foreign keys etc.

Readonly connection and database support

Connections can be set to readonly using the command SET READONLY [TRUE|FALSE] or using the method Connection.setReadOnly(boolean readonly). Additionally the whole database can be put in read-only mode by manually adding the line 'readonly=true' to the .properties file. All connections are then automatically readonly. The database files will then be opened in readonly mode, and it is thus possible to create a CD with this database. Other variations, allow modifiable readonly database (changes are discarded at shutdown) or inclusion of a database in the application JAR.

hsqldb Database Engine 1.8.0 search tags