Введение
HSQLDB (Hyper SQL Database) – это реляционная система управления базами данных, написанная на языке Java. Она включает в себя JDBC-драйвер и поддерживает значительную часть стандартов SQL 92, SQL:2008, SQL:2011 и SQL:2016. HSQLDB предлагает быстрый, компактный (около 1300 килобайт в версии 2.2) движок базы данных, обеспечивающий работу как с таблицами в памяти, так и с дисковыми таблицами. Доступны встроенный и серверный режимы работы. Кроме того, в состав входят инструменты, такие как минимальный веб-сервер, средства управления через командную строку и графический интерфейс (могут запускаться как апплеты), а также ряд демонстрационных примеров. HSQLDB может работать на Java Runtime Environment версии 1.1 и выше, включая бесплатные реализации Java, такие как Kaffe. HSQLDB распространяется под лицензией BSD. Она используется в качестве базы данных и механизма хранения данных во многих проектах с открытым исходным кодом, например, в производных от OpenOffice.org Base (таких как Apache OpenOffice Base, LibreOffice Base и др.), а также в VoIP и видеоконференц-клиенте Jitsi, начиная с версии 2.6. HSQLDB также применяется в коммерческих продуктах, таких как Mathematica и InstallAnywhere (начиная с версии 8.0).
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, SQL:2008, SQL:2011, and SQL:2016 standards. It offers a fast, 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. 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 implementations 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 descendants of OpenOffice. org Base (i. e., Apache OpenOffice Base, LibreOffice Base, etc. ), and the Jitsi VoIP and video conference client since version 2.6. It is also used in commercial products, such as Mathematica and InstallAnywhere (starting with version 8.0).
Поддержка транзакций
HSQLDB версии 2.0 имеет три режима управления транзакциями. Она поддерживает уровни изоляции транзакций "read committed" и "serializable" с использованием блокировок на уровне таблицы или с многоверсионным управлением конкурентным доступом (MVCC), либо комбинации блокировок и MVCC. Версия 1.8.1 поддерживает только уровень изоляции транзакций 0 ("read uncommitted").
Хранение данных
HSQLDB имеет два основных типа таблиц, используемых для надежного хранения данных с возможностью чтения и записи, то есть, если транзакция успешно зафиксирована, гарантируется, что данные переживут сбой системы и сохранят свою целостность. Тип MEMORY по умолчанию сохраняет все изменения данных на диске в виде SQL-скрипта. При запуске движка эти команды выполняются, и данные восстанавливаются в памяти. Другой тип таблицы – CACHED, который позволяет хранить больше данных, но с более низкой производительностью. Движок HSQLDB загружает их только частично и синхронизирует данные с диском при фиксации транзакций. Однако движок всегда загружает в память все строки, затронутые при обновлении. Это делает невозможным выполнение очень больших обновлений без разделения задачи на более мелкие части. Другие типы таблиц обеспечивают доступ к файлам со значениями, разделенными запятыми (CSV). Эти таблицы могут участвовать, например, в запросах с использованием JOIN и упрощают обработку электронных таблиц, а также обеспечивают чтение и запись временных данных в памяти.
Особенности SQL
HSQLDB 2.0 поддерживает все основные и многие дополнительные возможности SQL:2008. К расширенным возможностям относятся определяемые пользователем SQL-процедуры и функции, схемы, интервалы дат и времени, обновляемые представления, массивы, большие объекты (LOB), полные и латеральные соединения, а также операции над множествами. Поддерживаются также многие нестандартные функции, такие как TO CHAR и DECODE. Расширения стандарта SQL включают в себя определяемые пользователем агрегатные функции.
Релизы
С 2001 года было выпущено несколько версий HSQLDB. Ранние версии были основаны на устаревшем движке базы данных HypersonicSQL. Версия 2.0, выпущенная в 2010 году, представляет собой в основном новый код, написанный в соответствии со стандартом SQL и спецификацией JDBC 4. Версия 2.3.2 (выпущена в 2014 году) полностью многопоточная и поддерживает высокопроизводительные двухфазные блокировки и модели управления транзакциями MVCC (multiversion concurrency control).