Para recursos semelhantes aos do Amazon Timestream para, considere o Amazon Timestream LiveAnalytics para InfluxDB. Ele oferece ingestão de dados simplificada e tempos de resposta de consulta de um dígito em milissegundos para análises em tempo real. Saiba mais aqui.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Consultar dados do Timestream para InfluxDB 3
O Amazon Timestream para InfluxDB 3 fornece várias APIs e protocolos de consulta para recuperar seus dados de séries temporais. A plataforma oferece suporte às linguagens de consulta SQL e InfluxQL por meio dos protocolos HTTP e Flight (gRPC), oferecendo flexibilidade para diferentes casos de uso e preferências do cliente.
Visão geral dos métodos de consulta
O InfluxDB 3 é compatível com os seguintes métodos de consulta:
-
API HTTP v3 nativa – consultas SQL e InfluxQL por meio de endpoints de REST.
-
influxdb3 CLI – interface de linha de comando para consultas interativas.
-
Protocolo Flight+gRPC — protocolo binário de alto desempenho para bibliotecas de clientes.
-
API de compatibilidade v1 — consultas antigas do InfluxQL para compatibilidade com versões anteriores.
Usando a API de consulta HTTP v3
A API v3 fornece endpoints dedicados para consultas SQL e InfluxQL com suporte para os métodos GET e POST.
Consultas SQL (/api/v3/query_sql)
Exemplo de solicitação GET:
curl --get "https://your-cluster-endpoint:8086/api/v3/query_sql" \ --header "Authorization: Bearer YOUR_TOKEN" \ --data-urlencode "db=DATABASE_NAME" \ --data-urlencode "q=SELECT * FROM home WHERE time >= now() - INTERVAL '1 day'"
Exemplo de solicitação POST (para consultas complexas):
curl "https://your-cluster-endpoint:8086/api/v3/query_sql" \ --header "Authorization: Bearer YOUR_TOKEN" \ --json '{ "db": "DATABASE_NAME", "q": "SELECT * FROM home WHERE room = '\''Kitchen'\'' AND temp > 20", "format": "jsonl" }'
Consultas do InfluxQL (/api/v3/query_influxql)
Para consultas do InfluxQL, faça o seguinte:
curl --get "https://your-cluster-endpoint:8086/api/v3/query_influxql" \ --header "Authorization: Bearer YOUR_TOKEN" \ --data-urlencode "db=DATABASE_NAME" \ --data-urlencode "q=SELECT mean(temp) FROM home WHERE time >= now() - 1d GROUP BY room"
Parâmetros de consulta
Você também pode usar os seguintes parâmetros:
| Parâmetro | Descrição | Obrigatória |
|---|---|---|
db
|
Nome do banco de dados | Sim |
q
|
Cadeia de caracteres de consulta (SQL ou InfluxQL) | Sim |
format
|
Formato de resposta (json, jsonl, csv, pretty, parquet) | Não (padrão: json) |
params
|
Parâmetros para consultas parametrizadas | Não |
Usando a CLI do Influxdb3
A interface de linha de comando (CLI) do InfluxDB 3 é invocada com o comando influxdb3. Fornece uma maneira interativa de consultar seus dados com suporte para vários formatos de saída.
A seguir, é apresentada uma consulta básica:
influxdb3 query \ --host "your-cluster-endpoint:8086" \ --token "YOUR_TOKEN" \ --database "DATABASE_NAME" \ "SELECT * FROM home WHERE time >= now() - INTERVAL '1 day'"
Veja a seguir uma consulta com formatos de saída diferentes:
# JSON output influxdb3 query \ --database "DATABASE_NAME" \ --format json \ "SELECT * FROM home LIMIT 10" # CSV output influxdb3 query \ --database "DATABASE_NAME" \ --format csv \ "SELECT * FROM home LIMIT 10" # Parquet file output influxdb3 query \ --database "DATABASE_NAME" \ --format parquet \ --output results.parquet \ "SELECT * FROM home"
Os seguintes formatos de tag são compatíveis:
-
pretty (padrão) — Formato tabular legível por humanos.
-
json — Matriz JSON padrão.
-
jsonl — Linhas JSON (compatível com streaming).
-
csv – valores separados por vírgula.
-
parquet – Formato colunar binário (requer saída de arquivo).
Usando a API de compatibilidade v1
Para consultas legadas do InfluxQL, use o endpoint /query:
curl --get "https://your-cluster-endpoint:8086/query" \ --header "Authorization: Bearer YOUR_TOKEN" \ --data-urlencode "db=DATABASE_NAME" \ --data-urlencode "q=SELECT * FROM home" \ --data-urlencode "epoch=ms"
Opções de autenticação para a API de consulta HTTP v3
-
Token do portador:
Authorization: Bearer TOKEN -
Autenticação básica:
--user "any:TOKEN" -
Parâmetro de consulta:
?p=TOKEN
Formatos de resposta para a API de consulta HTTP v3
-
JSON (padrão)
-
CSV (com
Accept: application/csvcabeçalho)
Exemplos de consulta SQL
A seguir, é apresentada uma consulta básica:
-- Select specific fields with time filter SELECT temp, humidity, room FROM home WHERE time >= now() - INTERVAL '7 days' AND room = 'Kitchen' ORDER BY time DESC -- Show all tables in database SHOW TABLES -- Show columns in a table SHOW COLUMNS FROM home
A seguir, são apresentadas as consultas de agregação:
-- Aggregate by tags SELECT room, AVG(temp) as avg_temp, MAX(humidity) as max_humidity FROM home WHERE time >= now() - INTERVAL '24 hours' GROUP BY room -- Time-based aggregation using DATE_BIN SELECT DATE_BIN(INTERVAL '1 hour', time) as time, AVG(temp) as avg_temp, COUNT(*) as reading_count FROM home GROUP BY 1 ORDER BY time DESC
A seguir, são apresentados os atributos de SQL avançados:
-- Parameterized queries (via API) SELECT * FROM home WHERE room = $room AND temp > $min_temp AND time >= $start_time -- Gap filling with interpolation SELECT date_bin_gapfill(INTERVAL '5 minutes', time) as time, room, interpolate(avg(temp)) as temp FROM home WHERE time >= '2025-01-01T00:00:00Z' AND time <= '2025-01-01T12:00:00Z' GROUP BY 1, room -- Type casting SELECT temp::INTEGER as temp_int, CAST(humidity AS VARCHAR) as humidity_str FROM home
A seguir, são apresentados os exemplos de consulta InfluxQL:
-- Basic query with time filter SELECT * FROM home WHERE time >= now() - 1d -- Aggregation with GROUP BY time SELECT MEAN(temp), MAX(humidity) FROM home WHERE time >= now() - 7d GROUP BY time(1h), room -- Using selector functions SELECT FIRST(temp), LAST(temp) FROM home WHERE time >= now() - 1h GROUP BY room
Veja a seguir como consultar tabelas do sistema para entender a estrutura do banco de dados e monitorar o desempenho:
-- View all tables with schema information SELECT * FROM information_schema.tables -- View column details for a specific table SELECT * FROM information_schema.columns WHERE table_name = 'home' -- Monitor recent queries SELECT * FROM system.queries ORDER BY issue_time DESC LIMIT 10 -- Check cache configurations SELECT * FROM system.last_caches SELECT * FROM system.distinct_caches
Práticas recomendadas de desempenho
-
Use filtros de tempo: sempre inclua filtros de intervalo de tempo para limitar os dados digitalizados.
-
Aproveite os índices: crie consultas para usar filtros de tags de forma eficaz.
-
Escolha o formato de saída apropriado:
-
Use jsonl para transmitir grandes resultados.
-
Use o parquet para exportação e análise de dados.
-
Use csv para compatibilidade de planilhas.
-
-
Otimize agregações: use DATE_BIN para agrupamento baseado em tempo.
-
Utilize consultas parametrizadas: evite ataques de injeção e melhore a reutilização.
-
Monitore o desempenho da consulta: verifique se há consultas lentas na tabela system.queries.
Suporte a consultas de bibliotecas de clientes
As bibliotecas de cliente do InfluxDB 3 usam o protocolo Flight+gRPC para um desempenho ideal. O código do Python mostra um exemplo disso.
from influxdb3 import InfluxDBClient3 client = InfluxDBClient3( host="your-cluster-endpoint:8086", token="YOUR_TOKEN", database="DATABASE_NAME" ) # SQL query sql_result = client.query("SELECT * FROM home WHERE room = 'Kitchen'") # InfluxQL query influxql_result = client.query( "SELECT MEAN(temp) FROM home WHERE time >= now() - 1h GROUP BY room", language="influxql" )
Compare os recursos de consulta SQL e InfluxQL
A tabela a seguir compara os recursos de consulta SQL e InfluxQL:
| Atributo | SQL | InfluxQL |
|---|---|---|
| Junções | Compatível | Não compatível |
| Funções de janela | Suporte completo | Limitado |
| Subconsultas | Compatível | Não compatível |
| Funções de tempo |
DATE_BIN, INTERVAL
|
agrupamento time() |
| Consultas parametrizadas | Suporte nativo | Não compatível |
| Preenchimento de lacunas |
date_bin_gapfill()
|
Função fill() |
Ao compreender esses recursos de consulta e escolher o método apropriado para seu caso de uso, você pode recuperar e analisar com eficiência seus dados de série temporal do Timestream for InfluxDB 3.
Vantagens do SQL:
-
Implantação de SQL completa com suporte para consultas complexas.
-
Suporte para junções, uniões e funções de janela.
-
Sintaxe familiar para usuários com experiência em SQL.
-
Capacidades analíticas mais abrangentes.
Vantagens do InfluxQL:
-
Projetado especificamente para dados de séries temporais.
-
Sintaxe mais simples para operações comuns de séries temporais.
-
Compatibilidade com versões anteriores para usuários migrando do InfluxDB v1.
-
Funções de séries temporais especializadas.
Atributos de otimização de consulta
O InfluxDB 3 oferece vários atributos de otimização para melhorar o desempenho da consulta para casos de uso específicos. Esses atributos aproveitam o cache em memória e as estratégias de indexação personalizadas para fornecer tempos de resposta inferiores a um milissegundo para padrões de dados acessados com frequência.
Last Value Cache (LVC, Cache de Último Valor)
O Last Value Cache (LVC) armazena os valores N mais recentes para campos especificados na memória, permitindo tempos de resposta abaixo de 10 ms para consultas que precisam dos pontos de dados mais recentes. Esse atributo está disponível nas edições Core e Enterprise.
Como o LVC funciona
O LVC mantém uma tabela na memória dos valores mais recentes para cada combinação exclusiva de colunas-chave (normalmente tags). Por exemplo, com dados do sensor:
Table: home ├── Tags: room, wall └── Fields: temp, humidity, co LVC Configuration: - Key columns: room, wall - Value columns: temp, humidity, co - Count: 4 (last 4 values)
O cache armazena:
| sala | parede | temp | umidade | co | hora |
|---|---|---|---|---|---|
| Cozinha | leste | 22,7 | 36,5 | 26 | 2025-01-26T20:00:00Z |
| Cozinha | leste | 22,7 | 36,0 | 9 | 2025-01-26T17:00:00Z |
| Cozinha | leste | 22,7 | 36,2 | 3 | 2025-01-26T15:00:00Z |
| Cozinha | leste | 22,7 | 36,1 | 0 | 2025-01-26T10:00:00Z |
| Sala de estar | norte | 22,2 | 36,4 | 17 | 2025-01-26T20:00:00Z |
| ... | ... | ... | ... | ... | ... |
Criar um LVC
Insira o seguinte comando para criar um LVC:
influxdb3 create last_cache \ --database DATABASE_NAME \ --token YOUR_TOKEN \ --table home \ --key-columns room,wall \ --value-columns temp,hum,co \ --count 5 \ --ttl 30mins \ homeLastCache
Consulte o LVC
Use o comando a seguir para consultar um LVC:
-- Query the last cached values SELECT * FROM last_cache('home', 'homeLastCache') -- Filter specific series SELECT * FROM last_cache('home', 'homeLastCache') WHERE room = 'Kitchen'
Práticas recomendadas de LVC
-
Gerencie a cardinalidade: inclua somente tags essenciais como colunas-chave para minimizar o uso da memória.
-
Otimize a contagem de valores: equilíbrio entre as necessidades de consulta e o consumo de memória.
-
Considere o TTL: defina o tempo de vida adequado para as entradas de cache.
-
Memória do monitor: tamanho do cache = (key_column_cardinality × count × value_columns).
Distinct Value Cache (DVC, Cache de Valores Distintos)
O Distinct Value Cache (DVC) mantém valores exclusivos para colunas especificadas na memória, acelerando as consultas de metadados para tempos de resposta abaixo de 30 ms. Disponível nas edições Core e Enterprise.
Como o DVC funciona
O DVC armazena todas as combinações exclusivas de valores para colunas especificadas, perfeitas para consultas que precisam listar valores de tags ou metadados disponíveis.
Exemplo de cache para dados de localização:
| país | condado | cidade |
|---|---|---|
| Áustria | Salzburgo | Salzburgo |
| Áustria | Viena | Viena |
| Bélgica | Antuérpia | Antuérpia |
| Bélgica | Flandres Ocidental | Bruges |
| República Tcheca | Praga | Praga |
Criar um DVC
Use o comando a seguir para criar um DVC:
influxdb3 create distinct_cache \ --database DATABASE_NAME \ --token YOUR_TOKEN \ --table wind_data \ --columns country,county,city \ --max-cardinality 10000 \ --max-age 24h \ windDistinctCache
Consulte o DVC
Use o comando a seguir para consultar um DVC:
-- Get all distinct values SELECT * FROM distinct_cache('wind_data', 'windDistinctCache') -- Get distinct countries SELECT DISTINCT country FROM distinct_cache('wind_data', 'windDistinctCache')
Práticas recomendadas de DVC
-
Defina limites de cardinalidade: defina combinações máximas de valores exclusivos para controlar a memória.
-
Configurar idade máxima: remova valores obsoletos automaticamente.
-
Colunas estratégicas de cache: concentre-se nas colunas usadas com frequência em consultas de metadados.
-
Tamanho do cache do monitor: maior cardinalidade significa que é necessária mais memória.
Índices de arquivos disponíveis somente no Enterprise
Disponível somente na edição Enterprise. Os índices de arquivos permitem a personalização de como os dados são indexados no armazenamento, melhorando significativamente o desempenho das consultas de série única.
Indexação padrão versus personalizada
Indexação padrão: índices do InfluxDB em todas as tags mais o tempo.
Indexação personalizada: indexe somente as colunas relevantes para suas consultas.
Exemplo de otimização:
Schema columns: country, state_province, county, city, postal_code Query patterns: Always filter by country, state_province, city Custom index: time, country, state_province, city (skip county, postal_code)
Veja a seguir como criar um índice de arquivos personalizado
influxdb3 create file_index \ --database DATABASE_NAME \ --token YOUR_TOKEN \ --table wind_data \ country,state_province,city
O exemplo a seguir mostra como excluir um índice de arquivo:
influxdb3 delete file_index \ --database DATABASE_NAME \ --token YOUR_TOKEN \ --table wind_data
Considerações sobre o índice de arquivos
-
Compactação necessária: os índices são criados durante a compactação de dados (gen2+).
-
Somente colunas de string: pode indexar tanto tags quanto campos de string.
-
Análise de padrões de consulta: analise sua workload antes de criar índices personalizados.
-
Otimização de série única: mais benéfica para consultas direcionadas a séries específicas.
Gerenciar informações de cache
Visualize as configurações e estatísticas do cache usando tabelas do sistema:
-- View Last Value Caches SELECT * FROM system.last_caches -- View Distinct Value Caches SELECT * FROM system.distinct_caches -- Check cache memory usage SELECT cache_name, table_name, key_columns, value_count, memory_size_bytes FROM system.last_caches
Estratégia de otimização do desempenho
Escolha os atributos de otimização certos com base em seus padrões de consulta:
| Padrão de consulta | Atributos recomendados | Performance esperada |
|---|---|---|
| Valores mais recentes por série | Último cache de valor | <10ms |
| Valores disponíveis da tag | Cache de valor diferenciado | <30ms |
| Consultas de séries únicas | Índices de arquivos (Enterprise) | Melhoria significativa |
| Agregações de intervalo de tempo | Índices padrão | Desempenho de linha de base |
Considerações sobre memória e recursos
Fórmula de memória cache:
-
LVC: memória = key_cardinality × value_count × value_columns × data_size
-
DVC: memória = distinct_combinations × column_count × data_size
Práticas recomendadas:
-
Comece com caches pequenos e monitore o uso da memória
-
Use as configurações de TTL para limitar o crescimento do cache
-
Armazene em cache somente os dados consultados com frequência
-
Monitore as taxas de acerto do cache por meio de tabelas do sistema
-
Para empresas: combine caches com índices de arquivos personalizados para obter um desempenho ideal
Ao aproveitar esses atributos de otimização adequadamente, você pode obter melhorias significativas de desempenho para padrões de consulta específicos e, ao mesmo tempo, gerenciar o consumo de atributos de forma eficaz.