Software Engineer based in West Michigan
https://dan.drust.dev
dandrust@gmail.com
29 April 2023
Goal: Read a page from a database file, sort it, and write the sorted result back to disk.
Round 2 for today! A bonus round!
I re-built the ratings database file to use the updated format that I worked out this morning. From there, I played around with IO.pread (positional read) to grab a 4kb chunk at a 4096 byte offset. Worked like a charm!
From there, I started extracting the table-scanning iterator into it’s own executor class. Since you can wrap a string with the StringIO class, the Scanner class can take a File or a StringIO.
Finally, sort_chunk.rb is a proof-of-concept for reading a chunk of a database file, sorting it in-memory, and then writing the result back to disk.
Next up is to write an out-of-core sorting algorithm to sort the entire ratings database file!
Written by Dan Drust on 29 April 2023
Continue Reading: Database Daily: Detecting Page B…