Todos los productos
Search
Centro de documentos

Lindorm:Cómo diseñar una tabla de datos de series de tiempo

Última actualización: Sep 05, 2026

Un buen diseño de tablas es la base del rendimiento de consultas y almacenamiento en LindormTSDB. Antes de escribir cualquier instrucción SQL, analice sus patrones de consulta y las características de su origen de datos; las decisiones que tome al crear el esquema son difíciles de revertir más adelante.

Este tema utiliza datos de monitoreo de calidad del aire (AQM) como ejemplo para explicar cada decisión de diseño.

Descripción general del modelo de datos

Cada registro en una tabla de series de tiempo de LindormTSDB consta de cuatro componentes:

Componente

Descripción

Tabla

Conjunto de datos de series de tiempo del mismo tipo. Corresponde a una métrica; por ejemplo, aqm para todas las lecturas de calidad del aire.

Etiqueta

Atributo que identifica el objeto monitoreado y se almacena como un par clave-valor. De forma predeterminada, LindormTSDB indexa cada par clave-valor de etiqueta y asigna las etiquetas a las series de tiempo para agilizar el filtrado. En algunos sistemas también se les conoce como rótulos o dimensiones.

Marca de tiempo

Momento en que se generó el registro.

Campo

Valor medido. Un registro puede tener varios campos. LindormTSDB no indexa los campos.

El siguiente diagrama ilustra cómo se relacionan estos componentes mediante los datos de AQM:

2023-02-20_15-32-24

Decida qué columnas deben ser etiquetas

Esta es la decisión de esquema con mayor impacto. Una definición incorrecta provoca que el índice de series de tiempo crezca sin límite, lo cual degrada tanto el rendimiento de escritura como el de consulta.

Las etiquetas sirven para identificar; los campos, para medir.

  • Defina una columna como etiqueta cuando identifique el origen o el contexto de los datos: ciudad, ID de dispositivo, región o host.

  • Defina una columna como campo cuando almacene un valor medido que cambia con el tiempo: temperatura, uso de CPU o concentración de PM2.5.

Evite las etiquetas de alta rotación

No utilice atributos cuyos valores cambien con frecuencia, como los ID de proceso o los atributos relacionados con el tiempo, aunque su tipo de dato sea STRING. Cada combinación única de clave-valor de etiqueta genera una nueva entrada de serie de tiempo en el índice. Los atributos de alta rotación producen gran cantidad de series de tiempo distintas, lo que hace que el índice crezca rápidamente y ralentiza las consultas basadas en etiquetas.

En su lugar, defina los atributos de alta rotación como campos.

Cree la tabla

Asigne a la tabla el nombre de la métrica que representa. Utilice la instrucción CREATE TABLE con la palabra clave TAG para marcar las columnas de etiqueta. La palabra clave TAG es una extensión de SQL de LindormTSDB; solo las columnas declaradas con TAG pueden usarse como claves primarias.

A continuación se muestra un ejemplo que crea una tabla de AQM con tres columnas de etiqueta y cuatro columnas de campo:

CREATE TABLE aqm (
    city        VARCHAR TAG,
    district    VARCHAR TAG,
    id          VARCHAR TAG,
    time        TIMESTAMP,
    pm2_5       DOUBLE,
    pm10        DOUBLE,
    so2         DOUBLE,
    no2         DOUBLE,
    PRIMARY KEY (id)  -- Remove this line for single-node Lindorm instances, which do not support primary keys.
);

Una vez creada la tabla, inserte registros con INSERT INTO:

INSERT INTO aqm (city, district, id, time, pm2_5, pm10, so2, no2)
VALUES ('hangzhou', 'yuhang', 'HY00001', '2019-04-18 10:00:00', 31.0, 66.0, 10.0, 43.0);

INSERT INTO aqm (city, district, id, time, pm2_5, pm10, so2, no2)
VALUES ('hangzhou', 'yuhang', 'HY00001', '2019-04-18 10:01:00', 31.2, 66.0, 10.5, 43.1);

Para insertar varios registros en una sola instrucción:

INSERT INTO aqm (city, district, id, time, pm2_5, pm10, so2, no2)
VALUES
    ('hangzhou', 'yuhang', 'HY00001', '2019-04-18 10:02:00', 31.3, 66.0, 10.0, 42.9),
    ('hangzhou', 'yuhang', 'HY00001', '2019-04-18 10:03:00', 31.2, 66.4, 10.3, 43.0);

Elija una clave primaria

LindormTSDB usa la clave primaria para particionar los datos y optimizar las consultas. Las consultas que incluyen la clave primaria en la cláusula WHERE se ejecutan más rápido.

Importante

Las tablas de series de tiempo difieren de las tablas de bases de datos relacionales. La columna de clave primaria no necesita contener valores únicos, pero debe estar marcada como etiqueta (declarada con la palabra clave TAG).

Nota

Las instancias de nodo único de Lindorm no admiten claves primarias.

Utilice el identificador único del origen de datos como clave primaria:

Escenario

Clave primaria recomendada

IoT (Internet de las cosas) / IIoT (Internet industrial de las cosas)

ID de dispositivo

IoV (Internet de los vehículos)

Identificador único del vehículo

Monitoreo de aplicaciones

ID de aplicación o host:port

En el ejemplo de AQM, id identifica de manera única cada estación de monitoreo. Si la mayoría de las consultas filtran por ID de estación, utilice id como clave primaria:

PRIMARY KEY (id)

Elija los tipos de datos

Columnas de etiqueta

Las columnas de etiqueta deben ser de tipo VARCHAR. Este tipo de dato no se puede modificar después de crear la tabla.

Columnas de marca de tiempo

LindormTSDB almacena internamente las marcas de tiempo como valores BIGINT en formato de época UNIX dentro de LindormDFS, lo cual optimiza la compresión. Al crear la tabla, elija el tipo de columna según la forma en que su aplicación maneje las marcas de tiempo:

Tipo

Cuándo utilizarlo

TIMESTAMP

Su aplicación trabaja con cadenas de fecha y hora legibles y desea que la base de datos convierta los valores automáticamente.

BIGINT

Su aplicación trabaja directamente con valores de época UNIX o realiza operaciones aritméticas con las marcas de tiempo (por ejemplo, calcular duraciones).

Columnas de campo

Las columnas de campo admiten todos los tipos de datos. Evite usar VARCHAR en estas columnas, ya que se comprime de forma deficiente y ralentiza las consultas en comparación con los tipos numéricos.

Para consultar la lista completa de tipos de datos compatibles, consulte Data types.