Apache Iceberg telah muncul sebagai topik hangat dalam infrastruktur data, tetapi cabaran teknikal kritikal sedang menyebabkan perbincangan hangat di kalangan pembangun. Masalah ini berpusat pada cara mengendalikan operasi padam dengan cekap apabila mengalirkan perubahan masa nyata daripada pangkalan data tradisional seperti Postgres ke dalam sistem penyimpanan Apache Iceberg yang memfokuskan analitik.
Dilema Teknikal Teras
Apabila syarikat ingin mencerminkan perubahan pangkalan data Postgres mereka ke dalam Apache Iceberg untuk analitik, mereka menghadapi pilihan asas antara dua mekanisme padam. Position delete berfungsi dengan menentukan lokasi fail yang tepat dan nombor baris, menawarkan prestasi pertanyaan yang sangat baik kerana sistem boleh melangkau baris tanpa membacanya. Walau bagaimanapun, pendekatan ini memerlukan pengetahuan tentang lokasi penyimpanan fizikal terlebih dahulu, yang mewujudkan kesesakan utama untuk senario penstriman masa nyata.
Equality delete pula berfungsi dengan memadankan nilai kunci utama dan bukannya lokasi fizikal. Pendekatan ini sesuai secara semula jadi dengan sistem Change Data Capture (CDC) yang mengalirkan perubahan pangkalan data, tetapi ia memaksa pertanyaan untuk melakukan operasi merge-on-read, mengimbas kedua-dua fail data dan fail padam untuk menapis rekod yang dibuang.
Perbandingan Mekanisme Pemadaman Iceberg
Jenis Pemadaman | Mekanisme | Prestasi Pertanyaan | Keserasian CDC | Kerumitan Penulisan |
---|---|---|---|---|
Pemadaman Kedudukan | Laluan fail + nombor baris | Tinggi (boleh melangkau baris) | Lemah (memerlukan carian lokasi) | Tinggi (memerlukan lokasi fizikal) |
Pemadaman Kesamaan | Padanan kunci utama | Rendah (memerlukan gabungan-semasa-baca) | Cemerlang (kesesuaian semula jadi) | Rendah (terus dari aliran CDC) |
Penentangan Komuniti Terhadap Andaian Seni Bina
Komuniti teknikal telah menimbulkan persoalan penting mengenai pilihan seni bina yang mendasari. Seorang pembangun menunjukkan penyelesaian yang kelihatan jelas yang nampaknya diabaikan oleh industri: mengekalkan pemetaan antara baris Postgres dan kedudukan Iceberg . Memandangkan proses CDC sudah perlu mengekalkan keadaan, mengapa tidak menyimpan keseluruhan pemetaan? Saiznya akan setanding dengan indeks pangkalan data tunggal, dan kemas kini akan lebih pantas daripada jadual Postgres sumber.
Pemetaan yang diperlukan akan bersamaan saiz dengan indeks tunggal pada jadual. Mengapa tidak menyimpannya di suatu tempat? Kemas kini kepadanya akan lebih pantas daripada kemas kini kepada jadual Postgres sumber, jadi ia akan dapat mengikuti.
Mempersoalkan Pendekatan Asas
Sesetengah pakar berpendapat bahawa keseluruhan saluran paip Postgres-ke-Iceberg mewakili keputusan seni bina yang cacat. Mereka berpendapat bahawa menggunakan CDC untuk mencipta semula petikan jadual dengan melaksanakan semula logik merge-on-read di luar pangkalan data terlepas maksud sebenar CDC direka. CDC cemerlang dalam menangkap dan memproses perubahan individu secara berasingan, bukan dalam mengekalkan replika jadual yang lengkap.
Kritikan meluas kepada pilihan Iceberg itu sendiri untuk kes penggunaan ini. Sebagai sistem penyimpanan kolumnar yang dioptimumkan untuk analitik sejarah berskala besar, Iceberg tidak direka untuk data perhubungan atau operasi masa nyata. Pengkritik mencadangkan bahawa pangkalan data siri masa seperti TimescaleDB atau InfluxDB akan lebih sesuai untuk beban kerja ini.
Persoalan Kematangan dan Realiti Pelaksanaan
Perbincangan juga telah menyerlahkan kebimbangan mengenai dakwaan kematangan Apache Iceberg . Walaupun pelaksanaan Java telah wujud selama bertahun-tahun, perpustakaan bahasa lain ketinggalan dengan ketara. Perpustakaan Rust baru-baru ini memperoleh keupayaan tulis, dan memandangkan tiada pelayan Iceberg pusat, perpustakaan ini pada dasarnya membentuk keseluruhan produk apabila berinteraksi dengan sistem penyimpanan seperti Amazon S3 .
Sokongan enjin pertanyaan untuk equality delete kekal tidak konsisten merentas ekosistem. Walaupun sesetengah enjin menyediakan sokongan Iceberg penuh melalui integrasi asli, yang lain bergantung pada katalog luaran seperti AWS Glue dan mungkin hanya menyokong position delete atau kekurangan pengendalian fail padam yang boleh dipercayai sama sekali.
Status Sokongan Enjin Pertanyaan
Sokongan Penuh Iceberg:
- Pelaksanaan Iceberg asli dengan pengendalian metadata yang lengkap
- Sokongan untuk kedua-dua pemadaman kedudukan dan kesamaan
Sokongan Terhad:
- Enjin berasaskan katalog luaran (contohnya, AWS Glue )
- Mungkin hanya menyokong pemadaman kedudukan
- Pengendalian fail pemadaman yang tidak konsisten
Tiada Sokongan:
- Amazon Redshift (tidak boleh menulis, tiada sokongan fail pemadaman)
- Pelbagai vendor tasik data dengan pelaksanaan yang tidak lengkap
Corak yang Lebih Luas
Cabaran teknikal ini mencerminkan trend yang lebih besar dalam dunia infrastruktur data. Syarikat cuba merapatkan jurang antara pangkalan data transaksi tradisional dan sistem analitik moden, sering mendapati bahawa titik integrasi lebih kompleks daripada yang dijangkakan pada mulanya. Masalah equality delete dalam Iceberg berfungsi sebagai peringatan bahawa teknologi yang kelihatan matang pun boleh mempunyai batasan asas apabila digunakan untuk kes penggunaan yang tidak direka untuk dikendalikan pada asalnya.
Perdebatan yang berterusan menunjukkan bahawa walaupun Apache Iceberg terus mendapat penerimaan, komuniti masih mengatasi cabaran praktikal pelaksanaan dunia sebenar, terutamanya apabila melibatkan senario integrasi data masa nyata.