Virtualizzazione dei dati e query federate

Un'istruzione SQL attraverso tutti i tuoi database.

I tuoi ordini sono in MySQL. I tuoi clienti sono in PostgreSQL. Gli obiettivi su cui tutti discutono vivono in un server SQL nella sede centrale. query federata ti permette di scrivere un normale SELEZIONARE che legge tutti e tre i file contemporaneamente e ti restituisce un'unica tabella: nessuna esportazione, niente copia da nessuna parte e niente di nuovo da aprire sul tuo firewall.

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

Una singola casella SQL, non un generatore di join. Database in uffici, cloud e paesi diversi Nessuna regola firewall in entrata, mai. Rifiuta piuttosto che fare supposizioni

38 Connettori di database: collega uno qualsiasi di essi, in qualsiasi combinazione.

Microsoft SQL ServerPostgreSQLMySQLMariaDBOracoloFiocco di neveGoogle BigQuerySQLiteMicrosoft AccessDuckDBSupabase

Insieme a loro nei flussi di query: 8 Connettori API, interrogati con lo stesso SQL

StrisciaHubSpotShopifyAnnunci GoogleGoogle Analytics 4Google Search ConsoleShipStationiTick

53 fonti in totale. I tuoi connettori API vengono interrogati con SQL come tutto il resto e un'istruzione federata unisce il tuo database connessioni. Consulta il connettore API

Virtualizzazione dei dati, in una sola frase

Metti il nome della connessione davanti alla tabella

Questa è l'unica novità presente in questa pagina. Ciascun nome evidenziato qui sotto corrisponde a un database diverso, in una posizione diversa, raggiungibile da un agente di rete diverso, ma si tratta comunque di un'unica query.

entrate-per-regione.sql 3 connessioni · 3 agenti · 1 dichiarazione
-- una query federata · niente copiato da nessuna parte
SELEZIONARE   c.regione,
         CONTO(*)      AS ordini,
         SOMMA(o.total)  AS entrate, t.target
DA     mysql_prod.ordini del negozio1 o
CONGIUNGERE     pg_crm.clienti pubblici2 c ON c.id = o.customer_id
CONGIUNGERE     mssql_erp.dbo.region_targets3 t ON t.region = c.region
DOVE    o.placed_at >= DATA '2026-07-01'
GRUPPO PER c.regione, t.obiettivo
ORDINATO DA entrate DESC;
Ciascun database gestisce: il suo filtraggio e raggruppamento Ci occupiamo di: le giunzioni attraverso di loro e l'ordinamento

mysql_prod, pg_crm e mssql_erp sono semplicemente i nomi che hai dato alle tue connessioni: le tre parti sono connessione, schema, tabellaQuesto è ciò che le persone intendono per un database federatoTre database separati che rispondono alla stessa domanda, senza alcuna unione o spostamento di dati. Schema illustrativo; le tue tabelle rimarranno le tue tabelle.

Dove ogni nome si risolve

1 MySQL mysql_prod MySQL · ordini del negozio Agente cloud Il sistema filtra i dati per il mese di luglio, quindi calcola il totale delle entrate per cliente prima di inviare qualsiasi informazione.
2 PostgreSQL pg_crm PostgreSQL · clienti pubblici Agente regionale Restituisce solo le colonne id e region, ovvero le uniche due presenti nei nomi della query.
3 Microsoft SQL Server mssql_erp SQL Server · dbo.region_targets Agente della sede centrale Consegna l'obiettivo per regione, scritto in T-SQL in modo che venga eseguito in modo nativo.

Tre agenti, tre reti, una dichiarazione — e nessuno di loro ha aperto un porto per farlo.

Ciò che non cambia

Maggiore portata, non maggiore visibilità

La lettura simultanea di due database utilizza esattamente lo stesso percorso della lettura di un singolo database. Non viene aperto nulla di nuovo per accedervi.

Solo in uscita

L'agente apre una connessione crittografata verso Query Streams e trasmette sia la richiesta che i risultati attraverso di essa. Nessuna porta in entrata, nessuna VPN, nessuna modifica al firewall: le tue credenziali non lasciano mai la tua rete.

Sola lettura, ogni pezzo

Ogni parte della query viene controllata prima di essere inviata: SELEZIONARE, CON e SPIEGARE Una query federata non può scrivere in nessuno dei tuoi database e qualsiasi elemento rifiutato non li raggiungerà mai.

Non può scappare con il tuo server

Esiste un limite massimo alla quantità di dati che un database può fornire per una singola query e l'agente si ferma nel momento in cui viene raggiunto. Un errore in un DOVE La clausola ti costa un messaggio di errore, non un pomeriggio.

Come funziona

Tre passaggi, e nessuno di essi è una pipeline di dati.

01

Scegli le tue connessioni

Scegli due o più delle connessioni già configurate dal tuo team. Due è il minimo necessario: è questo che rende una query federata. Nulla viene copiato e non vengono create nuove password.

02

Scrivi una dichiarazione

Assegnare a ciascuna tabella il nome tabella dello schema di connessione., quindi scrivi il normale codice SQL. Prima di eseguirlo puoi leggere il piano di esecuzione: a quale database viene richiesta ogni informazione. Oppure descrivi la query e lascia che Nova la generi.

03

Salvalo come qualsiasi altra query

Una volta che funziona, la query viene salvata e può quindi essere condivisa, filtrata, inviata come report settimanale, pubblicata come endpoint API o importata in un foglio di calcolo.

Perché è veloce

Ogni database svolge la propria parte di lavoro

Il metodo più semplice per unire due database consiste nel trascinare entrambe le tabelle attraverso la rete e poi configurarle. Questo è lento e implica che molti più dati del necessario lascino la rete aziendale.

Quindi facciamo il contrario. Il filtraggio, la selezione delle colonne e il conteggio dei totali vengono affidati tornare a ciascun database per farlo da solo, nella sua lingua. Un report che raggruppa milioni di righe rimanda indietro il una manciata di totali raggruppati — non le milioni di file dietro di loro.

Ciò che rimane, lo facciamo noi e vi mostriamo cosa è cosa. Il nostro compito è unire i database, perché nessuno di essi può vedere gli altri. Il piano specifica cosa è stato richiesto a ciascun database e cosa abbiamo completato, quindi una query complessa è evidente. Prima lo gestisci tu.

LA VIA LENTA l'intero tavolo viaggia filtralo qui IL MODO DI QUERY STREAM filtro + totale nel database 12 righe cucire una risposta
La risposta sincera

Preferisce rifiutare piuttosto che ammettere tacitamente di aver torto.

Ecco la scomoda verità sull'unione di database separati: non sempre coincidono. A due di essi può essere posta la stessa domanda e le risposte possono differire fino all'ultima cifra decimale, o su cosa si intende per "uguale", o sul significato di "primi dieci".

Se non hai familiarità con questo argomento, ecco una breve spiegazione: Un database non è solo un insieme di righe. Ha le sue regole su come sommare le somme, come ordinare le parole e dove vanno inseriti i valori vuoti. Chiedete a due database diversi di ordinare lo stesso elenco di nomi di clienti e otterrete due ordini completamente diversi, non perché uno dei due sia difettoso, ma perché sono stati creati con regole diverse. Qualsiasi strumento che unisca database deve tenere conto di questo. La maggior parte sceglie silenziosamente una soluzione e spera nel risultato. Noi no.

Ciò che facciamo invece ha esattamente due risultati, e il Generatore di query ti mostra quale hai ottenuto: una pillola del piano che indica "pronto" o "rifiutato" mentre digiti, e una scheda Piano con il lavoro completo.

Di solito: lo facciamo da soli

Quando il disaccordo riguarda Come Una volta effettuato il calcolo, smettiamo di chiedere al database di occuparsi di quella parte e la eseguiamo nella fase di unione dei dati, dove esiste un insieme coerente di regole. Questo comporta una leggera perdita di velocità, ma non incide sulla precisione né richiede la vostra attenzione: non vi viene chiesto di fare nulla.

  • Denaro e precisione. I database gestiscono l'arrotondamento e l'espansione dei decimali in modo diverso quando i totali diventano elevati. Se l'arrotondamento effettuato internamente potrebbe differire da quello effettuato centralmente, recuperiamo i numeri e li sommiamo noi stessi.
  • Ordinamento del testo. Se a viene prima Be il modo in cui gli accenti vengono confrontati è un'impostazione specifica per ogni database. I confronti che dipendono da essa vengono gestiti centralmente, non delegati a livelli inferiori.
  • Classifica e totali progressivi. Le funzioni finestra, come i numeri di riga, i totali progressivi e i "primi 3 per regione", vengono sempre calcolate dopo l'arrivo dei dati, perché nessuna singola fonte può visualizzare le altre.
A volte: ci fermiamo e ti diciamo

Quando continuare cambierebbe Quali righe torna indietro — non solo quanto velocemente — non c'è un modo sicuro per indovinare. Quindi la query non viene eseguita e il messaggio indica l'espressione esatta e il database esatto, nel tuo SQL, così sai cosa modificare.

  • Una funzione che la sorgente non può svolgere. Se il filtro utilizza qualcosa che non possiamo esprimere fedelmente nel dialetto di quel database, le uniche alternative sono inviare una query più ampia di quella che hai scritto o inventarne una equivalente. Entrambe sono soluzioni errate, quindi le rifiutiamo.
  • Limiti di riga all'interno di un pezzo. A LIMITE o SUPERIORE Applicato a una sorgente prima dell'unione, restituisce una manciata arbitraria di righe, quindi unisce queste: una tabella apparentemente plausibile di nonsenso. I limiti appartengono al risultato finale.
  • Un obiettivo spostato. Se una connessione è stata reindirizzata a un database diverso da quando è stata pianificata la query, il piano memorizzato non è aggiornato e richiediamo una nuova pianificazione anziché eseguire il piano di ieri con i dati di oggi.

Tre rifiuti e cosa ti sta dicendo ognuno di essi

Rifiutato

Non riesco a spingere MINORE(c.email_domain) = ? fino a mssql_erp: funzione non presente nell'elenco di funzioni consentite per il pushdown.

In altre parole: Il tuo filtro racchiude una colonna in una funzione che non possiamo considerare affidabile se applicata dalla sorgente nello stesso modo in cui la applicheremmo noi, quindi non possiamo garantire che restituisca le stesse righe. Cosa fare: confronta invece la colonna semplice oppure sposta quella condizione fuori dal codice sorgente: il messaggio ti indica quale codice sorgente esaminare.

Rifiutato

LIMITE 100 Non può essere applicato a una singola sorgente prima dell'unione: il risultato sarebbero 100 righe arbitrarie, non le prime 100 della tua risposta.

In altre parole: L'espressione "primi 100" ha un senso solo dopo che tutto è stato unito e ordinato. Cosa fare: lascia il limite sull'intera dichiarazione, ed è lì che fa quello che ti aspetti.

Necessita di una nuova pianificazione

La sorgente 2 ora punta a una connessione o a un database diverso rispetto a quando è stata pianificata questa query.

In altre parole: qualcuno ha cambiato cosa pg_crm si riferisce a. Cosa fare: Apri il file nel Generatore di query e riprogramma il piano: con un solo clic, puoi visualizzare il nuovo piano prima di eseguirlo.

La regola fondamentale di tutto ciò è: se una query dovesse tornare sbagliato, ci rifiutiamo. Se solo tornasse indietro lentamenteNoi lo eseguiamo e vi avvisiamo. Fornire dati errati non è mai un compromesso che accettiamo per vostro conto.

Non sei lasciato solo ad affrontare un eventuale rifiuto. Nova si posiziona accanto all'editor nel Query Builder e parla fluentemente l'intero sistema: basta chiedere e spiega il rifiuto in parole semplici, riscrive l'istruzione in modo che sia eseguibile e controlla il nuovo piano per te. E se preferisci evitare del tutto di scrivere SQL, descrivi la domanda e Nova genererà automaticamente l'istruzione federata.

E per chi preferisce i dettagli alle rassicurazioni: la scheda Piano di Query Builder elenca ogni origine, la query effettivamente inviata, quali delle tue condizioni sono state applicate automaticamente e quali parti sono state completate centralmente. Nessun dettaglio della decisione è nascosto, nemmeno le parti in cui abbiamo optato per il percorso più lento e sicuro.

Niente è un caso speciale

Una query federata è semplicemente una query

Non si tratta di un prodotto separato con regole proprie. Una volta salvato, ogni altra parte di Query Streams lo tratta come qualsiasi altro elemento da te scritto.

Generatore di query

Scrivi il codice nello stesso editor, con lo stesso schema ad albero accanto a te. Una scheda "Piano" mostra cosa è stato richiesto a ciascun database; una scheda "Approfondimenti" illustra graficamente le prestazioni di ciascuno.

Nova AI

Nova AI

Descrivi la domanda in inglese e Nova leggerà i tuoi schemi e redigerà l'affermazione, specificando a quale connessione appartiene ciascuna tabella. Può anche eseguirla e visualizzare il risultato in un grafico.

Fogli di Google

Fogli di Google

Seleziona la query salvata nel componente aggiuntivo e i risultati combinati verranno visualizzati nelle tue celle, formattati e aggiornabili, proprio come qualsiasi query su un singolo database.

Microsoft Excel

Excel

Stessa cosa in Excel: esegui una singola formula o un intero foglio di calcolo, con intestazioni, filtri e aggiornamenti in loco bloccati, senza modificare le colonne contenenti le formule.

API REST

API REST del database

Pubblica il risultato dell'interconnessione tra database come endpoint JSON con una chiave, e chiunque lo utilizzi non avrà mai bisogno di sapere che proviene da tre sistemi diversi.

MCP

MCP per assistenti IA

Claude e altri assistenti possono elencare ed eseguire le tue query federate tramite MCP, quindi alla domanda "come si è comportata ogni regione la scorsa settimana?" si può rispondere in chat.

Rapporti e avvisi

Imposta una pianificazione e i dati complessivi arriveranno su Slack, Google Chat, Discord, Telegram o via email, oppure imposta una soglia e riceverai una notifica solo quando si verifica un cambiamento.

Automazione e condivisione

Sincronizza il risultato in un foglio di calcolo secondo una pianificazione, oppure condividi la query con un collega che visualizzerà solo i filtri e il pulsante Esegui, senza mai il tuo codice SQL o le tue connessioni.

Dove si guadagna da vivere

I report che prima erano due esportazioni e una CERCA.VERT

Quasi nessuno ha un unico database. C'è l'ERP, il negozio, il CRM e qualunque sia il sistema su cui si basava l'ultima acquisizione.

Ordini qui, clienti là

Il negozio inserisce gli ordini in MySQL; il CRM gestisce clienti e regioni in PostgreSQL. Il calcolo del "fatturato per regione" non richiede più due esportazioni e una ricerca, ma si riduce a una singola query salvata che chiunque può eseguire nuovamente.

Dopo un'acquisizione

Due aziende, due stack, un unico pacchetto per il consiglio di amministrazione da consegnare entro venerdì. Avrete una visione d'insieme il primo giorno, mentre la migrazione vera e propria richiederà i diciotto mesi che sempre sono necessari.

Stock contro sell-through

Le giacenze di magazzino sono registrate nel sistema di gestione del magazzino in un altro paese, mentre le vendite sono memorizzate nel database del negozio. Un unico documento le mette a confronto, e lo stesso documento può essere ricevuto ogni lunedì sotto forma di report.

Un database per sito, un numero

Lo stesso schema viene applicato per paese, per inquilino o per piano di vendita. Somma i risultati in un'unica istruzione anziché dover gestire uno script che esegue la query cinque volte e calcola il totale manualmente.

Definizioni semplici

Database federato, federazione dei dati, virtualizzazione dei dati

Tre nomi per concetti sovrapposti, e gran parte del marketing ha contribuito a confonderli. Ecco cosa significa ognuno di essi e quale parte effettivamente svolgiamo.

01

Un database federato

A database federato Un sistema di database federato (o ) fa sì che diversi database separati si comportino come un unico database, senza unirli. Ciascuno mantiene il proprio spazio di archiviazione, il proprio motore e il proprio proprietario; un livello superiore riceve la query e determina chi risponde a quale parte.

Questo livello rappresenta Query Streams. Non c'è un nuovo database sottostante e nulla viene copiato al suo interno.

02

Federazione dei dati

Federazione dei dati L'approccio in sé è: lasciare i dati dove sono stati scritti ed eseguire query su di essi quando necessario, invece di estrarre tutto in una copia centrale prima. L'alternativa è una pipeline più un data warehouse: spostare tutto durante la notte e poi interrogare solo la copia.

Entrambe le soluzioni sono valide. La federazione è preferibile quando la questione riguarda sistemi diversi, quando i dati devono rimanere nella stessa posizione o quando un progetto di data warehouse costerebbe più del valore della soluzione. Un data warehouse rimane comunque la scelta migliore per analisi storiche approfondite su volumi di dati enormi.

03

Virtualizzazione dei dati

Virtualizzazione dei dati è la categoria aziendale più ampia basata sulla federazione, che in genere include interrogazioni federate, un livello di modellazione, strumenti di caching e di governance, venduti come piattaforma a sé stante.

Noi rappresentiamo, consapevolmente, la fetta ristretta e onesta di quel panorama: interrogazione federata tramite le connessioni già esistenti, all'interno dello strumento che il tuo team già utilizza per scrivere query. Nessun progetto di modellazione, nessun server da gestire, nessun consulente.

FAQ sulle query federate

Che cos'è una query federata?

Una query federata è un'unica istruzione SQL che legge da più database separati e restituisce un singolo risultato combinato. Nulla viene copiato prima: l'istruzione viene suddivisa in una piccola query per ogni database, ognuna delle quali risponde alla parte che può e le parti vengono unite per ottenere il risultato finale. In Query Streams, un'istruzione diventa federata non appena specifica due o più connessioni.

I miei database devono trovarsi nello stesso posto?

No. Possono trovarsi in uffici diversi, account cloud diversi, paesi diversi o in una combinazione di tutti e tre: uno in una sala server, uno in una rete cloud privata, uno su una macchina in un magazzino. Ogni sede esegue un Network Agent e ogni agente raggiunge Query Streams tramite una connessione in uscita. Per quanto riguarda il firewall, si tratta semplicemente di una normale connessione in uscita, quindi non c'è nulla da aprire né VPN da configurare.

È anche possibile indirizzare più database su un singolo server allo stesso agente; di norma è previsto un agente per sede, non uno per database.

Ho bisogno anche di un data warehouse o di una pipeline ETL?

Non per questo. Non c'è nulla da caricare e nessuna pianificazione da gestire: la query legge i database attivi nel momento stesso in cui viene eseguita, quindi la risposta non può essere obsoleta come potrebbe esserlo una copia della sera prima. Ciò che la federazione non sostituisce è l'analisi storica approfondita su volumi di dati molto grandi; questo compito rimane di competenza di un data warehouse. Un test approssimativo: se la domanda riguarda diversi sistemi e deve essere aggiornata, conviene federarla.

Quali database posso unire?

Qualsiasi delle tue connessioni al database, in qualsiasi combinazione: SQL Server, PostgreSQL, MySQL, MariaDB, Oracle, Snowflake, BigQuery, SQLite, Access e DuckDB. Ogni database viene interrogato nel suo dialetto, quindi la stessa istruzione può inviare SUPERIORE a SQL Server e LIMITE a PostgreSQL senza che tu te ne accorga.

I database differiscono effettivamente per ciò che possono calcolare e per come ordinano e arrotondano i dati, quindi non è possibile rispondere esattamente a tutte le combinazioni di ogni espressione. In questi casi, viene visualizzato un messaggio specifico che indica l'espressione, anziché un numero approssimativo.

È più lento rispetto all'interrogazione di un singolo database?

Dipende da quanta parte del lavoro ciascun database può svolgere autonomamente, ed è proprio questo che ottimizziamo e che viene mostrato nel piano di esecuzione. Quando il filtraggio e il raggruppamento avvengono interamente all'interno dei database, vengono trasferiti pochissimi dati e l'esecuzione risulta simile a una normale query. Quando è necessario completare un join di grandi dimensioni, vengono trasferiti più dati e il piano di esecuzione lo segnala prima dell'esecuzione. Ogni database ha inoltre un limite massimo per query, in modo che un errore venga bloccato tempestivamente anziché prolungare eccessivamente l'esecuzione.

È sicuro indirizzare una singola query a più database di produzione?

Utilizza lo stesso modello di sicurezza di ogni altra query che esegui qui. Ogni elemento viaggia attraverso il tuo Network Agent su una connessione in uscita crittografata, senza porte in entrata, VPN o modifiche al firewall, e le credenziali del tuo database non lasciano mai la tua rete. Ogni elemento viene controllato in sola lettura (SELEZIONARE, CON, SPIEGARE), una query federata non può scrivere da nessuna parte e ogni database vede una query che accede solo alle colonne specificate.

In cosa si differenzia da Trino, Presto o Denodo?

L'idea è la stessa resa popolare da Trino e Presto: un'unica istruzione SQL, propagata a molteplici fonti. La differenza sta in ciò che devi gestire e imparare. Si tratta di cluster che si implementano, si ottimizzano e si integrano nella rete; le piattaforme di virtualizzazione dei dati aggiungono un livello di modellazione e una licenza corrispondente. La nostra soluzione offre la stessa funzionalità integrata nello strumento che il tuo team già utilizza per le query, raggiungendo le connessioni che hai già configurato, senza la necessità di gestire un server dedicato.

L'altra differenza è che noi ci rifiutiamo. Quando i database non concordano in un modo che potrebbe modificare un dato, ci fermiamo e indichiamo l'espressione che non siamo stati in grado di gestire, invece di restituire un valore plausibile.

Cosa posso fare con il risultato?

Puoi fare tutto ciò che è possibile con una query salvata, perché di questo si tratta. Salvala, condividila con il tuo team, applica dei filtri, programma la sua invio come report a Slack o via email, pubblicala come endpoint REST oppure importa i risultati in Excel e Fogli Google. Nova può anche leggere i tuoi schemi e redigere l'istruzione se preferisci descrivere la domanda anziché scrivere le join.

I tuoi database restano dove sono. La domanda smette di interessarsi.

Indica due connessioni, scrivi un'istruzione, leggi il piano prima di eseguirlo. Nessuna pipeline, nessun data warehouse, nessun ticket firewall.

Federated queries are on every plan, including Free