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]
Versión inicial | Diciembre de 2005 |
---|---|
Lanzamiento estable | 1.4.200 / 14 de octubre de 2019 |
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 | h2database |
El software está disponible como software de código abierto Mozilla Public License 2.0 o la licencia pública Eclipse original .
Principales características
Uso de SQL
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 actuando como un servidor PostgreSQL. [2]
Tipos de tablas
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 tablas en memoria y árbol b para 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 . El protocolo de confirmación de 2 fases también es compatible, pero no se implementa una API estándar para transacciones distribuidas.
Características de seguridad
Las características de seguridad de la base de datos son: derechos de acceso basados en roles , encriptación de la contraseña usando SHA-256 y datos usando AES o el Tiny Encryption Algorithm, 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 usa la aplicación de consola.
La base de datos admite la protección contra la inyección de SQL al hacer cumplir el uso de declaraciones parametrizadas. En H2, esta característica se llama 'deshabilitar literales'. [3]
Capacidad de búsqueda de texto completo
Se incluyen dos implementaciones de búsqueda de texto completo , una implementación nativa y otra que usa Lucene .
Alta disponibilidad
Se implementa una forma simple de alta disponibilidad: cuando se usa en el modo cliente-servidor, el motor de la base de datos admite la conmutación por error en caliente (esto se conoce comúnmente como agrupación en clústeres). Sin embargo, el modo de agrupación en clúster debe habilitarse manualmente después de una falla. [4]
Versión en la nube
Desde la versión 1.1.111, la base de datos H2 en memoria se puede ejecutar dentro de Google App Engine . [5]
Desafíos que afectan la durabilidad de las bases de datos relacionales
La documentación H2 explica en detalle varias formas en las que los problemas en el hardware subyacente y, en particular, los sistemas de energía pueden afectar la durabilidad de las bases de datos relacionales.
Según la documentación H2, estos problemas están relacionados no solo con el diseño del motor de base de datos, sino también con el mecanismo de almacenamiento en caché. Dado que los dispositivos de almacenamiento utilizan la caché de escritura para aumentar la velocidad, en una situación de corte de energía, se pierden los datos de la caché del dispositivo. Luego, 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 UPS de los servidores críticos.
En algunos casos, es posible forzar al almacenamiento a escribir caché con frecuencia o incluso inmediatamente usando fsync, lo que ralentiza el proceso de escritura o se puede aceptar que el almacenamiento en caché en el búfer del dispositivo presenta algún riesgo de pérdida de datos en caso de falla de energía. La efectividad de usar fsync está limitada por el hecho de que muchos HDD tienen el almacenamiento en caché de escritura habilitado por defecto de fábrica, en cuyo caso no hay nada sobre el diseño o la configuración de la base de datos ni los comandos de nivel de sistema operativo que puedan eliminar por completo la posibilidad de pérdida o datos inconsistentes en caso de una falla repentina de energía. Trabajar con la configuración del sistema operativo y del hardware para deshabilitar todo el almacenamiento en caché y 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 cuando se utilizan discos giratorios.
La documentación H2 hace un esfuerzo por describir en detalle [6] los problemas potenciales con la durabilidad (parte de ACID ) que resultan de la posible pérdida de datos de las transacciones comprometidas en caso de un corte de energía .
Teniendo en cuenta las limitaciones de 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 base de datos no llaman por defecto a FileDescriptor.sync () ni a FileChannel.force () ni 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 provisionales para un conjunto similar de problemas en su documentación. [7]
La base de conocimientos de Microsoft describe el impacto que estos problemas, fallas de energía, almacenamiento en caché de escritura, etc. pueden tener en el rendimiento y la durabilidad. [8] La base de conocimientos 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 utilizar para equilibrarlas.
Utilidades
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.
Historia
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 Java Hypersonic SQL. [9] En 2001, se detuvo el proyecto SQL hipersónico y se formó el Grupo HSQLDB para continuar trabajando en el código SQL hipersónico. El nombre H2 significa Hypersonic 2, sin embargo H2 no comparte código con Hypersonic SQL o HSQLDB. H2 se construye desde cero. [10]
Ver también
- Lista de sistemas de gestión de bases de datos relacionales
- Comparación de sistemas de gestión de bases de datos relacionales
- Apache Derby
- HSQLDB
Referencias
- ^ "Presentación y uso del motor de base de datos H2" .
- ^ "La base de datos H2 admite el controlador ODBC de PostgreSQL" .
- ^ "Inyecciones SQL: cómo no atascarse" .
- ^ "Agrupación H2" . Archivado desde el original el 24 de septiembre de 2010.
- ^ "Base de datos H2 en GAE" . gaevfs.
- ^ "Avanzado" . Consultado el 30 de octubre de 2014 .
- ^ "Capítulo 9. Sintaxis SQL" . Archivado desde el original el 19 de mayo de 2018 . Consultado el 30 de octubre de 2014 .
- ^ "Rendimiento lento del disco cuando está habilitado el almacenamiento en caché de escritura" . Archivado desde el original el 31 de diciembre de 2014 . Consultado el 21 de diciembre de 2014 .
- ^ Página del proyecto SQL hipersónico en SourceForge
- ^ "Escriba su propia base de datos, de nuevo" . thecodist.com .
enlaces externos
- Página web oficial
- Proveedor H2Sharp Ado.Net para H2
- Tutorial de base de datos H2