Начинаем работать с базой данных HSQLDB в режиме in-process

Топик содержит краткую информацию о подключении базы данных HSQLDB в режиме in-process, и некоторые отличия версий 1.8 и 2.0. Написано в качестве памятки для начинающих разработчиков на java.
Итак, HSQLDB — реляционная СУБД небольшого размера с открытым исходным кодом, полностью написана на Java. Скачать можно на официальном сайте. Представлены 2 ветки, ветка 1.8, которой уже оказывается больше 5 лет, и ветка 2.0, которая содержит целую кучу новых вкусностей, частичную поддержку новых SQL стандартов, а также свежие баги. У меня в частности почему-то после подключения к базе переставал работать логгер.

HSQLDB может быть использована в двух разных режимах: серверном (думаю, более привычном для любого разработчика) и в standalone (или in-process) режиме.Серверный режим не будет обсуждаться в этой статье. Кому интересно, вот ссылки на официальную документацию.

В случае in-process режима база данных запускается как часть вашего приложения. Нужно заметить, что при работе в этом режиме вы не сможете подключиться к базе извне непосредственно в момент работы, а также проверять содержимое базы данных и его изменения используя стандартные средства доступа наподобие Database Manager, входящего в поставку базы данных. (В официальной документации рекомендуется использовать серверный режим для разработки, и in-process режим для продакшн).

Таблицы. Помимо временных, не записываемых на диск, и существующих только во время существования объекта Connection, есть 3 типа постоянных таблиц (для версии 1.8):MEMORY, CACHED и TEXT.

MEMORY — тип таблиц по умолчанию. Данные постоянно находятся в памяти, записываются на диск в файл <имя_базы>.script в виде SQL-запроса. Каждый раз при запуске базы данных этот запрос и выполняется. Создаются так CREATE TABLE, или так CREATE MEMORY TABLE. Подходит для маленьких таблиц, критичных ко времени доступа.

CACHED – в памяти находится только часть данных и индексы, сохраняются на диск в файле <имя_базы>.data. Создаются так: CREATE CACHED TABLE. Могут использоваться для больших таблиц. Базе данных требуется меньше времени для старта при загрузке данных из этого типа таблиц, хотя среднее время доступа к данным в таких таблицах будет больше чем к таблицам типа MEMORY.

TEXT – используют в качестве источника данных файлы в формате CSV.

Создание новой базы данных в режиме in-process происходит при попытке подключения к несуществующей по указанному пути базе. При создании нужно указать логин SA и пустой пароль. (В версии 2.0 есть возможность сразу указать новый логин и пароль, который будет создан и наделен всеми правами на новую базу).

Класс драйвера для версии 1.8 — org.hsqldb.jdbcDriver, для версии 2 — org.hsqldb.jdbc.JDBCDriver

При работе с базой важно помнить, что изменения в данных не записываются сразу на диск (независимо от типа таблиц), а сбрасываются периодически, согласно параметру, который можно указать командой в обычном SQL запросе:

— для версии 1.8: SET WRITE_DELAY {{ TRUE | FALSE } | | MILLIS} (по умолчанию 20 секунд).
— для версии 2.0: SET FILES WRITE DELAY {{ TRUE | FALSE } | | MILLIS} (По умолчанию 10 секунд).

Не рекомендуется выставлять параметр менее 10 секунд, чтобы не тратить ресурсы на постоянный внутренний опрос базы на наличие изменений.

Изменения можно записать на диск и принудительно, с помощью команды «CHECKPOINT». При этом происходит закрытие базы, запись всех даных на диск, дефрагментация (если указано специально с помощью слова DEFRAG) и повторное открытие базы.

Также, после завершения работы с базой ее необходимо закрыть послав SQL запрос «SHUTDOWN”. Если этого не сделать, то та часть изменений которая не была записана на диск после последнего сброса данных будет потеряна. Только после этого можно закрывать объекты Statement и Connection вызовами методов close();

В jar поставку базы данных входит утилита для подключения к базе (и не только HSQLDB) и выполнения SQL запросов, с помощью которой можно проверить содержимое вашей базы. Запускается так:

java -cp hsqldb.jar org.hsqldb.util.DatabaseManager

В версии 2.0 эту утилиты можно запустить просто дважды кликнув по jar файлу hsqldb.jar (если конечно у вас в системе jar файлы ассоциированы с запуском с помощью JVM)


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.