Motor de almacenamiento extensible

Motor de almacenamiento extensible

Información
Desarrollado por Microsoft
Depositar github.com/microsoft/Extensible-Storage-Engine
Medio ambiente Ventanas
Tipo Motor de base de datos
Licencia Licencia MIT
Sitio web [1]

Extensible Storage Engine (Rep. ESE), también llamado Jet Blue es un motor de base de datos con Microsoft establecido en 1996. Está incorporado en los sistemas operativos de la serie Windows NT y productos utilizados por Active Directory y Exchange Server .

Es una biblioteca de software que manipula bases de datos según el método secuencial indexado ( ISAM ). Implementa mecanismos para realizar transacciones atómicas, consistentes, aisladas y duraderas ( ACID ) así como mecanismos caché para bloquear y diario ( log en inglés ) para garantizar la seguridad y desempeño de las operaciones de la base de datos.

El motor de almacenamiento extensible se utiliza en bases de datos que varían en tamaño desde 1 megabyte hasta más de 1 terabyte .

Historia

El desarrollo del producto comenzó en 1996, originalmente se llamó Jet Blue (JET para Joint Engine Technology ), en referencia a su competidor Jet Red , el motor de base de datos de Microsoft Access . Luego pasó a llamarse Motor de almacenamiento extensible porque los dos productos tienen una programación diferente, un historial diferente, una funcionalidad diferente y no son intercambiables.

hay dos versiones ESE97 y ESE98, con referencia a su año de lanzamiento. La versión ESENT, basado en ESE97, se utiliza para el Active Directory directorio de servicio .

Características

El motor de almacenamiento extensible se utiliza llamando a funciones de su interfaz de programación . Esta interfaz ofrece la posibilidad de guardar datos en tablas y luego recuperarlos usando índices y cursores . Las transacciones proporcionan la atomicidad, la coherencia, el aislamiento y la durabilidad de los cambios simultáneos de datos y metadatos .

El motor de almacenamiento extensible está equipado con un mecanismo de memoria caché , que lee el contenido de la base de datos por adelantado y escribe con retraso, lo que acelera las operaciones.

A través del mecanismo de concurrencia de múltiples versiones , el software que lee el contenido de la base de datos durante una transacción verá el contenido de la base de datos tal como estaba cuando comenzó la transacción . Los cambios posteriores realizados en otras transacciones no serán visibles. El motor de almacenamiento extensible revertirá la transacción si los cambios se superponen con otros cambios realizados mientras tanto en otras transacciones.

El motor de almacenamiento extensible manipula los archivos de la base de datos ubicados en la computadora. Los archivos también se pueden colocar en otra computadora y manipular a través de un sistema de archivos distribuido ; sin embargo, el fabricante no recomienda este uso.

Base de datos

Los archivos de base de datos del motor de almacenamiento extensible se componen de un conjunto de tamaño fijo de 4 u 8 kilobytes: el tamaño de página se determina cuando se crea el archivo. Las páginas están vinculadas entre sí en un árbol de estructura B y contienen una suma de comprobación ( suma de comprobación en inglés ) que puede detectar posibles errores. Las páginas contienen los datos y los metadatos del esquema y los índices . Las páginas se crean a medida que se agregan datos a la base de datos. Si una página comienza a estar llena, Extensible Storage Engine la divide por la mitad, crea una nueva página y adapta el árbol B.

Cada base de datos está compuesta por un archivo principal, posiblemente acompañado de archivos temporales que contienen transacciones , índices y el registro de operaciones. El motor de almacenamiento extensible crea índices automáticamente y se eliminan automáticamente si no se han utilizado durante 8 días.

la tabla de la base de datos de ESE puede tener una organización no ortogonal, con campos que no están presentes en todas las filas de la tabla y multivalores de campo. Las grabaciones de campo pueden ser de diferentes tipos de datos , incluidos monetarios, de fecha, GUID , CLOB o BLOB .

Cada copia de Extensible Storage Engine puede manejar hasta 6 bases de datos a la vez. Cada proceso que usa ESE puede tener hasta 1024 copias de ESE.

Una base de datos puede separarse de una instancia de ESE actual y luego adjuntarse a la misma instancia o a una instancia diferente. Mientras está separada, una base de datos se puede copiar usando las utilidades estándar de Windows.

Mesas

La cantidad de espacio en disco asignado a una tabla dentro de una base de datos está determinada por un parámetro dado cuando la tabla se crea con la operación CreateTable. Las tablas crecen automáticamente en respuesta a la creación de datos (registro).

Las tablas tienen al menos un índice. Debe haber al menos un índice de clúster para registrar datos. Cuando no hay un índice de clúster definido por la aplicación, se utiliza un índice artificial que ordena y agrupa los registros en orden cronológico de inserción de registros.

Los índices se representan mediante árboles B +. ESE tiene una función de compactación en línea que vuelve a compactar los datos. Si una tabla debe actualizarse con frecuencia, se puede reservar espacio para futuras inserciones especificando una densidad de página adecuada al crear una página o índice.

Registros y columnas

El tamaño máximo de registro es de 8.110 bytes para páginas de 8 kilobytes, con la excepción de las columnas de valores largos. Los tipos de columna "LongText" y "LongBinary" pueden contener datos que son mucho más grandes que el tamaño de la página de la base de datos. Estos datos de "valor largo" pueden tener un tamaño de hasta 2 gigabytes.

Los registros suelen ser uniformes en el sentido de que cada registro tiene un conjunto de valores para el mismo conjunto de columnas. En ESE, también es posible definir una gran cantidad de columnas para una tabla y tener solo unas pocas llenas con valores distintos de cero para ciertos registros. Asimismo, una tabla también puede ser una colección de registros heterogéneos.

ESE ofrece soporte para una amplia variedad de valores de columna, que van desde un tamaño de un solo bit hasta valores de 2 gigabytes. La elección de los tipos de columna correctos es importante porque el tipo de columna determina muchas de sus propiedades, incluido el orden de los índices. Aquí está la lista de tipos que tienen soporte en ESE:

Tipos de columnas

apellido Descripción
Un poco valor ternario (NULL, 0 o 1)
Byte sin firmar Entero sin signo de 1 byte
corto ("Corto") Entero de 2 bytes con signo
Corto sin firmar Entero sin signo de 2 bytes
Largo Entero de 4 bytes con signo
Largo sin firmar Entero sin signo de 4 bytes
Largo largo Entero de 8 bytes con signo
Cambio Entero de 8 bytes con signo
IEEE individual Número de coma flotante de 4 bytes
IEEE doble Número de coma flotante de 8 bytes
Hora Fecha Fecha u hora codificada en 8 bytes (fecha completa, tiempo fraccionario)
GUID identificador único en 16 bytes
Binario cadena binaria, longitud ⇐ 255 bytes
Texto Cadena de caracteres ANSI o Unicode de longitud ⇐ 255 bytes
Binario largo Cadena binaria grande de longitud <2 gigabytes
Texto largo Cadena grande de caracteres ANSI o Unicode de longitud <2 gigabytes

Columnas fijas, variables y marcadas
Cada tabla ESE puede definir hasta 127 columnas de longitud fija, 128 columnas de longitud variable y 64.993 columnas marcadas.
Las columnas fijas son básicamente columnas que ocupan la misma cantidad de memoria para cada registro, independientemente de su valor. Las columnas fijas usan 1 bit para representar un valor nulo (NULL) y una cantidad fija de memoria para cada registro.
Las columnas variables usan 2 bytes para determinar un valor nulo (NULL) y una cantidad variable de espacio de memoria para cada registro en el que se define esta columna.

Las columnas marcadas son columnas que no ocupan espacio en la memoria si no contienen ningún registro. La misma columna marcada puede contener varios valores en un solo registro. Cuando se definen columnas etiquetadas en un registro, cada instancia de una columna etiquetada ocupa aproximadamente 4 bytes de espacio de memoria además del tamaño del valor de instancia de la columna etiquetada. Cuando el número de instancias de una sola columna marcada es grande, el encabezado de cada instancia de columna marcada es de aproximadamente 2 bytes.

Referencias

  1. https://www.informatiquenews.fr/une-brique-ancestrale-et-fondamentale-de-windows-passe-en-open-source-76822
  2. (en) http://msdn.microsoft.com/en-us/library/ms684493(EXCHG.10).aspx Motor de almacenamiento extensible - Microsoft Developer Network
  3. (en) , Tony Redmond, Microsoft Exchange Server para Windows 2000 , la prensa digital - 2001 ( ISBN  9781555582241 )
  4. Jean-François Apréa, Preparación para el directorio activo de certificación MCSE Windows Server 2003 , Ediciones ENI - 2005, ( ISBN  9782746024984 )
  5. (en) https://technet.microsoft.com/en-us/library/aa998171(EXCHG.65).aspx Arquitectura de motor de almacenamiento extensible - Microsoft TechNet

enlaces externos