Tuesday, February 13th, 2024

The ideals which have lighted my way, and time after time have given me new courage to face life cheerfully, have been Kindness, Beauty, and Truth. The trite subjects of human efforts, possessions, outward success, luxury have always seemed to me contemptible.

— Albert Einstein

ECS165A thoughts

  • page range
    • base pages
      • column 1
      • column 2
    • tail pages
      • column 1
      • column 2
  • tail page index
    • tail RID (page, offset), (page, offset), ...
1: [ 01010101 01010101 ]

things to implement for writing

  • New metadata columns
    • Each record needs to have an additional metadata column CUMULATIVE_ENCODING that keeps track of whether or not a column has been updated in a past tail record.
    • Each tail record also needs to have a mapping page.
  • A special MappingPage used only for tail pages.
    • For now, a tuple is made up of two ints (page index, offset), 4 bytes and 2 bytes respectively
    • MappingPage needs to understand how tail RID mapping is encoded.
    • MappingPage can be easily serialized.
    • MappingPage needs to track the total number of records in the page at the beginning of the page. This means that, to have the same interface, the regular Page needs to do this as well. This page record count can also be used to
    • When reading from an offset, MappingPage needs to start from the beginning and parse each record (which requires a schema encoding value), since each value has a different length. This means that it can only be read at page range initialization.
  • Base record insertion

  • Tail record insertion
    • leaves rid, indirection, mapping, and cumulative encoding up to the __add_tail_record function.