Skip to content
Disk Storage, Hierarchical Databases, and the Birth of Data Navigation 8 min

Disk Storage, Hierarchical Databases, and the Birth of Data Navigation

SD
ScaleDojo
May 23, 2026
8 min read1,734 words
Disk Storage, Hierarchical Databases, and the Birth of Data Navigation

Before Databases: How We Stored Data on Spinning Disks

In 1956, IBM shipped the 305 RAMAC, the world's first commercial hard disk drive. It stored 5 megabytes of data on fifty 24-inch platters and weighed over a ton. The annual lease fee was $35,000. For context, that is roughly $400,000 in today's money for the storage capacity of a single MP3 file. This was considered a revolutionary improvement over magnetic tape, where finding a specific record required rewinding the entire spool.

The RAMAC's random access capability was genuinely transformative. For the first time, a program could jump directly to any record on disk without reading everything before it. Banks, airlines, and insurance companies immediately saw the potential: real-time account lookups, seat reservations, policy queries. The question was no longer whether computers could store business data, but how to organize it so programs could find what they needed efficiently.

The physical constraint of disk access time shaped every database design decision for the next 60 years. B-trees, buffer pools, write-ahead logs, and even today's SSDs are all optimized around one original challenge: spinning rust is slow.

Charles Bachman and the Network Model

Charles Bachman at General Electric solved the early data organization problem with the Integrated Data Store (IDS) in 1961. IDS was the first database management system in the modern sense: a separate software layer that managed data storage and retrieval independently from application code. Programs no longer wrote raw bytes to disk. They called IDS to store and fetch records.

Bachman's data model was a network of records connected by pointers. An order record pointed directly to its customer record's physical disk address. Retrieval was fast because you followed pointers without scanning anything. The problem was that these pointer chains were hardwired into the physical layout. Reorganize your storage and every pointer in every record had to be updated. Adding a new access pattern, say fetching all orders by region instead of by customer, required physically restructuring the entire dataset.

Bachman won the 1973 Turing Award for this work, becoming the first person to win computing's highest honor specifically for database contributions. He called himself 'the navigator' because programs had to navigate the network of pointers to find data. This navigation metaphor would define databases until 1970.

IBM IMS and the Hierarchical Model

When IBM and North American Rockwell needed to manage the bill of materials for the Apollo space program in 1966, they built IMS, the Information Management System. A spacecraft has a hierarchy: the vehicle contains modules, modules contain subsystems, subsystems contain components. This hierarchical structure mapped naturally to a tree data model.

IMS organized records as parent-child trees. A hospital patient is the root. Under each patient are admissions. Under each admission are procedures. Under each procedure are billing codes. Navigating down the tree was efficient. Answering questions that crossed tree branches was painful. 'Show me all patients who had procedure X across all hospital departments' required scanning every branch of every tree. The hierarchical model encoded one access pattern brilliantly and made every other access pattern expensive.

IMS is still running today. Airlines, banks, and insurance companies that built their core systems on IMS in the 1970s still process billions of transactions daily on the same fundamental architecture. The joke in the industry is that IMS has more active production transactions per day than any modern NoSQL database. Legacy systems do not die. They just accumulate wrappers.

What These Early Systems Teach Modern Designers

  • Physical and logical data models must be separate. Tying programs to physical storage layouts makes every schema change a crisis.
  • Access patterns baked into structure are brittle. The hierarchical model optimized for one query type and suffered for all others.
  • Hardware constraints shape data models. RAMAC's random access capability made databases possible. SSDs are reshaping them again.
  • Legacy systems outlive their creators. IMS processes more daily transactions in 2024 than most modern systems. Design for longevity.

From These Origins to Modern Schema Design

The LLD Lab's first level, The Passenger Manifest, puts you in the exact position of a 1960s programmer who has just been handed a flat file of Titanic passenger data. No structure. No types. No relationships. Your job is to impose order. Every CREATE TABLE statement you write is a direct response to the problems Bachman and the IMS team grappled with. The difference is that Codd gave you a better tool to do it with.

The Performance Implications That Never Went Away

The RAMAC's rotational latency, the time to wait for the platter to spin the target sector under the read head, was measured in milliseconds. Modern SSDs measure access time in microseconds. NVMe drives measure it in hundreds of nanoseconds. But the fundamental constraint that shaped IMS and every database architecture since still applies: accessing storage is orders of magnitude slower than accessing memory. B-trees, buffer pools, write-ahead logs, and log-structured merge trees are all strategies for minimizing the number of storage accesses required per operation. When you add an index to a table, you are solving the same problem RAMAC operators faced in 1956: how do you find a specific record without reading everything else?

Solid-state storage changed the numbers, not the principle. An NVMe read is still 100 times slower than a RAM read. A database that fits entirely in memory (Redis, Memcached) is still dramatically faster than one that reads from SSD. The tiered storage model, hot data in memory, warm data on SSD, cold data on spinning disk or object storage, directly descends from the hardware economics that RAMAC introduced in 1956. Every caching strategy you implement is a response to the same constraint.

The Navigation Model in Modern Guise

Bachman's navigation model did not die. It evolved into ORMs, document databases, and graph traversal APIs. When you call order.customer in an ORM and it issues a SELECT query, you are navigating a pointer chain. When MongoDB resolves a $lookup between collections, it is navigating object references. When a graph database follows edges between nodes, it is Bachman's model at its most pure. The relational model won the dominant-paradigm competition, but navigation never fully disappeared.

The key distinction is where the navigation logic lives. In Bachman's model it lived in application code. In modern ORMs it lives in the ORM layer. In graph databases it lives in the query language. The relational model's contribution was not eliminating navigation but replacing explicit pointer traversal with a declarative query language that lets the database decide the access path. Understanding this history helps you recognize when you are using the right model for your access patterns.

Interview Angle: Hardware Constraints in System Design

  • Latency numbers every engineer should know: L1 cache ~1ns, RAM access ~100ns, SSD read ~100 microseconds, HDD read ~10ms, network round-trip ~1ms.
  • B-trees are designed around disk page size (4-8KB). An internal node stores as many keys as fit in one page to minimize disk reads per lookup.
  • Buffer pools cache hot database pages in RAM. A well-tuned PostgreSQL instance keeps 80-90% of reads from the buffer pool, touching disk only for cache misses.
  • Write-ahead logging (WAL) is sequential writes, which are faster than random writes on both HDDs and SSDs. This is why PostgreSQL writes to the WAL before modifying data pages.
  • When an interviewer asks 'how does your database handle high write throughput?', the answer starts with understanding the I/O model, not just adding more servers.

The Performance Implications That Never Went Away

The RAMAC's rotational latency, the time to wait for the platter to spin the target sector under the read head, was measured in milliseconds. Modern SSDs measure access time in microseconds. NVMe drives measure it in hundreds of nanoseconds. But the fundamental constraint that shaped IMS and every database architecture since still applies: accessing storage is orders of magnitude slower than accessing memory. B-trees, buffer pools, write-ahead logs, and log-structured merge trees are all strategies for minimizing the number of storage accesses required per operation. When you add an index to a table, you are solving the same problem RAMAC operators faced in 1956: how do you find a specific record without reading everything else?

Solid-state storage changed the numbers, not the principle. An NVMe read is still 100 times slower than a RAM read. A database that fits entirely in memory (Redis, Memcached) is still dramatically faster than one that reads from SSD. The tiered storage model, hot data in memory, warm data on SSD, cold data on spinning disk or object storage, directly descends from the hardware economics that RAMAC introduced in 1956. Every caching strategy you implement is a response to the same constraint.

The Navigation Model in Modern Guise

Bachman's navigation model did not die. It evolved into ORMs, document databases, and graph traversal APIs. When you call order.customer in an ORM and it issues a SELECT query, you are navigating a pointer chain. When MongoDB resolves a $lookup between collections, it is navigating object references. When a graph database follows edges between nodes, it is Bachman's model at its most pure. The relational model won the dominant-paradigm competition, but navigation never fully disappeared.

The key distinction is where the navigation logic lives. In Bachman's model it lived in application code. In modern ORMs it lives in the ORM layer. In graph databases it lives in the query language. The relational model's contribution was not eliminating navigation but replacing explicit pointer traversal with a declarative query language that lets the database decide the access path. Understanding this history helps you recognize when you are using the right model for your access patterns.

Interview Angle: Hardware Constraints in System Design

  • Latency numbers every engineer should know: L1 cache ~1ns, RAM access ~100ns, SSD read ~100 microseconds, HDD read ~10ms, network round-trip ~1ms.
  • B-trees are designed around disk page size (4-8KB). An internal node stores as many keys as fit in one page to minimize disk reads per lookup.
  • Buffer pools cache hot database pages in RAM. A well-tuned PostgreSQL instance keeps 80-90% of reads from the buffer pool, touching disk only for cache misses.
  • Write-ahead logging (WAL) is sequential writes, which are faster than random writes on both HDDs and SSDs. This is why PostgreSQL writes to the WAL before modifying data pages.
  • When an interviewer asks 'how does your database handle high write throughput?', the answer starts with understanding the I/O model, not just adding more servers.

Enjoyed this article?

Share it with your network to help others level up their system design skills.

Discussion0

Join the Discussion

Sign in to leave comments, reply to others, or like insights.

Sign In to ScaleDojo

No comments yet. Be the first to start the thread!

Related Articles

Enjoyed this content?

Your support keeps us creating free resources

We put a lot of hours into researching and writing these guides. If it helped you, consider buying us a coffee. Every bit goes toward keeping ScaleDojo's content free and growing.

$

One-time payment via Stripe. ScaleDojo account required.

ScaleDojo Logo
Initializing ScaleDojo