Un motor de base de datos (o motor de almacenamiento ) es el componente de software subyacente que un sistema de gestión de bases de datos (DBMS) utiliza para crear, leer, actualizar y eliminar (CRUD) datos de una base de datos . La mayoría de los sistemas de gestión de bases de datos incluyen su propia interfaz de programación de aplicaciones (API) que permite al usuario interactuar con su motor subyacente sin pasar por la interfaz de usuario del DBMS.
El término «motor de base de datos» se usa frecuentemente como sinónimo de « servidor de base de datos » o «sistema de gestión de bases de datos». Una «instancia de base de datos» se refiere a los procesos y las estructuras de memoria del motor de base de datos en ejecución.
Motores de almacenamiento
Muchos de los sistemas de gestión de bases de datos modernos admiten varios motores de almacenamiento dentro de la misma base de datos. Por ejemplo, MySQL admite InnoDB y MyISAM .
Algunos motores de almacenamiento son transaccionales .
Otros tipos de motores incluyen:
- Motores de bases de datos integrados
- Motores de bases de datos en memoria
Consideraciones de diseño
La información en una base de datos se almacena en forma de bits, organizados en estructuras de datos en el hardware de almacenamiento. Estas estructuras de datos están diseñadas para lecturas y escrituras eficientes desde y hacia el hardware de almacenamiento. Por lo general, el propio hardware de almacenamiento está diseñado para cumplir con los requisitos de diversos sistemas, incluidas las bases de datos, que utilizan el almacenamiento de forma intensiva. Un sistema de gestión de bases de datos (DBMS) en funcionamiento siempre utiliza varios tipos de almacenamiento simultáneamente. Estos diferentes tipos de almacenamiento, como la memoria flash y el almacenamiento en disco externo , requieren diferentes métodos de organización de datos.
En principio, el almacenamiento de bases de datos puede considerarse un espacio de direcciones lineal donde cada bit de datos tiene una dirección única. En la práctica, solo un pequeño porcentaje de direcciones se conserva como puntos de referencia iniciales, los cuales también requieren almacenamiento. La mayor parte del acceso a los datos se realiza mediante indirección, utilizando cálculos de desplazamiento (distancia en bits desde los puntos de referencia) y estructuras de datos que definen rutas de acceso (mediante punteros) a todos los datos necesarios de manera eficiente y optimizada para las operaciones de acceso requeridas.
jerarquía de almacenamiento de la base de datos
Una base de datos, mientras está en funcionamiento, reside simultáneamente en varios tipos de almacenamiento, formando una jerarquía de almacenamiento . Dentro de un ordenador moderno que aloja un sistema de gestión de bases de datos (DBMS), la mayor parte de la base de datos reside, parcialmente replicada, en almacenamiento volátil . Los datos que se procesan y manipulan activamente residen dentro del procesador , posiblemente en las cachés del procesador . Estos datos se leen y se escriben en la memoria, normalmente a través de un bus de ordenador , que suele ser un componente de almacenamiento volátil. La memoria del ordenador comunica datos con el almacenamiento externo, normalmente a través de interfaces o redes de almacenamiento estándar (por ejemplo, Fibre Channel , iSCSI ).
Un arreglo de almacenamiento , una unidad de almacenamiento externo común, suele tener su propia jerarquía de almacenamiento. Una caché rápida, generalmente compuesta por DRAM volátil y de alta velocidad , se conecta (mediante interfaces estándar) a las unidades de disco. Estas unidades pueden tener diferentes velocidades, como las unidades flash y las unidades de disco magnético no volátil . La velocidad y el precio suelen estar correlacionados. Las unidades pueden conectarse a cintas magnéticas , donde residen las partes menos activas de una base de datos grande. Aquí también pueden ubicarse las copias de seguridad .
Estructuras de datos
Una estructura de datos es una construcción abstracta que organiza los datos de forma precisa. Una estructura de datos eficiente permite manipular los datos de manera eficaz. Esta manipulación puede incluir la inserción, eliminación, actualización y recuperación de datos en diversos modos. Un tipo de estructura de datos determinado puede ser muy eficaz en ciertas operaciones y muy ineficaz en otras. El tipo de estructura de datos se selecciona durante el desarrollo del sistema de gestión de bases de datos (DBMS) para satisfacer mejor las necesidades operativas de los tipos de datos que contiene. El tipo de estructura de datos seleccionado para una tarea específica también suele tener en cuenta el tipo de almacenamiento en el que reside (por ejemplo, la velocidad de acceso, el tamaño mínimo del bloque de almacenamiento al que se accede, etc.). En algunos DBMS, los administradores de bases de datos tienen la flexibilidad de elegir entre diferentes estructuras de datos para almacenar los datos de los usuarios por motivos de rendimiento. En ocasiones, las estructuras de datos cuentan con parámetros seleccionables para optimizar el rendimiento de la base de datos.
Las bases de datos pueden almacenar datos en muchos tipos de estructuras de datos. [ 1 ] Los ejemplos comunes son los siguientes:
- archivos planos ordenados/no ordenados
- tablas hash
- Árboles B+
- ISAM
- muchísimo
Orientación y agrupamiento de datos
A diferencia de la orientación convencional por filas, las bases de datos relacionales también pueden estar orientadas por columnas o ser correlacionales en la forma en que almacenan los datos en cualquier estructura particular.
En general, se obtiene una mejora sustancial del rendimiento si los diferentes tipos de objetos de base de datos que se utilizan habitualmente de forma conjunta se almacenan cerca unos de otros, formando un clúster. Esto suele permitir recuperar los objetos relacionados necesarios con un número mínimo de operaciones de entrada (cada una de las cuales a veces consume mucho tiempo). Incluso para las bases de datos en memoria, el clúster ofrece una ventaja de rendimiento gracias al uso común de grandes cachés para las operaciones de entrada/salida en memoria, con un comportamiento resultante similar.
Por ejemplo, puede ser beneficioso agrupar el registro de un "artículo" en stock con todos sus registros de "pedido" correspondientes. La decisión de agrupar o no ciertos objetos depende de las estadísticas de utilización de los objetos, su tamaño, el tamaño de las cachés, los tipos de almacenamiento, etc.
Indexación de bases de datos
La indexación es una técnica que algunos motores de almacenamiento utilizan para mejorar el rendimiento de las bases de datos. Los diversos tipos de índices comparten la característica común de reducir la necesidad de examinar cada entrada al ejecutar una consulta. En bases de datos grandes, esto puede reducir el tiempo y el costo de las consultas considerablemente. La forma más simple de índice es una lista ordenada de valores que se puede buscar mediante una búsqueda binaria con una referencia adyacente a la ubicación de la entrada, similar al índice de un libro. Los mismos datos pueden tener varios índices (una base de datos de empleados podría indexarse por apellido y fecha de contratación).
Los índices afectan al rendimiento, pero no a los resultados. Los diseñadores de bases de datos pueden añadir o eliminar índices sin modificar la lógica de la aplicación, lo que reduce los costes de mantenimiento a medida que la base de datos crece y su uso evoluciona. Los índices pueden acelerar el acceso a los datos, pero consumen espacio en la base de datos y deben actualizarse cada vez que se modifican los datos. Por lo tanto, los índices pueden acelerar el acceso a los datos, pero ralentizar su mantenimiento. Estas dos propiedades determinan si un índice determinado justifica su coste.
Referencias
Enlaces externos
- https://web.archive.org/web/20100330045149/http://dev.mysql.com/tech-resources/articles/storage-engine/part_3.html
- La Biblia del Administrador de MySQL, Capítulo 11: "Motores de almacenamiento"
- Gestión de datos
- Motores de bases de datos
- Sistemas de gestión de bases de datos