کوئری مستقیم روی Iceberg و Parquet از داخل Aurora PostgreSQL
خلاصهٔ کاملتر
آمازون اعلام کرده که Aurora PostgreSQL حالا میتونه دادههای data lake (یعنی انبار بزرگ فایلهای خام توی S3) رو با فرمتهای Apache Iceberg و Apache Parquet مستقیم کوئری بگیره. تا قبل از این، اگه میخواستی تراکنشهای تازهی توی Aurora رو با سابقهی چندسالهی توی S3 ترکیب کنی، باید پایپلاین reverse ETL میساختی که داده رو کپی کنه. این کار هزینه داشت و همیشه باید همگام نگهش میداشتی.
موتور پشت این قابلیت DuckDB هست. تیم DuckLabs که DuckDB رو نگهداری میکنه، تازه به آمازون پیوسته و حالا این موتور مستقیم داخل Aurora جاسازی شده. پردازش کوئری داخل خود Aurora انجام میشه و رفتوبرگشت شبکهای اضافه نداره. حتی دادههای commit نشده هم توی همون کوئری دیده میشن. جداول Iceberg توی AWS Glue Data Catalog، فایلهای S3 و S3 Tables همه پشتیبانی میشن.
این قابلیت روی Aurora PostgreSQL نسخهی 17 (از 17.11) و نسخهی 18 (از 18.6) کار میکنه. باید یه IAM role با فیچر AuroraAnalytics به کلاستر وصل کنی و افزونهی aurora_analytics رو فعال کنی. بعدش foreign table (یعنی جدولی که فقط به دادهی بیرونی اشاره میکنه) میسازی:
CREATE FOREIGN TABLE transaction_history ()
SERVER aurora_analytics_server
OPTIONS (
location 's3://<my-bucket>/finance/transaction_history.parquet',
format 'parquet'
);پرانتزهای خالی یعنی لازم نیست ستونها رو دستی تعریف کنی. Aurora اسکیمای جدول رو خودش از متادیتای فایل Parquet میخونه. برای تعداد زیادی جدول هم یه دستور IMPORT FOREIGN SCHEMA همهی جدولهای یه دیتابیس Glue رو یکجا میسازه. نویسنده توی مثالش جدول تراکنشهای ۷ روز اخیر توی Aurora رو با ۵ سال سابقهی توی S3 تو یه کوئری ترکیب کرده.
برای سرعت، Aurora از predicate pushdown و column pruning استفاده میکنه، یعنی فقط ردیفها و ستونهایی که لازمه خونده میشن. دادههای پرکاربرد هم توی خود Aurora کش میشن. با aurora_analytics_stat_statements() میتونی ببینی هر کوئری چندتا ردیف اسکن کرده و چقدر از S3 خونده. اگه به تأخیر چند میلیثانیهای نیاز داری، میتونی داده رو با CREATE TABLE AS SELECT یا MERGE INTO به یه جدول معمولی توی Aurora بیاری.
نکات کلیدی:
- پشتیبانی روی Aurora PostgreSQL 17.11 به بالا و 18.6 به بالا
- موتور پردازش data lake داخل Aurora، DuckDB هست
- کوئریهای خواندنی روی read replica هم اجرا میشن، ولی materialize کردن فقط روی writer
- کاتالوگهای سازگار با Iceberg REST Catalog از طریق federation توی Glue پشتیبانی میشن
- هزینهی اضافه نداره؛ فقط محاسبات Aurora و هزینهی درخواستهای S3 حساب میشه




