H2 (СУБД) - H2 (DBMS)
изначальный выпуск | Декабрь 2005 г. |
---|---|
Стабильный выпуск | 1.4.200 / 14 октября 2019 г. |
Репозиторий | |
Написано в | Ява |
Операционная система | Кроссплатформенность |
Тип | Система управления реляционной базой данных |
Лицензия | Общественная лицензия Eclipse или же Общественная лицензия Mozilla 2.0 |
Интернет сайт | база данных h2database |
H2 это система управления реляционной базой данных написано в Ява. Он может быть встроен в приложения Java или работать в режиме клиент-сервер.[1]
Программное обеспечение доступно как Открытый исходный код программного обеспечения Общественная лицензия Mozilla 2.0 или оригинал Общественная лицензия Eclipse.
Основные особенности
Использование SQL
Подмножество SQL Поддерживается стандарт (язык структурированных запросов). Основные программные API - это SQL и JDBC, однако база данных также поддерживает использование PostgreSQL ODBC драйвер, действуя как сервер PostgreSQL.[2]
Типы таблиц
Можно создавать как таблицы в памяти, так и таблицы на диске. Таблицы могут быть постоянными или временными. Типы индексов - это хэш-таблица и дерево для таблиц в памяти и B-дерево для дисковых таблиц. Все операции манипулирования данными транзакционный. Блокировка на уровне таблицы и мультиверсионный контроль параллелизма реализованы. В 2-фазная фиксация протокол также поддерживается, но не реализован стандартный API для распределенных транзакций.
Функции безопасности
Функции безопасности базы данных: ролевой права доступа, шифрование пароля с помощью SHA-256 и данные с использованием AES или крошечный алгоритм шифрования, XTEA. Криптографические функции также доступны как функции внутри базы данных. SSL / TLS подключения поддерживаются в режиме клиент-сервер, а также при использовании консольного приложения.
База данных поддерживает защиту от SQL-инъекция путем принудительного использования параметризованных операторов. В H2 эта функция называется «отключение литералов».[3]
Возможность полнотекстового поиска
Два полнотекстовый поиск включены реализации, собственная реализация и одна, использующая Lucene.
Высокая доступность
Реализуется простая форма высокой доступности: при использовании в режиме клиент-сервер ядро базы данных поддерживает горячее аварийное переключение (это обычно называется кластеризацией). Однако после сбоя режим кластеризации необходимо включать вручную.[4]
Облачная версия
Начиная с версии 1.1.111, H2 база данных в памяти может работать внутри Google App Engine.[5]
Проблемы, влияющие на надежность реляционных баз данных
В документации H2 подробно объясняется несколько способов, которыми проблемы в базовом оборудовании и, в частности, в системах питания могут повлиять на надежность реляционных баз данных.
Согласно документации H2, такие проблемы связаны не только с конструкцией движка БД, но и с механизмом кеширования хранилища. Поскольку устройства хранения используют кэш записи для увеличения скорости, в случае сбоя питания данные в кэше устройства теряются. Затем администраторы должны оценить общий компромисс между скоростью и рисками потери данных в контексте бизнес-требований и должны тщательно продумать конструкцию источников питания и ИБП критически важных серверов.
В некоторых случаях можно заставить хранилище часто или даже немедленно записывать в кеш, используя fsync что замедляет процесс записи, или можно согласиться с тем, что кеширование в буфере устройства представляет некоторый риск потери данных в случае сбоя питания. Эффективность использования fsync ограничена тем, что многие жесткие диски имеют написать кеширование включен по умолчанию, и в этом случае нет ничего о структуре или настройках базы данных, ни о командах уровня ОС, которые могли бы полностью исключить вероятность потери или несогласованности данных в случае внезапного сбоя питания. Работа с настройками ОС и оборудования для отключения кэширования для записи данных в реальном времени может существенно повлиять на производительность - всего около 100 операций записи в секунду будет достижимо при использовании вращающихся дисков.
Документация по H2 пытается подробно описать [6] потенциальные проблемы с долговечность (часть КИСЛОТА ) в результате потенциальной потери данных из совершенные транзакции в случае сбой питания.
Принимая во внимание аппаратные ограничения в отношении сохранения данных в случае внезапного отключения питания и неэффективность подходов, обычно используемых разработчиками для предотвращения такого рода потерь, многие механизмы баз данных по умолчанию не вызывают 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-инъекции: как не застрять».
- ^ «H2-кластеризация». Архивировано из оригинал на 24.09.2010.
- ^ «База данных H2 по GAE». gaevfs.
- ^ "Передовой". Получено 30 октября 2014.
- ^ «Глава 9. Синтаксис SQL». Архивировано из оригинал 19 мая 2018 г.. Получено 30 октября 2014.
- ^ «Низкая производительность диска при включенном кэшировании записи». Архивировано из оригинал 31 декабря 2014 г.. Получено 21 декабря 2014.
- ^ Страница проекта Hypersonic SQL в SourceForge
- ^ "Напишите свою собственную базу данных снова". thecodist.com.