Bài giảng Database systems - Data storage & indexing structures for files

Exercise (2) 1. Calculate the record size R in bytes. 2. Calculate the blocking factor bfr and the number of file blocks b, assuming an unspanned organization. 3. Suppose that the file is ordered by the key field Ssn and we want to construct a primary index on Ssn. Calculate: a. The index blocking factor bfri. b. the number of first-level index entries and the number of first-level index blocks. 4. If we make it into a multilevel index (two levels). a. Calculate the total number of blocks required by the multilevel index. b. the number of block accesses needed to search for and retrieve a record from the file—given its Ssn value.

pdf94 trang | Chia sẻ: vutrong32 | Ngày: 17/10/2018 | Lượt xem: 16 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Database systems - Data storage & indexing structures for files, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
DATABASE SYSTEMS Nguyen Ngoc Thien An DATA STORAGE & INDEXING STRUCTURES FOR FILES Spring 2014 2 Physical Database Design 3  The process of physical database design involves choosing the particular data organization techniques that best suit the given application requirements.  The techniques used to store large amounts of structured data on disk are important for database designers, the DBA, and implementers of a DBMS. Contents 4  Data Storage  Storage Hierarchy  Storage of Databases  RAID Technology  Storage Area Networks  Indexing Structures for Files  Indexes  Single-Level Ordered Indexes  Multi-Level Indexes  Dynamic Multilevel Indexes (B-tree & B+-tree) Reading Suggestion: [1] Chapter 17, 18 Storage Hierarchy 5 Primary Storage Registers - Can be operated on directly by the computer’s CPU. - Volatile. - Faster access. - Smaller capacity. - More expensive. Cache Memories (SRAM) Main Memories (DRAM) Secondary Storage Hard-disk Drives (HDD), Solid- state Drives (SSD) - Cannot be processed directly by the CPU. First it must be copied into primary storage and then processed by the CPU. - Non-volatile. Tertiary Storage Optical Disks, Tape Jukeboxes, Magnetic Tapes, Tape Libraries - Slower access. - Larger capacity. - Cheaper. Contents 6  Data Storage  Storage Hierarchy  Storage of Databases  RAID Technology  Storage Area Networks  Indexing Structures for Files  Indexes  Single-Level Ordered Indexes  Multi-Level Indexes  Dynamic Multilevel Indexes (B-tree & B+-tree) Contents 7  Storage of Databases  Introduction  Magnetic Disks  Magnetic Tapes  Records & Files  Record Blocking  Typical Operations on Files  Record Organization of Files  Unordered Files  Ordered Files  Hash Files  Static Hashing  Hashing for Dynamic Files Storage of Databases (1) 8  Most databases are large and stored permanently.  Databases usually reside on secondary and tertiary storage because:  Databases are too large to fit entirely in main memory.  Volatility of primary storage devices.  The high cost of primary storage devices per unit of data. Storage of Databases (2) 9  Databases are stored physically as files of records.  Each record is a collection of data values.  The values can be interpreted as facts about entities, their attributes, and their relationships.  Objective: locating records efficiently when they are needed.  Portions of the database are read into and written from buffers in main memory as needed.  File organizations:  Primary organization: the physical arrangement of file records on the disk.  Secondary organization (or auxiliary access structure): allows efficient access to file records based on alternate fields than those used for the primary file organization (E.g. indexes). Storage of Databases (3) 10  Magnetic disks  For online databases (accessed and processed frequently).  Can be accessed directly at any time.  Magnetic tapes  For offline databases (backing up).  Lower cost than magnetic disks.  Access is quite slow  an automatic loading device to load a tape is needed before the data becomes available. Contents 11  Storage of Databases  Introduction  Magnetic Disks  Magnetic Tapes  Records & Files  Record Blocking  Typical Operations on Files  Record Organization of Files  Unordered Files  Ordered Files  Hash Files  Static Hashing  Hashing for Dynamic Files Magnetic Disks (1) 12  Magnetic disk  Shaped as a thin circular disk.  Made of magnetic material.  Data stored as magnetized areas on surfaces.  Single-sided vs. Double-sided.  Protected by a plastic or acrylic cover.  Disk pack  Contain several magnetic disks connected to a rotating spindle.  Mounted in the disk drive.  A read-write head  For each surface.  Attached to a mechanical arm.  All arms are connected to an actuator.  A disk is a random access addressable device. Magnetic Disks (2) 13 14 Magnetic Disks (3) 15  Disks are divided into tracks on each disk surface.  Tracks: concentric circles of small width.  Cylinder: include tracks with the same diameter on the various surfaces.  Data stored on one cylinder can be retrieved much faster than if it were distributed among different cylinders.  A track is divided into smaller blocks or sectors.  The division into sectors:  Hard-coded (cannot be changed).  Have many types of sector organization.  The division into blocks:  A track is divided into equal-sized blocks.  Set by the OS during disk formatting.  The block size B is fixed for each system.  Typical block sizes: from 512 bytes to 8192 bytes.  Transfer of data between main memory and disk takes place in units of disk blocks. Magnetic Disks (4) 16 Magnetic Disks (5) 17  Locate and transfer an arbitrary block, given its address:  Position the read/write head on the correct track (Seek time).  Disk rotation moves the block under the read-write head.  The total time = seek time + rotational delay + block transfer time.  The seek time and rotational delay are usually much larger than the block transfer time.  Double buffering can be used to speed up the transfer of contiguous disk blocks.  A physical disk block (hardware) address consists of:  a cylinder number.  a track number or surface number (within the cylinder).  block number (within track). 18 Contents 19  Storage of Databases  Introduction  Magnetic Disks  Magnetic Tapes  Records & Files  Record Blocking  Typical Operations on Files  Record Organization of Files  Unordered Files  Ordered Files  Hash Files  Static Hashing  Hashing for Dynamic Files Magnetic Tapes 20  Magnetic tapes are sequential access devices.  Data is stored on reels of high-capacity magnetic tape.  Tape access can be slow.  Usage  Not used to store online data, except for some specialized applications.  Used for:  Back-up database.  In case the data is lost due to a disk crash.  Excessively large database files.  Archived database (database files that are seldom used or are outdated but required for historical record keeping). 21 Contents 22  Storage of Databases  Introduction  Magnetic Disks  Magnetic Tapes  Records & Files  Record Blocking  Typical Operations on Files  Record Organization of Files  Unordered Files  Ordered Files  Hash Files  Static Hashing  Hashing for Dynamic Files Records & Files 23  Data is stored in the form of records.  Records contain fields which have values of particular types.  E.g.: amount, date, time, age  Record type: collection of field names and their corresponding data types.  Fields may have fixed lengths or variable lengths.  Separator characters, field lengths or field type codes may be needed so that records can be “parsed”.  A file is a sequence of records.  A file descriptor (or file header) includes information describing the file.  A file can be made up of fixed-length records or variable-length records. 24 Record Blocking (1) 25  Techniques of the disk block allocation for a file may be combined:  Contiguous allocation.  Linked allocation.  Clusters / File segments / Extents (linked clusters of consecutive disk blocks).  Indexed allocation.  File records can be unspanned or spanned:  Unspanned: no record can span two blocks.  Usually used for files of fixed-length records.  Spanned: a record can be stored in more than one block.  Usually used for files of variable-length records.  Files of variable-length records require additional information stored in each record, such as separator characters and field types.  The blocking factor bfr: the (average) number of records per block.  The block size may be larger or smaller than the record size. Record Blocking (2) 26 Typical Operations on Files 27  OPEN: Prepare the file for access, and associates a pointer refering to a current file record at each point in time.  FIND: Search for the first file record satisfying a certain condition, and make it the current file record.  FINDNEXT: Search for the next file record (from the current record) satisfying a certain condition, and make it the current file record.  READ: Read the current file record into a program variable.  INSERT: Insert a new record into the file and make it the current file record.  DELETE: Remove the current file record from the file.  MODIFY: Change the values of some fields of the current file record.  CLOSE: Terminate access to the file.  REORGANIZE: Reorganize the file records.  For example, the records marked deleted are physically removed from the file or a new organization of the file records is created.  READ_ORDERED: Read the file blocks in order of a specific field. Contents 28  Storage of Databases  Introduction  Magnetic Disks  Magnetic Tapes  Records & Files  Record Blocking  Typical Operations on Files  Record Organization of Files  Unordered Files  Ordered Files  Hash Files  Static Hashing  Hashing for Dynamic Files Record Organization of Files 29  Types of record organization in a file:  Unordered file.  Ordered file.  Hash file. Unordered Files 30  Also called a heap file or a pile file.  Insertion: New records are inserted at the end of the file  very efficient.  Search for a record: use a linear search.  Reading and searching half the file blocks on the average  quite expensive.  Deletion: rewrite the block or use deletion marker  Require one of operations:  Periodic file reorganization to reclaim the unused space.  Using the space of deleted records for inserting.  Modifying a variable-length record may require deleting the old record and inserting a modified record.  Reading the records in order of a particular field requires sorting the file records. Ordered Files 31  Also called a sequential file.  The physical order of records in a file is based on the values of an ordering field.  Search for a record on its ordering field: use a binary search.  Access log2 of the file blocks on the average.  Reading the records in order of the ordering field: quite efficient.  Insertion and deletion: expensive.  Insertion: improve efficiency by one of techniques:  Keep some unused space in each block for new records.  Keep a temporary unordered file (overflow / transaction file) for new records  periodically merged with the main ordered file.  Deletion: use deletion markers and periodic reorganization.  Modification: depend on the search condition and the modified field. 32 Average Access Times 33 Contents 34  Storage of Databases  Introduction  Magnetic Disks  Magnetic Tapes  Records & Files  Record Blocking  Typical Operations on Files  Record Organization of Files  Unordered Files  Ordered Files  Hash Files  Static Hashing  Hashing for Dynamic Files Hash Files 35  Hashing for disk files is called External Hashing.  The target address space is made of buckets.  Each bucket holds multiple records.  A bucket is either one disk block or a cluster of contiguous disk blocks.  A record is stored in bucket i: 𝑖 = ℎ(𝐾).  h: a hash function.  K: the hash key value of a record.  Search is very efficient on the hash key.  A collision occurs when a new record hashes to a bucket that is already full.  Good hash function: distribute records uniformly over the address space  Minimize collisions (decrease search time) and not leave many unused locations.  A hash file should be kept 70 - 90% full. Static Hashing (1) 36  A fixed number of buckets M is allocated.  The file blocks are divided into M equal-sized buckets, numbered bucket0, bucket1, ..., bucketM-1.  Serious drawback for dynamic files:  Fixed number of buckets M is a problem if the number of records in the file grows or shrinks.  May have to change M and the hashing function  quite time-consuming for large files.  Collision resolution:  An overflow file is kept for storing such records.  Overflow records that hash to each bucket can be linked together. Static Hashing (2) 37 Static Hashing (3) 38 Hashing for Dynamic Files 39  Hashing techniques for expanding or shrinking a file dynamically:  Extendible hashing: store an access structure in addition to the file.  Dynamic hashing: use an access structure based on binary tree data structures.  Linear hashing: not require additional access structures.  Extendible and dynamic hashing do not require an overflow area. Extendible Hashing 40  𝒅: the global depth of the directory.  Directory: an array of 2𝑑 bucket addresses.  The first (high-order) 𝒅 bits of a hash value determine a directory entry.  The address in each directory entry determines the bucket.  𝒅′: the local depth stored with each bucket.  Specify the number of bits on which the bucket contents are based.  Some directory entries with the same first 𝒅’ bits for their hash values may contain the same bucket address if all their records fit in a single bucket.  Doubling d occurs if a bucket having 𝑑’ = 𝑑 overflows.  Halving d occurs if 𝑑 > 𝑑’ for all the buckets.  Most record retrievals require 2 block accesses - one to the directory and the other to the bucket. 41 Dynamic Hashing 42  The eventual storage of records in buckets is similar to extendible hashing.  Directory: use a binary tree.  Internal nodes having 2 pointers  Left pointer for the 0 bit (in the hashed address).  Right pointer for the 1 bit (in the hashed address).  Leaf nodes: hold a pointer to the actual bucket. 43 Linear Hashing (1) 44  No directory but maintain overflow area(s) for collisions.  At first:  𝑛 = 0; 𝑀 buckets numbered 0, 1, , 𝑀 − 1  Initial hash function: ℎ𝑖(𝐾) = 𝐾 𝑚𝑜𝑑 𝑀  When a collision leads to an overflow record in any bucket:  Split bucket 𝑛 into 2 buckets: 𝑛 (original) & 𝑀 + 𝑛 (new).  Redistribute records of the original bucket into the 2 buckets based on ℎ𝑖+1(𝐾) = 𝐾 𝑚𝑜𝑑 2𝑀.  𝑛 = 𝑛 + 1  Buckets are split in the linear order 0, 1, 2, 3, ....  When 𝑛 = 𝑀:  All the original buckets have been split  the records in overflow are eventually redistributed into regular buckets.  The file now has 2𝑀 instead of 𝑀 buckets.  All buckets use ℎ𝑖+1  𝑛 is reset to 0. Linear Hashing (2) 45  Generally, a sequence of hashing functions is used:  ℎ𝑖+𝑗 𝐾 = 𝐾 𝑚𝑜𝑑 (2 𝑗𝑀), where 𝑗 = 0, 1, 2,  Retrieve a record with hash key value K:  Apply ℎ𝑖(𝐾).  If ℎ𝑖 𝐾 < 𝑛  apply ℎ𝑖+1(𝐾).  The file load factor can be used to trigger splits and combinations.  The file load factor 𝑙 = 𝑟/(𝑏𝑓𝑟 ∗ 𝑁)  𝑟: the current number of file records.  𝑏𝑓𝑟: the maximum number of records that can fit in a bucket.  𝑁: the current number of file buckets.  Split when 𝑙 is larger than a certain threshold (instead of whenever an overflow occurs).  Recombine when 𝑙 falls below a certain threshold. Contents 46  Data Storage  Storage Hierarchy  Storage of Databases  RAID Technology  Storage Area Networks  Indexing Structures for Files  Indexes  Single-Level Ordered Indexes  Multi-Level Indexes  Dynamic Multilevel Indexes (B-tree & B+-tree) RAID Technology (1) 47  Secondary storage technology must take steps to keep up in performance and reliability with processor technology.  Parallelizing disk access using RAID technology (Redundant Arrays of Independent Disks).  The main goal of RAID is to even out the widely different rates of performance improvement of disks against those in memory and microprocessors. RAID Technology (2) 48  A large array of small independent disks acts as a single higher-performance logical disk.  Data striping:  Distribute data transparently over multiple disks to make them appear as a single large, fast disk.  Utilize parallelism to improve disk performance. RAID Technology (3) 49  Different RAID organizations were defined based on different combinations of the two factors of granularity of data interleaving (striping) and pattern used to compute redundant information.  RAID level 0: no redundant data  the best write performance at the risk of data loss.  RAID level 1 uses mirrored disks.  RAID level 2 uses memory-style redundancy by using Hamming codes (contain parity bits for distinct overlapping subsets of components). Level 2 includes both error detection and correction.  RADI level 3 uses a single parity disk relying on the disk controller to figure out which disk has failed.  RAID levels 4 and 5 use block-level data striping, with level 5 distributing data and parity information across all disks.  RAID level 6 applies the so-called P + Q redundancy scheme using Reed-Soloman codes to protect against up to two disk failures by using just two redundant disks. 50 Contents 51  Data Storage  Storage Hierarchy  Storage of Databases  RAID Technology  Storage Area Networks  Indexing Structures for Files  Indexes  Single-Level Ordered Indexes  Multi-Level Indexes  Dynamic Multilevel Indexes (B-tree & B+-tree) Storage Area Networks (1) 52  Organizations have a need to move from a static fixed data center oriented operation to a more flexible and dynamic infrastructure for information processing.  Storage Area Networks (SANs).  In a SAN:  Online storage peripherals are configured as nodes on a high-speed network and can be attached and detached from servers in a very flexible manner.  Allows storage systems to be placed at longer distances from the servers and provide different performance and connectivity options. Storage Area Networks (2) 53  Advantages of SANs:  Flexible many-to-many connectivity among servers and storage devices using fiber channel hubs and switches.  Up to 10km separation between a server and a storage system using appropriate fiber optic cables.  Better isolation capabilities allowing non-disruptive addition of new peripherals and servers.  SANs face the problem of combining storage options from multiple vendors and dealing with evolving standards of storage management software and hardware. 54 Contents 55  Data Storage  Storage Hierarchy  Storage of Databases  RAID Technology  Storage Area Networks  Indexing Structures for Files  Indexes  Single-Level Ordered Indexes  Multi-Level Indexes  Dynamic Multilevel Indexes (B-tree & B+-tree) Book Index 56 Indexes (1) 57  Index structures  Additional auxiliary files.  Provide secondary access paths to records without affecting their physical placement in the data file.  Enable efficient search based on the indexing fields.  An index is usually specified on one field of the file and also can be specified on multiple fields.  Multiple indexes on different fields can be constructed on the same file. Indexes (2) 58  The index file usually occupies considerably less disk blocks than the data file because its entries are much smaller.  Indexes can be dense or sparse.  A dense index has an index entry for every search key value (and hence every record) in the data file.  A sparse (or nondense) index has index entries for only some of the search values. Contents 59  Data Storage  Storage Hierarchy  Storage of Databases  RAID Technology  Storage Area Networks  Indexing Structures for Files  Indexes  Single-Level Ordered Indexes  Multi-Level Indexes  Dynamic Multilevel Indexes (B-tree & B+-tree) Contents 60  Single-Level Ordered Indexes  Primary Indexes  Clustering Indexes  Secondary Indexes Single-Level Ordered Indexes 61  Form of an index: a file of entries <field value, pointer to block/record> ordered by field value.  A binary search on the index requires fewer block accesses than a binary search on the data file.  Types of single-level ordered indexes:  Primary index: on the ordering key field of an ordered file.  Clustering index: on the ordering field (but not key field) of an ordered file.  Secondary index: on any nonordering field of a file.  A file can have at most one physical ordering field.  It can have at most one primary index or one clustering index, but not both.  A data file can have several secondary indexes in addition to its primary access method. Primary Indexes (1) 62  A primary index is specified on the ordering key field (primary key) of an ordered data file.  Records in the data file is physically ordered on the ordering key field.  Index file:  An ordered file of fixed length index entries.  One index entry for each data block:  𝐾 𝑖 : the key field value of the first record in block 𝑖 (called the block anchor or anchor record).  𝑃(𝑖): a pointer to block 𝑖.  A primary index is a sparse index.  A similar scheme can use the last record in a block. 63 Primary Indexes (2) 64  E.g.: Given the following data file: EMPLOYEE (Name, Ssn, Address, Job, Sal,...)  Suppose that:  Record size: 𝑅 = 100 𝑏𝑦𝑡𝑒𝑠.  Block size: 𝐵 = 1024 𝑏𝑦𝑡𝑒𝑠.  Number of records: 𝑟 = 30,000 𝑟𝑒𝑐𝑜𝑟𝑑𝑠.  Then, we get:  Blocking factor: 𝑏𝑓𝑟 = 𝐵/𝑅 = 1024/100 = 10 𝑟𝑒𝑐𝑜𝑟𝑑𝑠/𝑏𝑙𝑜𝑐𝑘.  Number of file blocks: 𝑏 = 𝑟/𝑏𝑓𝑟 = 30000/10 = 3000 𝑏𝑙𝑜𝑐𝑘𝑠.  For a primary index on the ordering key field SSN, assume the field size 𝑉𝑆𝑆𝑁 = 9 𝑏𝑦𝑡𝑒𝑠 , the block pointer size 𝑃𝑅 = 6 𝑏𝑦𝑡𝑒𝑠. Primary Indexes (3) 65  Then:  Index entry: 𝑅𝑖 = (𝑉𝑆𝑆𝑁 + 𝑃𝑅) = (9 + 6) = 15 𝑏𝑦𝑡𝑒𝑠.  Index blocking factor: 𝑏𝑓𝑟𝑖 = 𝐵/𝑅𝑖 = 1024/15 = 68 𝑒𝑛𝑡𝑟𝑖𝑒𝑠/ 𝑏𝑙𝑜𝑐𝑘.  Number of index blocks: 𝑏𝑖 = 𝑟𝑖/𝑏𝑓𝑟𝑖 = 𝑏/𝑏𝑓𝑟𝑖 = 3000/68 = 45 𝑏𝑙𝑜𝑐𝑘𝑠.  Binary search on the index file: 𝑙𝑜𝑔2(𝑏𝑖) = 𝑙𝑜𝑔2(45) = 6 𝑏𝑙𝑜𝑐𝑘 𝑎𝑐𝑐𝑒𝑠𝑠𝑒𝑠.  To search for a record using the index, we need one additional block access to the data file: 6 + 1 = 7 𝑏𝑙𝑜𝑐𝑘 𝑎𝑐𝑐𝑒𝑠𝑠𝑒𝑠.  Compare with the average cost of binary search on the ordering key field without using the index: 𝑙𝑜𝑔2(𝑏) = 𝑙𝑜𝑔2(3000) = 12 𝑏𝑙𝑜𝑐𝑘 𝑎𝑐𝑐𝑒𝑠𝑠𝑒𝑠. Contents 66  Single-Level Ordered Indexes  Primary Indexes  Clustering Indexes  Secondary Indexes Clustering Indexes 67  A clustering index is defined on the ordering nonkey field (clustering field) of an ordered data file.  The file records are physically ordered on the clustering field.  A nonkey field does not have a distinct value for each record.  The index includes one index entry for each distinct value of the clustering field.  Each index entry contains the clustering value and a pointer to the first data block having records of that clustering value.  A clustering index is a sparse index. 68 69 Contents 70  Single-Level Ordered Indexes  Primary Indexes  Clustering Indexes  Secondary Indexes Secondary Indexes (1) 71  A secondary index provides a secondary means of accessing a file for which some primary access already exists.  The data file records could be ordered, unordered, or hashed.  The secondary index is specified on nonordering field which may be a candidate key or a non-key.  Many secondary indexes can be created for the same file.  The index is an ordered file with two fields. Secondary Indexes (2) 72  A secondary index on a nonordering key field:  One index entry for each record in the data file.  Include the value of the field and a pointer either to the block storing the record or to the record itself. A dense index.  The improvement in search time for an arbitrary record is much greater for a secondary index than for a primary index. 73 Secondary Indexes (3) 74  E.g.: (contitnue the example of Primary Indexes)  We have:  Record size: 𝑅 = 100 𝑏𝑦𝑡𝑒𝑠.  Block size: 𝐵 = 1024 𝑏𝑦𝑡𝑒𝑠.  Number of records: 𝑟 = 30,000 𝑟𝑒𝑐𝑜𝑟𝑑𝑠.  Blocking factor: 𝑏𝑓𝑟 = 10 𝑟𝑒𝑐𝑜𝑟𝑑𝑠/𝑏𝑙𝑜𝑐𝑘.  Number of file blocks: 𝑏 = 3000 𝑏𝑙𝑜𝑐𝑘𝑠.  Primary index on the ordering key field 𝑉1:  Ordering key field size: 𝑉1 = 9 𝑏𝑦𝑡𝑒𝑠.  Block pointer size: 𝑃𝑅 = 6 𝑏𝑦𝑡𝑒𝑠.  Search on 𝑉1 using the index: 7 𝑏𝑙𝑜𝑐𝑘 𝑎𝑐𝑐𝑒𝑠𝑠𝑒𝑠.  Binary search on 𝑉1: 𝑙𝑜𝑔2(𝑏) = 12 𝑏𝑙𝑜𝑐𝑘 𝑎𝑐𝑐𝑒𝑠𝑠𝑒𝑠. Secondary Indexes (4) 75  Secondary index on the nonordering key field 𝑉2:  Ordering key field size: 𝑉2 = 9 𝑏𝑦𝑡𝑒𝑠.  Block pointer size: 𝑃𝑅 = 6 𝑏𝑦𝑡𝑒𝑠.  Index entry: 𝑅𝑖 = (𝑉𝑆𝑆𝑁 + 𝑃𝑅) = (9 + 6) = 15 𝑏𝑦𝑡𝑒𝑠.  Index blocking factor: 𝑏𝑓𝑟𝑖 = 𝐵/𝑅𝑖 = 1024/15 = 68 𝑒𝑛𝑡𝑟𝑖𝑒𝑠/ 𝑏𝑙𝑜𝑐𝑘.  Number of index blocks: 𝑏𝑖 = 𝑟𝑖/𝑏𝑓𝑟𝑖 = 𝑟/𝑏𝑓𝑟𝑖 = 30000/68 = 442 𝑏𝑙𝑜𝑐𝑘𝑠.  Binary search on the index: 𝑙𝑜𝑔2(𝑏𝑖) = 𝑙𝑜𝑔2(442) = 9 𝑏𝑙𝑜𝑐𝑘 𝑎𝑐𝑐𝑒𝑠𝑠𝑒𝑠.  To search for a record using the index, we need one additional block access to the data file: 9 + 1 = 10 𝑏𝑙𝑜𝑐𝑘 𝑎𝑐𝑐𝑒𝑠𝑠𝑒𝑠.  Linear search on 𝑉2 : 𝑏/2 = 3000/2 = 1500 𝑏𝑙𝑜𝑐𝑘 𝑎𝑐𝑐𝑒𝑠𝑠𝑒𝑠. Secondary Indexes (5) 76  A secondary index on a nonordering nonkey field:  Option 1: include duplicate index entries with the same K(i) value – one for each record  a dense index.  Option 2: keep a list of pointers in the index entry for K(i) - one pointer to each block that contains a record of K(i).  Option 3: a single entry for each index field value, the pointer P(i) points to a disk block including record pointers, each record pointer points to one of the data file records of value K(i). If some value K(i) occurs in too many records, a cluster or linked list of blocks is used  nondense. 77 78 Contents 79  Data Storage  Storage Hierarchy  Storage of Databases  RAID Technology  Storage Area Networks  Indexing Structures for Files  Indexes  Single-Level Ordered Indexes  Multi-Level Indexes  Dynamic Multilevel Indexes (B-tree & B+-tree) Multi-Level Indexes (1) 80  When single-level index is an ordered file with a distinct value for each K(i)  Can create a primary index to the index itself.  The original index file is called the first-level index and the index to the index is called the second- level index.  We can repeat the process, creating a third, fourth, ..., top level until all entries of the top level fit in one disk block. Multi-Level Indexes (2) 81  A multi-level index can be created for any type of first-level index (primary, secondary, clustering) as long as the first-level index consists of more than one disk block.  The blocking factor for the index (𝑏𝑓𝑟𝑖) is called the fan-out of the multilevel index (𝒇𝒐).  At each search step: n-ways search (𝑛 = 𝑓𝑜).  The number levels of a multi-level index: 𝑡 = 𝑙𝑜𝑔𝑓𝑜(𝑟1)  𝑟1: the number of index entries in the first level index.  Such a multi-level index is a form of search tree.  However, insertion and deletion of new index entries is a severe problem because every level of the index is an ordered file. 82 Contents 83  Data Storage  Storage Hierarchy  Storage of Databases  RAID Technology  Storage Area Networks  Indexing Structures for Files  Indexes  Single-Level Ordered Indexes  Multi-Level Indexes  Dynamic Multilevel Indexes (B-tree & B+-tree) Search Tree 84 Dynamic Multilevel Indexes (1) 85  Multilevel indexing has insertion and deletion problems  use a dynamic multilevel index that leaves some space in each of its blocks for inserting new entries  use appropriate insertion/deletion algorithms.  These data structures are variations of search trees that allow efficient insertion and deletion of new search values.  Most multi-level indexes use B-tree or B+-tree data structures because of the insertion and deletion problem.  In B-Tree and B+-Tree data structures, each node corresponds to a disk block. Dynamic Multilevel Indexes (2) 86  An insertion into a node that is not full is quite efficient.  If a node is full the insertion causes a split into two nodes.  Splitting may propagate to other tree levels.  A deletion is quite efficient if a node does not become less than half full.  If a deletion causes a node to become less than half full, it must be merged with neighboring nodes. Dynamic Multilevel Indexes (3) 87  Main differences between B-tree and B+-tree:  In a B-tree, pointers to data records exist at all levels of the tree.  In a B+-tree, all pointers to data records exists at the leaf-level nodes.  Each leaf node of B+-tree has a pointer to the next leaf node of the tree.  A B+-tree can have less levels (or higher capacity of search values) than the corresponding B-tree. B-tree Structures B+-tree Structures 89 90 Example of Insertion in a B+-tree 91 Example of Deletion in a B+-tree Q & A 92 Exercise (1) 93 Consider a disk with block size B = 512 bytes. A block pointer is P = 6 bytes long, and a record pointer is PR = 7 bytes long. A file has r = 30,000 EMPLOYEE records of fixed length. Each record has the following fields: Name (30 bytes), Ssn (9 bytes), Department_code (9 bytes), Address (40 bytes), Phone (10 bytes), Birth_date (8 bytes), Sex (1 byte), Job_code (4 bytes), and Salary (4 bytes, real number).An additional byte is used as a deletion marker. Exercise (2) 94 1. Calculate the record size R in bytes. 2. Calculate the blocking factor bfr and the number of file blocks b, assuming an unspanned organization. 3. Suppose that the file is ordered by the key field Ssn and we want to construct a primary index on Ssn. Calculate: a. The index blocking factor bfri. b. the number of first-level index entries and the number of first-level index blocks. 4. If we make it into a multilevel index (two levels). a. Calculate the total number of blocks required by the multilevel index. b. the number of block accesses needed to search for and retrieve a record from the file—given its Ssn value.

Các file đính kèm theo tài liệu này:

  • pdf7_data_storage_indexing_structures_for_files_3655.pdf
Tài liệu liên quan