[VELODB.IO]
DATANOMIX.PRO // ИНТЕГРАЦИЯЛАР // ICEBERG FEDERATION

Apache Iceberg + Doris: lakehouse federation SQL

Multi-Catalog, федеративтік JOIN, time travel, write-back. Толық интеграция нұсқаулығы.

Дайындаған:
Datanomix.pro
Оқу уақыты:
~12 мин

1. Data Lakehouse-та Iceberg не үшін қажет

Apache Iceberg — заманауи data lakehouse архитектуралары үшін де-факто стандартқа айналған open table format. Iceberg object storage (S3, HDFS, MinIO) үстінде классикалық ДББЖ-ге тән кепілдіктермен кестелік деректерді сенімді сақтауды қамтамасыз етеді.

Дәстүрлі архитектуралардың басты мәселесі — деректер жүйелер арасында көшіріледі. ETL деректерді көлден DWH-ға, одан витриналарға, содан кейін BI-ға тасиды. Әрбір көшірме — десинхронизация, шығындардың екі еселенуі және latency өсуі. Iceberg мұны шешеді: деректер бір рет сақталады, әр түрлі қозғалтқыштардан сұралады.

Iceberg-тің негізгі мүмкіндіктері:

  • ACID transactions — атомарлық коммиттер, оқушыларды жазушылардан оқшаулау.
  • Schema evolution — деректерді қайта жазбай колонкаларды қосу, жою, атын өзгерту.
  • Partition evolution — бар деректерді көшірмей партициялау схемасын өзгерту.
  • Time travel — timestamp немесе snapshot ID бойынша тарихи деректер снимкаларына сұраныстар.
  • Hidden partitioning — сұраныстарда көрінетін partition-колонкаларсыз автоматты партициялау.

Apache Doris Multi-Catalog Iceberg-кестелерді деректерді көшірмей тікелей сұрауға мүмкіндік береді. «Query where data lives» қағидасы — нөлдік дубликация, ішкі және сыртқы кестелер үшін бірыңғай SQL-интерфейс.

Қолдау көрсетілетін каталогтар: Hive Metastore, AWS Glue, REST Catalog, Hadoop Catalog.

2. Архитектура: Doris Multi-Catalog + Iceberg

Doris Multi-Catalog — сыртқы деректер үстіндегі виртуалды абстракция. Үш деңгейлі архитектура:

CatalogЖоғарғы деңгей. Бір Catalog = бір сыртқы қоймалау (Iceberg, Hudi, Hive). CREATE CATALOG арқылы құрылады.
DatabaseОрта деңгей. Каталог ішіндегі дерекқорлар — Iceberg namespace-ін көрсетеді.
TableТөменгі деңгей. Стандартты SQL арқылы қолжетімді Iceberg-кестелер.
Data FlowSQL сұранысы → Doris FE (жоспар) → Doris BE (S3/HDFS-тен Parquet/ORC файлдарын оқу) → клиентке нәтиже.

Маңыздысы: Doris Parquet/ORC файлдарды тікелей оқиды, partition pruning үшін Iceberg metadata пайдаланады. ETL жоқ, аралық сақтау жоқ. Бір SQL-сұраныста Iceberg-кестелер мен ішкі Doris-кестелер арасында JOIN жасауға болады.

3. Quick Start: Iceberg каталогын қосу

Iceberg каталогын Doris-ке қосу бір SQL-сұраныс алады. Төменде — әр түрлі метасторлар үшін үш нұсқа.

// 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 үшін (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 және Hive Metastore үшін:

// 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. Федеративтік сұраныстар: ішкі және Iceberg кестелерінің JOIN-ы

Интеграцияның басты құндылығы — федеративтік сұраныстар. Бір SQL Doris ішкі кестелерінен және сыртқы Iceberg-кестелерден деректерді бір уақытта алады:

// 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 не істейді:

  • Предикаттарды pushdown: WHERE-шарттар Iceberg metadata деңгейіне беріледі — partition pruning және column pruning оқу көлемін қысқартады.
  • Iceberg-сұраныстар үстінде Materialized Views: Doris ішкі storage-де ыстық деректерді автоматты кештеу.
  • Transparent rewrite: Iceberg-кестеге сұраныс, деректер жаңа болса, автоматты MV-ге бағытталады.
  • Query optimizer (CBO): Doris оңтайлы орындау жоспарын таңдау үшін Iceberg statistics пайдаланады.

5. Write-back: Doris-тен Iceberg-ке жазу

Doris Iceberg-кестелерді оқып қана қоймай, оларға жазуды да қолдайды:

  • INSERT INTO iceberg_catalog.db.table SELECT ... — SQL-сұраныс нәтижелерін Iceberg-ке жазу.
  • CREATE TABLE AS SELECT (CTAS) — SQL-сұраныстардан жаңа Iceberg-кестелер құру.
  • Жазу форматы: Parquet.
  • Use case: Doris-те ETL-трансформациялар → нәтижелер Iceberg-те → Spark, Trino, Presto арқылы қолжетімді.
  • Schema evolution: Doris арқылы ALTER TABLE Iceberg metadata-ға қолданылады.
  • Partitioned writes: Doris деректерді дұрыс partition directories-ге автоматты жазады.

6. Time Travel және нұсқалау

Iceberg snapshots арқылы өзгерістер тарихын сақтайды. Doris өткен кез келген сәттегі деректерді сұрауға мүмкіндік береді:

// 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;

Практикалық сценарийлер:

  • Аудит: «есеп сәтінде жүйеде қандай деректер болды?» — берілген күнге нақты күйді қайта жаңғырту.
  • Debug: аномалиялар мен ETL қателерін талдау үшін деректердің алдыңғы күйіне оралу.
  • Реттеуші талаптар: compliance үшін тарихи снимкаларды сақтау (SOX, GDPR, ҰБ).

7. Production: мониторинг және оптимизация

Iceberg + Doris production-эксплуатациясы үшін ұсыныстар:

  1. File size: Iceberg 100–500 MB файлдарды ұсынады. Ұсақ файлдар оқу өнімділігін төмендетеді.
  2. Compaction: Spark maintenance jobs немесе Iceberg actions арқылы ұсақ файлдарды кезеңді компакциялау.
  3. Metadata refresh: REFRESH CATALOG iceberg_catalog — каталогтағы өзгерістерде метадеректерді жаңарту.
  4. Cache: Doris Iceberg metadata-ны қайталанатын сұраныстарды жеделдету үшін кештейді. TTL уақыты баптауға болады.
  5. Monitoring: EXPLAIN pushdown және partition pruning талдауы үшін. Предикаттардың каталог деңгейіне өтуін тексеріңіз.
  6. Scaling: Doris BE-нодтары әр түрлі файлдарды параллель оқиды — нод қосқанда сызықтық масштабтау.
  7. Column statistics: Iceberg statistics + Doris CBO = қолмен баптаусыз оңтайлы орындау жоспарлары.

Дереккөздер

FAQ

Doris қандай table formats қолдайды?

Apache Iceberg, Apache Hudi, Apache Paimon, Delta Lake, Apache Hive. Барлығы бірыңғай Multi-Catalog API арқылы.

Iceberg-тен деректерді Doris-ке көшіру керек пе?

Жоқ. Doris Iceberg-файлдарды S3/HDFS-тен тікелей оқиды. Ыстық деректер үшін кештеуге Materialized View жасауға болады.

Doris-тен Iceberg-ке жазуға бола ма?

Иә. INSERT INTO және CTAS қолдау көрсетіледі. Деректер Parquet-форматта Iceberg-кестелерге жазылады.

Partition pruning қалай жұмыс істейді?

Doris Iceberg metadata-ны қатысты емес partition-файлдарды өткізіп жіберу үшін пайдаланады. WHERE предикаттары каталог деңгейіне автоматты pushdown.

Iceberg + Doris-те lakehouse құрғыңыз келе ме?

./АРХИТЕКТУРА_СҰРАУ.sh
© 2026 DATANOMIX.PRO — VELODB-НЫҢ ОРТАЛЫҚ АЗИЯДА ЭКСКЛЮЗИВТІК СЕРІКТЕСІ
VeloDB — Data Lakehouse /БАСТЫ