Jump to content

H2 (база данных)

(Перенаправлено с H2 (СУБД) )
Ядро базы данных H2
Первоначальный выпуск декабрь 2005 г .; 18 лет назад ( 2005-12 )
Стабильная версия
2.2.220 / 4 июля 2023 г .; 12 месяцев назад ( 04.07.2023 )
Репозиторий
Написано в Ява
Операционная система Кросс-платформенный
Тип Система управления реляционными базами данных
Лицензия Публичная лицензия Eclipse или Общественная лицензия Mozilla 2.0.
Веб-сайт база данных h2

H2 система управления реляционными базами данных, написанная на Java . Его можно встроить в приложения Java или запустить в режиме клиент-сервер. [1]

Программное обеспечение доступно как с открытым исходным кодом программное обеспечение Mozilla Public License 2.0 или исходная общественная лицензия Eclipse . [ нужна ссылка ]

Разработка ядра базы данных H2 началась в мае 2004 года и впервые была опубликована в декабре 2005 года. Механизм базы данных был написан Томасом Мюллером. Он также разработал механизм базы данных Java Hypersonic SQL. [2] В 2001 году проект Hypersonic SQL был остановлен, и была создана группа HSQLDB для продолжения работы над кодом Hypersonic SQL. Название H2 означает Hypersonic 2, однако H2 не использует общий код с Hypersonic SQL или HSQLDB. H2 построен с нуля. [3]

Основные особенности

[ редактировать ]

Использование SQL

[ редактировать ]

подмножество стандарта SQL Поддерживается (язык структурированных запросов). Основными программными API являются SQL и JDBC , однако база данных также поддерживает использование PostgreSQL драйвера ODBC , действуя как сервер PostgreSQL. [4]

Типы таблиц

[ редактировать ]

Можно создавать как таблицы в памяти, так и таблицы на диске. Таблицы могут быть постоянными или временными. Типы индексов — это хэш-таблица и дерево для таблиц в памяти, а также b-дерево для таблиц на диске. Все операции по манипулированию данными являются транзакционными . блокировка на уровне таблицы и управление многоверсионным параллелизмом Реализованы . Также поддерживается протокол двухфазной фиксации , но стандартный API для распределенных транзакций не реализован. [ нужна ссылка ]

Функции безопасности

[ редактировать ]

Функции безопасности базы данных: права доступа на основе ролей , шифрование пароля с использованием SHA-256 и данных с использованием AES или алгоритма Tiny Encryption Algorithm, XTEA . Криптографические функции также доступны в виде функций внутри базы данных. SSL / TLS- соединения поддерживаются в режиме клиент-сервер, а также при использовании консольного приложения. [ нужна ссылка ]

База данных поддерживает защиту от SQL-инъекций путем принудительного использования параметризованных операторов. В H2 эта функция называется «отключение литералов». [5]

Возможность полнотекстового поиска

[ редактировать ]

две реализации полнотекстового поиска Включены : собственная реализация и одна с использованием Lucene . [ нужна ссылка ]

Высокая доступность

[ редактировать ]

Реализована простая форма высокой доступности: при использовании в режиме клиент-сервер ядро ​​базы данных поддерживает горячее аварийное переключение (это широко известно как кластеризация). Однако после сбоя режим кластеризации необходимо включать вручную. [6]

Облачная версия

[ редактировать ]

Начиная с версии 1.1.111, база данных H2 в памяти может работать внутри Google App Engine . [7]

Проблемы, влияющие на долговечность реляционных баз данных

[ редактировать ]

В документации H2 подробно объясняется несколько способов, которыми проблемы в базовом оборудовании и, в частности, в системах питания могут повлиять на долговечность реляционных баз данных.

Согласно документации H2, такие проблемы связаны не только с конструкцией движка БД, но и с механизмом кэширования хранилища. Поскольку устройства хранения используют кэш записи для увеличения скорости, в случае сбоя питания данные в кэше устройства теряются. Администраторам затем необходимо оценить общий компромисс между скоростью и рисками потери данных в контексте бизнес-требований, а также тщательно продумать конструкцию источников питания и ИБП критически важных серверов.

В некоторых случаях можно заставить хранилище часто или даже немедленно записывать кэш с помощью fsync , который замедляет процесс записи, или можно согласиться с тем, что кэширование в буфере устройства создает некоторый риск потери данных в случае сбоя питания. Эффективность использования fsync ограничена тем фактом, что на многих жестких дисках кэширование записи включено по умолчанию, и в этом случае в конструкции или настройках базы данных или командах уровня ОС нет ничего, что могло бы исключить вероятность потери или несогласованности данных. данные в случае внезапного сбоя питания. Работа с настройками ОС и оборудования для отключения всего кэширования для записи данных в реальном времени может оказать существенное влияние на производительность, поскольку только около 100 операций записи в секунду при использовании вращающихся дисков будет достижимо .

В документации H2 делается попытка подробно описать [8] потенциальные проблемы с надежностью (часть ACID ), возникающие в результате потенциальной потери данных зафиксированных транзакций в случае сбоя питания .

Учитывая аппаратные ограничения в отношении сохранения данных в случае внезапного отключения питания и неэффективность подходов, обычно используемых разработчиками для предотвращения такого рода потерь, многие механизмы баз данных по умолчанию не вызывают FileDescriptor.sync() или FileChannel.force(). ни fsync или его эквиваленты для каждого коммита, поскольку они значительно снижают производительность системы без значительного увеличения надежности.

В документации HSQLDB есть ссылки на обходные пути решения аналогичного набора проблем. [9]

В базе знаний Microsoft описывается влияние таких проблем, как сбои питания, кэширование записи и т. д., на производительность и надежность. [10] В базе знаний обсуждаются компромиссы между производительностью и уязвимостью кэширования записи на диск, а также настройки, которые администратор может использовать для их балансирования.

Включен встроенный веб-сервер с консольным приложением на основе браузера, а также инструменты командной строки для запуска и остановки сервера, резервного копирования и восстановления баз данных, а также инструмент командной строки. [ нужна ссылка ]

См. также

[ редактировать ]
  1. ^ «Представление и использование ядра базы данных H2» . 6 августа 2010 г.
  2. ^ Страница проекта Hypersonic SQL на SourceForge
  3. ^ «Снова напишите свою собственную базу данных» . thecodist.com . Архивировано из оригинала 07 марта 2019 г. Проверено 27 апреля 2011 г.
  4. ^ «База данных H2 поддерживает драйвер ODBC PostgreSQL» . Архивировано из оригинала 9 декабря 2016 г. Проверено 24 августа 2010 г.
  5. ^ «SQL-инъекции: как не застрять» .
  6. ^ «Кластеризация H2» . Архивировано из оригинала 24 сентября 2010 г.
  7. ^ «База данных H2 по GAE» . гаевфс.
  8. ^ "Передовой" . Проверено 30 октября 2014 г.
  9. ^ «Глава 9. Синтаксис SQL» . Архивировано из оригинала 19 мая 2018 года . Проверено 30 октября 2014 г.
  10. ^ «Снижение производительности диска при включенном кэшировании записи» . Архивировано из оригинала 31 декабря 2014 года . Проверено 21 декабря 2014 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: bd5fd3a0dea32ab67ca0c5223b505bb6__1719970860
URL1:https://arc.ask3.ru/arc/aa/bd/b6/bd5fd3a0dea32ab67ca0c5223b505bb6.html
Заголовок, (Title) документа по адресу, URL1:
H2 (database) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)