MOTORES DE ALMACENAMIENTO DE MARIADB
MariaDB tiene una arquitectura modular, lo que significa que se puede elegir un motor de almacenamiento diferente por tabla, según el tipo de carga de trabajo que senecesite.Para mostrar los motor de almacenamiento de MariaBB se pueden ejecutar las siguientes queries:
SHOW ENGINES;
//o también
SELECT * FROM information_schema.ENGINES;
Motores de almacenamiento principales en MariaDB
- InnoDB: Motor transaccional por defecto. Soporta ACID, foreign keys, bloqueo a nivel de fila y recuperación en caso de fallo. Es el más seguro y versátil. Ejemplo de uso: Aplicaciones web normales, sistemas de gestión (ERP, CRM), cualquier tabla que necesite integridad de datos.
CREATE TABLE usuarios ( id INT PRIMARY KEY AUTO_INCREMENT, email VARCHAR(100) UNIQUE ) ENGINE=InnoDB; - Aria: Evolución mejorada de MyISAM. Es crash-safe (recupera datos tras un fallo), rápido en lecturas y soporta bloqueo a nivel de tabla. No es transaccional.
Ejemplo de uso: Tablas de logs, tablas temporales, reportes estáticos o donde se necesita velocidad en SELECT sin transacciones.
CREATE TABLE log_accesos ( id BIGINT AUTO_INCREMENT, fecha DATETIME, usuario VARCHAR(50) ) ENGINE=Aria; - MyISAM: Motor antiguo, muy rápido en lecturas puras, pero no es crash-safe y no soporta transacciones. Está obsoleto para la mayoría de usos.
Ejemplo de uso: Solo en aplicaciones muy antiguas o cuando se necesita máxima velocidad de lectura y no importa la integridad. No está recomendado su uso.
CREATE TABLE estadisticas_antiguas ( id INT, visitas INT ) ENGINE=MyISAM; - MyRocks: Se basa en RocksDB (LSM-tree). Excelente compresión y muy bueno para cargas con muchas escrituras. Consume menos espacio en disco que InnoDB.
Ejemplo de uso: Sistemas con alto volumen de INSERT/UPDATE (logs masivos, monitoreo, redes sociales, IoT).
CREATE TABLE eventos ( id BIGINT AUTO_INCREMENT, timestamp DATETIME, dato JSON ) ENGINE=MyRocks; - ColumnStore: Motor columnar OLAP. Muy rápido para consultas agregadas sobre grandes volúmenes de datos. Ejemplo de uso: Data warehouse, reporting, análisis de ventas, BI (consultas con SUM, GROUP BY, etc.).
CREATE TABLE ventas_historicas ( fecha DATE, producto_id INT, cantidad DECIMAL(10,2), importe DECIMAL(12,2) ) ENGINE=ColumnStore; - MEMORY: Almacena los datos completamente en RAM. Extremadamente rápido, pero los datos se pierden al reiniciar el servidor. Ejemplo de uso: Tablas temporales de caché, sesiones, cálculos intermedios muy rápidos.
CREATE TABLE tabla_temporal ( id INT, valor VARCHAR(100) ) ENGINE=MEMORY; - CSV: Almacena los datos en archivos de texto plano en formato CSV. Fácil de importar/exportar, pero sin índices. Ejemplo de uso: Importar o exportar datos rápidamente desde/hacia Excel u otros sistemas.
CREATE TABLE importacion ( id INT, nombre VARCHAR(100), fecha DATE ) ENGINE=CSV; - ARCHIVE: Diseñado para archivar grandes volúmenes de datos con excelente compresión. Solo permite INSERT y SELECT. Ejemplo de uso: Históricos antiguos, logs que rara vez se consultan.
CREATE TABLE tabla_externa ( id INT, nombre VARCHAR(100) ) ENGINE=CONNECT TABLE_TYPE=CSV FILE_NAME='/ruta/archivo.csv'; - CONNECT Motor que permite acceder a datos externos (archivos, ODBC, otros servidores, XML, etc.) como si fueran tablas locales. Ejemplo de uso: Consultar archivos CSV, Excel o bases de datos remotas sin importar los datos.
CREATE TABLE tabla_externa ( id INT, nombre VARCHAR(100) ) ENGINE=CONNECT TABLE_TYPE=CSV FILE_NAME='/ruta/archivo.csv'; - Spider: Motor para sharding (particionamiento horizontal). Permite distribuir una tabla en varios servidores MariaDB. Ejemplo de uso: Bases de datos muy grandes que necesitan escalar escribiendo en múltiples servidores.
CREATE TABLE tabla_distribuida ( id BIGINT PRIMARY KEY, dato VARCHAR(255) ) ENGINE=Spider COMMENT='wrapper="mysql", srv "servidor1,servidor2"'; - S3: Almacena los datos en Amazon S3 (o compatible). Ideal para archivar tablas grandes y reducir costos de almacenamiento. Solo lectura en la mayoría de casos. Ejemplo de uso: Archivar tablas históricas muy grandes en almacenamiento barato en la nube.
Para configurar la autenticación en Amazon hay que editar el fichero "my.cnf" y añadir:CREATE TABLE historico_s3 ( id BIGINT, fecha DATE, datos TEXT ) ENGINE=S3 COMMENT='s3_bucket="mi-bucket", s3_prefix="datos/"';
Importante de seguridad:[mariadb] s3 = ON # Activa el motor S3 s3_bucket = tu-bucket-nombre # Nombre del bucket en S3 s3_access_key = AKIAXXXXXXXXXXXXXXXX # Tu AWS Access Key ID s3_secret_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx# Tu AWS Secret Access Key s3_region = us-east-1# Región del bucket (ej: eu-west-1, us-west-2) # Opcionales recomendados: s3_host_name = s3.amazonaws.com # Por defecto suele funcionar s3_debug = OFF# Pon ON solo para depurar- Crear un usuario IAM específico solo para este uso (principio de mínimo privilegio).
- Darle al usuario IAM solo los permisos necesarios: s3:GetObject, s3:ListBucket, etc.