Skip to content

Disk Storage, Basic File Structures, Hashing, and Modern Storage Architectures

16.1 Storage Hierarchy

Databases persist on secondary storage (magnetic disks, SSDs). Data is accessed via physical file structures.

LevelDevicesVolatile?
PrimaryCPU cache (SRAM), main memory (DRAM)Yes
SecondaryMagnetic disks, flash memory, SSDsNo (persistent)
TertiaryRemovable media: CD-ROM, DVD, tapeNo

Persistent data survives program execution; transient data exists only during execution. File organization determines how records are physically placed on disk and thus how they are accessed.

Characteristics (capacity / access time / bandwidth / cost)

  • Faster storage = more expensive per byte and smaller capacity.
  • Main memory: fastest, costly; disk: cheaper, slower; tape: cheapest, slowest (sequential).

16.2 Secondary Storage Devices (Disks)

Magnetic disk geometry

  • Bits grouped into bytes/characters; capacity measured in bytes.
  • Disks may be single- or double-sided.
  • Tracks: concentric circles; a cylinder = the set of tracks at the same position across surfaces of a disk pack.
  • Tracks divided into blocks / sectors, separated by interblock gaps.
  • Formatting divides tracks into equal-sized blocks. Data transfers in units of disk blocks.
  • Read/write head reads/writes; disk controller interfaces the drive to the system (standard interfaces: SCSI, SATA, SAS).
  • Hardware address supplied to I/O hardware; blocks moved via a buffer.

Efficient access techniques: data buffering, good on-disk organization, read-ahead, I/O scheduling, log disks for temporary writes, and SSDs/flash for recovery.

Solid-state / flash storage

  • SSD: controller + interconnected flash memory cards; no moving parts; data less fragmented; more costly than HDD; faster access. DRAM-based SSDs are even faster.

Magnetic tape

  • Sequential access: must scan preceding blocks to reach a target. Used for backup / archive (mount, scan, read).

16.3 Buffering of Blocks

  • Buffering is most useful when processes run concurrently. Double buffering lets one buffer fill while the other is processed, enabling a continuous stream of blocks.
  • Buffer management tracks:
    • Pin count: number of active users holding the block (pinned blocks not evicted).
    • Dirty bit: block modified in memory but not yet written to disk.
  • Replacement strategies: LRU (least recently used), Clock, FIFO.

16.4 Placing File Records on Disk

  • A record = collection of related values (fields) with types: numeric, string, Boolean, date/time, BLOB (unstructured objects).
  • Variable-length records arise from variable-length fields, repeating fields, optional fields, or mixed record types.
  • Spanned vs. unspanned:
    • Unspanned: a record cannot cross a block boundary (wastes some space at block end).
    • Spanned: a record larger than one block is split across blocks via a pointer to the next block.
  • Blocking factor = average number of records per block for the file.

Allocating file blocks

  • Contiguous: blocks placed adjaciously (fast sequential, poor for growth).
  • Linked: blocks linked by pointers (good for append, slow random).
  • Indexed: an index block holds addresses (flexible).
  • File header (descriptor): disk addresses, format descriptions, etc.

16.5 Operations on Files

  • Retrieval (no data change): open, find, read, findNext, scan, close.
  • Update: insertion, deletion, modification; records selected by a selection condition.

Heap (unordered / pile) files

Records appended in insertion order. Insert = O(1) (append); search = linear scan; deletion via rewriting the block or a deletion marker.

Ordered (sequential) files

Records sorted by an ordering field (an ordering key if it's a key). Reading in key order is extremely efficient; binary search finds a record. Good for range queries but insertion/deletion is costly (may require reorganization).

OrganizationSearchInsertDeleteBest for
HeapO(n) linearO(1)marker/rewriteappend-heavy
OrderedO(log n) binaryslowslowsorted scans/ranges
HashedO(1)O(1)O(1)equality lookups

16.8 Hashing Techniques

A hash function (randomizing function) maps a record's hash field (usually the key) to the disk-block address. Best when records are accessed exclusively by equality on that field.

Internal hashing (in memory)

  • A hash table with buckets; collision = two records map to the same address.
  • Resolution: open addressing (probe next slot), chaining (linked overflow), multiple hashing (second function).

External hashing (disk)

  • Address space = buckets, each a disk block (or contiguous blocks).
  • A header table maps bucket number → disk address.
  • Static hashing: fixed number of buckets (overflow chains handle collisions; performance degrades as the file grows).

Dynamic hashing (grow/shrink)

  • Extendible hashing: directory of bucket pointers; doubles as needed; performance does not degrade as file grows.
  • Dynamic hashing: tree-structured directory.
  • Linear hashing: expands/shrinks buckets without a directory.

16.9 Other Primary File Organizations

  • Files of mixed records: relationships via logical field references; physical clustering keeps related records together.
  • B-tree data structure used for indexed access (Ch. 17).
  • Column-based storage: stores columns together (good for analytics/warehousing).

16.10 RAID (Parallelizing Disk Access)

RAID (Redundant Array of Independent Disks) improves speed and reliability via data striping (bit-level or block-level) across multiple disks, plus redundancy.

LevelSchemeRedundancyNotes
0Block striping, no redundancyNoneHighest speed, no fault tolerance
1Mirroring (duplicate disks)Full copySimplest rebuild; costly
2Hamming-code ECCMemory-styleRare
3Single parity disk1 diskController-based parity
4Block-level striping + parity disk1 diskParity bottleneck
5Block striping + distributed parity1 diskPreferred for large volumes
6P+Q double redundancy2 disksTolerates two failures
  • Performance: striping raises transfer rates.
  • Reliability: mirroring/shadowing + parity. RAID 3 and 5 preferred for large storage; level 1 rebuilds easiest.

16.11 Modern Storage Architectures

  • Storage Area Network (SAN): storage peripherals as nodes on a high-speed network.
  • Network-Attached Storage (NAS): servers for file sharing; scalable/reliable/flexible.
  • iSCSI: SCSI commands sent to remote SCSI devices over IP.
  • FCIP / FCoE: Fibre Channel transported over IP / Ethernet.
  • Automated storage tiering: moves hot data to SSDs, cold data to cheaper tiers.
  • Object-based storage: data as objects (with metadata + global ID) rather than blocks — ideal for unstructured, scalable data.

Disk Access Time Components

Reading one block involves:

  1. Seek time: arm moves to the target cylinder (dominant for random access).
  2. Rotational delay (latency): platter rotates until the sector is under the head (avg = half a rotation).
  3. Transfer time: block is read/written at the disk's data rate.

Total access time seek + rotational + transfer. Sequential access amortizes seek/rotation over many blocks; random access pays full cost per block. This is why clustering related records and using indexes (to convert random into sequential-ish access) matters.

Access-time comparison table

OrganizationTypical accessWhen best
Heap (sequential scan)b block readsfull scans, appends
Ordered (binary search)log2b + rangesorted range queries
Hash (equality)~1–2 block readspoint lookups
B+-tree indexlog levels + leafequality + range

Record Format Considerations

  • Fixed-length records: easy to compute offset = slot × length; fast random access.
  • Variable-length records: need a length field or delimiter; an offset directory at the start of each block maps field positions. Reclaiming deleted space may use free-space lists or periodic reorganization.
  • Spanned records require a pointer at the end of the first fragment to the continuation block; reading a spanned record may touch multiple blocks (worst case one per fragment).

File Header (Descriptor) Contents

A file header stores: file name, record format/length, blocking factor, disk addresses of the first/last blocks (and index blocks if indexed), free-space information, and the number of current records. The OS/DBMS reads the header before any I/O to locate data.

Chapter Summary

  • Storage hierarchy: primary (volatile) → secondary (disk/SSD, persistent) → tertiary (tape). Disk access is the dominant cost; organize to minimize block reads.
  • Disk = tracks/cylinders/sectors/blocks; controller (SCSI/SATA/SAS); buffering (double buffer, LRU/clock/FIFO, pin/dirty).
  • Records: variable-length; spanned/unspanned; blocking factor. File block allocation: contiguous/linked/indexed.
  • File organizations: heap (insert-fast, search-linear), ordered (binary search, range-friendly), hashed (O(1) equality). Hashing: internal (open addressing/chaining) and external (buckets, static/dynamic/extendible/linear).
  • RAID 0–6: striping + mirroring/parity for speed and reliability. Modern: SAN/NAS, iSCSI, tiering, object storage.