Motor de base de datos
Un motor de base de datos (o motor de almacenamiento) es el componente de software subyacente que utiliza un sistema de administración de base de datos (DBMS) 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 de manera intercambiable con "servidor de base de datos" o "sistema de gestión de base de datos". Una "instancia de base de datos" se refiere a los procesos y estructuras de memoria del motor de base de datos en ejecución.
Motores de almacenamiento
Muchos de los DBMS modernos admiten varios motores de almacenamiento dentro de la misma base de datos. Por ejemplo, MySQL es compatible con InnoDB y MyISAM.
Algunos motores de almacenamiento son transaccionales.
| Nombre | Licencia | Transacciones | Compatibilidad | Notas |
|---|---|---|---|---|
| Aria | GPL | No | MariaDB y MySQL | |
| Falcon | GPL | Sí. | MySQL | Descanso |
| InnoDB | GPL | Sí. | MySQL y MariaDB | El predeterminado para MySQL y MariaDB |
| Memoria | GPL | No | MySQL y MariaDB | |
| MyISAM | GPL | No | MySQL | Fue el defecto de MySQL |
| InfiniDB | GPL | No | ||
| TokuDB | GPL | Sí. | MySQL y MariaDB | Usos índice de árbol fractal |
| WiredTiger | GPL | Sí. | MongoDB Silencioso predeterminado para MongoDB | |
| XtraDB | GPL | Sí. | MariaDB y Percona Server para MySQL | |
| RocksDB / MyRocks | GPL v2 o Apache 2.0 | Sí. | ArangoDB, Cassandra, MariaDB, MongoDB, MySQL, SurrealDB |
Los tipos de motores adicionales incluyen:
- Motores de base de datos incorporados
- Motores de base de datos en memoria
Consideraciones de diseño
La información en una base de datos se almacena como bits dispuestos como estructuras de datos en el almacenamiento que se pueden leer y escribir de manera eficiente dadas las propiedades del hardware. Por lo general, el almacenamiento en sí está diseñado para cumplir con los requisitos de varias áreas que utilizan mucho el almacenamiento, incluidas las bases de datos. Un DBMS en funcionamiento siempre utiliza simultáneamente varios tipos de almacenamiento (por ejemplo, memoria y almacenamiento externo), con sus respectivos métodos de diseño.
En principio, el almacenamiento de la base de datos se puede ver como un espacio de direcciones lineal, donde cada bit de datos tiene su dirección única en este espacio de direcciones. En la práctica, solo un porcentaje muy pequeño de direcciones se mantiene como puntos de referencia iniciales (lo que también requiere almacenamiento); se accede a la mayoría de los datos de forma indirecta utilizando cálculos de desplazamiento (distancia en bits desde los puntos de referencia) y estructuras de datos que definen las rutas de acceso (usando punteros) a todos los datos necesarios de manera efectiva, optimizada para las operaciones de acceso a datos necesarias.
Jerarquía de almacenamiento de 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. Por la naturaleza de las computadoras contemporáneas, la mayor parte de la base de datos dentro de una computadora que aloja el DBMS reside (parcialmente replicada) en un almacenamiento volátil. Los datos (partes de la base de datos) que se procesan/manipulan residen dentro de un procesador, posiblemente en las memorias caché del procesador. Estos datos se leen o se escriben en la memoria, generalmente a través de un bus de computadora (hasta ahora, componentes de almacenamiento típicamente volátiles). La memoria de la computadora comunica datos (transferidos hacia/desde) almacenamiento externo, generalmente a través de interfaces o redes de almacenamiento estándar (por ejemplo, canal de fibra, iSCSI). Una matriz de almacenamiento, una unidad de almacenamiento externo común, normalmente tiene una jerarquía de almacenamiento propia, desde una memoria caché rápida, que normalmente consta de DRAM (rápida y volátil), que está conectada (nuevamente a través de interfaces estándar) a unidades, posiblemente con diferentes velocidades, como unidades flash y unidades de disco magnético (no volátiles). Las unidades pueden estar conectadas a cintas magnéticas, en las que normalmente pueden residir las partes menos activas de una gran base de datos, o las generaciones de copia de seguridad de la base de datos.
Por lo general, actualmente existe una correlación entre la velocidad de almacenamiento y el precio, mientras que el almacenamiento más rápido suele ser volátil.
Estructuras de datos
Una estructura de datos es una construcción abstracta que incorpora datos de una manera bien definida. Una estructura de datos eficiente permite la manipulación de los datos de manera eficiente. La manipulación de datos puede incluir la inserción, eliminación, actualización y recuperación de datos en varios modos. Un cierto tipo de estructura de datos puede ser muy efectivo en ciertas operaciones y muy ineficaz en otras. Se selecciona un tipo de estructura de datos en el desarrollo de DBMS para cumplir mejor con las operaciones necesarias para los tipos de datos que contiene. El tipo de estructura de datos seleccionado para una determinada tarea normalmente también tiene en cuenta el tipo de almacenamiento en el que reside (por ejemplo, la velocidad de acceso, el tamaño mínimo del fragmento de almacenamiento al que se accede, etc.). En algunos DBMS, los administradores de bases de datos tienen la flexibilidad de seleccionar entre opciones de estructuras de datos para contener datos de usuario por motivos de rendimiento. A veces, las estructuras de datos tienen parámetros seleccionables para ajustar el rendimiento de la base de datos.
Las bases de datos pueden almacenar datos en muchos tipos de estructuras de datos. Ejemplos comunes son los siguientes:
- ficheros planos ordenados o no ordenados
- tablas
- B+ árboles
- ISAM
- montones
Orientación y agrupación de datos
A diferencia de la orientación por filas convencional, las bases de datos relacionales también pueden estar orientadas por columnas o correlacionales en la forma en que almacenan datos en cualquier estructura en particular.
En general, se obtiene una mejora sustancial del rendimiento si diferentes tipos de objetos de base de datos que normalmente se utilizan juntos se almacenan en proximidad, estando "agrupados". Esto generalmente permite recuperar los objetos relacionados necesarios del almacenamiento en 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, la agrupación en clúster proporciona una ventaja de rendimiento debido a la utilización común de grandes cachés para operaciones de entrada y salida en la memoria, con un comportamiento resultante similar.
Por ejemplo, puede ser beneficioso agrupar un registro de un "elemento" en stock con todos sus respectivos "pedidos" registros. La decisión de agrupar o no ciertos objetos depende de los objetos' estadísticas de utilización, tamaños de objetos, tamaños de cachés, tipos de almacenamiento, etc.
Indización de bases de datos
La indexación es una técnica que utilizan algunos motores de almacenamiento para mejorar el rendimiento de la base de datos. Los muchos tipos de índices comparten la propiedad común de que reducen la necesidad de examinar cada entrada cuando se ejecuta una consulta. En bases de datos grandes, esto puede reducir el tiempo/costo de consulta en órdenes de magnitud. La forma más simple de índice es una lista ordenada de valores que se pueden buscar mediante una búsqueda binaria con una referencia adyacente a la ubicación de la entrada, análoga al índice en la parte posterior de un libro. Los mismos datos pueden tener múltiples índices (una base de datos de empleados podría indexarse por apellido y fecha de contratación).
Los índices afectan el rendimiento, pero no los resultados. Los diseñadores de bases de datos pueden agregar o eliminar índices sin cambiar la lógica de la aplicación, lo que reduce los costos 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 el mantenimiento de los mismos. Estas dos propiedades determinan si vale la pena el costo de un índice dado.
Contenido relacionado
Comodoro 1581
Codigo de color
Bash (capa de Unix)