Apache Iceberg 1.12.0 منتشر شد: Variant سریعتر، داده مکانی و حذفهای استریمی
خلاصهٔ کاملتر
تیم Apache Iceberg نسخه 1.12.0 رو منتشر کرده که حاصل 777 کامیت از 142 نفره. Iceberg یه فرمت جدول باز برای دیتالیکهاست، یعنی لایهای که روی فایلهای Parquet و Avro میشینه و بهشون رفتار جدول دیتابیس میده. بزرگترین تغییرها مربوط به نوع دادهی Variant (یعنی ستونی برای دادهی نیمهساختاریافته مثل JSON)، دادههای مکانی و حذفهای استریمیه.
خوندن Variant بدون shredding (یعنی وقتی فیلدها به ستونهای تایپدار جدا نشدن) تو Spark 4.0 و 4.1 حالا از مسیر vectorized Parquet انجام میشه، نه ردیف به ردیف. قانون shredding هم سختگیرتر شده: یه فیلد فقط وقتی ستون تایپدار میگیره که همه مقدارهاش از یه نوع باشن. نوشتن Variant به شکل shredded هم دیگه فقط مخصوص Spark نیست و Flink و Kafka Connect هم میتونن انجامش بدن.
نوعهای geometry و geography حالا تو Avro و Parquet خونده و نوشته میشن. فعلاً فقط Spark 4.1 مسیر کامل رو داره و روی این جدولها DELETE و UPDATE و MERGE هم کار میکنه. محدودیتها هم کم نیستن: Flink و ORC پشتیبانی نمیشن، خوندن ردیفیه و هنوز فیلتر مکانی وجود نداره.
تو استریم، upsertها equality delete مینویسن، یعنی نشونهای که میگه «هر ردیفی که کلیدش اینه رو حذف کن». نوشتنش ارزونه ولی هر کوئری باید فایلها رو دوباره باز کنه و مقدارها رو مقایسه کنه. تسک جدید ConvertEqualityDeletes تو Flink این حذفها رو یه بار به deletion vector (یعنی لیست حذف بر اساس شماره ردیف) تبدیل میکنه. این تسک فرمت جدول نسخه 3 به بالا لازم داره.
برای چیدمان داده، rewrite_data_files حالا مرتبسازی با منحنی Hilbert رو کنار Z-order داره. هر دو چند ستون رو روی یه منحنی میبرن تا ردیفهای شبیه کنار هم ذخیره بشن، ولی Hilbert اون پرشهای بزرگ Z-order رو نداره. فعلاً فقط برای Spark 4.1 هست:
CALL system.rewrite_data_files(
table => 'db.tbl',
strategy => 'sort',
sort_order => 'hilbert(c1, c2)'
);موقع ارتقا حواستون به تغییرهای ناسازگار باشه: Spark 3.4 و Flink 2.0 حذف شدن و کلاینت HTTP پیشفرض AWS SDK رفته روی Apache HttpClient 5. دو CVE مهم jackson-databind هم بسته شدن. کار روی فرمت V4 ادامه داره، ولی 1.12.0 هنوز نمیتونه جدول V4 بخونه یا بنویسه.
نکات کلیدی:
- نسخه 1.12.0 با 777 کامیت از 142 مشارکتکننده منتشر شده
- Spark پشتیبانیشده: 3.5، 4.0 و 4.1؛ Flink: 1.20، 2.1، 2.2 و 2.3
- ConvertEqualityDeletes تو Flink به فرمت جدول نسخه 3 نیاز داره
- داده مکانی و Hilbert clustering فعلاً فقط روی Spark 4.1 کار میکنن
- کسایی که iceberg-aws رو مستقیم استفاده میکنن باید به apache5-client سوییچ کنن
- CVE-2026-54512 و CVE-2026-54513 با هماهنگ کردن نسخه Jackson بسته شدن




