# TokuDB

TokuDB es un mecanismo de almacenamiento de MySQL y MariaDB especialmente diseñado para conseguir altas prestaciones con cargas de escritura elevadas. Lo consigue vía indexación de árboles fractales, lo que se basa en algoritmos de caché distraídos. Esta estrategia para conseguir sistemas con uso eficiente de memoria fue originalmente desarrollada de forma conjunta por investigadores del Instituto de Tecnología de Massachusetts, la universidad Rutgers y la universidad estatal de Nueva York (SUNY) en Stony Brook. TokuDB es un mecanismo escalable con características ACID y MVCC que mejora las queries basándose en su indexación, permite la modificación on-line del esquema y reduce el retraso del esclavo tanto si funciona basándose en disco duro o en memoria flash.
Fue adquirido por Percona el 14 de abril de 2015.

## Árboles binarios

La mayoría de las bases de datos relacionales usan índices para mejorar la velocidad de respuesta de las instrucciones SQL. Los índices sirven para reducir significativamente la cantidad de datos a examinar al ejecutar una consulta. Los índices se implementan habitualmente con árboles binarios (B-trees), una estructura de datos descrita por primera vez en 1970. La estructura de árbol binario permite operaciones como la inserción de datos e iteraciones ordenadas, las funciones primarias de un índice. Dependiendo de la carga y la implementación, la prestación de los árboles binarios puede estar limitada por el acceso a disco. Adicionalmente, mientras las bases de datos jóvenes tienen un buen comportamiento secuencial, éste se torna más complejo a medida que la base de datos crece, dando lugar a más accesos aleatorios y a la degradación de las prestaciones.

## Índices fractales
### Visión general

Los índices fractales implementan las mismas operaciones de un árbol binario, al que reemplazan de manera automática. Estos sustituyen las operaciones de escritura pequeñas y frecuentes con otras mayores y menos frecuentes. Esto permite mejorar el factor de compresión y la velocidad de inserción. Los árboles fractales también permiten la inserción de mensajes en el árbol de modo que cambios en el esquema -como la adición o eliminación de una columna o índice- pueden realizarse on-line y en segundo plano. Como resultado pueden mantenerse más índices sin degradación de las prestaciones. Esto ocurre gracias a que mientras que la adición de datos a índices tiene alto coste computacional tratándose de árboles binarios, resulta económica en índices fractales.

### Aplicación

Los índices fractales pueden utilizarse en muchas aplicaciones de análisis de chorro de datos (streaming) en tiempo cuasi-real. Pueden también emplearse como capa de almacenamiento de una base de datos o de un sistema de ficheros. Cuando se emplean en una base de datos que use árboles binarios, las prestaciones aumentarán. Como ejemplos tenemos:
* monitorización y manejo de eventos de red
* redes de anuncios on-line
* web 2.0.
* análisis de visitas
* control de tráfico aéreo
Otros usos incluyen la mejora de la velocidad de motores de búsqueda de redes sociales y robots de búsqueda. También se pueden crear índices y columnas on-line, permitiendo solicitudes SQL flexibles para personalización del comercio electrónico. También son adecuados para reducir la carga de sitios Web transaccionales. En general da buenas prestaciones en aplicaciones que deben simultanear el almacenamiento de logs y ejecutar sentencias SQL específicas.

## Su papel en Big Data

TokuDB ha jugado un importante papel en el movimiento Big Data basado en MySQL . Ha sido resaltada como una nueva tecnología clave en la conferencia sobre Big Data de O'Reilly .