[VELODB.IO]
DATANOMIX.PRO // INTEGRATSIYALAR // ICEBERG FEDERATION

Apache Iceberg + Doris: lakehouse federation SQL

Multi-Catalog, federativ JOIN, time travel, write-back. Toʼliq integratsiya qoʼllanmasi.

Tayyorlagan:
Datanomix.pro
Oʼqish vaqti:
~12 min

1. Data Lakehouse da Iceberg nima uchun kerak

Apache Iceberg — zamonaviy data lakehouse arxitekturalari uchun de-fakto standartga aylangan open table format. Iceberg object storage (S3, HDFS, MinIO) ustida klassik DBBT ga xos kafolatlar bilan jadval maʼlumotlarini ishonchli saqlashni taʼminlaydi.

Anʼanaviy arxitekturalarning asosiy muammosi — maʼlumotlar tizimlar oʼrtasida koʼchiriladi. ETL maʼlumotlarni koʼldan DWH ga, undan vitrinalarga, keyin BI ga olib oʼtadi. Har bir nusxa — desinxronizatsiya, xarajatlarning ikki barobarligi va latency oʼsishi. Iceberg buni hal qiladi: maʼlumotlar bir marta saqlanadi, turli dvigatellardan soʼraladi.

Iceberg ning asosiy imkoniyatlari:

  • ACID transactions — atomik commitlar, oʼquvchilarni yozuvchilardan izolyatsiyalash.
  • Schema evolution — maʼlumotlarni qayta yozmasdan ustunlarni qoʼshish, oʼchirish, nomini oʼzgartirish.
  • Partition evolution — mavjud maʼlumotlarni koʼchirmasdan partitsiyalash sxemasini oʼzgartirish.
  • Time travel — timestamp yoki snapshot ID boʼyicha tarixiy maʼlumotlar snapshotlariga soʼrovlar.
  • Hidden partitioning — soʼrovlarda koʼrinadigan partition-ustunlarsiz avtomatik partitsiyalash.

Apache Doris Multi-Catalog Iceberg-jadvallarni maʼlumotlarni koʼchirmasdan toʼgʼridan-toʼgʼri soʼrash imkonini beradi. «Query where data lives» tamoyili — nolga teng dublikatsiya, ichki va tashqi jadvallar uchun yagona SQL-interfeys.

Qoʼllab-quvvatlanadigan kataloglar: Hive Metastore, AWS Glue, REST Catalog, Hadoop Catalog.

2. Arxitektura: Doris Multi-Catalog + Iceberg

Doris Multi-Catalog — tashqi maʼlumotlar ustidagi virtual abstraksiya. Uch darajali arxitektura:

CatalogYuqori daraja. Bitta Catalog = bitta tashqi ombor (Iceberg, Hudi, Hive). CREATE CATALOG orqali yaratiladi.
DatabaseOʼrta daraja. Katalog ichidagi maʼlumotlar bazalari — Iceberg namespace ini aks ettiradi.
TableQuyi daraja. Standart SQL orqali foydalanish mumkin boʼlgan Iceberg-jadvallar.
Data FlowSQL soʼrov → Doris FE (reja) → Doris BE (S3/HDFS dan Parquet/ORC fayllarni oʼqish) → mijozga natija.

Muhimi: Doris Parquet/ORC fayllarni toʼgʼridan-toʼgʼri oʼqiydi, partition pruning uchun Iceberg metadata dan foydalanadi. ETL yoʼq, oraliq saqlash yoʼq. Bitta SQL-soʼrovda Iceberg-jadvallar va ichki Doris-jadvallar oʼrtasida JOIN qilish mumkin.

3. Quick Start: Iceberg katalogini ulash

Iceberg katalogini Doris ga ulash bitta SQL-soʼrov oladi. Quyida — turli metastorlar uchun uchta variant.

// ICEBERG CATALOG: HIVE METASTORE -- Create Iceberg catalog (Hive Metastore) CREATE CATALOG iceberg_catalog PROPERTIES ( 'type' = 'iceberg', 'iceberg.catalog.type' = 'hms', 'hive.metastore.uris' = 'thrift://hive-metastore:9083' ); -- Switch to catalog SWITCH iceberg_catalog; -- List databases SHOW DATABASES; -- Query Iceberg table SELECT * FROM iceberg_catalog.my_db.my_table LIMIT 10;

REST Catalog uchun (Apache Polaris, Tabular, Nessie):

// ICEBERG CATALOG: REST CREATE CATALOG iceberg_rest PROPERTIES ( 'type' = 'iceberg', 'iceberg.catalog.type' = 'rest', 'uri' = 'http://iceberg-rest:8181' );

S3 / MinIO va Hive Metastore uchun:

// ICEBERG CATALOG: S3 / MINIO CREATE CATALOG iceberg_s3 PROPERTIES ( 'type' = 'iceberg', 'iceberg.catalog.type' = 'hms', 'hive.metastore.uris' = 'thrift://hms:9083', 's3.endpoint' = 'http://minio:9000', 's3.access_key' = 'minioadmin', 's3.secret_key' = 'minioadmin' );

4. Federativ soʼrovlar: ichki va Iceberg jadvallarning JOIN i

Integratsiyaning asosiy qiymati — federativ soʼrovlar. Bitta SQL Doris ichki jadvallaridan va tashqi Iceberg-jadvallardan maʼlumotlarni bir vaqtda oladi:

// FEDERATED JOIN: DORIS + ICEBERG SELECT d.customer_id, d.customer_name, i.total_purchases, i.last_purchase_date FROM internal.analytics.dim_customers d JOIN iceberg_catalog.data_lake.fact_purchases i ON d.customer_id = i.customer_id WHERE i.last_purchase_date >= '2026-01-01' ORDER BY i.total_purchases DESC LIMIT 100;

Doris nima qiladi:

  • Predikatlarni pushdown: WHERE-shartlar Iceberg metadata darajasiga beriladi — partition pruning va column pruning oʼqish hajmini qisqartiradi.
  • Iceberg-soʼrovlar ustida Materialized Views: Doris ichki storage da issiq maʼlumotlarni avtomatik keshlash.
  • Transparent rewrite: Iceberg-jadvalga soʼrov, maʼlumotlar yangi boʼlsa, avtomatik MV ga yoʼnaltiriladi.
  • Query optimizer (CBO): Doris optimal ijro rejasini tanlash uchun Iceberg statistics dan foydalanadi.

5. Write-back: Doris dan Iceberg ga yozish

Doris Iceberg-jadvallarni nafaqat oʼqiydi, balki ularga yozishni ham qoʼllab-quvvatlaydi:

  • INSERT INTO iceberg_catalog.db.table SELECT ... — SQL-soʼrov natijalarini Iceberg ga yozish.
  • CREATE TABLE AS SELECT (CTAS) — SQL-soʼrovlardan yangi Iceberg-jadvallar yaratish.
  • Yozish formati: Parquet.
  • Use case: Doris da ETL-transformatsiyalar → natijalar Iceberg da → Spark, Trino, Presto orqali foydalanish mumkin.
  • Schema evolution: Doris orqali ALTER TABLE Iceberg metadata ga qoʼllaniladi.
  • Partitioned writes: Doris maʼlumotlarni toʼgʼri partition directories ga avtomatik yozadi.

6. Time Travel va versiyalash

Iceberg snapshots orqali oʼzgarishlar tarixini saqlaydi. Doris oʼtgan istalgan paytdagi maʼlumotlarni soʼrash imkonini beradi:

// ICEBERG TIME TRAVEL -- Query data at a specific point in time SELECT * FROM iceberg_catalog.db.events FOR TIME AS OF '2026-03-01 00:00:00'; -- Query by snapshot ID SELECT * FROM iceberg_catalog.db.events FOR VERSION AS OF 12345678901234;

Amaliy ssenariylar:

  • Audit: «hisobot paytida tizimda qanday maʼlumotlar bor edi?» — berilgan sanaga aniq holatni qayta tiklash.
  • Debug: anomaliyalar va ETL xatolarini tahlil qilish uchun maʼlumotlarning oldingi holatiga qaytish.
  • Tartibga soluvchi talablar: compliance uchun tarixiy snapshotlarni saqlash (SOX, GDPR).

7. Production: monitoring va optimizatsiya

Iceberg + Doris production-ekspluatatsiyasi uchun tavsiyalar:

  1. File size: Iceberg 100–500 MB fayllarni tavsiya qiladi. Mayda fayllar oʼqish unumdorligini pasaytiradi.
  2. Compaction: Spark maintenance jobs yoki Iceberg actions orqali mayda fayllarni davriy kompaktatsiya qilish.
  3. Metadata refresh: REFRESH CATALOG iceberg_catalog — katalogdagi oʼzgarishlarda metamaʼlumotlarni yangilash.
  4. Cache: Doris Iceberg metadata ni takroriy soʼrovlarni tezlashtirish uchun keshlaydi. TTL vaqti sozlanadi.
  5. Monitoring: EXPLAIN pushdown va partition pruning tahlili uchun. Predikatlarning katalog darajasiga oʼtishini tekshiring.
  6. Scaling: Doris BE-nodlari turli fayllarni parallel oʼqiydi — nod qoʼshganda chiziqli masshtablash.
  7. Column statistics: Iceberg statistics + Doris CBO = qoʼlda sozlashsiz optimal ijro rejalari.

Manbalar

FAQ

Doris qaysi table formats ni qoʼllab-quvvatlaydi?

Apache Iceberg, Apache Hudi, Apache Paimon, Delta Lake, Apache Hive. Barchasi yagona Multi-Catalog API orqali.

Iceberg dan maʼlumotlarni Doris ga koʼchirish kerakmi?

Yoʼq. Doris Iceberg-fayllarni S3/HDFS dan toʼgʼridan-toʼgʼri oʼqiydi. Issiq maʼlumotlar uchun keshlashga Materialized View yaratish mumkin.

Doris dan Iceberg ga yozish mumkinmi?

Ha. INSERT INTO va CTAS qoʼllab-quvvatlanadi. Maʼlumotlar Parquet-formatda Iceberg-jadvallariga yoziladi.

Partition pruning qanday ishlaydi?

Doris Iceberg metadata dan aloqasiz partition-fayllarni oʼtkazib yuborish uchun foydalanadi. WHERE predikatlari katalog darajasiga avtomatik pushdown.

Iceberg + Doris da lakehouse qurmoqchimisiz?

./ARXITEKTURA_SOʼRASH.sh
© 2026 DATANOMIX.PRO — MARKAZIY OSIYODA VELODB EKSKLUZIV HAMKORI
VeloDB — Data Lakehouse /BOSH SAHIFA