Após criar uma tabela de séries temporais no Tablestore e a respectiva tabela de mapeamento em SQL, execute instruções SQL no console do Tablestore ou por meio de um SDK do Tablestore para consultar os dados armazenados.
Tabelas de mapeamento para uma tabela de séries temporais em SQL
O modelo TimeSeries divide-se em modelo de valor único e modelo de múltiplos valores, conforme a série temporal gere um ou mais valores em cada ponto no tempo. A tabela a seguir descreve os tipos de tabelas de mapeamento que você pode criar em SQL para consultar dados de uma tabela de séries temporais.
|
Tipo de tabela de mapeamento |
Descrição |
Método de criação |
Nome da tabela de mapeamento em SQL |
|
Consulta dados de séries temporais usando uma tabela de mapeamento no modelo de valor único. |
O sistema cria automaticamente uma tabela de mapeamento em SQL ao criar a tabela de séries temporais. |
Igual ao nome da tabela de séries temporais. |
|
|
Consulta dados de séries temporais usando uma tabela de mapeamento no modelo de múltiplos valores. |
Após criar a tabela de séries temporais, crie manualmente a tabela de mapeamento em SQL. |
O nome segue o formato |
|
|
Consulta metadados das séries temporais. |
O sistema gera automaticamente uma tabela de mapeamento em SQL para os metadados após a criação da tabela de séries temporais. |
O nome segue o formato |
Tabelas de mapeamento no modelo de valor único
Ao criar uma tabela de séries temporais, o sistema gera automaticamente uma tabela de mapeamento no modelo de valor único em SQL, com o mesmo nome da tabela original. Use essa tabela de mapeamento para consultar os dados da série temporal.
A tabela abaixo detalha o schema da tabela de mapeamento em SQL.
|
Nome da coluna |
Tipo |
Descrição |
|
_m_name |
VARCHAR |
Nome da métrica. |
|
_data_source |
VARCHAR |
Fonte dos dados. |
|
_tags |
VARCHAR |
Tags da série temporal. O valor é um array contendo múltiplas tags no formato ["tagKey1=tagValue1","tagKey2=tagValue2"]. Use a função tag_value_at para extrair o valor de uma tag específica. |
|
_time |
BIGINT |
Timestamp do ponto de dados. Unidade: microssegundo. |
|
_field_name |
VARCHAR |
Nome da coluna de dados. |
|
_long_value |
BIGINT |
Valor dos dados do tipo inteiro. Se o tipo de dados da coluna não for inteiro, o valor será NULL. |
|
_double_value |
DOUBLE |
Valor dos dados do tipo ponto flutuante. Se o tipo de dados da coluna não for ponto flutuante, o valor será NULL. |
|
_bool_value |
BOOL |
Valor dos dados do tipo booleano. Se o tipo de dados da coluna não for booleano, o valor será NULL. |
|
_string_value |
VARCHAR |
Valor dos dados do tipo string. Se o tipo de dados da coluna não for string, o valor será NULL. |
|
_binary_value |
MEDIUMBLOB |
Valor dos dados do tipo binário. Se o tipo de dados da coluna não for binário, o valor será NULL. |
|
_attributes |
VARCHAR |
Propriedades da série temporal. O formato das propriedades é idêntico ao das tags. |
|
_meta_update_time |
BIGINT |
Momento da última atualização dos metadados da série temporal. O sistema atualiza automaticamente esse timestamp quando você altera as propriedades da série. Além disso, enquanto houver gravação contínua de dados, o sistema renova esse timestamp em intervalos regulares. Use esse campo para verificar se a série temporal está ativa. |
Tabelas de mapeamento no modelo de múltiplos valores
Para consultar dados usando o modelo de múltiplos valores, execute a instrução CREATE TABLE e crie a tabela de mapeamento correspondente. O nome da tabela em SQL deve seguir o formato Nome da tabela de séries temporais::Sufixo. Defina o Sufixo no momento da criação. É possível criar várias tabelas de mapeamento no modelo de múltiplos valores para uma mesma tabela de séries temporais.
Durante a criação, especifique o nome da tabela de mapeamento, bem como os nomes e tipos das colunas de dados. Para mais detalhes, consulte a seção Criar tabelas de mapeamento no modelo de múltiplos valores para tabelas de séries temporais deste tópico.
A tabela a seguir apresenta o schema da tabela de mapeamento em SQL.
Caso precise ler a coluna de propriedades (_attributes) ou a coluna de tempo de atualização de metadados (_meta_update_time) por meio de uma tabela de mapeamento no modelo de múltiplos valores, inclua essas duas colunas na definição da tabela. O sistema preencherá automaticamente o conteúdo desses campos de metadados.
|
Nome da coluna |
Tipo |
Descrição |
|
_m_name |
VARCHAR |
Nome da métrica. |
|
_data_source |
VARCHAR |
Fonte dos dados. |
|
_tags |
VARCHAR |
Tags da série temporal. O valor é um array com múltiplas tags no formato ["tagKey1=tagValue1","tagKey2=tagValue2"]. Use a função tag_value_at para extrair o valor de uma tag. |
|
_time |
BIGINT |
Timestamp do ponto de dados. Unidade: microssegundo. |
|
Nome da coluna de dados personalizada. |
Adicione quantas colunas personalizadas forem necessárias à tabela de mapeamento em SQL. Se o nome ou o tipo da coluna especificada na tabela de mapeamento não corresponder exatamente ao da tabela de séries temporais, os valores retornados serão nulos. |
|
|
_attributes (opcional) |
MEDIUMTEXT |
Propriedades da série temporal. O formato segue o mesmo padrão das tags. |
|
_meta_update_time (opcional) |
BIGINT |
Momento da última atualização dos metadados da série temporal. O sistema atualiza automaticamente esse timestamp quando você altera as propriedades da série. Enquanto houver gravação contínua de dados, o sistema renova esse timestamp periodicamente. Use esse campo para verificar se a série temporal está ativa. |
Tabelas de mapeamento para metadados de séries temporais
O sistema cria automaticamente uma tabela de mapeamento para metadados assim que você cria uma tabela de séries temporais. O nome dessa tabela em SQL segue o formato Nome da tabela de séries temporais::meta. Use-a para consultar metadados. Por exemplo, se a tabela de séries temporais se chama timeseries_table, a tabela de mapeamento de metadados será timeseries_table::meta.
A tabela abaixo descreve o schema da tabela de mapeamento em SQL.
|
Nome da coluna |
Tipo |
Descrição |
|
_m_name |
VARCHAR |
Nome da métrica. |
|
_data_source |
VARCHAR |
Fonte dos dados. |
|
_tags |
VARCHAR |
Tags da série temporal. |
|
_attributes |
VARCHAR |
Propriedades da série temporal. |
|
_meta_update_time |
BIGINT |
Momento da última atualização dos metadados da série temporal. O sistema atualiza automaticamente esse timestamp quando você altera as propriedades da série. Enquanto houver gravação contínua de dados, o sistema renova esse timestamp periodicamente. Use esse campo para verificar se a série temporal está ativa. |
Sintaxe SQL
Criar tabelas de mapeamento no modelo de múltiplos valores para tabelas de séries temporais
Execute a instrução CREATE TABLE para criar uma tabela de mapeamento no modelo de múltiplos valores associada a uma tabela de séries temporais.
-
Sintaxe SQL
CREATE TABLE `timeseries_table::user_mapping_name` ( `_m_name` VARCHAR(1024), `_data_source` VARCHAR(1024), `_tags` VARCHAR(1024), `_time` BIGINT(20), `user_column_name1` data_type, ...... `user_column_namen` data_type, PRIMARY KEY(`_m_name`,`_data_source`,`_tags`,`_time`) );Para obter mais informações sobre os parâmetros da sintaxe SQL, consulte o schema da tabela na seção Tabelas de mapeamento no modelo de múltiplos valores deste tópico.
-
Exemplo de SQL
O código abaixo exemplifica a criação de uma tabela de mapeamento no modelo de múltiplos valores chamada
timeseries_table::muti_modelpara a tabela de séries temporais. As métricas definidas nesta tabela são cpu, memory e disktop. Código SQL de exemplo:CREATE TABLE `timeseries_table::muti_model` ( `_m_name` VARCHAR(1024), `_data_source` VARCHAR(1024), `_tags` VARCHAR(1024), `_time` BIGINT(20), `cpu` DOUBLE(10), `memory` DOUBLE(10), `disktop` DOUBLE(10), PRIMARY KEY(`_m_name`,`_data_source`,`_tags`,`_time`) );
Consultar dados
Execute a instrução SELECT para consultar dados de séries temporais. Para mais detalhes, consulte Consultar dados.
O Tablestore oferece a função de extensão tag_value_at para extrair valores específicos das tags (_tags) de uma série temporal. Essa função também serve para extrair valores das propriedades (_attributes).
Por exemplo, se _tags contiver ["host=abc","region=hangzhou"], use tag_value_at(_tags, "host") para obter o valor abc da tag host. Veja o exemplo de instrução SQL abaixo:
SELECT tag_value_at(_tags, "host") as host FROM timeseries_table LIMIT 1;
Exemplos de SQL
Consultar séries temporais
Após a criação da tabela de séries temporais, o sistema gera automaticamente uma tabela de mapeamento para metadados. Use essa tabela para consultar as séries temporais.
Neste cenário, usamos uma tabela de séries temporais chamada timeseries_table e sua respectiva tabela de mapeamento de metadados timeseries_table::meta. A métrica utilizada é basic_metric.
-
Consulte séries temporais com nome de métrica igual a basic_metric na tabela de mapeamento de metadados.
SELECT * FROM `timeseries_table::meta` WHERE _m_name = "basic_metric" LIMIT 100; -
Filtre séries temporais que atendam a múltiplas condições de tag (host=host001 e region=hangzhou) na tabela de mapeamento de metadados.
SELECT * FROM `timeseries_table::meta` WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001" AND tag_value_at(_tags, "region") = "hangzhou" LIMIT 100; -
Busque séries temporais na tabela de metadados que cumpram condições específicas de tag (host=host001 e region=hangzhou), possuam uma propriedade definida (status=online) e permaneçam ativas após determinado momento.
SELECT * FROM `timeseries_table::meta` WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001" AND tag_value_at(_tags, "region") = "hangzhou" AND tag_value_at(_attributes, "status") = "online" AND _meta_update_time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 100;
Consultar dados de séries temporais usando a tabela de mapeamento no modelo de valor único
O sistema cria automaticamente uma tabela de mapeamento no modelo de valor único logo após a criação da tabela de séries temporais. Use essa estrutura para consultar os dados.
Este exemplo utiliza a tabela de séries temporais timeseries_table e a tabela de mapeamento no modelo de valor único timeseries_table. A métrica considerada é basic_metric.
-
Recupere registros cujo tipo de métrica seja basic_metric na tabela de dados de séries temporais.
SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" LIMIT 10; -
Obtenha dados com métrica basic_metric e fonte device001 posteriores a um timestamp específico na tabela de séries temporais.
SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" AND _data_source = "device001" AND _time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 10; -
Filtre dados na tabela de séries temporais que satisfaçam uma única condição de tag (host=host001).
SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001" AND _time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 10; -
Selecione registros na tabela de dados que atendam a múltiplas condições de tag (host=host001 e region=hangzhou).
SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001" AND tag_value_at(_tags, "region") = "hangzhou" AND _time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 10; -
Agrupe (avg e max) os dados cpu_usr de uma série temporal filtrada pela tag host=host001, usando janelas de tempo de 600 segundos.
SELECT tag_value_at(_tags, "host") as host,_time DIV 600000000 * 600 as time_sec,avg(_double_value) as cpu_avg,max(_double_value) as cpu_max FROM timeseries_table WHERE _m_name = "basic_metric" AND _time > (UNIX_TIMESTAMP() - 21600) * 1000000 AND tag_value_at(_tags, "host") = "host001" AND _field_name = "cpu_summary_usr" GROUP BY host,time_sec ORDER BY time_sec LIMIT 100;
Consultar dados de séries temporais usando uma tabela de mapeamento no modelo de múltiplos valores
Após criar a tabela de séries temporais, crie uma tabela de mapeamento no modelo de múltiplos valores para consultar os dados. Para instruções detalhadas, veja a seção Criar tabelas de mapeamento no modelo de múltiplos valores para tabelas de séries temporais deste tópico.
Neste exemplo, utilizamos a tabela timeseries_table e a tabela de mapeamento no modelo de múltiplos valores timeseries_table::muti_model. As métricas envolvidas são cpu, memory e disktop.
-
Consulte registros cuja fonte de dados seja host_01 usando a tabela de mapeamento no modelo de múltiplos valores. Neste caso, host_id encontra-se em _data_source.
SELECT * FROM `timeseries_table::muti_model` WHERE _data_source = "host_01" LIMIT 10; -
Liste informações das métricas de séries temporais em que o valor de cpu excede 20,0, usando a tabela de mapeamento no modelo de múltiplos valores.
SELECT cpu,memory,disktop FROM `timeseries_table::muti_model` WHERE cpu > 20.0 LIMIT 10; -
Calcule a média dos valores de cpu e o máximo de disktop para hosts que atendem à condição de tag region=hangzhou no dia 1º de janeiro de 2022, usando a tabela de mapeamento no modelo de múltiplos valores.
SELECT avg(cpu) as avg_cpu,max(disktop) as max_disktop FROM `timeseries_table::muti_mode` WHERE tag_value_at(_tags,"region") = "hangzhou" AND _time > 1640966400000000 AND _time < 1641052799000000 GROUP BY _data_source;
Métodos de uso
Você pode usar SQL para consultar dados de séries temporais pelos métodos a seguir. Durante a consulta, realize operações nas tabelas de mapeamento conforme suas necessidades de negócio.
Consulte dados diretamente pelo console do Tablestore. Para mais informações, consulte Usar consultas SQL no console do Tablestore.
Use os SDKs do Tablestore para executar consultas SQL. Consulte Usar SDKs do Tablestore para detalhes.
-
Faça consultas SQL via Java Database Connectivity (JDBC).
Acesse o Tablestore via JDBC direto. Veja Usar consultas SQL com conexão JDBC direta.
Integre o driver JDBC do Tablestore com Hibernate. Consulte Usar Hibernate para consultar dados com SQL.
Use MyBatis com o driver JDBC do Tablestore. Para mais detalhes, veja Usar MyBatis para consultar dados com SQL.
Acesse o Tablestore usando o driver Go. Consulte Consultar dados com o driver Go.
Execute consultas SQL pela CLI do Tablestore. Para instruções, consulte Consulta SQL.