Data lake modern berdiri di atas tiga lapisan: object storage sebagai fondasi, format berkas kolomar sebagai wadah data, dan table format sebagai lapisan metadata yang memberi jaminan transaksi. Section Data Lake dan Lakehouse membahas ketiganya secara konseptual; bab ini menghimpun dokumentasi resmi setiap lapisan sebagai rujukan lanjutan. Seluruh tautan diverifikasi hidup saat course ini ditulis dan berasal dari domain resmi masing-masing proyek dan penyedia cloud.

Table Format: Iceberg, Delta Lake, dan Hudi #

Ketiga table format open source ini adalah pilihan utama industri saat membangun lakehouse — perbandingan lengkapnya ada di chapter Table Formats, dan masing-masing punya bab praktik tersendiri. Dokumentasi di bawah disusun dari halaman induk ke halaman topik spesifik:

SumberUntuk apaTingkat
Apache Iceberg DocumentationPanduan resmi Iceberg: arsitektur metadata, partition evolution, dan cara kerja catalogMenengah
Iceberg Schema EvolutionCara Iceberg menambah, menghapus, dan mengganti nama kolom lewat field id yang stabilMenengah
Iceberg PartitioningHidden partitioning, transform days() dan bucket(), serta partition evolutionLanjutan
Iceberg ReliabilityJaminan yang diberikan Iceberg: commit atomik, snapshot isolation, dan validitasLanjutan
pyiceberg DocumentationAPI Python resmi Iceberg — pustaka yang kita pakai di chapter Apache IcebergMenengah
Delta Lake DocumentationPanduan resmi Delta Lake: ACID transaction log, MERGE, dan integrasi SparkMenengah
Delta Lake: Table Batch Reads dan WritesOperasi baca/tulis, update, dan merge pada tabel Delta — pasangan chapter Delta LakeMenengah
Delta Lake: Streaming Reads dan WritesMenjadikan tabel Delta sebagai sumber dan tujuan streaming — pasangan chapter Time Travel dan Versioning DataLanjutan
Apache Hudi DocumentationPanduan resmi Hudi: timeline, tabel, dan konfigurasi writerLanjutan
Hudi Table TypesPerbedaan Copy-on-Write dan Merge-on-Read beserta trade-off keduanyaLanjutan
Hudi IndexingMekanisme index yang mempercepat upsert: bloom filter, bucket, dan record-levelLanjutan
Hudi Quick Start GuideLangkah cepat membuat tabel Hudi pertama dengan SparkMenengah

Tiga format tersebut menyelesaikan masalah yang sama — transaksi ACID di atas object storage — dengan rekayasa metadata yang berbeda. Tabel ringkas berikut merangkum perbedaan yang dibahas tuntas di course ini:

AspekIcebergDelta LakeHudi
Asal proyekNetflix, kini ApacheDatabricksUber, kini Apache
Bentuk metadataPohon metadata.json, manifest list, dan manifest fileSatu berkas log JSON per transaksi di direktori _delta_logTimeline berkas commit plus index per tabel
Fitur khasHidden partitioning dan partition evolutionIntegrasi erat dengan ekosistem SparkUpsert cepat berkat index dan record key
Bab course terkaitApache IcebergDelta LakeApache Hudi

Kolom terakhir sengaja menunjuk bab praktik course ini karena perbedaan nyata ketiga format paling mudah dirasakan lewat tangan: membuat tabel, menulis data, lalu memindai berkas metadata yang dihasilkan masing-masing.

Format Berkas: Parquet, Avro, ORC, dan Protobuf #

Pemilihan format berkas menentukan ukuran penyimpanan dan kecepatan pembacaan — trade-off yang kita bedah di chapter Memilih Format Data dan Kompresi Data. Untuk format kolomar, baca dulu halaman induknya; untuk format berbasis schema, mulai dari halaman spesifikasinya:

SumberUntuk apaTingkat
Apache ParquetSpesifikasi format kolomar Parquet: encoding, statistik min/max, dan row group — fondasi chapter ParquetMenengah
Parquet File FormatAnatomi dalam berkas Parquet: page header, data page, dan page indexLanjutan
Apache AvroFormat berbasis schema untuk serialisasi cepat, umum di pipeline Kafka — materi chapter AvroMenengah
Avro SpecificationSpesifikasi wire format dan resolving schema saat producer dan konsumen berbeda versiLanjutan
Apache ORCFormat kolomar dengan index bawaan, lazim di ekosistem HadoopLanjutan
Protocol BuffersSkema bahasa-netral dari Google untuk pertukaran data antar sistem — materi chapter ProtobufMenengah
PyArrow DocumentationAPI Python Apache Arrow yang kita pakai untuk membaca dan menulis Parquet secara programatikSemua

Satu kebiasaan yang layak dibentuk: setiap kali menulis Parquet, buka berkasnya kembali dengan pembaca metadata (misalnya lewat PyArrow) dan amati row group, statistik, dan skema yang tersimpan. Kebiasaan ini membuat trade-off di chapter Memilih Format Data terasa konkret, bukan teoretis.

Untuk format serialisasi, kebiasaan yang sama berlaku: simpan schema Avro atau .proto di repositori dan perlakukan berkas schema itu sebagai kode yang di-review, bukan sekadar lampiran pipeline.

Object Storage Resmi #

Object storage adalah fondasi fisik data lake — konsep yang dibahas di chapter Object Storage dan Zona Data Raw dan Curated. Tiga penyedia cloud berikut mendominasi implementasi produksi, dan ketiganya punya dokumentasi resmi yang lengkap:

SumberUntuk apaTingkat
Amazon S3 User GuidePanduan resmi S3: bucket, objek, lifecycle policy, dan storage classSemua
S3 Performance GuidelinesPola akses cepat: partisi awalan nama objek dan request rate per prefiksMenengah
Google Cloud StoragePengenalan resmi GCS: bucket, kelas penyimpanan, dan operasi objekSemua
GCS Storage LocationsPemilihan region dan multi-region — relevan untuk latensi dan kepatuhan dataMenengah
Azure Blob StorageDokumentasi resmi Azure Blob Storage: container, blob, dan tier penyimpananSemua
Azure Data Lake StorageLapisan hierarchical namespace di atas Blob Storage yang dirancang khusus untuk analitik besarLanjutan

Praktik Lokal Sebelum Naik ke Cloud #

Seluruh konsep di bab ini bisa dipraktikkan tanpa akun cloud dan tanpa biaya, karena ketiga lapisan lakehouse punya implementasi yang berjalan di laptop:

  • Object storage lokal: gunakan filesystem biasa dengan skema file:// — pyiceberg dan Spark sama-sama menerimanya sebagai ganti s3://.
  • Parquet dan Avro: pyarrow serta pustaka fastavro/avro menulis dan membaca berkas asli tanpa server.
  • Table format: pyiceberg dengan catalog sql di SQLite — persis pola yang dipakai di chapter Apache Iceberg.
  • Query di atas tabel: DuckDB membaca tabel Iceberg dan berkas Parquet lokal secara langsung.

Setelah pola kerjanya stabil di lokal, berpindah ke cloud hanya mengganti lokasi bucket dan kredensial — bukan mengubah logika pipeline. Bab Referensi Cloud berikutnya memetakan layanan tempat bucket itu disewa.

Jalur Belajar yang Disarankan #

Urutan berikut menghubungkan tiga lapisan lakehouse dari bawah ke atas, mengikuti urutan section Data Lake dan Lakehouse di course ini:

  1. Pelajari S3 User Guide (atau GCS/Azure sesuai platform pilihan) sampai paham bucket, objek, dan penamaan kunci.
  2. Baca Apache Parquet sambil membandingkan isi row group dengan hasil praktik chapter Parquet.
  3. Coba PyArrow Documentation untuk menulis dan membaca ulang Parquet secara programatik.
  4. Pahami Apache Avro sebagai perwakilan format berbasis schema untuk pipeline streaming.
  5. Masuk ke table format: mulai dari Iceberg Documentation , lanjut Schema Evolution dan Partitioning .
  6. Bandingkan dengan Delta Lake Documentation dan Hudi Documentation — fokus pada cara tiap format menyimpan metadata.
  7. Tutup dengan Iceberg Reliability untuk memahami jaminan yang sebenarnya diberikan lakehouse.

Lapisan penyimpanan dan pemrosesan berjalan di atas infrastruktur yang dalam praktiknya disewa dari penyedia cloud. Peta referensi layanan cloud AWS, Google Cloud, dan Azure tersusun di chapter Referensi Cloud.