Blog do GribStream
Consulte dados meteorológicos com MySQL: beta pública do GribStream
Conecte clientes e drivers MySQL comuns ao GribStream, use seu token de API como senha e receba os resultados das consultas meteorológicas em linhas MySQL.
O GribStream agora oferece uma conexão compatível com MySQL em beta pública. Se uma linguagem, notebook, ferramenta de linha de comando ou aplicação consegue se conectar ao MySQL, ela pode usar a mesma interface conhecida para consultar os dados meteorológicos do GribStream.
Conecte-se a mysql.gribstream.com na porta 3307. Use seu token de API do GribStream como senha, escolha um dataset como gfs como banco de dados e receba os resultados em linhas MySQL.
Esta é uma beta pública. Ainda não recomendamos essa conexão para cargas de trabalho de produção, e o SQL disponível poderá mudar conforme aprendemos com o uso real. Relate problemas ou envie comentários, ou participe do nosso Discord.
Uma breve sessão MySQL
Não há servidor MySQL para instalar nem dados meteorológicos para importar. Com o cliente MySQL de linha de comando, basta se conectar assim:
mysql --host=mysql.gribstream.com \
--port=3307 \
--user=gribstream \
--password
O cliente solicita seu token de API. Depois da conexão, os datasets aparecem como bancos de dados. Os resultados abaixo foram abreviados:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| aifsoper |
| era5 |
| gfs |
| hrrr |
| ifsoper |
| ... |
+--------------------+
mysql> USE gfs;
Database changed
Cada dataset tem uma tabela timeseries, que fornece a melhor previsão disponível para cada horário válido, e uma tabela runs, usada para consultar execuções específicas do modelo. Os parâmetros meteorológicos disponíveis aparecem como colunas. A consulta comum do esquema mostra os campos de tempo e localização ao lado dos valores específicos do dataset:
mysql> SHOW COLUMNS FROM gfs.timeseries;
+-----------------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-------------+------+-----+---------+-------+
| forecasted_at | datetime(6) | YES | | NULL | |
| forecasted_time | datetime(6) | YES | | NULL | |
| lat | double | YES | | NULL | |
| lon | double | YES | | NULL | |
| lead_time | double | YES | | NULL | |
| ... | ... | ... | ... | ... | ... |
| tmp_2_m_above_ground | double | YES | | NULL | |
| ... | ... | ... | ... | ... | ... |
+-----------------------+-------------+------+-----+---------+-------+
A saída está abreviada. tmp_2_m_above_ground é a temperatura GFS a 2 metros, em kelvin, a unidade nativa do modelo. Essa coluna numérica pode ser selecionada, transformada, filtrada e renomeada.
Esta é a consulta usada para criar o gráfico no início do post. Ela obtém 36 previsões horárias para cinco cidades e converte a temperatura para graus Celsius:
SELECT forecasted_time, name,
tmp_2_m_above_ground AS temp_k,
ROUND(temp_k - 273.15, 2) AS temp_c
FROM gfs.timeseries
WHERE forecasted_time BETWEEN '2026-08-07 19:00:00'
AND '2026-08-09 06:00:00'
AND forecasted_at <= '2026-08-07 12:00:00'
AND (lat, lon, name) IN (
(47.6062, -122.3321, 'Seattle'),
(39.7392, -104.9903, 'Denver'),
(41.8781, -87.6298, 'Chicago'),
(40.7128, -74.0060, 'New York'),
(25.7617, -80.1918, 'Miami')
)
AND lead_time BETWEEN '0h' AND '48h'
ORDER BY forecasted_time, name;
O limite em forecasted_at mantém o resultado na execução do modelo de 7 de agosto às 12 UTC usada no gráfico. A consulta completa retorna 180 linhas; estas correspondem ao primeiro horário válido:
+---------------------+----------+------------+--------+
| forecasted_time | name | temp_k | temp_c |
+---------------------+----------+------------+--------+
| 2026-08-07 19:00:00 | Chicago | 303.708350 | 30.56 |
| 2026-08-07 19:00:00 | Denver | 307.208350 | 34.06 |
| 2026-08-07 19:00:00 | Miami | 303.908350 | 30.76 |
| 2026-08-07 19:00:00 | New York | 307.208350 | 34.06 |
| 2026-08-07 19:00:00 | Seattle | 301.708350 | 28.56 |
+---------------------+----------+------------+--------+
A conexão é somente leitura. Trata-se de uma interface focada em consultas de dados meteorológicos, não de um banco de dados relacional de uso geral.
Por que MySQL?
O MySQL já conta com clientes maduros para a maioria das linguagens de programação e ambientes de dados. Assim, usuários do GribStream podem aproveitar pools de conexões, consultas preparadas, linhas tipadas, leitura incremental dos resultados e cancelamento de consultas sem adotar outra biblioteca cliente.
O guia completo de MySQL traz exemplos prontos para usar na linha de comando, em Python, Java, C#, Go, Node.js, Rust, C e DuckDB, seguidos pela referência completa do SQL disponível.
A conexão também pode ser útil com ferramentas de IA que já tenham um conector MySQL genérico. O arquivo de skill do GribStream para MySQL, disponível para download, ensina um agente a explorar o catálogo e construir consultas meteorológicas bem delimitadas.
Uma interface SQL focada
A beta oferece o SQL necessário para escolher um dataset, intervalo de tempo, locais, lead times, membros do ensemble e valores meteorológicos. Você pode calcular valores derivados, filtrar linhas, usar horários relativos e fusos horários nomeados, além de ordenar resultados delimitados durante a exploração interativa.
A proposta não é implementar todo o MySQL. As consultas meteorológicas não aceitam escritas, joins, subconsultas, agregações, agrupamentos nem SELECT *. A sintaxe não disponível retorna um erro claro, e o guia de SQL documenta as formas aceitas com exemplos.
Grandes volumes, streaming e cota
Para downloads grandes, configure o cliente para processar as linhas conforme elas chegam, em vez de guardar o resultado inteiro na memória. O cliente MySQL de linha de comando usa --quick; outros clientes costumam chamar esse modo de resultado sem buffer, streaming, iterativo ou em blocos. O guia traz links para a documentação correspondente de cada cliente.
Para cargas históricas e outros downloads de grande volume, omita ORDER BY e ordene os dados depois de recebê-los. A ordenação no servidor é voltada principalmente à exploração interativa e a resultados delimitados.
O consumo da cota depende dos dados meteorológicos lidos para responder à consulta, não apenas das linhas retornadas no final. Restrinja o intervalo de tempo, as coordenadas, os lead times, os membros e os campos meteorológicos selecionados antes de depender de filtros por valor ou de LIMIT.
Experimente a beta pública
- Crie gratuitamente um token de API do GribStream, ou use um token existente.
- Abra o guia de conexão MySQL e o manual de SQL.
- Conecte-se a
mysql.gribstream.com:3307com um cliente ou driver MySQL. - Comece com uma consulta pequena e bem delimitada, depois amplie conforme necessário.
O objetivo é simples: se o seu ambiente já se comunica com MySQL, ele deve ter um caminho direto para os dados meteorológicos do GribStream.
