En la entrada Un poco de OpenTSDB (y de StatusWolf) se comentan las bondades de OpenTSDB una base de datos temporal escalable y distribuida. Y una de sus principales virtudes es la forma de almacenar los datos de las series temporales de forma eficiente y compacta.
Para ello utiliza HBase que es la base de datos por defecto de Hadoop: distribuible, escalable y preparada para almacenar grandes volúmenes de datos, pero orientada a columnas por lo que es importante la forma en que almacenemos la información para luego no tener problemas con la extracción.
- Lo primero un diseño simple
Sólo se almacenan series de tiempo. Una fila con un solo KeyValue por datapoint
En el campo clave se almacena primero el nombre de la métrica y luego el tiempo
- Uso del campo clave
Como en el campo clave no puede ir texto se almacena una referencia (lo mismo se hace con los tags) es decir que utiliza tablas separadas para asignar Ids únicos a los nombre de las métricas y los tags y añade esa referencia en el campo clave.
- Reducción del número de filas
Almacena los datos de forma consecutiva en la misma fila. Al tener menos filas consigue mayor velocidad a la hora de buscar una fila específica
- Creación de las filas
El problema es decidir cuando crear una nueva fila y esto se hace en los siguientes casos:
– Cuando se inicia una serie
– Cuando se sobrepasa un límite temporal, por ejemplo 10 minutos
En las reconexiones los datos se añaden en la fila de su rango temporal
- Reducción del espacio en disco
Para optimizar el espacion en disco utiliza la compactación de columnas
La presentación original se encuentra aquí








Deja un comentario