Publicat în

Amazon Aurora PostgreSQL 17 și 18 interoghează direct Apache Iceberg și Parquet în data lake — fără ETL

Amazon Aurora PostgreSQL a făcut un pas major spre eliminarea pipeline-urilor ETL tradiționale. Începând cu 30 septembrie 2026, versiunile 17 și 18 permit interogarea directă a datelor Apache Iceberg și Parquet stocate în S3, S3 Tables sau catalogate prin AWS Glue Data Catalog, alături de datele operaționale live — totul într-un singur SQL, folosind sintaxa PostgreSQL familiară. Motorul este propulsat de DuckDB embeded direct în Aurora, ceea ce aduce optimizări precum predicate pushdown și caching automat. Pentru echipele DevOps și arhitecții de infrastructură care gestionează medii hibride, acest lucru înseamnă o simplificare radicală a arhitecturii de date: nu mai sunt necesare job-uri Spark, nu mai există latență de sincronizare, nu mai apar costuri de stocare duplicate. În acest articol explorăm ce schimbă concret, cum se configurează și unde se potrivesc cel mai bine serverele dedicate pentru scenariile de tip lakehouse.

Arhitectura zero-ETL: cum funcționează DuckDB embeded în Aurora

Până acum, legarea dintre datele transacționale (OLTP) și cele analytice (OLAP) presupunea pipeline-uri complexe: CDC din Aurora către S3, transformare cu Spark/Flink, scriere în format Iceberg/Parquet, apoi interogare cu Athena, Redshift sau Trino. Aurora PostgreSQL 17/18 elimină acest lanț prin integrarea directă a motorului analitic DuckDB în procesul PostgreSQL. Când lansezi o interogare care referențiază o tabelă Iceberg din Glue Catalog sau un fișier Parquet din S3, optimizerul Aurora decidă dacă să execute scan-ul local (pentru datele live) sau să delegheze partea analitică motorului DuckDB embeded. Rezultatul este returnat ca un singur result set, fără ca aplicația să știe că datele provin din surse diferite.

Practic, creezi o tabelă externă care pointează către locația Iceberg:

CREATE EXTERNAL TABLE IF NOT EXISTS analytics.orders_iceberg (
    order_id BIGINT,
    customer_id INT,
    amount NUMERIC(12,2),
    order_ts TIMESTAMPTZ,
    region TEXT
)
USING iceberg
LOCATION 's3://my-lakehouse/orders/'
TABLE_PROPERTIES ('catalog'='glue');

Apoi faci join direct cu tabela operațională:

SELECT c.name, COUNT(o.order_id) AS orders_90d, SUM(o.amount) AS revenue_90d
FROM customers c
JOIN analytics.orders_iceberg o ON c.id = o.customer_id
WHERE o.order_ts >= NOW() - INTERVAL '90 days'
GROUP BY c.name
ORDER BY revenue_90d DESC
LIMIT 20;

Predicate pushdown funcționează nativ: filtrele pe order_ts sunt trimise la nivel de fișier Parquet/Iceberg, citind doar partition-urile relevante. Cache-ul DuckDB ține în memorie metadatele și statisticile partition-urilor accesate frecvent, reducând latenta la interogările repetate. Nu există cost suplimentar dincolo de instanța Aurora existentă — AWS nu taxează separat motorul embeded.

Integrare nativă cu S3 Tables, Glue Catalog și governance unificată

Lansarea S3 Tables la re:Invent 2025 a adus gestionarea automată a mentenanței Iceberg (compaction, snapshot expiration, orphan file cleanup) direct în S3. Aurora PostgreSQL 17/18 se conectează la S3 Tables la fel de simplu ca la un bucket obișnuit, dar beneficiază de performanțe superioare datorită layout-ului optimizat și metadatelor pre-calculate. Pentru organizații care folosesc deja AWS Glue Data Catalog ca metastore central, integrația este transparentă: tabelele Iceberg înregistrate în Glue devin vizibile în Aurora fără configurare suplimentară, respectând политиicile Lake Formation și IAM.

Aceasta deschide posibilități concrete de governance unificată: poți aplica row-level security pe tabelele Iceberg direct din PostgreSQL folosind SECURITY LABEL și RLS policies, iar audit-ul accesului se face centralizat prin CloudTrail. Un exemplu practic — restricționarea accesului la datele sensibile din data lake:

ALTER TABLE analytics.orders_iceberg ENABLE ROW LEVEL SECURITY;

CREATE POLICY orders_region_isolation ON analytics.orders_iceberg
    USING (region = current_setting('app.current_region')::text);

Aplicația setează SET app.current_region = 'eu-central-1'; la începutul sesiunii, iar policy-ul se aplică atât pe datele live, cât pe cele istorice din Iceberg. Pentru echipele care gestionează infrastructură la scară, acest model reduce drastic suprafața de attack și complexitatea operativă — nu mai trebuie să sincronizezi permisiuni între motorul OLTP și cel OLAP.

Performanță și cost: când Aurora bat Athena și Redshift Spectrum

Testele interne AWS și benchmark-urile independente (inclusiv cele publicate de hool.co în analiza „AWS Data Lakehouse Architecture in 2026”) arată că pentru interogări ad-hoc sub 10 TB de date scânate, Aurora cu DuckDB embeded este de 2–5 ori mai rapidă decât Athena și comparabilă cu Redshift Spectrum, dar fără costul cluster-ului Redshift. Avantajul vine din localitatea datelor: motorul rulează în același VPC, pe aceeași instanță, eliminând transferul de rețea către un serviciu separat. Pentru workload-uri recurente (dashboard-uri, rapoarte zilnice), cache-ul DuckDB reduce latenta la sub-secundă după prima rulare.

Costul este predictibil: plătești doar instanța Aurora (ex. db.r6g.2xlarge ~ $0.68/oră în eu-central-1) și stocarea S3. Nu există costuri per TB scânat (Athena), nu costuri per RPU (Redshift Serverless), nu costuri de operare EMR. Pentru medii care rulează deja Aurora pentru producție, costul marginal al activării interogărilor analitice este zero. Totuși, pentru scan-uri masive (>50 TB) sau concurență mare (>100 query-uri concurente), Athena și Redshift rămân opțiuni mai scalabile — Aurora nu înlocuiește un data warehouse dedicat, ci completează-l pentru scenariul „query-uri hibride frecvente pe date mici-mijlocii”.

Migrare și compatibilitate: ce trebuie să știi înainte de upgrade

Upgrade-ul la Aurora PostgreSQL 17 sau 18 se face in-place sau via blue/green deployment, compatibil cu major version upgrade standard. Extensia aws_s3 (folosită anterior pentru aws_s3.table_import_from_s3) rămâne funcțională, dar noua capabilitate nu o folosește — accesează direct fișierele Parquet/Iceberg prin motorul DuckDB. Diferența cheie: aws_s3 citește CSV/Parquet și încarcă în tabele locale; noua abordare lasă datele în S3 și le interoghează in situ.

Puncte de atenție:

  • Versiune minimă: Aurora PostgreSQL 17.4 sau 18.1 (lansate septembrie 2026). Verifică cu SELECT aurora_version();.
  • IAM permissions: instanța are nevoie de s3:GetObject, s3:ListBucket pe bucket-ul data lake, plus glue:GetTable, glue:GetPartition dacă folosești Glue Catalog. Politica IAM de instanță trebuie actualizată înainte de prima interogare.
  • Tipuri de date: DuckDB mappează tipurile Iceberg/Parquet la tipurile PostgreSQL. timestamp with time zone ↔ timestamptz funcționează nativ; decimal(38,18) devine numeric(38,18). Verifică mapping-ul complet în documentația AWS înainte de migrarea schemelor complexe.
  • Limite: nu suportă încă scrierea în Iceberg (INSERT/UPDATE/DELETE pe tabele externe). Pentru scriere, folosești în continuare Spark/Flink/Iceberg SDK. Citirea concurrentă este limitată la 1000 de conexiuni simultane pe instanță (limita standard Aurora).

Pentru medii care rulează pe servere dedicate sau instanțe bare-metal în colocation, 같은 capacitate poate fi obținută instalând DuckDB local și conectându-l la PostgreSQL prin postgres_fdw sau Foreign Data Wrapper custom, dar pierzi integrația nativă IAM, optimizările de cache Aurora și gestionarea automată a failover-ului. Dacă evaluezi opțiuni de infrastructură pentru lakehouse hibrid, merită să verifici ofertele de servere dedicate configurate pentru workload-uri analytics și soluțiile de gazdare cloud cu suport pentru arhitecturi lakehouse.

Pași practici pentru activare astăzi

  1. Verifică versiunea — rulează SELECT aurora_version(); și confirmă 17.4+ sau 18.1+.
  2. Actualizează IAM role-ul instanței — adaugă permisiuni s3:GetObject, s3:ListBucket pe bucket-ul data lake și glue:Get* dacă folosești Glue Catalog.
  3. Creează tabela externă — folosește CREATE EXTERNAL TABLE ... USING iceberg LOCATION 's3://...' TABLE_PROPERTIES ('catalog'='glue'); pentru Iceberg sau USING parquet pentru fișiere Parquet brute.
  4. Testează predicate pushdown — rulează EXPLAIN ANALYZE SELECT ... WHERE partition_col = 'value'; și verifică că planul arată DuckDB Scan cu filtrare la nivel de fișier.
  5. Monitorizează cache-ul — observă metrica DuckDBCacheHitRatio în CloudWatch (disponibilă după prima interogare); țintește >80% pentru workload-uri recurente.

Concluzie

Amazon Aurora PostgreSQL 17/18 cu DuckDB embeded marchează momentul în care granița dintre OLTP și OLAP devine透明ă pentru développer și DBA. Nu mai este nevoie de pipeline-uri ETL pentru a aduce datele istorice alături de cele live — un singur SQL, sintaxă PostgreSQL standard, performanță competițională și cost marginal zero. Pentru arhitecții care construiesc lakehouse-uri pe AWS, aceasta simplifică drastic stiva: S3 Tables + Glue Catalog + Aurora devin un triplet coeziv care acoperă atât tranzacțiile, cât și analítica ad-hoc. Rămân scenariile de scriere în Iceberg și scan-urile la scară largă unde Athena/Redshift/Spark continuă să domine, dar pentru majoritatea workload-urilor hibride zilnice, Aurora devine motorul unificat. Dacă infrastructura ta rulează pe servere proprii sau evaluezi migrarea către o soluție dedicată, echipa noastră poate să te ajute să dimensionezi corect storage-ul NVMe, memoria și rețeaua pentru a obține cele mai bune performanțe DuckDB pe hardware fizic.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *