H2 (base de datos)

Motor de base de datos H2
Lanzamiento inicialDiciembre de 2005 ; hace 18 años ( 2005-12 )
Versión estable
2.2.220 / 4 de julio de 2023 ; hace 15 meses ( 04-07-2023 )
Repositorio
  • github.com/h2database/h2database
Escrito enJava
Sistema operativoMultiplataforma
TipoSistema de gestión de bases de datos relacionales
LicenciaLicencia pública de Eclipse o Licencia pública de Mozilla 2.0
Sitio webBase 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 ]

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 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]

Características principales

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 al actuar como un servidor PostgreSQL. [4]

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 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 ]

Características de seguridad

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]

Capacidad de búsqueda de texto completo

Se incluyen dos implementaciones de búsqueda de texto completo : una implementación nativa y otra que utiliza Lucene . [ cita requerida ]

Alta disponibilidad

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]

Versión en la nube

Desde la versión 1.1.111, la base de datos en memoria H2 puede ejecutarse dentro de Google App Engine . [7]

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, 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.

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. [ cita requerida ]

Véase también

Referencias

  1. ^ "Presentación y uso del motor de base de datos H2". 6 de agosto de 2010.
  2. ^ Página del proyecto Hypersonic SQL en SourceForge
  3. ^ "Escribe tu propia base de datos, otra vez". thecodist.com . Archivado desde el original el 7 de marzo de 2019 . Consultado el 27 de abril de 2011 .
  4. ^ "La base de datos H2 admite el controlador ODBC de PostgreSQL". Archivado desde el original el 9 de diciembre de 2016. Consultado el 24 de agosto de 2010 .
  5. ^ "Inyecciones SQL: cómo no quedarse atascado".
  6. ^ "Agrupamiento H2". Archivado desde el original el 24 de septiembre de 2010.
  7. ^ "Base de datos H2 sobre GAE". gaevfs.
  8. ^ "Avanzado" . Consultado el 30 de octubre de 2014 .
  9. ^ "Capítulo 9. Sintaxis SQL". Archivado desde el original el 19 de mayo de 2018. Consultado el 30 de octubre de 2014 .
  10. ^ "Rendimiento lento del disco cuando el almacenamiento en caché de escritura está habilitado". Archivado desde el original el 31 de diciembre de 2014 . Consultado el 21 de diciembre de 2014 .
  • Sitio web oficial
  • Tutorial de base de datos H2
Obtenido de "https://es.wikipedia.org/w/index.php?title=H2_(base de datos)&oldid=1248598688"