Motor de base de datos Microsoft Jet - Microsoft Jet Database Engine

Motor de base de datos Microsoft Jet
Otros nombres Motor JET de Microsoft
Desarrollador (es) Microsoft
Versión inicial 1992 ; Hace 29 años ( 1992 )
Lanzamiento estable
ACE 16
Sistema operativo Microsoft Windows
Escribe Motor de base de datos
Sitio web oficina .microsoft .com / en-us / access / Edita esto en Wikidata

El motor de base de datos Microsoft Jet (también Microsoft JET Engine o simplemente Jet ) es un motor de base de datos en el que se han construido 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 son las siglas de Joint Engine Technology . Microsoft Access y Visual Basic usan o han usado Jet como su motor de base de datos subyacente. Sin embargo, ha sido reemplazado para uso general, primero por Microsoft Desktop Engine (MSDE), luego por SQL Server Express . Para necesidades de bases de datos más grandes, las bases de datos Jet se pueden actualizar (o, en el lenguaje de Microsoft, "aumentar 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 compresión y cifrado activados requiere aproximadamente un terabyte de espacio de almacenamiento en disco. Por lo general, comprende cientos de archivos * .mdb.

Arquitectura

Jet, al ser parte de un sistema de administración de bases de datos relacionales (RDBMS), permite la manipulación de bases de datos relacionales . Ofrece una interfaz única que otro software puede usar para acceder a las bases de datos de Microsoft y brinda 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

Hay tres módulos para Jet: uno es el controlador Native Jet ISAM , una biblioteca de vínculos dinámicos (DLL) que puede manipular directamente archivos de base de datos de Microsoft Access (MDB) mediante una API de sistema de archivos (acceso aleatorio). Otro de los módulos contiene los Controladores ISAM , DLL que permiten el acceso a una variedad de bases de datos ISAM del Método de Acceso Secuencial Indexado , entre ellas xBase , Paradox , Btrieve y FoxPro , dependiendo de la versión de Jet. El módulo final es la DLL de objetos de acceso a datos (DAO). DAO proporciona una API que permite a los programadores acceder a las bases de datos JET utilizando cualquier lenguaje de programación.

Cierre

Jet permite que varios usuarios accedan a la base de datos al mismo tiempo. Para evitar que esos 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. Cualquier usuario puede modificar solo los registros de la base de datos (es decir, los elementos de la base de datos) a los que el usuario ha aplicado un bloqueo , lo que otorga acceso exclusivo al registro hasta que se libere el bloqueo. En las versiones Jet anteriores a la versión 4, se utiliza un modelo de bloqueo de página, y en Jet 4, se emplea un modelo de bloqueo de registros. Las bases de datos de Microsoft están organizadas 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 lugar de los registros individuales, lo que, aunque requiere 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 esté accediendo a ellos y no hay 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 utiliza Microsoft para bloquear : 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. Es menos probable que se produzcan conflictos con el bloqueo optimista, ya que el registro se bloquea solo durante un breve período de tiempo. Sin embargo, con el bloqueo optimista, no se puede estar seguro de que la actualización se realizará correctamente porque otro usuario podría bloquear el registro primero. Con el bloqueo pesimista, se garantiza que la actualización se realizará correctamente una vez que se obtenga el bloqueo. Otros usuarios deben esperar hasta que se libere el bloqueo para realizar sus cambios. Los conflictos de bloqueo, que requieren que el usuario espere o hacen que la solicitud falle (generalmente después de un tiempo de espera) son más comunes con el bloqueo pesimista.

Procesamiento de transacciones

Jet admite el procesamiento de transacciones para los sistemas de bases de datos que tienen esta capacidad. (Los sistemas ODBC tienen procesamiento de transacciones de un nivel, mientras que varios sistemas ISAM como Paradox no admiten el procesamiento de transacciones). Una transacción es una serie de operaciones realizadas en una base de datos que deben realizarse juntas; esto se conoce como atomicidad y es uno de los ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad), conceptos que se consideran las características clave de procesamiento de transacciones de un sistema de administración de bases de datos . Para que el procesamiento de transacciones funcione (hasta Jet 3.0), el programador necesitaba comenzar la transacción manualmente, realizar las operaciones necesarias en la transacción y luego confirmar (guardar) la transacción. Hasta que se confirme la transacción, los cambios se realizan solo en la memoria y no se escriben en el disco. Las transacciones tienen una serie de ventajas sobre las actualizaciones de bases de datos independientes. Una de las principales ventajas es que las transacciones pueden abandonarse si ocurre un problema durante la transacción. Esto se denomina revertir la transacción, o simplemente revertir, y restaura el estado de los registros de la base de datos al estado exacto antes de que comenzara la transacción. Las transacciones también permiten que el estado de la base de datos permanezca constante si ocurre una falla del sistema en medio de una secuencia de actualizaciones que deben ser atómicas. No hay posibilidad de que solo algunas de las actualizaciones terminen escritas en la base de datos; o todo se realizará correctamente o 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 ocurran completamente dentro de la memoria, con solo una costosa escritura en disco al final.

Las transacciones implícitas fueron compatibles con Jet 3.0. Estas son transacciones que se inician automáticamente después de que la última transacción se confirmó en la base de datos. Las transacciones implícitas en Jet ocurrieron cuando se emitió una declaración SQL DML . Sin embargo, se encontró 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 hicieron declaraciones SQL DML.

Integridad de los datos

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

Jet también admite "reglas comerciales" (también conocidas como "restricciones") o reglas que se aplican a cualquier columna para hacer cumplir los datos que se pueden colocar en la tabla o columna . Por ejemplo, se puede aplicar una regla que no permita que se ingrese una fecha en una columna date_logged que sea anterior a la fecha y hora actuales, o se podría aplicar una regla que obligue a las personas a ingresar un valor positivo en un campo solo numérico .

Seguridad

El acceso a las bases de datos de Jet se realiza a nivel de usuario. La información del usuario se mantiene en una base de datos del sistema separada y el acceso se controla en cada objeto en el 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. Cuando se lanzó Jet 2, la seguridad también se pudo configurar mediante programación a través de DAO .

Consultas

Las consultas son los mecanismos que utiliza Jet para recuperar datos de la base de datos. Se pueden definir en Microsoft QBE (Query By Example), a través de la ventana SQL de Microsoft Access o mediante el lenguaje Data Access Objects (DAO) de Access Basic. Luego, estos se convierten en una instrucción SELECT de SQL . Luego, la consulta se compila ; esto implica analizar la consulta (implica verificar la sintaxis y determinar las columnas para consultar en la tabla de la base de datos), luego se convierte en un formato de objeto de consulta Jet interno, que luego se tokeniza y se organiza en una estructura similar a un árbol. En Jet 3.0 en adelante, estos se optimizan utilizando la tecnología de optimización de consultas de Microsoft Rushmore . A continuación, se ejecuta la consulta 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 . Este es 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 el usuario no puede actualizar los datos directamente, el dynaset permite al usuario ver y actualizar los datos contenidos en el dynaset. Por lo tanto, si un profesor universitario consulta a todos los estudiantes que recibieron una distinción en su tarea y encuentra un error en el registro de ese estudiante, solo necesitaría actualizar los datos en el dynaset, que actualizaría automáticamente el registro de la base de datos del estudiante sin la necesidad de ellos. para enviar una consulta de actualización específica después de almacenar los resultados de la consulta en una tabla temporal.

Historia

Versión Jet Motor a reacción Nombre de archivo DLL Versiones de base de datos compatibles
1.0 ?? ?? 1.0
1.1 1.10.0001 MSAJT110.DLL 1.0 / 1.1
2.0 2.00.0000 MSAJT200.DLL 1.0 / 1.1 / 2.0
2.5 2.50.1606 MSAJT200.DLL 1.0 / 1.1 / 2.0
3,0 3.0.0.2118 MSJT3032.DLL 1.0 / 1.1 / 2.0 / 3.0
3,5 3.51.3328.0 MSJET35.DLL 1.0 / 1.1 / 2.0 / 3.X
4.0 SP8 4.0.8015.0 MSJET40.DLL 1.0 / 1.1 / 2.0 / 3.X / 4.0
ACE 12 12.0.xxxx.xxxx ACECORE.DLL 1.0 / 1.1 / 2.0 / 3.X / 4.0 / ACE
ACE 14 14.0.xxxx.xxxx ACECORE.DLL 3.X / 4.0 / ACE
ACE 15 15.0.xxxx.xxxx ACECORE.DLL 4.0 / ACE
ACE 16 16.0.xxxx.xxxx ACECORE.DLL 4.0 / ACE
Versión de la aplicación Versión Jet
Microsoft Access 1.0 1.0
Microsoft Access 1.1 1.1
Microsoft Access 2.0 2.0
Paquete de servicio de Microsoft Access 2.0 2.5
Microsoft Access 95 / Excel 95 3,0
Microsoft Access 97 / Excel 97 / PowerPoint 97 / Word 97 3,5
Microsoft Access 2000 4.0 SP1
Microsoft Access 2002
Microsoft Access 2003
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 de 16 bits 2.5
Visual Basic 4.0 de 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 / Proyecto 95 3,0
Servidor de información de Internet 3.0 3,5
SQL Server 7.0 4.0
Instaladores redistribuibles
Descarga web 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
Controlador de 2007 Office System ACE 12
Motor de base de datos de Microsoft Access 2010 ACE 14
Motor de base de datos de Microsoft Access 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 se inició originalmente en 1992 como una tecnología de acceso a datos subyacente que surgió de un proyecto de desarrollo de productos de base de datos interna de Microsoft, cuyo nombre en código es 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, que trabajaba para Microsoft en ese momento, dice

"Sería razonablemente exacto decir que hasta esa etapa Jet era más el nombre del equipo que se asignó para 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 tenían que arrancarlo de Access e injertarlo en VB. Por eso han tenido todos esos problemas de Jet / ODBC en VB 3.0 ".

Jet se volvió más componente cuando se lanzó Access 2.0 porque los desarrolladores de Access ODBC utilizaron partes del código Jet para producir el controlador ODBC. Se proporcionó una actualización que permitió a los usuarios de Visual Basic 3.0 utilizar el Jet actualizado emitido en Access 2.0.

Jet 2.0 se lanzó como varias bibliotecas vinculadas dinámicas (DLL) 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 usa más de una aplicación en una biblioteca común que cada una de estas aplicaciones puede usar de forma independiente, el mantenimiento del código se reduce y la funcionalidad de las aplicaciones. aumenta, con menos esfuerzo de desarrollo. Jet 2.0 constaba de tres DLL: la DLL Jet, la DLL de objetos de acceso a datos (DAO) y varias DLL ISAM externas. Jet DLL determinó a qué tipo de base de datos estaba accediendo y cómo realizar lo que se le solicitaba. Si la fuente de datos fuera un archivo MDB (un formato de Microsoft Access), leería y escribiría directamente los datos en el archivo. Si la fuente de datos fuera externa, entonces llamaría al controlador ODBC correcto para realizar su solicitud. La DLL de DAO era un componente que los programadores podían usar para interactuar con el motor Jet, y lo usaban principalmente los 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 usaba la misma estructura de base de datos pero diferentes estrategias de bloqueo, haciéndolo incompatible con Jet 2.0.

Jet 3.0 incluyó muchas mejoras, incluida una nueva estructura de índice que redujo el tamaño de almacenamiento y el tiempo que se tomó para crear índices que estaban muy 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 que compactar la base de datos dio como resultado 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, subprocesos múltiples (se usaron tres subprocesos para realizar lectura anticipada, escritura posterior 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 clasificación, los valores largos (como notas o tipos de datos binarios) se almacenaban en tablas separadas y almacenamiento en búfer dinámico (mediante el cual la caché de Jet se asignó 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 sustitución de búfer de uso menos reciente (LRU)). Jet 3.0 también permitió la replicación de la base de datos. Jet 3.0 fue reemplazado por Jet 3.5, que usa 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 funciones y mejoras adicionales.

  • Soporte de almacenamiento de caracteres Unicode , junto con un método de clasificació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 Integer sinónimos Smallint, Integer2 y Short; LongInteger o Sinónimos LongInteger Int, Integer y Counter; Moneda o dinero; Booleano y GUID); un nuevo tipo de datos decimal
  • Los campos de notas ahora se pueden indexar
  • Tipos de datos comprimibles
  • Mejoras de SQL para que Jet se ajuste más a ANSI SQL-92
  • Seguridad más fina; soporte de vistas; apoyo al procedimiento
  • Invocación y terminación (compromiso o retroceso) 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 es útil para que los administradores de la base 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 de Access 2000 a Access 2010 incluían un "Asistente para conversión" que podía " convertir " (actualizar) una base de datos Jet a "una base de datos equivalente en SQL Server con la misma estructura de tabla, datos y muchos otros atributos de la base de datos original. ". Esta herramienta no manejó informes, consultas, macros y seguridad, lo que significa que podrían haber sido necesarias algunas modificaciones manuales si la aplicación dependía en gran medida de estas funciones de Jet.

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 todas las versiones de Windows desde Windows 2000 en adelante. El motor de base de datos Jet era solo de 32 bits y no se ejecutaba de forma nativa en versiones de Windows de 64 bits . 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 del software intermedio de 32 bits (que se ejecuta en WoW64 ) que actuó como proxy para el cliente de 64 bits.

Con la versión 2007 en adelante, Access incluye una versión específica de Office de Jet, 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 que se especializan en MS-Access es más probable que se refieran a él como "el motor de base de datos ACE"). 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 predeterminado, (.accdb), que trajo varias mejoras a Access, incluidos tipos de datos complejos, como campos de varios valores, el tipo de datos adjuntos y el seguimiento del historial en los campos de notas. También trajo cambios de seguridad y mejoras de cifrado y permitió la integración con Microsoft Windows SharePoint Services 3.0 y Microsoft Office Outlook 2007.

El motor de Microsoft Access 2010 dejó de admitir archivos de Access 1.0, Access 2.0, Lotus 1-2-3 y Paradox. 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.

El motor de Microsoft Access 2013 dejó de admitir archivos Access 95, Access 97 y xBase, y también dejó de admitir la replicación.

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

Desde el punto de vista de la tecnología de acceso a datos, Microsoft considera que Jet es una tecnología en desuso, pero Microsoft continúa admitiendo ACE como parte de Microsoft Access.

Compatibilidad

Microsoft proporciona los controladores JET solo para Microsoft Windows. Por lo tanto, el soporte de software de terceros para bases de datos JET se encuentra casi exclusivamente en Windows. Existe un proyecto de código abierto que intenta permitir trabajar con bases de datos JET en otras plataformas, MDB Tools y su puerto Java muy extendido llamado Jackcess .

Ver también

Referencias

Otras lecturas