Una nuova frontiera per le query ibride

Amazon Aurora, il servizio di database relazionale gestito da AWS, ha introdotto la capacità di eseguire query che combinano dati provenienti sia dal database Aurora stesso sia da un data lake su S3. La novità si basa sull’integrazione della DuckDB, un motore analitico SQL in‑memory, ora parte della piattaforma Aurora grazie all’acquisizione di Duck Labs da parte di Amazon.

Come funziona l’integrazione con il data lake

La DuckDB embedded in Aurora gestisce gli accessi analitici ai dati esterni, supportando tabelle Apache Iceberg e file Parquet archiviati in S3. Gli sviluppatori possono continuare a usare le consuete connessioni PostgreSQL e le proprie istruzioni SQL, senza dover migrare o copiare i dati storici all’interno del cluster Aurora.

Scenario tipico di utilizzo

Immaginate un’applicazione che registra le transazioni quotidiane in Aurora, ma conserva le transazioni più vecchie in file Parquet su S3 per motivi di costo. Prima di questa funzionalità, per analizzare l’intero storico era necessario importare i file Parquet in tabelle Aurora, sincronizzandoli manualmente. Ora è possibile eseguire una singola query che combina le transazioni correnti con quelle archiviate, migliorando velocità e semplicità operativa.

Supporto per Iceberg e Parquet

Aurora riconosce tabelle Iceberg registrate nel AWS Glue Data Catalog e può accedere a dati Iceberg o Parquet direttamente da S3. Inoltre, è possibile federare cataloghi esterni che implementano l’interfaccia Iceberg‑REST, integrandoli nel Glue Catalog.

    • Creazione di Foreign Tables che puntano a tabelle o file esterni.
    • Importazione del modello di dati con il comando IMPORT FOREIGN SCHEMA, che consente di creare più foreign tables in un’unica operazione.
    • Lettura automatica dello schema dai metadati Parquet, senza configurazioni manuali.

Prerequisiti e configurazione

Per attivare la funzionalità è necessario soddisfare i seguenti requisiti:

    • Aurora PostgreSQL 17 a partire dalla versione 17.11 o Aurora PostgreSQL 18 a partire da 18.6.
    • Supporto anche per Aurora Serverless v2.
    • Assegnazione al cluster di un ruolo IAM con il permesso AuroraAnalytics, necessario per accedere a S3 e al Glue Data Catalog.
    • Attivazione dell’estensione aurora_analytics all’interno del database.

Ottimizzazione delle prestazioni

Aurora ottimizza gli accessi ai dati esterni limitando la lettura di colonne e righe solo a quanto richiesto dalla query. I dati più frequenti vengono memorizzati nella cache dell’istanza, riducendo i costi di I/O su S3. Gli amministratori possono monitorare le metriche di utilizzo con la funzione auroraanalyticsstat_statements(), che restituisce informazioni su byte letti da S3 e tassi di hit nella cache.

Le query possono essere eseguite sia sull’istanza writer sia su repliche di lettura, garantendo flessibilità nella distribuzione del carico. Qualora fossero necessari tempi di risposta ultra‑bassi, è sempre possibile importare i dati esterni in una tabella Aurora tradizionale; le operazioni di scrittura avverranno sul writer.

Disponibilità e costi

La funzionalità è disponibile in tutte le regioni commerciali di AWS e nelle regioni GovCloud‑US. AWS non addebita costi aggiuntivi per l’attivazione della funzione, ma i consumi di CPU aggiuntiva su Aurora e le richieste di lettura verso S3 vengono fatturati secondo le tariffe standard.

Implicazioni per gli sviluppatori

Grazie a questa integrazione, gli sviluppatori possono:

    • Ridurre drasticamente il tempo di sviluppo, evitando pipeline di ETL complesse.
    • Mantenere i dati storici in un archivio economico (S3) senza sacrificare la capacità di analisi in tempo reale.
    • Sfruttare le capacità analitiche di DuckDB, che è ottimizzata per l’elaborazione colonnare e le operazioni di aggregazione su grandi volumi di dati.

In sintesi, Aurora PostgreSQL amplia il proprio ruolo da database transazionale a piattaforma ibrida capace di interrogare sia dati operativi sia archiviati in data lake, semplificando architetture dati complesse e migliorando l’efficienza operativa.