Setara Fungsional Murni dari B-Tree?

14

Saya mengeksplorasi ide menulis DBMS dengan cara yang sepenuhnya fungsional. Struktur data tradisional yang digunakan untuk pengindeksan adalah B-Tree. Saya ingin mengetahui beberapa fungsi yang setara murni dari B-Tree yang akan dioptimalkan untuk meminimalkan akses disk. Terima kasih.

Tianyi Cui
sumber
Saya tidak tahu banyak tentang itu, tapi ini sepertinya tempat yang masuk akal untuk memulai.
Ritwik Bose
Mechko, saya pikir struktur data cache-aware umumnya tidak setuju dengan implementasi fungsional murni.
jbapple

Jawaban:

10

Saya tahu lebih banyak tentang struktur data yang berfungsi murni dari pada struktur data memori eksternal, tetapi saya akan mencobanya.

B-tree dapat ditulis dengan fungsi murni dengan menyalin path. Path akan pendek ( ), tetapi menyalin setiap blok membutuhkan menulis dalam blok.HAI(catatanBn)HAI(B)HAI(1)

Jika Anda ingin membiarkan struktur menjadi persisten sepenuhnya, dan bukan murni fungsional, saya pikir Anda dapat mengurangi jumlah penulisan dalam salinan node ke diharapkan diamortisasi, di mana adalah lebar kata, menggunakan array yang sepenuhnya persisten di "Tries yang Terus-menerus Bertahan untuk Kontrol Versi yang Efisien"HAI(lgw)w

Anda mungkin ingin menonton presentasi ini tentang RethinkDB , yang menggunakan struktur data murni fungsional karena biaya penulisan dalam SSD.

jbapple
sumber
4

Jika Anda tertarik untuk menulis database murni fungsional, Anda mungkin harus memeriksa tesis Phil Trinder tentang hal ini. Dia memiliki bab tentang penggunaan B-Trees.

Dominic Mulligan
sumber