H2 - это система управления реляционными базами данных, написанная на Java . Он может быть встроен в приложения Java или работать в режиме клиент-сервер. [1]
Первый выпуск | Декабрь 2005 г . |
---|---|
Стабильный выпуск | 1.4.200 / 14 октября 2019 г . |
Репозиторий | |
Написано в | Ява |
Операционная система | Кроссплатформенность |
Тип | Система управления реляционной базой данных |
Лицензия | Общественная лицензия Eclipse или Общественная лицензия Mozilla 2.0 |
Веб-сайт | h2database |
Программное обеспечение доступно как программное обеспечение с открытым исходным кодом Mozilla Public License 2.0 или исходная общественная лицензия Eclipse .
Основные особенности
Использование SQL
Поддерживается подмножество стандарта SQL (язык структурированных запросов). Основными программными API-интерфейсами являются SQL и JDBC , однако база данных также поддерживает использование драйвера PostgreSQL ODBC , действуя как сервер PostgreSQL. [2]
Типы таблиц
Можно создавать как таблицы в памяти, так и таблицы на диске. Таблицы могут быть постоянными или временными. Типы индексов - это хеш-таблица и дерево для таблиц в памяти и b-дерево для дисковых таблиц. Все операции с данными являются транзакционными . Реализованы блокировка на уровне таблицы и управление параллелизмом нескольких версий. Также поддерживается протокол двухфазной фиксации , но не реализован стандартный API для распределенных транзакций.
Функции безопасности
К функциям безопасности базы данных относятся: права доступа на основе ролей, шифрование пароля с использованием SHA-256 и данных с использованием AES или Tiny Encryption Algorithm, XTEA . Криптографические функции также доступны как функции внутри базы данных. Соединения SSL / TLS поддерживаются в режиме клиент-сервер, а также при использовании консольного приложения.
База данных поддерживает защиту от внедрения SQL-кода путем принудительного использования параметризованных операторов. В H2 эта функция называется «отключением литералов». [3]
Возможность полнотекстового поиска
Включены две реализации полнотекстового поиска : собственная реализация и одна с использованием Lucene .
Высокая доступность
Реализована простая форма высокой доступности: при использовании в режиме клиент-сервер ядро базы данных поддерживает горячее аварийное переключение (это обычно называется кластеризацией). Однако после сбоя режим кластеризации необходимо включать вручную. [4]
Облачная версия
Начиная с версии 1.1.111, база данных H2 в памяти может работать внутри Google App Engine . [5]
Проблемы, влияющие на надежность реляционных баз данных
В документации H2 подробно объясняется несколько способов, которыми проблемы в базовом оборудовании и, в частности, в системах питания могут повлиять на надежность реляционных баз данных.
Согласно документации H2, такие проблемы связаны не только с конструкцией движка БД, но и с механизмом кеширования хранилища. Поскольку устройства хранения используют кэш записи для увеличения скорости, в случае сбоя питания данные в кэше устройства теряются. Затем администраторы должны оценить общий компромисс между скоростью и рисками потери данных в контексте бизнес-требований и должны тщательно продумать конструкцию источников питания и ИБП критически важных серверов.
В некоторых случаях можно заставить хранилище записывать в кеш часто или даже немедленно, используя fsync, который замедляет процесс записи, или можно согласиться с тем, что кеширование в буфере устройства представляет некоторый риск потери данных в случае сбоя питания. Эффективность использования fsync ограничена тем фактом, что на многих жестких дисках кэширование записи включено по умолчанию, и в этом случае нет ничего ни о конструкции или настройках базы данных, ни о командах уровня ОС, которые могли бы полностью исключить вероятность потери или потери данных. несогласованные данные в случае внезапного отключения электроэнергии. Работа с настройками ОС и оборудования для отключения кэширования с целью записи данных в реальном времени может существенно повлиять на производительность, поскольку при использовании вращающихся дисков можно будет выполнить только около 100 операций записи в секунду .
В документации H2 делается попытка подробно описать [6] потенциальные проблемы с надежностью (часть ACID ), возникающие в результате потенциальной потери данных зафиксированных транзакций в случае сбоя питания .
Учитывая аппаратные ограничения в отношении сохранения данных в случае внезапного отключения питания и неэффективность подходов, обычно используемых разработчиками для предотвращения такого рода потерь, многие механизмы баз данных по умолчанию не вызывают FileDescriptor.sync () или FileChannel.force () ни fsync, ни эквиваленты для каждого коммита, потому что они значительно снижают производительность системы без значительного увеличения долговечности.
В документации HSQLDB есть ссылки на обходные пути для аналогичного набора проблем в своей документации. [7]
База знаний Microsoft описывает влияние этих проблем, сбоев питания, кэширования записи и т. Д. На производительность и надежность. [8] В базе знаний обсуждается компромисс между производительностью и уязвимостью кэширования записи на диск, а также параметры, которые администратор может использовать для их балансировки.
Утилиты
Включен встроенный веб-сервер с консольным приложением на основе браузера, а также инструменты командной строки для запуска и остановки сервера, резервного копирования и восстановления баз данных и инструмент командной строки.
История
Разработка механизма базы данных H2 началась в мае 2004 г. и впервые была опубликована в декабре 2005 г. Механизм базы данных был написан Томасом Мюллером. Он также разработал ядро базы данных Java Hypersonic SQL. [9] В 2001 году проект Hypersonic SQL был остановлен, и была сформирована группа HSQLDB для продолжения работы над кодом Hypersonic SQL. Название H2 расшифровывается как Hypersonic 2, однако H2 не разделяет код с Hypersonic SQL или HSQLDB. H2 построен с нуля. [10]
Смотрите также
- Список систем управления реляционными базами данных
- Сравнение систем управления реляционными базами данных
- Apache Derby
- HSQLDB
Рекомендации
- ^ «Представление и использование ядра СУБД H2» .
- ^ «База данных H2 поддерживает драйвер PostgreSQL ODBC» .
- ^ «SQL-инъекции: как не застрять» .
- ^ «Н2-кластеризация» . Архивировано из оригинала на 2010-09-24.
- ^ «База данных H2 по GAE» . gaevfs.
- ^ «Продвинутый» . Проверено 30 октября 2014 года .
- ^ «Глава 9. Синтаксис SQL» . Архивировано из оригинального 19 мая 2018 года . Проверено 30 октября 2014 года .
- ^ «Низкая производительность диска при включенном кэшировании записи» . Архивировано из оригинала на 31 декабря 2014 года . Проверено 21 декабря 2014 .
- ^ Страница проекта Hypersonic SQL на SourceForge
- ^ «Напишите свою собственную базу данных снова» . thecodist.com .
Внешние ссылки
- Официальный веб-сайт
- Провайдер H2Sharp Ado.Net для H2
- Руководство по базе данных H2