Storage Organization of Databases Persistent data Most databases Transient data Exists only during program execution File organization Determines how records are physically placed on the disk Determines how records are accessed
16.2 Secondary Storage Devices Hard disk drive Bits (ones and zeros) Grouped into bytes or characters Disk capacity measures storage size Disks may be single or double-sided Concentric circles called tracks Tracks divided into blocks or sectors Disk packs Cylinder
System Design Goals Allow the DBMS to manage databases that exceed the amount of memory available. Reading/writing to disk is expensive, so it must be managed carefully to avoid large stalls and performance degradation.
Secondary Storage Devices (cont’d.) Techniques for efficient data access Data buffering Proper organization of data on disk Reading data ahead of request Proper scheduling of I/O requests Use of log disks to temporarily hold writes Use of SSDs or flash memory for recovery purposes
Solid State Device Storage Sometimes called flash storage Main component: controller Set of interconnected flash memory cards No moving parts Data less likely to be fragmented More costly than HDDs DRAM-based SSDs available Faster access times compared with flash
Magnetic Tape Storage Devices Sequential access Must scan preceding blocks Tape is mounted and scanned until required block is under read/write head Important functions Backup Archive
16.4 Placing File Records on Disk Record: collection of related data values or items Values correspond to record field Data types Numeric String Boolean Date/time Binary large objects (BLOBs) Unstructured objects
Placing File Records on Disk (cont’d.) Reasons for variable-length records One or more fields have variable length One or more fields are repeating One or more fields are optional File contains records of different types
Record Blocking and Spanned Versus Unspanned Records File records allocated to disk blocks Spanned records Larger than a single block Pointer at end of first block points to block containing remainder of record Unspanned Records not allowed to cross block boundaries
Record Blocking and Spanned Versus Unspanned Records (cont’d.) Allocating file blocks on disk Contiguous allocation Linked allocation Indexed allocation
Record Blocking and Spanned Versus Unspanned Records (cont’d.) File header (file descriptor) Contains file information needed by system programs Disk addresses of blocks Format descriptions
16.5 Operations on Files Retrieval operations No change to file data Update operations File change by insertion, deletion, or modification Records selected based on selection condition
Database Pages A page is a fixed-size block of data. It can contain tuples, meta-data, indexes, log records Each page is given a unique identifier. The DBMS uses an indirection layer to map page ids to physical locations.
File Organization Different DBMSs manage pages in files on disk in different ways. Heap File Organization Sequential / Sorted File Organization Hashing File Organization
16.6 Files of Unordered Records (Heap Files) Heap (or pile) file Records placed in file in order of insertion Inserting a new record is very efficient Searching for a record requires linear search Deletion techniques Rewrite the block Use deletion marker
Database Heap: Page Directory The DBMS maintains special pages that tracks the location of data pages in the database files. The directory also records the number of free slots per page. The DBMS has to make sure that the directory pages are in sync with the data pages.
16.7 Files of Ordered Records (Sorted Files) Ordered (sequential) file Records sorted by ordering field Called ordering key if ordering field is a key field Advantages Reading records in order of ordering key value is extremely efficient Finding next record Binary search technique
16.8 Hashing Techniques Hash function (randomizing function) Applied to hash field value of a record Yields address of the disk block of stored record Organization called hash file Search condition is equality condition on the hash field Hash field typically key field Hashing also internal search structure Used when group of records accessed exclusively by one field value
Hashing Techniques (cont’d.) Internal hashing Hash table Collision Hash field value for inserted record hashes to address already containing a different record Collision resolution Open addressing Chaining Multiple hashing
Hashing Techniques (cont’d.) External hashing for disk files Target address space made of buckets Bucket: one disk block or contiguous blocks Hashing function maps a key into relative bucket Table in file header converts bucket number to disk block address Collision problem less severe with buckets
Page Layout Every page contains a header of metadata about the page's contents. Page Size Checksum DBMS Version Compression Information How to organize data in a page? Tuple-oriented Log-structured
Tuple-Oriented The most common layout to store tuples in a page called: slotted pages The slot array maps "slots" to the tuples' starting position offsets. The header keeps track of: The # of used slots The offset of the starting location of the last slot used.
Log-Structured Instead of storing tuples in pages, the DBMS only stores log records. The system appends log records to the file of how the database was modified How to Read? How to Write? How to improve Reads?
Tuple Layout Each tuple is prefixed with a header that contains meta-data about it. Visibility info (concurrency control) Bit Map for NULL values. We do not need to store meta-data about the schema, why?
Record ID The DBMS needs a way to keep track of individual tuples. Each tuple is assigned a unique record identifier. Most common: page_id + offset/slot Can also contain file location info.