# Aria (mecanismo de almacenamiento)

Aria es un mecanismo de almacenamiento nativo de la base de datos MariaDB (derivada de MySQL). Su objetivo es el de presentar una alternativa a MyISAM resistente a caídas. Todavía no tiene plenas características transaccionales pero está planeada su evolución en ese sentido.
El objetivo a largo plazo es hacer de Aria el mecanismo de almacenamiento transaccional y no transaccional por defecto de MariaDB. Está siendo desarrollado desde 2007, cuando lo anunció Michael "Monty" Widenius en su blog. Aria también está incluida en Percona Server, otra ramificación de MySQL.
Además, las tablas internas de MariaDB -a partir de 5.1.- se almacenan en disco mediante Aria, sustituyendo a MyISAM.
Inicialmente se llamó Maria -como la hija menor de Monty- pero se renombró a Aria en 2010 para evitar confusiones con el nombre del SGBD, que se llama MariaDB.

## Objetivos de desarrollo

El desarrollo de Aria se planteó para:
* obtener un mecanismo de almacenamiento MVCC con características ACID
* opcionalmente obtener tablas no-transaccionales tan rápidas y compactas como las de MyISAM
* usar Aria para las tablas internas de MySQL
* índices igual de rápidos
* permitir transacciones de "cualquier" tamaño
* permitir transferencia de logs, de modo que se puedan realizar backups incrementales de tablas Aria sólo copiando los logs
* permitir la copia de tablas Aria entre servidores (con algunas limitaciones bien definidas)
* mejor manejo de tipos blob que MyISAM
* que no use memoria extra al hacer INSERT/UPDATE de blobs
* que los blobs se alojen en grandes bloques secuenciales, para reducir fragmentación
* almacenamiento de blobs de modo que se pueda tener acceso a una parte de ellos
* almacenamiento eficiente en disco, esto es, pequeños encabezamientos de fila y de página, ahorro de espacio
* pequeño tamaño, para permitir que MariaDB/Aria sea utilizable en aplicaciones de sobremesa y embebidas
* uso de memoria flexible y algoritmos escalables para poder utilizar gran cantidad de memoria cuando esté disponible
El proyecto está alojado en «launchpad» (en inglés). Consultado el 5 de febrero de 2013. .

## Características de la versión 1.5.

Presenta una alternativa a MyISAM resistente a caídas, de modo que -cuando mysqld rearranca- Aria recupera todas las tablas al estado que tenían antes de la sentencia fallida o del último LOCK TABLES.
El objetivo actual es el de estabilizar el código y fijar los errores hallados.

## Características de la versión 2.0. (futura)

Implementar un mecanismo de almacenamiento transaccional con al menos todas las características más importantes de InnoDB.
Por el momento, Aria 2.0 está en espera ya que los desarrolladores están concentrados en la mejora de MariaDB. Sin embargo están interesados en colaborar con clientes/socios para añadir mejores características a Aria y acabar Aria 2.0.
Brevemente, los objetivos son los siguientes:
* obtener características ACID
* implementar funciones Commit/Rollback
* hacer UPDATE/DELETE concurrentes
* realizar bloqueo a nivel de fila
* efectuar COMMIT de grupo
* hacer la consulta de índices más rápida
Los planes para Aria 2.5. se centrarán en prestaciones.

## Opciones de CREATE TABLE

Aria introduce estas nuevas opciones en la sentencia CREATE TABLE:
* TRANSACTIONAL= 0 | 1 : significa resistente a caídas
* PAGE_CHECKSUM= 0 | 1 : si se desea comprobar paridad de la página para aumentar la seguridad
* TABLE_CHECKSUM= 0 | 1 : lo mismo que CHECKSUM en MySQL 5.1
* ROW_FORMAT=PAGE : nuevo formato de fila cacheable para las tablas Aria. Formato de filas por defecto de las tablas Aria y el único que se puede usar si TRANSACTIONAL=1. Para emular MyISAM, hay que usar ROW_FORMAT=FIXED o ROW_FORMAT=DYNAMIC
* CHECKSUM TABLE ignora valores NULL en los campos. Esto hace CHECKSUM TABLE más rápido y corrige algunos casos en los que la misma definición de tabla podía dar diferentes valores de paridad en función del formato de la fila. La desventaja es que el valor obtenido es diferente al de otras instalaciones MySQL.