Este artículo está escrito como un manual o una guía . ( Julio de 2023 ) |
Lanzamiento inicial | Diciembre de 2005 ( 2005-12 ) |
---|---|
Versión estable | 2.2.220 / 4 de julio de 2023 ( 04-07-2023 ) |
Repositorio |
|
Escrito en | Java |
Sistema operativo | Multiplataforma |
Tipo | Sistema de gestión de bases de datos relacionales |
Licencia | Licencia pública de Eclipse o Licencia pública de Mozilla 2.0 |
Sitio web | Base de datos h2.com |
H2 es un sistema de gestión de bases de datos relacionales escrito en Java . Puede integrarse en aplicaciones Java o ejecutarse en modo cliente-servidor. [1]
El software está disponible como software de código abierto , Licencia Pública Mozilla 2.0 o la Licencia Pública Eclipse original . [ cita requerida ]
El desarrollo del motor de base de datos H2 comenzó en mayo de 2004 y se publicó por primera vez en diciembre de 2005. El motor de base de datos fue escrito por Thomas Mueller. También desarrolló el motor de base de datos de Java Hypersonic SQL. [2] En 2001, el proyecto Hypersonic SQL se detuvo y se formó el grupo HSQLDB para continuar trabajando en el código de Hypersonic SQL. El nombre H2 significa Hypersonic 2, sin embargo, H2 no comparte código con Hypersonic SQL o HSQLDB. H2 se creó desde cero. [3]
Se admite un subconjunto del estándar SQL (lenguaje de consulta estructurado). Las principales API de programación son SQL y JDBC , sin embargo, la base de datos también admite el uso del controlador ODBC de PostgreSQL al actuar como un servidor PostgreSQL. [4]
Es posible crear tanto tablas en memoria como tablas basadas en disco. Las tablas pueden ser persistentes o temporales. Los tipos de índice son tabla hash y árbol para las tablas en memoria, y árbol b para las tablas basadas en disco. Todas las operaciones de manipulación de datos son transaccionales . Se implementan el bloqueo a nivel de tabla y el control de concurrencia de múltiples versiones . También se admite el protocolo de confirmación en dos fases , pero no se implementa ninguna API estándar para transacciones distribuidas. [ cita requerida ]
Las características de seguridad de la base de datos son: derechos de acceso basados en roles , cifrado de contraseñas mediante SHA-256 y datos mediante AES o el algoritmo de cifrado Tiny, XTEA . Las características criptográficas también están disponibles como funciones dentro de la base de datos. Las conexiones SSL / TLS son compatibles en el modo cliente-servidor, así como cuando se utiliza la aplicación de consola. [ cita requerida ]
La base de datos ofrece protección contra la inyección SQL al imponer el uso de sentencias parametrizadas. En H2, esta función se denomina "deshabilitar literales". [5]
Se incluyen dos implementaciones de búsqueda de texto completo : una implementación nativa y otra que utiliza Lucene . [ cita requerida ]
Se implementa una forma sencilla de alta disponibilidad: cuando se utiliza en modo cliente-servidor, el motor de base de datos admite conmutación por error activa (esto se conoce comúnmente como agrupamiento). Sin embargo, el modo de agrupamiento debe habilitarse manualmente después de una falla. [6]
Desde la versión 1.1.111, la base de datos en memoria H2 puede ejecutarse dentro de Google App Engine . [7]
Esta sección está escrita como una reflexión personal, un ensayo personal o un ensayo argumentativo que expresa los sentimientos personales de un editor de Wikipedia o presenta un argumento original sobre un tema. ( Julio de 2023 ) |
La documentación H2 explica en detalle varias formas en las que los problemas en el hardware subyacente y, en particular, en los sistemas de energía pueden afectar la durabilidad de las bases de datos relacionales.
Según la documentación de H2, estos problemas no solo están relacionados con el diseño del motor de la base de datos, sino también con el mecanismo de almacenamiento en caché. Como los dispositivos de almacenamiento utilizan la caché de escritura para aumentar la velocidad, en caso de corte de energía, se pierden los datos de la caché del dispositivo. Los administradores deben evaluar el equilibrio común entre la velocidad y los riesgos de pérdida de datos en el contexto de los requisitos comerciales y deben considerar cuidadosamente el diseño de la fuente de alimentación y el SAI de los servidores críticos.
En algunos casos, es posible forzar el almacenamiento para que escriba en caché con frecuencia o incluso inmediatamente mediante fsync , lo que ralentiza el proceso de escritura, o se puede aceptar que el almacenamiento en caché en el búfer del dispositivo introduzca cierto riesgo de pérdida de datos en caso de corte de energía. La eficacia de usar fsync está limitada por el hecho de que muchos discos duros tienen el almacenamiento en caché de escritura habilitado de fábrica, en cuyo caso no hay nada en el diseño o la configuración de la base de datos ni en los comandos de nivel del sistema operativo que puedan eliminar la posibilidad de pérdida o inconsistencia de datos en caso de un corte de energía repentino. Trabajar con la configuración del sistema operativo y del hardware para deshabilitar todo el almacenamiento en caché para escribir datos en tiempo real puede tener un impacto significativo en el rendimiento, ya que solo se podrían lograr alrededor de 100 operaciones de escritura por segundo al usar discos giratorios.
La documentación H2 hace un esfuerzo por describir en detalle [8] los problemas potenciales con la durabilidad (parte de ACID ) resultantes de la posible pérdida de datos de las transacciones confirmadas en caso de un corte de energía .
Teniendo en cuenta las limitaciones del hardware con respecto a la preservación de datos en caso de una pérdida repentina de energía y la ineficacia de los enfoques comúnmente empleados por los desarrolladores para evitar este tipo de pérdidas, muchos motores de bases de datos no llaman de manera predeterminada FileDescriptor.sync()
a nor FileChannel.force()
nor fsync o equivalentes para cada confirmación porque degradan significativamente el rendimiento del sistema sin aumentar significativamente la durabilidad.
La documentación de HSQLDB hace referencia a soluciones alternativas a un conjunto similar de problemas en su documentación. [9]
La Base de conocimiento de Microsoft describe el impacto que pueden tener problemas como fallas de energía, almacenamiento en caché de escritura, etc. en el rendimiento y la durabilidad. [10] La base de conocimiento analiza las compensaciones entre el rendimiento y la vulnerabilidad del almacenamiento en caché de escritura en disco, así como las configuraciones que un administrador puede usar para equilibrarlas.
Se incluye un servidor web integrado con una aplicación de consola basada en navegador, así como herramientas de línea de comandos para iniciar y detener un servidor, realizar copias de seguridad y restaurar bases de datos, y una herramienta de shell de línea de comandos. [ cita requerida ]