Virtualização de dados e consultas federadas

Uma única instrução SQL em todos os seus bancos de dados.

Seus pedidos estão no MySQL. Seus clientes estão no PostgreSQL. Os alvos, sobre os quais todos discutem, estão em um servidor SQL Server na sede. consulta federada permite que você escreva uma palavra comum SELECIONAR que lê as três simultaneamente e entrega uma única tabela — sem exportações, sem cópias e sem necessidade de abrir nada no seu firewall.

On every plan, including Free · Free runs 2 sources and 250 result rows — the ceilings grow with your tier

Um único servidor SQL, não um construtor de junções. Bancos de dados em diferentes escritórios, nuvens e países. Nenhuma regra de firewall de entrada, nunca. Recusa-se a dar um palpite

38 Conectores de banco de dados — una qualquer um deles, em qualquer combinação.

Microsoft SQL ServerPostgreSQLMySQLMariaDBOráculoFloco de neveGoogle BigQuerySQLiteMicrosoft AccessDuckDBSupabase

Ao lado deles em Fluxos de Consulta: 8 Conectores de API, consultados com o mesmo SQL

ListradoHubSpotShopifyAnúncios do GoogleGoogle Analytics 4Console de pesquisa do GoogleShipStationiTick

53 fontes no total. Seus conectores de API são consultados com SQL como tudo o mais — e uma declaração federada une seus banco de dados conexões. Consulte o Conector de API.

Virtualização de dados, em uma única declaração

Coloque o nome da conexão na frente da tabela.

Essa é a única ideia nova nesta página. Cada nome destacado abaixo representa um banco de dados diferente, em um local diferente, acessado por um Agente de Rede diferente — e ainda assim é uma única consulta.

receita-por-região.sql 3 conexões · 3 agentes · 1 declaração
-- uma consulta federada · nada copiado em lugar nenhum
SELECIONAR   c.região,
         CONTAGEM(*)      AS pedidos,
         SUM(o.total)  AS receita, t.alvo
DE     mysql_prod.encomendas.da.loja1 o
JUNTAR     pg_crm.clientes.públicos2 c ON c.id = o.customer_id
JUNTAR     mssql_erp.dbo.region_targets3 t ON t.região = c.região
ONDE    o.colocado_em >= DATA '2026-07-01'
GRUPO POR c.região, t.alvo
ORDER BY receita DESC;
Cada banco de dados lida com: seu próprio sistema de filtragem e agrupamento Nós cuidamos de: as junções entre eles e a ordenação

mysql_prod, pg_crm e mssql_erp são simplesmente os nomes que você deu às suas próprias conexões — as três partes são conexão, esquema, tabelaÉ isso que as pessoas querem dizer com um(a) banco de dados federadoTrês bancos de dados separados respondendo a uma pergunta, sem nenhuma mesclagem ou movimentação de dados. Esquema ilustrativo; suas tabelas serão suas tabelas.

Onde cada nome se resolve

1 MySQL mysql_prod MySQL · loja.pedidos Agente na nuvem Filtra até julho e, em seguida, totaliza a receita por cliente antes de enviar qualquer coisa.
2 PostgreSQL pg_crm PostgreSQL · public.customers Agente regional Retorna apenas as colunas id e região — as únicas duas que contêm os nomes da consulta.
3 Microsoft SQL Server mssql_erp SQL Server · dbo.region_targets Agente da sede Entrega o alvo por região, escrito em T-SQL para que seja executado nativamente.

Três agentes, três redes, uma declaração — e nenhum deles abriu uma porta para isso.

O que não muda?

Mais alcance, não mais exposição.

A leitura de duas bases de dados simultaneamente utiliza exatamente o mesmo caminho que a leitura de uma só. Nada de novo é aberto para obtê-la.

Apenas envio

O agente abre uma conexão criptografada com o Query Streams e transmite tanto a solicitação quanto os resultados por essa conexão. Sem porta de entrada, sem VPN, sem alteração de firewall — e suas credenciais nunca saem da sua rede.

Somente leitura, cada peça

Cada parte da consulta é verificada antes de ser enviada: SELECIONAR, COM e EXPLICAR Somente. Uma consulta federada não pode gravar em nenhum dos seus bancos de dados, e qualquer dado rejeitado jamais chegará a eles.

Ele não pode fugir com o seu servidor.

Existe um limite máximo para a quantidade de dados que um banco de dados pode fornecer em uma única consulta, e o agente para assim que esse limite é atingido. Um erro em um ONDE Essa cláusula resulta em uma mensagem de erro, não em uma tarde inteira perdida.

Como funciona

Três etapas, e nenhuma delas é um pipeline de dados.

01

Escolha suas conexões

Escolha duas ou mais conexões que sua equipe já configurou. Duas é o mínimo — é isso que torna uma consulta federada. Nada é copiado e nenhuma nova senha é criada.

02

Escreva uma declaração

Dê o nome de cada tabela como tabela de esquema de conexãoEm seguida, escreva SQL normalmente. Antes de executar, você pode ler o plano: qual banco de dados está sendo consultado e qual consulta. Ou descreva a consulta e deixe o Nova gerar o código.

03

Salve-o como qualquer outra consulta.

Uma vez que funcione, a consulta é salva — podendo ser compartilhada, filtrada, enviada como um relatório semanal, publicada como um endpoint de API ou importada para uma planilha.

Por que é rápido?

Cada banco de dados realiza sua própria parte do trabalho.

A maneira mais fácil de unir dois bancos de dados é arrastar ambas as tabelas pela rede e resolver tudo depois. Isso é lento e significa que muito mais dados saem do seu sistema do que o necessário.

Então fazemos o oposto. Filtrar, selecionar colunas e contar os totais são tarefas que passam despercebidas. de volta a cada banco de dados para que ele mesmo faça isso, em seu próprio idioma. Um relatório que agrupa milhões de linhas envia de volta o alguns totais agrupados — e não as milhões de filas atrás delas.

O que sobrar, nós fazemos — e mostramos a você o que é o quê. Nossa tarefa é realizar a junção de diferentes bancos de dados, pois nenhum deles consegue visualizar os outros. O plano detalha o que foi solicitado a cada banco de dados e o que concluímos, portanto, uma consulta custosa é inevitável. antes Você executa isso.

O CAMINHO LENTO a mesa inteira viaja Filtre aqui O MÉTODO DE FLUXOS DE CONSULTA filtro + total no banco de dados 12 linhas ponto uma resposta
A resposta honesta

Preferiria recusar a admitir silenciosamente que está errado.

Eis a verdade incômoda sobre a junção de bancos de dados separados: eles nem sempre concordam entre si. Dois deles podem receber a mesma pergunta e retornar com respostas que diferem na última casa decimal, ou no que é considerado igual, ou no que significa "os dez primeiros".

Se você é novo nisso, aqui vai uma versão resumida: Um banco de dados não é apenas um conjunto de linhas. Ele tem suas próprias opiniões sobre como somar valores, como ordenar palavras e onde os valores vazios devem ser armazenados. Peça a dois bancos de dados diferentes para ordenar a mesma lista de nomes de clientes e você poderá obter duas ordens completamente diferentes — não porque um deles esteja com defeito, mas porque foram construídos com regras diferentes. Qualquer ferramenta que una bancos de dados precisa lidar com isso. A maioria escolhe silenciosamente uma resposta e espera que funcione. Nós não.

O que fazemos, em vez disso, tem exatamente dois resultados: E o Construtor de Consultas mostra qual você obteve: um ícone de plano que exibe "pronto" ou "recusado" conforme você digita, e uma guia "Plano" com todo o processo.

Normalmente, nós mesmos fazemos isso.

Quando a discordância é sobre como Uma vez realizado o cálculo, deixamos de solicitar essa parte ao seu banco de dados e passamos a realizá-la na etapa de junção, onde existe um conjunto consistente de regras. Isso acarreta uma pequena perda de velocidade. Não há perda de precisão nem de atenção para você — você não precisa fazer nada.

  • Dinheiro e precisão. Os bancos de dados arredondam e ampliam os decimais de forma diferente quando os totais ficam grandes. Se a soma feita na origem puder arredondar de forma diferente da soma centralizada, nós recuperamos os números e os somamos manualmente.
  • Ordenando o texto. Se a vem antes BA comparação entre sotaques é uma configuração específica de cada banco de dados. As comparações que dependem dela são definidas centralmente, e não enviadas para os bancos de dados inferiores.
  • Classificação e totais acumulados. As funções de janela — números de linha, totais acumulados, “3 melhores por região” — são sempre calculadas após a chegada dos dados, porque nenhuma fonte individual consegue ver as outras.
Às vezes: paramos e te contamos

Quando continuar mudaria quais linhas O retorno não se limita à velocidade, pois não há como prever com segurança. Portanto, a consulta não é executada e a mensagem exibe a expressão exata e o banco de dados específico, em seu próprio SQL, para que você saiba o que editar.

  • Uma função que a fonte não consegue executar. Se o seu filtro utiliza algo que não podemos expressar fielmente no dialeto desse banco de dados, as únicas alternativas são enviar uma consulta mais abrangente do que a que você escreveu ou inventar um equivalente. Ambas são respostas incorretas, portanto, recusamos.
  • Limites de linha dentro de uma peça. A LIMITE ou PRINCIPAL Aplicado a uma fonte antes da junção, retorna um conjunto arbitrário de linhas e, em seguida, une essas linhas — resultando em uma tabela aparentemente plausível, porém sem sentido. Os limites pertencem ao resultado final.
  • As regras do jogo mudaram de lugar. Se uma conexão foi redirecionada para um banco de dados diferente desde que a consulta foi planejada, o plano armazenado está desatualizado e solicitamos um novo planejamento em vez de executar o plano de ontem nos dados de hoje.

Três recusas e o que cada uma delas lhe diz.

Recusado

Não consigo empurrar LOWER(c.email_domain) = ? até mssql_erp: função não está na lista de permissões do pushdown.

Em outras palavras: Seu filtro envolve uma coluna em uma função cuja origem não pode ser considerada confiável para ser aplicada da mesma forma que nós, portanto, não podemos garantir que ela retorne as mesmas linhas. O que fazer: Em vez disso, compare a coluna simples ou mova essa condição para fora da fonte — a mensagem indica qual fonte analisar.

Recusado

LIMITE 100 Não pode ser aplicado a uma única fonte antes da junção: o resultado seriam 100 linhas arbitrárias, e não as primeiras 100 da sua resposta.

Em outras palavras: "Os 100 primeiros" só têm significado depois que tudo estiver integrado e organizado. O que fazer: Deixe o limite na declaração como um todo, que é onde ela faz o que você espera.

Precisa de um replanejamento.

A fonte 2 agora aponta para uma conexão ou banco de dados diferente daquele em que esta consulta foi planejada.

Em outras palavras: alguém mudou o quê pg_crm refere-se a. O que fazer: Abra-o no Construtor de Consultas e replaneje — com um clique, você pode ver o novo plano antes de executá-lo.

A regra fundamental por trás de tudo isso: se uma consulta retornasse erradoNós recusamos. Se ao menos voltasse. devagarNós executamos o teste e avisamos você. Dados incorretos nunca são uma concessão que fazemos em seu nome.

Você também não precisa resolver uma recusa sozinho. Nova fica ao lado do editor no Construtor de Consultas e entende todo o sistema fluentemente: basta perguntar e ela explica a recusa em palavras simples, reescreve a instrução para que seja executada e verifica o novo plano para você. E se você preferir não escrever o SQL, basta descrever a pergunta e Nova elabora a instrução federada automaticamente.

E para quem prefere detalhes em vez de apenas garantias: a aba Plano do Construtor de Consultas lista todas as fontes, a consulta que foi enviada, quais condições foram aplicadas automaticamente e quais partes foram finalizadas centralmente. Nada sobre a decisão é oculto — incluindo as partes em que optamos pelo caminho mais lento e seguro.

Nada é um caso especial.

Uma consulta federada é simplesmente uma consulta.

Não se trata de um produto separado com regras próprias. Uma vez salvo, todas as outras partes do Query Streams o tratam como qualquer outro texto que você tenha escrito.

Construtor de consultas

Escreva tudo no mesmo editor, com a mesma árvore de esquema ao seu lado. Uma aba "Plano" mostra o que foi solicitado para cada banco de dados; uma aba "Insights" exibe um gráfico mostrando o desempenho de cada um.

Nova AI

Nova AI

Descreva a questão em inglês e o Nova lê seus esquemas e elabora a declaração — incluindo a qual conexão cada tabela pertence. Ele também pode executá-la e gerar um gráfico com o resultado.

Planilhas Google

Planilhas Google

Selecione a consulta salva no complemento e os resultados combinados serão exibidos nas suas células, formatados e atualizáveis — exatamente como qualquer consulta em um único banco de dados.

Microsoft Excel

Excel

O mesmo acontece no Excel: execute uma única fórmula ou uma planilha inteira, com cabeçalhos, filtros e atualizações no local fixos que não alteram suas colunas de fórmulas.

API REST

API REST de banco de dados

Publique o resultado entre bancos de dados como um endpoint JSON com uma chave, e quem o consumir nunca precisará saber que ele veio de três sistemas diferentes.

MCP

MCP para assistentes de IA

Claude e outros assistentes podem listar e executar suas consultas federadas por meio do MCP, de modo que perguntas como "como foi o desempenho de cada região na semana passada" podem ser respondidas no chat.

Relatórios e alertas

Programe isso e os dados combinados chegarão no Slack, Google Chat, Discord, Telegram ou por e-mail — ou defina um limite e só fique sabendo quando houver alguma mudança.

Automação e compartilhamento

Sincronize o resultado em uma planilha de acordo com uma programação ou compartilhe a consulta com um colega que veja apenas os filtros e um botão "Executar" — nunca seu SQL ou suas conexões.

Onde ela ganha seu sustento

Os relatórios que antes consistiam em duas exportações e uma função PROCV.

Quase ninguém tem apenas um banco de dados. Existe o ERP, o da loja, o CRM e o sistema usado na última aquisição.

Pedidos aqui, clientes ali

A loja registra os pedidos no MySQL; o CRM armazena clientes e regiões no PostgreSQL. A "receita por região" deixa de ser duas exportações e uma consulta, e passa a ser uma única consulta salva que qualquer pessoa pode executar novamente.

Após uma aquisição

Duas empresas, duas pilhas de ativos, um pacote de documentos para o conselho administrativo com prazo de entrega na sexta-feira. Você obtém a visão combinada no primeiro dia, enquanto a migração real leva os dezoito meses que sempre leva.

Ações contra venda direta

Os níveis de estoque ficam armazenados no sistema do armazém em outro país; as vendas ficam armazenadas no banco de dados da loja. Um único extrato os coloca lado a lado — e esse mesmo extrato pode então chegar toda segunda-feira como um relatório.

Um banco de dados por site, um número.

O mesmo esquema é aplicado por país, por inquilino ou por loja. Some tudo em uma única instrução, em vez de manter um script que executa a consulta cinco vezes e totaliza manualmente.

Definições simples

Banco de dados federado, federação de dados, virtualização de dados

São três nomes para ideias que se sobrepõem, e o marketing tem confundido bastante com elas. Aqui está o que cada uma significa e qual delas realmente fazemos.

01

Um banco de dados federado

A banco de dados federado Um sistema de banco de dados federado (ou federado) faz com que vários bancos de dados separados se comportem como um só, sem mesclá-los. Cada um mantém seu próprio armazenamento, seu próprio mecanismo e seu próprio proprietário; uma camada acima deles recebe sua consulta e determina quem responde a qual parte.

Essa camada é o que o Query Streams representa. Não há um novo banco de dados subjacente, e nada é copiado para ele.

02

Federação de dados

Federação de dados A própria abordagem consiste em deixar os dados onde foram gravados e consultá-los quando necessário, em vez de extrair tudo para uma cópia central primeiro. A alternativa é um pipeline combinado com um data warehouse — mover tudo durante a noite e, em seguida, consultar apenas a cópia.

Ambas as opções são legítimas. A federação se destaca quando a questão abrange vários sistemas, quando os dados precisam permanecer armazenados ou quando um projeto de data warehouse custaria mais do que a resposta vale. Um data warehouse ainda se mostra mais vantajoso para análises históricas complexas envolvendo grandes volumes de dados.

03

Virtualização de dados

Virtualização de dados É a categoria empresarial maior, construída sobre federação — geralmente consultas federadas mais uma camada de modelagem, cache e ferramentas de governança, vendida como uma plataforma própria.

Somos, deliberadamente, a pequena e honesta fatia disso: consultas federadas sobre as conexões que você já possui, dentro da ferramenta que sua equipe já utiliza para escrever consultas. Sem projeto de modelagem, sem servidor próprio para administrar, sem consultores.

Perguntas frequentes sobre consultas federadas

O que é uma consulta federada?

Uma consulta federada é uma única instrução SQL que lê de mais de um banco de dados separado e fornece um único resultado combinado. Nada é copiado previamente: sua instrução é dividida em pequenas consultas para cada banco de dados, cada uma responde à parte que lhe cabe e as partes são unidas para formar o resultado final. No Query Streams, uma instrução se torna federada assim que nomeia duas ou mais conexões.

Preciso que meus bancos de dados estejam no mesmo lugar?

Não. Eles podem estar em escritórios diferentes, contas de nuvem diferentes, países diferentes ou uma combinação dos três — um em uma sala de servidores, um em uma rede de nuvem privada, um em uma máquina em um armazém. Cada local executa um Agente de Rede e cada agente acessa o Query Streams discando para fora. Do ponto de vista do seu firewall, essa é apenas uma conexão de saída comum, portanto, não há nada para abrir e nenhuma VPN para configurar.

Você também pode direcionar vários bancos de dados em um mesmo servidor para o mesmo agente; o normal é um agente por local, e não um por banco de dados.

Preciso também de um data warehouse ou de um pipeline ETL?

Não para este caso. Não há nada para carregar nem agendamento para monitorar — a consulta lê seus bancos de dados ativos no momento em que é executada, portanto, a resposta não pode estar desatualizada como a cópia da noite anterior. O que a federação não substitui é a análise histórica complexa em volumes muito grandes; essa ainda é a função de um data warehouse. Teste prático: se a consulta abrange vários sistemas e precisa estar atualizada, use a federação.

Quais bancos de dados posso combinar?

Qualquer uma das suas conexões de banco de dados, em qualquer combinação: SQL Server, PostgreSQL, MySQL, MariaDB, Oracle, Snowflake, BigQuery, SQLite, Access e DuckDB. Cada banco de dados é consultado em seu próprio dialeto, portanto, a mesma instrução pode enviar PRINCIPAL para o SQL Server e LIMITE para PostgreSQL sem que você precise pensar nisso.

Os bancos de dados realmente diferem no que podem calcular e em como classificam e arredondam os valores, portanto, nem todas as combinações de todas as expressões podem ser respondidas com exatidão. Quando isso acontece, você recebe uma mensagem específica nomeando a expressão, em vez de um número que seja quase correto.

É mais lento do que consultar um único banco de dados?

Depende de quanto do trabalho cada banco de dados consegue realizar por si só — que é exatamente o que otimizamos e exatamente o que o plano mostra. Quando a filtragem e o agrupamento acontecem dentro dos seus bancos de dados, muito poucos dados são movidos e a consulta parece normal. Quando uma junção grande precisa ser finalizada por nós, mais dados são movidos, e o plano avisa isso antes de você executá-la. Cada banco de dados também tem um limite máximo por consulta, então um erro é interrompido logo no início, em vez de prolongar o processo indefinidamente.

É seguro direcionar uma única consulta para vários bancos de dados de produção?

Ele usa o mesmo modelo de segurança que todas as outras consultas que você executa aqui. Cada parte trafega pelo seu próprio Agente de Rede por meio de uma conexão de saída criptografada — sem porta de entrada, sem VPN, sem alteração de firewall — e suas credenciais de banco de dados nunca saem da sua rede. Cada parte é verificada como somente leitura (SELECIONAR, COM, EXPLICAR), uma consulta federada não pode escrever em nenhum lugar, e cada banco de dados vê apenas uma consulta que acessa as colunas que você especificou.

Qual a diferença entre este produto e os modelos Trino, Presto ou Denodo?

A ideia é a mesma que o Trino e o Presto popularizaram: uma única instrução SQL, distribuída para várias fontes. A diferença está na complexidade e no que você precisa executar e aprender. Essas plataformas exigem a implantação, o ajuste e a integração de clusters à sua rede; as plataformas de virtualização de dados adicionam uma camada de modelagem e uma licença correspondente. A nossa solução oferece a mesma funcionalidade integrada à ferramenta que sua equipe já utiliza, acessando as conexões que você já configurou, sem a necessidade de um servidor próprio.

A outra diferença é que nós recusamos. Quando os bancos de dados divergem de uma forma que poderia alterar um valor, paramos e indicamos a expressão que não conseguimos processar, em vez de retornar algo plausível.

O que posso fazer com o resultado?

Tudo o que você pode fazer com qualquer consulta salva, porque é exatamente isso que ela é. Salve-a, compartilhe-a com sua equipe, aplique filtros, agende-a como um relatório no Slack ou por e-mail, publique-a como um endpoint REST ou importe os resultados para o Excel e o Google Sheets. O Nova também pode ler seus esquemas e elaborar a declaração, caso você prefira descrever a pergunta em vez de escrever as junções.

Suas bases de dados permanecem onde estão. A questão deixa de importar.

Indique duas conexões, escreva uma declaração e leia o plano antes de executá-lo. Sem pipeline, sem warehouse, sem ticket de firewall.

Federated queries are on every plan, including Free