H2
Логотип программы H2
Тип Реляционная СУБД
Автор Thomas Mueller[вд]
Разработчик Томас Мюллер
Написана на Java
Операционная система Кроссплатформенное программное обеспечение
Первый выпуск 14 декабря 2005[1]
Аппаратная платформа Java Virtual Machine
Последняя версия 2.2.224[2] (17 сентября 2023; 10 месяцев назад (2023-09-17))
Репозиторий github.com/h2database/h2…
Лицензия MPL, EPL
Сайт h2database.com

H2 — открытая кроссплатформенная СУБД, полностью написанная на языке Java.

Несмотря на малый размер (чуть более 1 МБ) H2 поддерживает следующие возможности «из коробки»:

Что ещё не реализовано:

Применяется H2, например, в проекте Grails как базовая СУБД для разработки.

История создания

[править | править код]

Разработка H2 началась в мае 2004 года, первый релиз состоялся 14 декабря 2005 года. Главным разработчиком является Томас Мюллер, один из разработчиков Hypersonic SQL (HSQLDB). Сокращение H2 означает Hypersonic 2, однако H2 не использует код HSQLDB и была написана заново.

Почему выбрана платформа Java

[править | править код]

Сравнения с существующими СУБД

[править | править код]

На сайте H2 расположены результаты сравнения тестов производительности H2 и некоторых других популярных СУБД (в частности, HSQLDB, PostgreSQL и MySQL), в которых указано, что H2 в целом более производительна, чем указанные СУБД. Сравнения с коммерческими СУБД (Oracle, DB2, MSSQL) не проводились ввиду ограничений, наложенных лицензиями на эти продукты.

Проблемы надёжности

[править | править код]

В документации по H2 указано на имеющиеся проблемы с ACID в части надёжности (durability)[3], что может привести к потере данных завершённых транзакций при отключении электропитания.
В документации заявлено, что в системе не используются вызовы FileDescriptor.sync(), FileChannel.force() и fsync, поскольку они существенно замедляют работу системы: при их использовании достижимы только 60 операций записи в секунду.
Другая причина, по которой не используется fsync, состоит в том, что многие диски поставляются со включенной опцией кэширования записи.
Для обеспечения durability в документации предлагается использовать дополнительные команды SET WRITE_DELAY и CHECKPOINT SYNC, которые доступны только с правами администратора.

Планируемые нововведения

[править | править код]

Новые версии

[править | править код]

Над СУБД продолжается активная работа, новые версии выпускаются практически каждый месяц.

Примечания

[править | править код]

Весьма примечателен факт того, что, несмотря на богатую функциональность, при разработке СУБД не используются сторонние библиотеки. Вся необходимая функциональность реализована разработчиками самостоятельно с целью облегчения развертывания приложения. Фактически вся СУБД умещается в файле размером 1 МБ, а весь архив, включая примеры и исходный код, — в 5 МБ (для сравнения: дистрибутив СУБД Oracle 11 для Microsoft Windows занимает 1,7 ГБ).

СУБД весьма полезна в разработке, так как позволяет создавать тестовые наборы данных прямо в памяти, имеет развитые возможности запросов, многочисленные функции, совместимые с более тяжеловесными БД, легко настраивается, имеет подробную и понятную документацию. Для небольших программ СУБД возможно использовать саму по себе, так как она легко встраивается в приложение.

  1. https://www.h2database.com/html/history.html
  2. Version 2.2.224. Дата обращения: 28 октября 2023. Архивировано 28 октября 2023 года.
  3. [1] Архивная копия от 9 июля 2006 на Wayback Machine (англ.)

Ссылки

[править | править код]