π© Problem Statement
Pada skala lakehouse besar, partisi dan statistik kolom saja tidak cukup untuk menjawab query kompleks. Banyak query membutuhkan pencocokan tepat (equality), filter dengan transformasi ekspresi, serta proses indexing yang tidak mengganggu operasi baca/tulis. Hudi perlu menyediakan indexing yang cepat, fleksibel, dan aman untuk sistem yang aktif terus-menerus.
π οΈ Methodologi / Solusi
1οΈβ£ Record Index & Secondary Index β memetakan kunci dan kolom non-kunci ke lokasi file secara langsung untuk menghindari full-scan.
2οΈβ£ Expression Index β mengakselerasi query yang menggunakan transformasi (substring, from_unixtime) dengan memanfaatkan bloom filter & column stats.
3οΈβ£ Async Indexing β pembangunan indeks berjalan di background tanpa memblokir read/write, didukung commit-protocol dan conflict-resolution.
4οΈβ£ Hierarki indeks (file stats β partition β record β expression) untuk melayani berbagai pola query di skala besar.
π Findings / Results
1οΈβ£ Tabel 400 GB (~20.000 file group): query id='001' turun dari 977 detik β 12 detik (~98% lebih cepat) saat record index diaktifkan.
2οΈβ£ Benchmark TPC-DS: secondary index mempercepat query ~45% dan mengurangi data yang dipindai hingga ~90%.
3οΈβ£ Async indexing memungkinkan pembuatan indeks besar tanpa downtime, meningkatkan stabilitas operasional.
4οΈβ£ Kombinasi indeks membuat lakehouse mendekati performa database OLTP untuk pola-pola filter tertentu.
π Key Takeaways
1οΈβ£ Gunakan record/secondary/expression index untuk query yang sering melakukan filter tepat atau transformasi kolom.
2οΈβ£ Indeks = kecepatan, tapi ada biaya: storage & komputasi jadi lebih besar β pilih kolom penting saja.
3οΈβ£ Lakehouse modern bisa sangat cepat bila indeksnya dirancang matang β bukan mengandalkan partisi saja.
4οΈβ£ Rancang indexing sejak awal; menambahkannya setelah sistem tumbuh besar jauh lebih mahal.
Sumber:
https://hudi.apache.org/blog/2025/11/12/deep-dive-into-hudis-indexing-subsystem-part-2-of-2/
#ApacheHudi #DataLakehouse #Indexing #BigData #ETL #DataEngineering