Articulo de referencia

Motor de base de datos Access

El motor de base de datos Access (también conocido como Office Access Connectivity Engine o ACE , y anteriormente como Microsoft Jet Database Engine , Microsoft JET Engine o sim...

El motor de base de datos Access (también conocido como Office Access Connectivity Engine o ACE , y anteriormente como Microsoft Jet Database Engine , Microsoft JET Engine o simplemente Jet ) es un motor de base de datos sobre el que se han desarrollado varios productos de Microsoft . La primera versión de Jet se desarrolló en 1992 y constaba de tres módulos que podían utilizarse para manipular una base de datos.

JET significa Joint Engine Technology (Tecnología de Motor Conjunto ). Microsoft Access y Visual Basic utilizan o han utilizado Jet como su motor de base de datos subyacente. Sin embargo, ha sido reemplazado para uso general, primero por Microsoft Desktop Engine (MSDE) y luego por SQL Server Express . Para necesidades de bases de datos más grandes, las bases de datos Jet se pueden actualizar (o, en la jerga de Microsoft, "ampliar") al producto estrella de Microsoft, SQL Server.

Arquitectura

Jet, al formar parte de un sistema de gestión de bases de datos relacionales (RDBMS), permite la manipulación de bases de datos relacionales . [ 1 ] Ofrece una interfaz única que otros programas pueden usar para acceder a las bases de datos de Microsoft y proporciona soporte para seguridad, integridad referencial , procesamiento de transacciones , indexación , bloqueo de registros y páginas, y replicación de datos. En versiones posteriores, el motor se ha ampliado para ejecutar consultas SQL , almacenar datos de caracteres en formato Unicode , crear vistas de bases de datos y permitir la replicación bidireccional con Microsoft SQL Server.

DLL de Jet

Jet consta de tres módulos: uno es el controlador ISAM nativo de Jet , una biblioteca de vínculos dinámicos (DLL) que puede manipular directamente archivos de bases de datos de Microsoft Access (MDB) mediante una API de sistema de archivos (de acceso aleatorio). Otro módulo contiene los controladores ISAM , DLL que permiten el acceso a diversas bases de datos ISAM ( Método de Acceso Secuencial Indexado ), entre ellas xBase , Paradox , Btrieve y FoxPro , según la versión de Jet. El último módulo es la DLL de objetos de acceso a datos (DAO). [ 2 ] DAO proporciona una API que permite a los programadores acceder a las bases de datos de JET utilizando cualquier lenguaje de programación.

Cierre

Jet permite que varios usuarios accedan a la base de datos simultáneamente. Para evitar que los datos se corrompan o invaliden cuando varios usuarios intentan editar el mismo registro o página de la base de datos, Jet emplea una política de bloqueo. Cada usuario solo puede modificar los registros de la base de datos (es decir, los elementos de la base de datos) a los que ha aplicado un bloqueo , que otorga acceso exclusivo al registro hasta que se libera el bloqueo. En las versiones de Jet anteriores a la versión 4, se utiliza un modelo de bloqueo de página, y en Jet 4, un modelo de bloqueo de registro. Las bases de datos de Microsoft se organizan en "páginas" de datos, que son estructuras de datos de longitud fija (2 kB antes de Jet 4, 4 kB en Jet 4). Los datos se almacenan en "registros" de longitud variable que pueden ocupar menos o más de una página. El modelo de bloqueo de página funciona bloqueando las páginas en su conjunto, en lugar de los registros individuales, lo que, si bien consume menos recursos, también significa que cuando un usuario bloquea un registro, todos los demás registros de la misma página se bloquean de forma colateral. Como resultado, ningún otro usuario puede acceder a los registros bloqueados colateralmente, aunque ningún usuario los esté utilizando y no haya necesidad de que estén bloqueados. En Jet 4, el modelo de bloqueo de registros elimina los bloqueos colaterales, de modo que todos los registros que no se utilizan están disponibles.  

Microsoft utiliza dos mecanismos de bloqueo : bloqueo pesimista y bloqueo optimista . Con el bloqueo pesimista, el registro o la página se bloquea inmediatamente al solicitarlo, mientras que con el bloqueo optimista, el bloqueo se retrasa hasta que se guarda el registro editado. Es menos probable que se produzcan conflictos con el bloqueo optimista, ya que el registro se bloquea solo durante un breve periodo de tiempo. Sin embargo, con el bloqueo optimista no se puede garantizar que la actualización se realice correctamente, puesto que otro usuario podría bloquear el registro primero. Con el bloqueo pesimista, la actualización se garantiza una vez obtenido el bloqueo. Los demás usuarios deben esperar a que se libere el bloqueo para poder realizar sus cambios. Los conflictos de bloqueo, que obligan al usuario a esperar o provocan que la solicitud falle (normalmente tras un tiempo de espera agotado), son más frecuentes con el bloqueo pesimista.

Procesamiento de transacciones

Jet admite el procesamiento de transacciones para sistemas de bases de datos que cuentan con esta capacidad ( los sistemas ODBC tienen procesamiento de transacciones de un solo nivel, mientras que varios sistemas ISAM, como Paradox, no lo admiten). Una transacción es una serie de operaciones realizadas en una base de datos que deben ejecutarse conjuntamente ; esto se conoce como atomicidad y es uno de los conceptos ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad), considerados las características clave del procesamiento de transacciones en un sistema de gestión de bases de datos . Para que el procesamiento de transacciones funcionara (hasta Jet 3.0), el programador debía iniciar la transacción manualmente, realizar las operaciones necesarias y, finalmente, confirmarla (guardarla). Hasta que la transacción se confirma, los cambios se realizan únicamente en memoria y no se escriben en disco.Las transacciones ofrecen varias ventajas sobre las actualizaciones independientes de la base de datos. Una de las principales es que pueden cancelarse si surge algún problema durante su ejecución. Este proceso, conocido como reversión de la transacción, restaura el estado de los registros de la base de datos al estado anterior a su inicio. Las transacciones también permiten que el estado de la base de datos se mantenga consistente si se produce un fallo del sistema durante una secuencia de actualizaciones que deben ser atómicas. No existe la posibilidad de que solo algunas de las actualizaciones se escriban en la base de datos; todas se completarán correctamente o los cambios se descartarán al reiniciarse el sistema. Gracias a la política de memoria de ODBC, las transacciones también permiten que muchas actualizaciones de un registro se realicen completamente en memoria, con una única y costosa escritura en disco al final.

Las transacciones implícitas eran compatibles con Jet 3.0. Estas transacciones se inician automáticamente después de que la última transacción se haya confirmado en la base de datos. En Jet, las transacciones implícitas se producían al ejecutar una instrucción SQL DML . Sin embargo, se descubrió que esto tenía un impacto negativo en el rendimiento en Windows de 32 bits (Windows 95, Windows 98), por lo que en Jet 3.5 Microsoft eliminó las transacciones implícitas al ejecutar instrucciones SQL DML.

Integridad de los datos

Jet garantiza la integridad de las entidades y la integridad referencial . Por defecto, Jet impide cualquier cambio en un registro que comprometa la integridad referencial, pero las bases de datos Jet pueden utilizar restricciones de propagación (actualizaciones en cascada y eliminaciones en cascada) para mantener dicha integridad.

Jet también admite "reglas de negocio" (también conocidas como "restricciones"), que son reglas que se aplican a cualquier columna para controlar qué datos se pueden introducir en la tabla o columna . Por ejemplo, se podría aplicar una regla que impida introducir una fecha anterior a la fecha y hora actuales en la columna date_logged, o una regla que obligue a introducir un valor positivo en un campo numérico.

Seguridad

El acceso a las bases de datos de Jet se realiza a nivel de usuario. La información del usuario se guarda en una base de datos del sistema separada, y el acceso se controla en cada objeto del sistema (por ejemplo, por tabla o por consulta). En Jet 4, Microsoft implementó una funcionalidad que permite a los administradores de bases de datos establecer la seguridad mediante los comandos SQL CREATE, ADD, ALTER, DROP USER y DROP GROUP. Estos comandos son un subconjunto del estándar ANSI SQL 92 y también se aplican a los comandos GRANT/REVOKE. [ 3 ] Cuando se lanzó Jet 2, la seguridad también se podía establecer programáticamente a través de DAO .

Consultas

Las consultas son los mecanismos que Jet utiliza para recuperar datos de la base de datos. Se pueden definir en Microsoft QBE (Consulta por Ejemplo), mediante la ventana SQL de Microsoft Access o a través del lenguaje de objetos de acceso a datos (DAO) de Access Basic. Posteriormente, se convierten en una instrucción SQL SELECT . La consulta se compila , lo que implica analizarla (verificando la sintaxis y determinando las columnas que se consultarán en la tabla de la base de datos), y luego convertirla a un formato interno de objeto de consulta de Jet. Este formato se tokeniza y se organiza en una estructura de árbol. A partir de Jet 3.0, estas consultas se optimizan mediante la tecnología de optimización de consultas Microsoft Rushmore . Finalmente, la consulta se ejecuta y los resultados se devuelven a la aplicación o al usuario que solicitó los datos.

Jet transfiere los datos obtenidos de la consulta a un conjunto dinámico (dynaset) . Este conjunto de datos se vincula dinámicamente a la base de datos. En lugar de almacenar el resultado de la consulta en una tabla temporal, donde el usuario no puede actualizar los datos directamente, el conjunto dinámico permite al usuario visualizar y actualizar los datos que contiene. Por lo tanto, si un profesor universitario consulta a todos los estudiantes que obtuvieron una calificación sobresaliente en su trabajo y encuentra un error en el registro de un estudiante, el usuario solo tendría que actualizar los datos en el conjunto dinámico, lo que actualizaría automáticamente el registro del estudiante en la base de datos sin necesidad de que el usuario envíe una consulta de actualización específica después de almacenar los resultados de la consulta en una tabla temporal.

Historia

Jet comenzó originalmente en 1992 como una tecnología subyacente de acceso a datos que provenía de un proyecto interno de desarrollo de productos de bases de datos de Microsoft, con nombre en clave Cirrus. Cirrus se desarrolló a partir de una versión preliminar del código de Visual Basic y se utilizó como motor de base de datos de Microsoft Access . Tony Goodhew, quien trabajaba para Microsoft en ese momento, dice:

"Sería bastante preciso decir que, hasta ese momento, Jet era más bien el nombre del equipo encargado de trabajar en los módulos del motor de base de datos de Access, en lugar de un equipo de componentes. Para VB [Visual Basic] 3.0, básicamente tuvieron que extraerlo de Access e integrarlo en VB. Por eso han tenido todos esos problemas con Jet/ODBC en VB 3.0."

Jet se volvió más modular con el lanzamiento de Access 2.0, ya que los desarrolladores de Access ODBC utilizaron partes del código de Jet para producir el controlador ODBC. Se proporcionó una actualización que permitió a los usuarios de Visual Basic 3.0 utilizar la versión actualizada de Jet incluida en Access 2.0. [ 6 ]

Jet 2.0 se lanzó como varias bibliotecas de enlace dinámico (DLL) utilizadas por software de aplicación , como la base de datos Access de Microsoft. En Windows, las DLL son bibliotecas de código común que pueden ser utilizadas por varias aplicaciones . Al mantener el código que utilizan varias aplicaciones en una biblioteca común, cada una de ellas puede usarlo de forma independiente, se reduce el mantenimiento del código y aumenta la funcionalidad de las aplicaciones con menos esfuerzo de desarrollo. Jet 2.0 constaba de tres DLL: la DLL de Jet, la DLL de objetos de acceso a datos (DAO) y varias DLL ISAM externas. La DLL de Jet determinaba el tipo de base de datos a la que accedía y cómo realizar la tarea solicitada. Si el origen de datos era un archivo MDB (formato de Microsoft Access), leía y escribía los datos directamente en el archivo. Si el origen de datos era externo, llamaba al controlador ODBC correspondiente para realizar la solicitud. La DLL DAO era un componente que los programadores podían usar para interactuar con el motor Jet, y era utilizada principalmente por programadores de Visual Basic y Access Basic. Las DLL de ISAM eran un conjunto de módulos que permitían a Jet acceder a tres bases de datos basadas en ISAM: xBase, Paradox y Btrieve.Jet 2.0 fue reemplazado por Jet 2.1, que utilizaba la misma estructura de base de datos pero diferentes estrategias de bloqueo, lo que lo hacía incompatible con Jet 2.0.

Jet 3.0 incluyó muchas mejoras, incluyendo una nueva estructura de índice que redujo el tamaño de almacenamiento y el tiempo que se tomó para crear índices que estaban altamente duplicados, la eliminación de bloqueos de lectura en páginas de índice, un nuevo mecanismo para la reutilización de páginas, un nuevo método de compactación para el cual la compactación de la base de datos resultó en que los índices se almacenaran en un formato de índice agrupado, un nuevo mecanismo de asignación de páginas para mejorar las capacidades de lectura anticipada de Jet, operaciones de eliminación mejoradas que aceleraron el procesamiento, multihilo (se usaron tres hilos para realizar lectura anticipada, escritura diferida y mantenimiento de caché), transacciones implícitas (los usuarios no tenían que instruir al motor para que se iniciara manualmente y confirmara transacciones en la base de datos), un nuevo motor de ordenación, los valores largos (como memos o tipos de datos binarios) se almacenaban en tablas separadas y almacenamiento en búfer dinámico (por el cual la caché de Jet se asignaba dinámicamente al inicio y no tenía límite y que cambió de una política de reemplazo de búfer primero en entrar, primero en salir (FIFO) a una política de reemplazo de búfer menos usado recientemente (LRU)). [ 7 ] Jet 3.0 también permitió la replicación de la base de datos. Jet 3.0 fue reemplazado por Jet 3.5, que utiliza la misma estructura de base de datos, pero diferentes estrategias de bloqueo, lo que lo hace incompatible con Jet 3.0.

Jet 4.0 obtuvo numerosas características y mejoras adicionales. [ 3 ]

  • Compatibilidad con el almacenamiento de caracteres Unicode , junto con un método de ordenación NT que también se implementó en la versión de Windows 95 ;
  • Cambios en los tipos de datos para que se parezcan más a los de SQL Server (LongText o Memo; Binary; LongBinary; Date/Time; Real; Float4; IEEESingle; Double; Byte o Tinyint; Integer o sinónimos de Integer Smallint, Integer2 y Short; LongInteger o sinónimos de LongInteger Int, Integer y Counter; Currency o Money; Boolean y GUID); un nuevo tipo de datos decimal
  • Ahora se pueden indexar los campos de tipo Memo.
  • Tipos de datos compresibles
  • Mejoras en SQL para que Jet se ajuste más al estándar ANSI SQL-92.
  • Seguridad más granular; soporte de vistas; soporte de procedimientos
  • Invocación y terminación (confirmación o reversión) de transacciones
  • Creación y modificación de tablas mejoradas
  • Soporte de integridad referencial
  • Control de conexión (los usuarios conectados permanecen conectados, pero una vez desconectados no pueden volver a conectarse y no se pueden establecer nuevas conexiones. Esto resulta útil para que los administradores de bases de datos obtengan el control de la base de datos).
  • Una lista de usuarios, que permite a los administradores determinar quién está conectado a la base de datos.
  • Bloqueo a nivel de registro (las versiones anteriores solo admitían el bloqueo de página).
  • Replicación bidireccional con MS SQL Server.

Las versiones de Microsoft Access desde Access 2000 hasta Access 2010 incluían un "Asistente para ampliar" que permitía " ampliar " (actualizar) una base de datos Jet a "una base de datos equivalente en SQL Server con la misma estructura de tablas, datos y muchos otros atributos de la base de datos original". Esta herramienta no gestionaba informes, consultas, macros ni seguridad, lo que significaba que podrían ser necesarias algunas modificaciones manuales si la aplicación dependía en gran medida de estas características de Jet. [ 8 ]

Una versión independiente del motor de base de datos Jet 4 era un componente de Microsoft Data Access Components (MDAC) y se incluyó en todas las versiones de Windows desde Windows 2000 en adelante. [ 9 ] El motor de base de datos Jet era solo de 32 bits y no se ejecutaba de forma nativa en versiones de 64 bits de Windows. Esto significaba que las aplicaciones nativas de 64 bits (como las versiones de 64 bits de SQL Server) no podían acceder a los datos almacenados en archivos MDB a través de ODBC, OLE DB o cualquier otro medio, excepto a través de un software intermedio de 32 bits (que se ejecutaba en WoW64 ) que actuaba como proxy para el cliente de 64 bits. [ 10 ]

A partir de la versión 2007, Access incluye una versión de Jet específica para Office, inicialmente llamada Office Access Connectivity Engine (ACE), pero que ahora se llama Access Database Engine (sin embargo, los consultores de MS-Access y los desarrolladores de VBA especializados en MS-Access suelen referirse a ella como "el motor de base de datos ACE"). Este motor era retrocompatible con versiones anteriores del motor Jet, por lo que podía leer y escribir archivos (.mdb) de versiones anteriores de Access. Introdujo un nuevo formato de archivo predeterminado, (.accdb), que aportó varias mejoras a Access, incluyendo tipos de datos complejos como campos multivalor, el tipo de datos adjunto y el seguimiento del historial en campos de notas. También introdujo cambios de seguridad y mejoras de cifrado, y permitió la integración con Microsoft Windows SharePoint Services 3.0 y Microsoft Office Outlook 2007. [ 11 ] [ 12 ] [ 13 ] Se puede obtener por separado. [ 14 ]

El motor de Microsoft Access 2010 dejó de ser compatible con Access 1.0, Access 2.0, Lotus 1-2-3 y archivos Paradox. [ 15 ] Se introdujo una versión de 64 bits de Access 2010 y su controlador/proveedor ACE, que en esencia proporciona una versión de 64 bits de Jet. El controlador no forma parte del sistema operativo Windows, pero está disponible como paquete redistribuible. [ 16 ] [ 17 ]

El motor de Microsoft Access 2013 dejó de ser compatible con Access 95, Access 97 y archivos xBase, y también dejó de ser compatible con la replicación. [ 18 ]

La versión 1608 de Microsoft Access 2016 restauró la compatibilidad con archivos xBase, [ 19 ] y la versión 1703 introdujo un tipo de datos de número grande. [ 20 ]

Desde el punto de vista de la tecnología de acceso a datos, Jet es considerada una tecnología obsoleta por Microsoft, [ 21 ] pero Microsoft continúa brindando soporte a ACE como parte de Microsoft Access.

Compatibilidad

Microsoft proporciona los controladores JET únicamente para Microsoft Windows, y el soporte de software de terceros para bases de datos JET se encuentra casi exclusivamente en Windows. Sin embargo, existen proyectos de código abierto que permiten trabajar con bases de datos JET en otras plataformas, incluyendo Linux . Cabe destacar MDB Tools y su versión Java, Jackcess, así como UCanAccess .

Véase también

Referencias

  1. "¿Qué es un SGBDR (sistema de gestión de bases de datos relacionales)? | Definición de TechTarget" . Gestión de datos . Consultado el 20 de junio de 2024 .
  2. "DAO, conectividad ODBC | PDF | Microsoft Access | Bases de datos" . Scribd . Consultado el 20 de junio de 2024 .
  3. 1 2 Artículo de la base de conocimientos de Microsoft 275561 (29 de enero de 2007). "Descripción de las nuevas características incluidas en Microsoft Jet 4.0" . Microsoft . Consultado el 19 de junio de 2008 .{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  4. El programa de instalación de Access 2002 solo actualizaba los archivos del sistema en ciertas versiones de Windows y hasta cierto nivel.
  5. Access 2003 dependía del componente Jet engine del sistema operativo para el almacenamiento de datos y el procesamiento de consultas.
  6. Goodhew, Tony (noviembre de 1996). "Motor a reacción: historia" . Archivado del original el 8 de agosto de 2017. Recuperado el 28 de marzo de 2020 .
  7. Artículo de la Base de Conocimientos de Microsoft n.º 137039 (3 de diciembre de 2003). «Nuevas características de Microsoft Jet versión 3.0» . Microsoft . Consultado el 19 de junio de 2008 .{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  8. Microsoft , "Opciones del motor de datos de Microsoft Access 2000", documento técnico.
  9. Artículo de la Base de Conocimientos de Microsoft 239114 (29 de mayo de 2008). "Cómo obtener el último Service Pack para el motor de base de datos Microsoft Jet 4.0" . Microsoft . Consultado el 2 de enero de 2010 .{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  10. Gorm Braarvig. "Acceso a la base de datos desde SQL 2005/64" . Consultado el 18 de junio de 2007 .
  11. Jakšić, Aleksandar (agosto de 2008). "Desarrollo de soluciones Access 2007 con C o C++ nativo" . Microsoft Corporation . Consultado el 26 de agosto de 2008 .
  12. Andy Baron, Optimización de aplicaciones de Microsoft Office Access vinculadas a SQL Server , noviembre de 2006.
  13. Microsoft, Nuevas características del formato de archivo Access 2007 Archivado el 27/12/2009 en Wayback Machine .
  14. Controlador del sistema Office 2007: Componentes de conectividad de datos
  15. Microsoft, Funciones descontinuadas y funcionalidad modificada en Access 2010 .
  16. Adam W. Saxton, Servicios de escalamiento de Microsoft SQL Server (21 de enero de 2010). "¿Cómo obtener una versión x64 de Jet?" . Consultado el 29 de octubre de 2021 .
  17. "Motor de base de datos de Microsoft Access 2010 redistribuible" . Archivado del original el 7 de septiembre de 2010.
  18. Microsoft, Funciones descontinuadas y funcionalidad modificada en Access 2013 .
  19. Microsoft, a petición popular: compatibilidad con archivos dBASE en Access
  20. Microsoft, Novedades de Access 2016
  21. Shirolkar, Prash; Henry, Alyssa; Pepitone, Stephen; Bunch, Acey J. (enero de 2008). "Hoja de ruta de las tecnologías de acceso a datos" . Microsoft Corporation . Recuperado el 19 de junio de 2008 .

Lecturas adicionales

  • Guía del programador del motor de base de datos Microsoft Jet , Microsoft, 1995
  • Biblioteca del Congreso, Familia de formatos de archivo MDB de Microsoft Access
  • Biblioteca del Congreso, Familia de formatos de archivo ACCDB de Microsoft Access