Unlimited Hierarchical Data dalam Satu Tabel

Ini adalah note tentang hierarkial data. Berikut saya menggunakan Nested Set Model (data bersarang) yang cukup logis dan mudah untuk diterapkan. Secara teori model ini bisa diterapkan untuk unlimited hierarchy. Query-nya pun lebih simple dibandingkan dengan Adjacency List Model atau model bertingkat.

Untuk mempelajari lebih lanjut silahkan pelajari Nested Set Model di artikel Managing Hierarchical Data in MySQL. Artikel ini sangat bagus. Saya sudah membacanya berulang kali sejak 4 tahunan lalu, tapi baru ngeh sekarang, hehe. Lemot ini otak.

Source Code sebagai berikut.


Kelebihan dan Kekurangan

Seperti terlihat dalam source code model ini memiliki kelebihan dan kekurangan, sebagai berikut.

Kelebihan
  • Pembacaan lebih simpel, karena hanya melakukan self join satu kali, berapapun kedalaman datanya.
  • Tidak perlu menambah tabel jika suatu saat kedalaman tingkatan bertambah.

Kekurangan
  • Proses insert data lebih kompleks, namun menurut saya ini wajar dan tidak menjadi masalah karena dalam data bertingkat seperti ini proses insert biasanya tidak sesering proses read.
  • Proses select lebih lama pada tabel yang jumlahnya puluhan ribu, tapi hal ini saya atasi dengan menambahkan kolom depth yang menyimpan kedalaman data pada tersebut
  • Ukuran per record lebih besar hingga 30 persen karena ada penambahan nilai kiri, kanan dan depth

Terima kasih sudah membaca.

---
Eko Kurniawan

Komentar