Usuario:JCAM1989/Taller

De Wikipedia, la enciclopedia libre
Motor de base de datos de Access
Información general
Tipo de programa Motor de base de datos
Desarrollador Microsoft

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

JET son las siglas de Joint Engine Technology. Microsoft Access y Visual Basic utilizan o han utilizado Jet como su motor de base de datos subyacente. Sin embargo, ha sido sustituido para su uso general, primero por Microsoft Desktop Engine (MSDE), y después por SQL Server Express. Para las necesidades de bases de datos más grandes, las bases de datos Jet pueden actualizarse (o, en la jerga de Microsoft, "aumentarse de tamaño") al producto de base de datos insignia de Microsoft, SQL Server.

Una base de datos MS Jet (Red) de cinco mil millones de registros con la compresión y el cifrado activados requiere alrededor de un terabyte de espacio de almacenamiento en disco{[cita requerida]. Suele constar de cientos de archivos *.mdb.

Arquitectura[editar]

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. Ofrece una única interfaz que otro software puede utilizar para acceder a las bases de datos de Microsoft y proporciona soporte para la seguridad, la integridad referencial, el procesamiento de transacciones, el índiceing, el record y el bloqueo de páginas, y la 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 base de datos y permitir la replicación bidireccional con Microsoft SQL Server.

Jet DLLs

Hay tres módulos para Jet: Uno es el Native Jet ISAM Driver, una dynamic link library (DLL) que puede manipular directamente los archivos de bases de datos de Microsoft Access (MDB) utilizando una API del sistema de archivos (de acceso aleatorio). Otro de los módulos contiene los ISAM Drivers, DLLs que permiten el acceso a una variedad de Indexed Sequential Access Method ISAM, entre ellos xBase, Paradox, Btrieve y FoxPro, dependiendo de la versión de Jet. El último módulo es el DLL Data Access Objects (DAO). DAO proporciona una API que permite a los programadores acceder a las bases de datos de JET utilizando cualquier lenguaje de programación.

Bloqueo[editar]

Jet permite que varios usuarios accedan a la base de datos simultáneamente. Para evitar que los datos se corrompan o se invaliden cuando varios usuarios intentan editar el mismo registro o página de la base de datos, Jet emplea una política de bloqueo. Cualquier usuario puede modificar sólo aquellos registros de la base de datoss (es decir, elementos de la base de datos) a los que el usuario ha aplicado un lock, que da acceso exclusivo al registro hasta que se libera el bloqueo. En las versiones de Jet anteriores a la 4, se utiliza un modelo de bloqueo de páginas, y en Jet 4, un modelo de bloqueo de registros. 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áginas funciona bloqueando las páginas, en lugar de los registros individuales, lo que aunque 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 colateralmente. Como resultado, ningún otro usuario puede acceder a los registros bloqueados colateralmente, aunque ningún usuario esté accediendo a ellos 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 están en uso están disponibles.

Hay dos mecanismos que Microsoft utiliza para el bloqueo: bloqueo pesimista, y bloqueo optimista. Con el bloqueo pesimista, el registro o la página se bloquea inmediatamente cuando se solicita el bloqueo, mientras que con el bloqueo optimista, el bloqueo se retrasa hasta que se guarda el registro editado. Con el bloqueo optimista es menos probable que se produzcan conflictos, ya que el registro se bloquea sólo durante un breve periodo de tiempo. Sin embargo, con el bloqueo optimista no se puede estar seguro de que la actualización vaya a tener éxito porque otro usuario podría bloquear el registro primero. Con el bloqueo pesimista, se garantiza el éxito de la actualización una vez que se obtiene el bloqueo. Los demás usuarios deben esperar a que se libere el bloqueo para realizar sus cambios. Los conflictos de bloqueo, que obligan al usuario a esperar, o hacen que la solicitud falle (normalmente después de un tiempo de espera) son más comunes con el bloqueo pesimista.

Procesamiento de transacciones[editar]

Jet soporta el procesamiento de transacciones para los sistemas de bases de datos que tienen esta capacidad. (ODBC los sistemas tienen un nivel de procesamiento de transacciones, mientras que varios sistemas ISAM como Paradox no soportan el procesamiento de transacciones). Una transacción es una serie de operaciones realizadas en una base de datos que deben hacerse juntas — esto se conoce como atomicidad y es uno de los ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad), conceptos considerados como las características clave del procesamiento de transacciones de un sistema de gestión de bases de datos. Para que el procesamiento de transacciones funcione (hasta Jet 3.0), el programador tenía que iniciar la transacción manualmente, realizar las operaciones necesarias en la transacción y, a continuación, confirmar (guardar) la transacción. Hasta que la transacción se consigna, los cambios se realizan sólo en la memoria y no se escriben en el disco. Las transacciones tienen una serie de ventajas sobre las actualizaciones independientes de la base de datos. Una de las principales ventajas es que las transacciones pueden abandonarse si se produce un problema durante la transacción. A esto se le llama revertir la transacción, o simplemente rollback, y restaura el estado de los registros de la base de datos precisamente al estado anterior al inicio de la transacción. Las transacciones también permiten que el estado de la base de datos siga siendo coherente si se produce un fallo del sistema en medio de una secuencia de actualizaciones que deben ser atómicas. No existe la posibilidad de que sólo algunas de las actualizaciones acaben escribiéndose en la base de datos; o bien todas tendrán éxito, o bien los cambios se descartarán cuando se reinicie el sistema de la base de datos. Con la política en memoria de ODBC, las transacciones también permiten que muchas actualizaciones de un registro se produzcan completamente en memoria, con una sola y costosa escritura en disco al final.

Las transacciones implícitas fueron soportadas en Jet 3.0. Se trata de transacciones que se inician automáticamente después de que la última transacción se haya consignado en la base de datos. Las transacciones implícitas en Jet ocurrían cuando un 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 cuando se hacían sentencias SQL DML.

Integridad de los datos[editar]

Jet refuerza la integridad de la entidad y la integridad referencial. Jet evitará por defecto cualquier cambio en un registro que rompa la integridad referencial, pero las bases de datos de Jet pueden utilizar restricciones de propagacións (actualizaciones y eliminaciones en cascada) para mantener la integridad referencial.

Jet también soporta "reglas de negocio" (también conocidas como "restricciones"), o reglas que se aplican a cualquier columna para imponer qué datos pueden ser colocados en la tabla o columna. Por ejemplo, se puede aplicar una regla que no permita introducir una fecha en una columna date_logged que sea anterior a la fecha y hora actuales, o se puede aplicar una regla que obligue a introducir un valor positivo en un campo sólo numérico.

Seguridad[editar]

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 a través de 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.[1]​ Cuando se lanzó Jet 2, la seguridad también podía establecerse mediante programación a través de DAO.

Consultas[editar]

Las consultas son los mecanismos que Jet utiliza para recuperar datos de la base de datos. Pueden ser definidas en Microsoft QBE (Query By Example), a través de la ventana SQL de Microsoft Access o a través del lenguaje Data Access Objects (DAO) de Access Basic. A continuación, se convierten en una sentencia SQL SELECT. La consulta es entonces compiled — esto implica el análisis de la consulta (implica la comprobación de la sintaxis y la determinación de las columnas a consultar en la tabla de la base de datos), luego se convierte en un formato de objeto de consulta interno de Jet, que es entonces tokenized y organizado en una estructura similar a un árbol. A partir de Jet 3.0, estas consultas se optimizan utilizando la tecnología de optimización de consultas Microsoft Rushmore. La consulta se ejecuta y los resultados se devuelven a la aplicación o al usuario que solicitó los datos.

Jet pasa los datos recuperados para la consulta en un dynaset. Se trata de un conjunto de datos que se vincula dinámicamente a la base de datos. En lugar de tener el resultado de la consulta almacenado en una tabla temporal, donde los datos no pueden ser actualizados directamente por el usuario, el dynaset permite al usuario ver y actualizar los datos contenidos en el dynaset. Así, si un profesor universitario consulta a todos los estudiantes que han recibido una distinción en su tarea y encuentra un error en el registro de ese estudiante, sólo tendría que actualizar los datos en el dynaset, que actualizaría automáticamente el registro de la base de datos del estudiante sin necesidad de enviar una consulta de actualización específica después de almacenar los resultados de la consulta en una tabla temporal.

Historia[editar]

Jet version Jet engine DLL file name Supported database versions
1.0 1.0
1.1 1.10.0001 MSAJT110.DLL
1.0
2.0 2.00.0000 MSAJT200.DLL
1.0
2.5 2.50.1606 MSAJT200.DLL
1.0
3.0 3.0.0.2118 MSJT3032.DLL
1.0
3.5 3.51.3328.0 MSJET35.DLL
1.0
4.0 SP8 4.0.8015.0 MSJET40.DLL
1.0
ACE 12 12.0.xxxx.xxxx ACECORE.DLL
1.0
ACE 14 14.0.xxxx.xxxx ACECORE.DLL
3.X
ACE 15 15.0.xxxx.xxxx ACECORE.DLL
4.0
ACE 16 16.0.xxxx.xxxx ACECORE.DLL
4.0
Application/Version Jet version
Microsoft Access 1.0 1.0
Microsoft Access 1.1 1.1
Microsoft Access 2.0 2.0
Microsoft Access 2.0 Service Pack 2.5
Microsoft Access 95
3.0
Microsoft Access 97, Excel 97, PowerPoint 97 y Word 97 3.5
Microsoft Access 2000 4.0 SP1
Microsoft Access 2002 [2]
Microsoft Access 2003 [3]
Microsoft Access 2007 ACE 12
Microsoft Access 2010 ACE 14
Microsoft Access 2013 ACE 15
Microsoft Access 2016 ACE 16
Visual Basic 3.0 1.1
Capa de compatibilidad de Visual Basic 2.0
Visual Basic 4.0 16 bits 2.5
Visual Basic 4.0 32 bits 3.0
Visual Basic 5.0 3.5
Visual C++] 4.X 3.0
Visual C++ 5.0 3.5
Microsoft Project 4.1 y Project 95 3.0
Internet Information Server 3.0 3.5
SQL Server 7.0 4.0
Instaladores redistribuibles
Descarga web de Jet 3.51 3.5+
MDAC 2.1 4.0 SP1
MDAC 2.5 4.0 SP3 a SP6+
Jet 4.0 4.0 SP3 a SP8
2007 Office System Driver ACE 12
Microsoft Access Database Engine 2010 ACE 14
Microsoft Access Database Engine 2016 ACE 16
Sistemas operativos
Windows Me 4.0 SP3
Windows 2000 4.0 SP3
Windows XP 4.0 SP5+
Windows Server 2003 4.0 SP6+
Windows Vista 4.0 SP8+
Windows Server 2008 4.0 SP8+
Windows 7 4.0 SP8+

Jet comenzó originalmente en 1992 como una tecnología de acceso a datos subyacente que provenía de un proyecto interno de desarrollo de productos de bases de datos de Microsoft, cuyo código se llamaba Cirrus. Cirrus se desarrolló a partir de una versión previa al lanzamiento del código de Visual Basic y se utilizó como motor de base de datos de Microsoft Access. Tony Goodhew, que trabajaba para Microsoft en esa época, dice

"Sería razonablemente exacto decir que hasta esa etapa Jet era más el nombre del equipo que se asignaba para trabajar en los módulos del motor de base de datos de Access que un equipo de componentes. Para VB [Visual Basic] 3.0 básicamente tuvieron que arrancarlo de Access e injertarlo en VB. Por eso han tenido todos esos problemas de Jet/ODBC en VB 3.0".

Jet se convirtió en un componente más cuando se lanzó Access 2.0 porque los desarrolladores de Access ODBC utilizaron partes del código de Jet para producir el controlador ODBC. Se proporcionó una adaptación que permitía a los usuarios de Visual Basic 3.0 utilizar el Jet actualizado emitido en Access 2.0.[4]

Jet 2.0 fue lanzado como varias Librerías enlazadas dinámicas (DLLs) que fueron utilizadas por software de aplicación, como la base de datos Access de Microsoft. Las DLL en Windows son "bibliotecas" de código común que pueden ser utilizadas por más de una aplicación— al mantener el código que utiliza más de una aplicación bajo una biblioteca común que cada una de estas aplicaciones puede utilizar 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 se compone de tres DLLs: la DLL de Jet, la DLL de Data Access Objects (DAO) y varias DLLs externas de ISAM. La DLL de Jet determinaba a qué tipo de base de datos estaba accediendo, y cómo realizar lo que se le pedía. Si la fuente de datos era un archivo MDB (un formato de Microsoft Access), entonces leería y escribiría directamente los datos en el archivo. Si la fuente de datos era externa, entonces llamaría al controlador ODBC correcto para realizar su solicitud. La DLL DAO era un componente que los programadores podían utilizar para interactuar con el motor Jet, y era utilizada principalmente por los programadores de Visual Basic y Access Basic. Las DLL 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 sustituido 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 incluía muchas mejoras, incluyendo una nueva estructura de índice que reducía el tamaño de almacenamiento y el tiempo que se tardaba en crear índices que estaban muy duplicados, la eliminación de los bloqueos de lectura en las páginas de índice, un nuevo mecanismo de reutilización de páginas, un nuevo método de compactación para el que la compactación de la base de datos daba lugar a 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 borrado mejoradas que aceleraban el procesamiento, multithreading (se utilizaban tres hilos para realizar la lectura anticipada, escribir detrás, y el mantenimiento de la caché), transacciones implícitas (los usuarios no tenían que instruir al motor para que iniciara manualmente y consignara las transacciones en la base de datos), un nuevo motor de ordenación, los valores largos (como los memos o los tipos de datos binarios) se almacenaban en tablas separadas, y el buffering dinámico (por el que la caché de Jet se asignaba dinámicamente al inicio y no tenía límite y que cambiaba de una política de sustitución de búferes primero en entrar, primero en salir (FIFO) a una política de sustitución de búferes menos usado recientemente (LRU)). [5]​ Jet 3.0 también permitía la replicación de bases de datos. Jet 3.0 fue sustituido 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.[1]

  • Soporte de almacenamiento de caracteres Unicode, junto con un método de ordenación de NT que también se implementó en la versión de Windows 95;
  • Cambios en los tipos de datos para que sean más parecidos a los de SQL Server (LongText o Memo; Binary; LongBinary; Date/Time; Real; Float4; IEEESingle; Double; Byte o Tinyint; Integer o Integer sinónimos de Smallint, Integer2, y Short; LongInteger o LongInteger sinónimos de Int, Integer, y Counter; Currency o Money; Boolean y GUID); un nuevo tipo de datos decimal
  • Los campos memo ahora pueden ser indexados.
  • Tipos de datos comprimibles
  • Mejoras en SQL para que Jet se ajuste más a ANSI SQL-92
  • Seguridad de grano más fino; soporte de vistas; soporte de procedimientos
  • Invocación y terminación (committing o rolling back) de transacciones
  • Creación y modificación de tablas mejoradas
  • Soporte de integridad referencial
  • Control de la conexión (los usuarios conectados permanecen conectados, pero una vez desconectados no pueden volver a conectarse, y no se pueden realizar nuevas conexiones. Esto es útil para que los administradores de la base de datos tengan el control de la misma)
  • 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 sólo permitían el bloqueo de páginas)
  • Replicación bidireccional con MS SQL Server.

Las versiones de Microsoft Access desde Access 2000 hasta Access 2010 incluían un "Asistente de ampliación" que podía "upsize" (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". Los informes, las consultas, las macros y la seguridad no eran manejados por esta herramienta, lo que significa que podrían ser necesarias algunas modificaciones manuales si la aplicación dependía en gran medida de estas características de Jet.[6]

Una versión independiente del motor de base de datos Jet 4 era un componente de Microsoft Data Access Components (MDAC), y se incluía en cada versión de Windows a partir de Windows 2000.[7]​ El motor de base de datos Jet sólo era de 32 bits y no funcionaba de forma nativa en las 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.[8]

A partir de la versión 2007, Access incluye una versión de Jet específica para Office, llamada inicialmente Office Access Connectivity Engine (ACE), pero que ahora se denomina Access Database Engine (Sin embargo, los consultores de MS-Access y los desarrolladores de VBA especializados en MS-Access suelen referirse a él como ACE Database Engine).[cita requerida] Este motor era compatible 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 por defecto, (.accdb), que aportó varias mejoras a Access, como los tipos de datos complejos, como los campos multivalor, el tipo de datos adjuntos y el seguimiento del historial en los campos memo. También aportó cambios de seguridad y mejoras de encriptación y permitió la integración con Microsoft Windows SharePoint Services 3.0 y Microsoft Office Outlook 2007.[9][10]​Microsoft, Nuevas características del formato de archivo de Access 2007 (enlace roto disponible en este archivo)..</ref>

El motor de Microsoft Access 2010 suspendió la compatibilidad con los archivos de Access 1.0, Access 2.0, Lotus 1-2-3 y Paradox.[11]​ 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 redistribuible.[12]

El motor de Microsoft Access 2013 suspendió la compatibilidad con los archivos de Access 95, Access 97 y xBase, y también suspendió la compatibilidad con la replicación.[13]

La versión 1608 de Microsoft Access 2016 restauró la compatibilidad con los archivos xBase,[14]​ y la versión 1703 introdujo un tipo de datos Large Number.[15]

Desde el punto de vista de la tecnología de acceso a los datos, Jet se considera una tecnología obsoleta por parte de Microsoft,[16]​ pero Microsoft sigue dando soporte a ACE como parte de Microsoft Access.

Compatibilidad[editar]

Microsoft proporciona los controladores JET sólo para Microsoft Windows. Por lo tanto, el soporte de software de terceros para las bases de datos JET se encuentra casi exclusivamente en Windows. Existe un proyecto Fuente abierta que intenta permitir el trabajo con bases de datos JET en otras plataformas, MDB Tools y su puerto Java muy ampliado llamado Jackcess.

Ver también[editar]

Referencias[editar]

  1. a b MS KB article 275561 (29 de enero de 2007). «Descripción de las nuevas características que se incluyen en Microsoft Jet 4. 0». Microsoft. Consultado el 19 de junio de 2008. 
  2. El programa de instalación de Access 2002 sólo actualizaba los archivos del sistema en determinadas versiones de Windows y hasta cierto nivel.
  3. Access 2003 se basó en el componente del motor Jet del sistema operativo para su almacenamiento de datos y procesamiento de consultas.
  4. Goodhew, Tony (Noviembre 1996). «Motor Jet: Historia». Archivado desde el original el 8 de agosto de 2017. Consultado el 28 de marzo de 2020. 
  5. MS KB article 137039 (3 de diciembre de 2003). «Nuevas características en Microsoft Jet versión 3.0». Microsoft. Consultado el 19 de junio de 2008. 
  6. Microsoft, "Microsoft Access 2000 Data Engine Options", white paper.
  7. MS KB article 239114 (29 de mayo de 2008). com/kb/239114/es «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. 
  8. Gorm Braarvig. «Base de datos Access de SQL 2005/64». Consultado el 18 de junio de 2007. 
  9. Jakšić, Aleksandar (August 2008). «Desarrollo de soluciones Access 2007 con C o C++ nativos». Microsoft Corporation. Consultado el 26 de agosto de 2008. 
  10. Andy Baron, ).aspx Optimización de las aplicaciones de Microsoft Office Access vinculadas a SQL Server, noviembre de 2006.
  11. Microsoft, Características suspendidas y funcionalidad modificada en Access 2010.
  12. Adam W. Saxton, Microsoft SQL Server Escalation Services (21 de enero de 2010). «¿Cómo obtener una versión x64 de Jet?». Consultado el 29 de octubre de 2021. 
  13. Microsoft, Características suspendidas y funcionalidad modificada en Access 2013.
  14. Microsoft, Back by popular demand-dBASE file support in Access
  15. Microsoft, Novedades en Access 2016
  16. Shirolkar, Prash; Henry, Alyssa; Pepitone, Stephen; Bunch, Acey J. (Enero 2008). aspx «Data Access Technologies Road Map». Microsoft Corporation. Consultado el 19 de junio de 2008. 

Lectura adicional[editar]