On 3/6/23 18:24, Siddharth Jain wrote:
I am trying to sharpen my understanding of Postgres. As I understand,
Postgres does not write directly to disk blocks. It uses the file system
provided by the OS:
https://dba.stackexchange.com/questions/80036/is-there-a-way-to-store-a-postgresql-database-directly-on-a-block-device-not-fi
My question: How can it then store a B Tree on disk? I would think storing
a B Tree requires storing disk offset addresses and so on (for a node to
navigate to another etc.). For this, one would need to write directly to
the disk using low-level disk access functions and not use file system API.
Disk offsets... *file* offsets... one is just a step up on the abstraction
layer.
How can that be? The OS only knows about Logical Block Addresses, which are
a huge list of block numbers (just like userland software sees files as long
lists of bytes). It hasn't see cylinders, heads and platters in almost
FORTY (more, probably, for SCSI and mainframe systems) years.
--
Born in Arizona, moved to Babylonia.