Software Engineer based in West Michigan
https://dan.drust.dev
dandrust@gmail.com
2 May 2023
Goal: Update the scanner class to be page-aware, using BufferPool to fetch data from disk during iteration
I made good progress this morning updating the Scanner class to rely on the BufferPool to do disk reads on page at a time. The scanner asks for a page, iterates through it, returns it, and then requests another.
This led to some light refactoring in the scanner class itself to recover from null reads more gracefully. Additionally, I mocked out a reference counting strategy that the BufferPool can use to evict buffers that are no longer in use.
I left myself a number of TODO’s in buffer_pool.rb - next time I’ll work through those so that we’ll have a (naive) eviction strategy in place and we can see a scanner over ratings.db iterate through all records with the BufferPool running out of memory.
Written by Dan Drust on 2 May 2023
Continue Reading: Database Daily: Buffer Pool