Prolly Trees: Struktur Data yang Terus Ditemukan Ulang Setiap Beberapa Tahun

Tim Komunitas BigGo
Prolly Trees: Struktur Data yang Terus Ditemukan Ulang Setiap Beberapa Tahun

Dunia teknologi memiliki pola penemuan berganda yang menarik, di mana terobosan yang sama terjadi secara independen di berbagai tim dan periode waktu yang berbeda. Meskipun kebanyakan orang tahu tentang kasus terkenal seperti Newton dan Leibniz yang sama-sama menemukan kalkulus, cerita serupa telah terjadi secara diam-diam di dunia struktur data dengan sesuatu yang disebut prolly trees.

Diskusi terbaru di komunitas developer mengungkapkan bahwa struktur data khusus ini telah ditemukan secara independen setidaknya empat kali sejak 2009, dengan setiap kelompok memberikan nama yang berbeda dan menggunakannya untuk tujuan yang berbeda. Pola ini menunjukkan bahwa prolly trees merepresentasikan evolusi alami dalam cara kita menangani data yang dikontrol versinya.

Timeline Penemuan Prolly Tree

Tahun Pencipta Nama yang Digunakan Kasus Penggunaan Utama
2009 Bup (Avery Pennarun) Tidak ada nama formal Backup sistem file
2015 Noms Prolly Trees Database dengan kontrol versi
2019 French Institute (INRIA) Merkle Search Trees Sistem terdistribusi/CRDTs
2020 DePaul University Content-Defined Merkle Trees Kompresi image Docker

Misteri Kredit yang Hilang

Penemuan paling mengejutkan datang dari anggota komunitas yang menggali lebih dalam ke dalam timeline. Meskipun banyak yang mengkredit Noms pada 2015 sebagai penemu asli, developer menemukan bukti bahwa konsep yang sama muncul jauh lebih awal. Seorang komentator menunjuk ke Bup, sebuah tool backup dari 2009, yang menggunakan teknik yang persis sama tetapi tidak pernah memberikan nama formal.

Batas chunk harus ditentukan secara deterministik dari properti lokal data. Gunakan rolling checksum pada beberapa window kecil dan pisahkan file jika mencapai nilai khusus (0).

Bahkan lebih menarik, diskusi di mailing list Git dari 2005 menunjukkan developer secara santai mendeskripsikan pendekatan yang sama, menunjukkan mereka tidak menganggapnya sebagai hal yang sangat baru pada saat itu. Ini menyoroti masalah umum dalam inovasi teknologi - terkadang terobosan paling penting tidak diperhatikan karena tampak jelas bagi penciptanya.

Mengapa Semua Orang Terus Menemukan Ulang Roda yang Sama

Diskusi komunitas mengungkapkan mengapa prolly trees terus ditemukan kembali. Mereka menggabungkan tiga konsep yang sudah mapan yang telah ada selama beberapa dekade: Merkle trees (1979), rolling hash functions (1981), dan content-defined chunking (1996). Keajaiban terjadi ketika Anda menggabungkan ketiganya dengan cara tertentu.

Kelompok yang berbeda menemukan kombinasi ini saat memecahkan masalah yang benar-benar berbeda. Bup membutuhkan backup file yang lebih baik, Noms menginginkan database yang dikontrol versinya, peneliti Prancis sedang membangun sistem terdistribusi, dan DePaul University sedang mencoba mengoptimalkan image Docker. Setiap kelompok secara independen menyadari bahwa menggabungkan ketiga teknik ini menciptakan sesuatu yang kuat.

Struktur data ini menawarkan beberapa properti berharga yang membuatnya menarik untuk aplikasi modern: dapat menyimpan beberapa versi data secara efisien sambil berbagi bagian yang sama, dengan cepat mengidentifikasi perbedaan antara versi, dan mempertahankan performa yang baik bahkan dengan dataset besar.

Teknologi Dasar

Teknologi Tahun Diperkenalkan Tujuan dalam Prolly Trees
Merkle Trees 1979 Verifikasi kriptografi dan integritas struktural
Rabin Fingerprint (Rolling Hash) 1981 Batas chunking yang didefinisikan konten
Content Defined Chunking (CDC) 1996 (rsync) Segmentasi data berukuran variabel

Masalah Penamaan

Satu aspek yang menghibur dari penemuan berulang ini adalah kebingungan penamaan. Struktur data yang sama telah disebut prolly trees, Merkle search trees, content-defined Merkle trees, dan terkadang hanya dideskripsikan tanpa nama khusus sama sekali. Ini menciptakan tantangan bagi developer yang mencoba meneliti topik atau membangun berdasarkan pekerjaan yang sudah ada.

Komunitas tampak terbagi tentang nama mana yang akhirnya akan menjadi standar. Beberapa berargumen untuk prolly trees karena tampaknya merupakan nama formal paling awal, sementara yang lain lebih suka istilah yang lebih deskriptif seperti Merkle search trees. Tidak adanya halaman Wikipedia untuk nama-nama ini tidak membantu situasi.

Properti Utama Prolly Trees

  • Dapat Dicari: Menyimpan data terurut dengan pencarian kunci/offset yang efisien
  • Independensi Riwayat: Representasi unik terlepas dari urutan operasi
  • Penyeimbangan Otomatis: Struktur pohon yang seimbang secara probabilistik
  • Berbagi Struktural: Beberapa versi berbagi data yang sama, mengurangi penyimpanan
  • Diffing Efisien: Membandingkan versi dalam kompleksitas waktu logaritmik
  • Mutasi Efisien: Menerapkan perubahan dengan overhead komputasi minimal

Melihat ke Depan

Penemuan berulang prolly trees menunjukkan bahwa mereka memenuhi kebutuhan nyata dalam komputasi modern. Karena lebih banyak aplikasi memerlukan kontrol versi yang efisien dan sinkronisasi data, kita kemungkinan akan melihat pola ini berlanjut. Diskusi komunitas menunjukkan bahwa struktur serupa sedang dikembangkan untuk kasus penggunaan lain, dengan peneliti yang bekerja pada variasi menggunakan jenis tree dasar yang berbeda.

Cerita ini berfungsi sebagai pengingat bahwa inovasi sering terjadi secara paralel, didorong oleh kebutuhan serupa dan alat yang tersedia. Meskipun mungkin tampak tidak efisien untuk menemukan ulang hal yang sama beberapa kali, setiap iterasi telah membawa wawasan dan perbaikan baru yang menguntungkan seluruh bidang.

Referensi: People Keep Inventing Prolly Trees