130 likes | 914 Views
File Structures by Folk, Zoellick, and Riccardi. Chap1 . Introduction to File Structures. 서울대학교 컴퓨터공학부 객체지향시스템연구실 (SNU-OOPSLA-LAB) 김 형 주 교수. Chapter Objectives. Introduce the primary design issues characterizing file structure design
E N D
File Structures by Folk, Zoellick, and Riccardi Chap1. Introduction to File Structures 서울대학교 컴퓨터공학부 객체지향시스템연구실 (SNU-OOPSLA-LAB) 김 형 주 교수 SNU-OOPSLA Lab
Chapter Objectives • Introduce the primary design issues characterizing file structure design • Survey the history of file structure design • Introduce the notions of file structure literacy and of a conceptual toolkit for file structure design • Discuss the need for specification of data structures, operations and development of object-oriented toolkit • Introduce classes and overloading in C++ SNU-OOPSLA Lab
Contents 1.1 The heart of file structure design 1.2 History of file structure design 1.3 Conceptual toolkit : file structure literacy 1.4 Object-Oriented Toolkit : make file structure usable 1.5 Using objects in C++ SNU-OOPSLA Lab
1.1 The Heart of File Structure Design The Heart of File Structure Design • File structure • representation of data + operation for accessing data • Disk vs. RAM • speed : very slower than RAM • cost : enormous capacity at much less cost than RAM • nonvolatile in Disk vs. volatile in RAM • Good file structure design • access to all the capacity without spending much time waiting for disk • uniform average access time SNU-OOPSLA Lab
1.2 History of File Structure Design History of file structure design(1) • Sequential file • look at records in order • AVL tree (Balanced Binary Tree) • self-adjusting binary tree • guarantee good access time for data in RAM • B-tree • balanced tree structure • provide fast access to data in file SNU-OOPSLA Lab
1.2 History of File Structure Design History of file structure design(2) • B+-tree • variation on B-tree structure • provide both sequential access and fast-indexed access • Hashing • transform search key into storage address • provide fast access to stored data • Extendible hashing • approach to hashing that works well with files undergoing many changes in size over time SNU-OOPSLA Lab
1.2 History of File Structure Design Taxonomy of File Structures • Single-key files • Index-based (Tree Data Structure) Indexed Sequential File -> B-Tree -> B+-Tree • Hashing-based (Address Computation) Hashing File -> Extendible Hashing File • Multi-key files (multidimensional) • K-D-B tree • Grid file • R-tree • Multimedia Indexing Techniques • Audio, Image, Video SNU-OOPSLA Lab
1.3 A Conceptual Toolkit Conceptual Toolkit: File Structure Literacy • Objective of Conceptual toolkit • Fundamental file concepts • Generic file operations • Conceptual tools in this book • basic tools + evolution of basic tools • basic tools : Chapter 2 ~ 6 • evolution of basic tools : Chapter 7 ~ 12 • B-trees, B+trees, hashed indexes, and extensible dynamic hashed files SNU-OOPSLA Lab
1.4 Object-Oriented Toolkit Object-Oriented Toolkit: Making File Structures Usable • Object-Oriented Toolkit • making file structures usable requires turning conceptual toolkit into collections :(classes) of data types and operations • Major problem • complicated and progressive • often modified and extended from other classes and details of classes become more complex SNU-OOPSLA Lab
1.5. Using Objects in C++ Using objects in C++(1) • Features of object in C++ • class definition • data members(attributes) + methods • constructor • provide a guarantee for initialization of every object & called in creation time of object • public, private & protected sections • public label specifies that any users can freely access • private & protected label are restrict access SNU-OOPSLA Lab
1.5. Using Objects in C++ Using objects in C++(2) • operator overloading • allows a particular symbol to have more thanone meaning • other features • inheritance, virtual function, and templates • explained in later chapters SNU-OOPSLA Lab
Let’s Review!! 1.1 The heart of file structure design 1.2 History of file structure design 1.3 Conceptual toolkit : file structure literacy 1.4 Object-Oriented Toolkit : make file structure usable 1.5 Using objects in C++ SNU-OOPSLA Lab