File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked...

60
File Organization and Indexing The data of a RDB is ultimately stored in disk files Disk space management: Should Operating System services be used ? Should RDBMS manage the disk space by itself ? 2 nd option is preferred as RDBMS requires complete control over when a block or page in main memory buffer is written to the disk. This is important for recovering data when system crash occurs mywbut.com 1

Transcript of File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked...

Page 1: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

File Organization and Indexing

The data of a RDB is ultimately stored in disk files

Disk space management:Should Operating System services be used ?Should RDBMS manage the disk space by itself ?

2nd option is preferred as RDBMS requires complete control over when a block or page in main memory bufferis written to the disk.

This is important for recovering data when system crash occurs

mywbut.com 1

Page 2: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Structure of DisksDisk

several platters stacked ona rotating spindleone read / write head per surfacefor fast accessplatter has several tracks

• ~10,000 per incheach track - several sectorseach sector - blocksunit of data transfer - blockcylinder i - track i on all platters

Platters

Read/write head

}

track

sector

Speed:7000 to

10000 rpm

mywbut.com 2

Page 3: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Data Transfer from Disk

Address of a block: Surface No, Cylinder No, Block No

Data transfer:Move the r/w head to the appropriate track

• time needed - seek time – ~ 12 to 14 ms Wait for the appropriate block to come under r/w head

• time needed - rotational delay - ~3 to 4ms (avg)

Access time: Seek time + rotational delayBlocks on the same cylinder - roughly close to each other

- access time-wise- cylinder i, cylinder (i + 1), cylinder (i + 2) etc.

mywbut.com 3

Page 4: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Data Records and Files

Fixed length record type: each field is of fixed length• in a file of these type of records, the record number can be

used to locate a specific record• the number of records, the length of each field are available

in file header

Variable length record type:• arise due to missing fields, repeating fields, variable length

fields• special separator symbols are used to indicate the field

boundaries and record boundaries• the number of records, the separator symbols used are

recorded in the file header

mywbut.com 4

Page 5: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Packing Records into BlocksRecord length much less than block size

• The usual case• Blocking factor b = B/r B - block size (bytes)

r - record length (bytes)- maximum no. of records that can be stored in a block

Record length greater than block size• spanned organization is used

Record1 1 2 2 3 3

File blocks:sequence of blocks containing all the records of the file

mywbut.com 5

Page 6: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Mapping File Blocks onto the Disk Blocks

Contiguous allocation• Consecutive file blocks are stored in consecutive disk blocks• Pros: File scanning can be done fast using double buffering

Cons: Expanding the file by including a new block in the middleof the sequence - difficult

Linked allocation• each file block is assigned to some disk block• each disk block has a pointer to next block of the sequence• file expansion is easy; but scanning is slow

Mixed allocation

mywbut.com 6

Page 7: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Operations on FilesInsertion of a new record: may involve searching for appropriatelocation for the new record

Deletion of a record: locating a record –may involve search; delete the record –may involve movement of other records

Update a record field/fields: equivalent to delete and insert

Search for a record: given value of a key field / non-key field

Range search: given range values for a key / non-key field

How successfully we can carry out these operations depends on the organization of the file and the availability of indexes

mywbut.com 7

Page 8: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Primary File OrganizationThe logical policy / method used for placing records into file blocks

Example: Student file - organized to have students records sortedin increasing order of the “rollNo” values

Goal: To ensure that operations performed frequently on the fileexecute fast• conflicting demands may be there• example: on student file, access based on rollNo and also

access based on name may both be frequent• we choose to make rollNo access fast• For making name access fast, additional access structures

are needed.- more details later

mywbut.com 8

Page 9: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Different File Organization Methods

We will discuss Heap files, Sorted files and Hashed files

Heap file:Records are appended to the file as they are insertedSimplest organizationInsertion - Read the last file block, append the record and

write back the block - easyLocating a record given values for any attribute

• requires scanning the entire file – very costly

Heap files are often used only along with other access structures.

mywbut.com 9

Page 10: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Sorted files / Sequential files (1/2)

Ordering field: The field whose values are used for sorting the records in the data file

Ordering key field: An ordering field that is also a key

Sorted file / Sequential file:Data file whose records are arranged such that the values of the ordering field are in ascending order

Locating a record given the value X of the ordering field:Binary search can be performed

Address of the nth file block can be obtained from the file headerO(log N) disk accesses to get the required block- efficient

Range search is also efficient

mywbut.com 10

Page 11: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Sorted files / Sequential files (2/2)

Inserting a new record:Ordering gets affected

• costly as all blocks following the block in which insertion isperformed may have to be modified

Hence not done directly in the file• all inserted records are kept in an auxiliary file• periodically file is reorganized - auxiliary file and main file

are merged• locating record

• carried out first on auxiliary file and then the main file.

Deleting a record• deletion markers are used.

mywbut.com 11

Page 12: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Hashed Files

Very useful file organization, if quick access to the data record isneeded given the value of a single attribute.

Hashing field: The attribute on which quick access is needed andon which hashing is performed

Data file: organized as a buckets with numbers 0,1, …, (M − 1)(bucket - a block or a few consecutive blocks)

Hash function h: maps the values from the domain of the hashing attribute to bucket numbers

mywbut.com 12

Page 13: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Inserting Records into a Hashed File

Insertion: for the given record R, apply h on the value of hashing attribute to get the bucket number r.

If there is space in bucket r, place R there else place R in theoverflow chain of bucket r.

The overflow chains of all the buckets are maintained in the overflow buckets.

0

1

2

M-1

Main buckets

Overflow buckets

Overflowchain

mywbut.com 13

Page 14: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Deleting Records from a Hashed File

Deletion: Locate the record R to be deleted by applying h.

Remove R from its bucket/overflowchain. If possible, bring a record from the overflow chain into the bucket

0

1

2

M-1

Main buckets

Overflow buckets

Overflowchain

Search: Given the hash filed value k, compute r = h(k). Get the bucket r and search for the record. If not found, search the overflow chain of bucket r.

mywbut.com 14

Page 15: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Performance of Static Hashing

Static hashing:The hashing method discussed so farThe number of main buckets is fixed

Locating a record given the value of the hashing attribute most often – one block access

Capacity of the hash file C = r * M records(r - no. of records per bucket, M - no. of main buckets)

Disadvantage with static hashing: If actual records in the file is much less than C

• wastage of disk spaceIf actual records in the file is much more than C

• long overflow chains – degraded performance

mywbut.com 15

Page 16: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Hashing for Dynamic File OrganizationDynamic files

files where record insertions and deletion take place frequently the file keeps growing and also shrinking

Hashing for dynamic file organizationBucket numbers are integers The binary representation of bucket numbers

Exploited cleverly to devise dynamic hashing schemes Two schemes

• Extendible hashing• Linear hashing

mywbut.com 16

Page 17: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

The k-bit sequence corresponding to a record R:

Apply hashing function to the value of the hashing field of R to get the bucket number r

Convert r into its binary representation to get the bit sequence Take the trailing k bits

Extendible Hashing (1/2)

mywbut.com 17

Page 18: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

All records with 3-bit Sequence ‘111’

Extendible Hashing (2/2)

The # of trailing

bits used in the directory

Global depth d=3

000001010011100101110111

Directory

2

3

3

2

3

3

Local depth

All records with 2-bit Sequence ‘01’

The number of bits in the common suffix of bit sequences corresponding tothe records in the bucket

Locating a recordMatch the d-bit sequence with an entry in the directory and go to the corresponding bucket to find the record

mywbut.com 18

Page 19: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Insertion in Extendible Hashing Scheme (1/2)

2 - bit sequence for the record to be inserted: 00

full

00011011

1

2

2

b0

b1

b2

d=2

b0 Full: Bucket b0 is splitAll records whose 2-bit sequence is ‘10’ are sent to a new bucket b3. Others are retained in b0Directory is modified.

b0 Not full: New record is placed in b0. No changes in the directory.

00011011

d=2

all local depth = 2

b0

b3

b2

b1

mywbut.com 19

Page 20: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Insertion in Extendible Hashing Scheme (2/2)2 - bit sequence for the record to be inserted: 10

00011011

d=2

full

b0

b1

b2

b3

all local depth = 2

000001010011100101110111

d=3

2

2

3

3

2

b0

b1

b3

b2

b4

b3 not full: new record placed in b3. No changes.b3 full : b3 is split, directory is doubled, all records with 3-bit

sequence 110 sent to b4. Others in b3.In general, if the local depth of the bucket to be split is equal to the

global depth, directory is doubledmywbut.com 20

Page 21: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Deletion in Extendible Hashing Scheme

00011011

d=2

b0

b1

b2

b3

all local depth = 2

000001010011100101110111

d=3

2

2

3

3

2

b0

b1

b3

b2

b4

Matching pair of data buckets: k-bit sequences have a common k-1 bit suffix, e.g, b3 & b4

Due to deletions, if a pair of matching data buckets -- become less than half full – try to merge them into one bucket

If the local depth of all buckets is one less than the global depth-- reduce the directory to half its size

mywbut.com 21

Page 22: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Extendible Hashing ExampleBucket capacity – 2 Initial buckets = 1Insert 45,22

00

4522

2212

45

1

1

2212

45

1

1

11

1

10

1

10

Global depth

Local depth

Insert 12

Insert 11

Bucket overflowslocal depth = global depth⇒ Directory doubles and split image

is created

45 10110122 1011012 110011 1011

mywbut.com 22

Page 23: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Insert 15

200011011

45

122

2

200011011

45

2

2212

1

2

1115

1022

1511

2

2

Insert 10

Overflow occurs.Global depth = local depthDirectory doubles and split occurs

Overflows occurs.Since local depth < global depthSplit image is createdDirectory is not doubled

45 10110122 1011012 110011 101115 1111

10 1010

mywbut.com 23

Page 24: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Linear Hashing

Does not require a separate directory structure

Uses a family of hash functions h0, h1, h2,….• the range of hi is double the range of hi-1

• hi(x) = x mod 2iMM - the initial no. of buckets(Assume that the hashing field is an integer)

Initial hash functionsh0(x) = x mod Mh1(x) = x mod 2M

mywbut.com 24

Page 25: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Insertion (1/3)

Initially the structure has M main buckets( 0 ,…, M-1 ) and a few overflow buckets

To insert a record with hash field value x,place the record in bucket ho(x)

When the first overflow in any bucket occurs:Say, overflow occurred in bucket sInsert the record in the overflow chain of bucket sCreate a new bucket MSplit the bucket 0 by using h1

Some records stay in bucket 0 and some go to bucket M.

.

.

0

1

2

M-1

M

Overflowbuckets

Split imageof bucket 0

mywbut.com 25

Page 26: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Insertion (2/3)On first overflow,

irrespective of where it occurs, bucket 0 is splitOn subsequent overflows

buckets 1, 2, 3, … are split in that order(This why the scheme is called linear hashing)

N: the next bucket to be splitAfter M overflows,

all the original M buckets are split.We switch to hash functions h1, h2

and set N = 0.

ho h1 hih1 h2 hi+1

… …

.

.

.

0

1

2

M-1

Splitimages

M

M+1

.

.

mywbut.com 26

Page 27: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Nature of Hash Functionshi(x) = x mod 2iM. Let M' = 2iM

Note that if hi(x) = k then x = M'r + k, k < M'

and hi+1(x) = (M'r + k) mod 2M' = k or M' + k

M'– the current number of original buckets.

Since,r – even – (M'2s + k) mod 2M' = kr – odd – ( M'(2s + 1) + k ) mod 2M' = M' + k

mywbut.com 27

Page 28: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Insertion (3/3)

Say the hash functions in use are hi, hi+1

To insert record with hash field value x,

Compute hi(x)

if hi(x) < N, the original bucket is already split

place the record in bucket hi+1(x)

else place the record in bucket hi(x)

mywbut.com 28

Page 29: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Linear Hashing Example

Initial Buckets = 1 Bucket capacity = 2 records

N0

Hash functionsh0 = x mod 1h1 = x mod 2

Split pointer

Insert 12, 11

N0 12

11

N0 12

14

1 11

h0 = x mod 2h1 = x mod 4

Insert 14

B0 overflowsBucket pointed by

N is splitHash functions are

changed

mywbut.com 29

Page 30: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Insert 13N

0 1214

1 11

N

0 12

1 11

h0 = x mod 2h1 = x mod 4

139

142

Insert 9

B1 overflowsB0 is split using h1

and split image is created

N

0 12

1 1113

9

142

Insert 10

h1 is applied here

10

Insert 18

overflow at B2split B1

h0 = x mod 4h1 = x mod 8

0

1

2

3

12

913

1410

11

18

N

13

mywbut.com 30

Page 31: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Index Structures

Index: A disk data structure – enables efficient retrieval of a record

given the value (s) of certain attributes– indexing attributes

Primary Index:Index built on ordering key field of a file

Clustering Index:Index built on ordering non-key field of a file

Secondary Index:Index built on any non-ordering field of a file

mywbut.com 31

Page 32: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Primary Index

Can be built on ordered / sorted filesIndex attribute – ordering key field (OKF)

Index Entry:

Index file: ordered file (sorted on OKF)size-no. of blocks in the data file

Index file blocking factor BFi = B/(V +P)(B-block size, V-OKF size, P-block pointer size)- generally more than data file blocking factor

No of Index file blocks bi = b/BFi(b - no. of data file blocks)

value of OKF for the first record of a block Bj

disk address of Bj

101121129

240

.

.

.

.

101104

121123

129130

240244

.

.

.

.

0

1

2

b

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Ordering key(RollNo) Data

file

mywbut.com 32

Page 33: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Record Access Using Primary IndexGiven Ordering key field (OKF) value: xCarry out binary search on the index file

m – value of OKF for the first record in the middle block k of the index file

x < m: do binary search on blocks 0 – (k −1) of index filex ≥ m: if there is an index entry in block k with OKF value x,

use the corresponding block pointer, get the data file block and search for the data record with OKF value x

else do binary search on blocks k +1,…, bi of index file

Maximum block accesses required: ⌈log2bi⌉

mywbut.com 33

Page 34: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

An Example

Data file:No. of blocks b = 9500Block size B = 4KBOKF length V = 15 bytesBlock pointer length p = 6 bytes

Index fileNo. of records ri = 9500Size of entry V + P = 21 bytesBlocking factor BFi = 4096/21 = 195No. of blocks bi = ri/BFi = 49

Max No. of block accesses for getting record using the primary index 1 + log2

bi = 7Max No. of block accesses for getting recordwithout using primary index log2

b = 14mywbut.com 34

Page 35: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Making the Index Multi-level

49 entries

9500entries

Second levelindex1 block

First levelindex49 blocks

data file 9500 blocks

Index file – itself an ordered file– another level of index can be built

Multilevel Index –Successive levels of indices are built till the last level has one block

height – no. of levelsblock accesses: height + 1(no binary search required)

For the example data file:No of block accesses required withmulti-level primary index: 3without any index: 14

.

.

.

.

.

.

.

.

.

.

mywbut.com 35

Page 36: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Range Search, Insertion and Deletion

Range search on the ordering key field:Get records with OKF value between x1 and x2 (inclusive)Use the index to locate the record with OKF value x1 and readsucceeding records till OKF value exceeds x2.Very efficient

Insertion: Data file – keep 25% of space in each block free-- to take care of future insertions

index doesn't get changed -- or use overflow chains for blocks that overflow

Deletion: Handle using deletion markers so that index doesn’t get affected

Basically, avoid changes to indexmywbut.com 36

Page 37: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Clustering Index

Built on ordered files where ordering field is not a keyIndex attribute: ordering field (OF)

Index entry:

Index file: Ordered file (sorted on OF)size – no. of distinct values of OF

Distinct value Viof the OF

address of the firstblock that has a record with OF value Vi

mywbut.com 37

Page 38: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Secondary Index

Built on any non-ordering field (NOF) of a data file.Case I: NOF is also a key (Secondary key)

Case II: NOF is not a key: two options(1)

(2)

Remarks: (1) index entry – variable length record(2) index entry – fixed length – One more level of indirection

value of the NOF Vi pointer to the record with Vi as the NOF value

value of the NOF Vi

value of the NOF Vi

pointer(s) to the record(s) with Vi as the NOF value

pointer to a block that has pointer(s) to the record(s)with Vi as the NOF value

mywbut.com 38

Page 39: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Secondary Index (key)

Can be built on ordered and also other type of filesIndex attribute: non-ordering key fieldIndex entry:

Index file: ordered file (sorted on NOF values)No. of entries – same as the no. of records in the data file

Index file blocking factor Bfi = B/(V+Pr)(B: block size, V: length of the NOF, Pr: length of a record pointer)

Index file blocks = ⎡r/Bfi⎤(r – no. of records in the data file)

value of the NOF Vi pointer to the record with Vi as the NOF value

mywbut.com 39

Page 40: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

An Example

Data file:No. of records r = 90,000 Block size B = 4KBRecord length R = 100 bytes BF = 4096/100 = 40,

b = 90000/40 = 2250NOF length V = 15 bytes length of a record pointer Pr = 7 bytesIndex file :No. of records ri = 90,000 record length = V + Pr = 22 bytesBFi = 4096/22 = 186 No. of blocks bi = 90000/186 = 484

Max no. of block accesses to get a record using the secondary index 1 + log2

bi = 10Avg no. of block accesses to get a recordwithout using the secondary index b/2 = 1125

A very significant improvementmywbut.com 40

Page 41: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Multi-level Secondary Indexes

Secondary indexes can also be converted to multi-level indexes

First level index – as many entries as there are records in the data file

First level index is an ordered fileso, in the second level index, the number of entries will be equal to the number of blocks in the first level indexrather than the number of records

Similarly in other higher levels

mywbut.com 41

Page 42: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Making the Secondary Index Multi-level

484 entries

90000entries

Second levelindex3 blocks

First levelindex484 blocks

data file 90000 records

Multilevel Index –Successive levels of indices are built

till the last level has one blockheight – no. of levelsblock accesses: height + 1

For the example data file:No of block accesses required:

multi-level index: 4single level index: 10

.

.

.

.

.

.

.

.

.

.

3 entries

1 block

2250 blocks

mywbut.com 42

Page 43: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Index Sequential Access Method (ISAM) Files

ISAM files –Ordered files with a multilevel primary/clustering index

Insertions:Handled using overflow chains at data file blocks

Deletions:Handled using deletion markers

Most suitable for files that are relatively static

If the files are dynamic, we need to go for dynamic multi-level index structures based on B+- trees

mywbut.com 43

Page 44: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

B+- trees

Balanced search trees • all leaves are at the same level

Leaf node entries point to the actual data records• all leaf nodes are linked up as a list

Internal node entries carry only index informationIn B-trees, internal nodes carry data records alsoThe fan-out in B-trees is less

Makes sure that blocks are always at least half filled

Supports both random and sequential access of records

mywbut.com 44

Page 45: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Order

Order (m) of an Internal Node• Order of an internal node is the maximum number of tree

pointers held in it.• Maximum of (m-1) keys can be present in an internal node

Order (mleaf) of a Leaf Node• Order of a leaf node is the maximum number of record

pointers held in it. It is equal to the number of keys in a leaf node.

mywbut.com 45

Page 46: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Internal Nodes

An internal node of a B+- tree of order m:It contains at least pointers, except when it is the root node

It contains at most m pointers.

If it has P1, P2, …, Pj pointers withK1 < K2 < K3 … < Kj-1 as keys, where ≤ j ≤ m, then

• P1 points to the subtree with records having key value x ≤ K1

• Pi (1 < i < j) points to the subtree with records having key value x such that Ki-1 < x ≤ Ki

• Pj points to records with key value x > Kj-1

2m

2m

mywbut.com 46

Page 47: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Internal Node Structure

2m

≤ j ≤ m

P1 K1 P2 Pi PjK2 KiKi-1 Kj-1… … …

x ≤ K1 Ki-1 < x ≤ Ki Kj-1 < x

2 5 12

x ≤ 22 < x ≤ 5 5 < x ≤ 12 x > 12

Example-

mywbut.com 47

Page 48: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Leaf Node Structure

Structure of leaf node of B+- of order mleaf :It contains one block pointer P to point to next leaf nodeAt least record pointers and key values

At most mleaf record pointers and key valuesIf a node has keys K1 < K2 < … < Kj with Pr1, Pr2… Prj as record pointers and P as block pointer, then

Pri points to record with Ki as the search field value, 1 ≤ i ≤ jP points to next leaf block

K1 K2 KjPr1 Pr2 Pj P… …

leafm2

leafm2

……

mywbut.com 48

Page 49: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Order Calculation

Block size: B, Size of Indexing field: VSize of block pointer: P, Size of record pointer: Pr

Order of Internal node (m):As there can be at most m block pointers and (m-1) keys

(m*P) + ((m-1) * V) ≤ Bm can be calculated by solving the above equation.

Order of leaf node:As there can be at most mleaf record pointers and keys with one block pointer in a leaf node, mleaf can be calculated by solving

(mleaf * (Pr + V)) + P ≤ B

mywbut.com 49

Page 50: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Example Order Calculation

Given B = 512 bytes V = 8 bytesP = 6 bytes Pr = 7 bytes. Then

Internal node order m = ?m * P + ((m-1) *V) ≤ Bm * 6 + ((m-1) *8) ≤ 512

14m ≤ 520 m ≤ 37

Leaf order mleaf = ?mleaf (Pr + V) + P ≤ 512mleaf (7 + 8) + 6 ≤ 512

15mleaf ≤ 506mleaf ≤ 33

mywbut.com 50

Page 51: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Example B+- treem = 3 mleaf = 2

3

2

7

4 9

1 2 3 4 6 7 8 9 12 15

- - -

- - ^

mywbut.com 51

Page 52: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Insertion into B+- trees1. Every node is inserted at leaf level

If leaf node overflows, then• Node is split at j =

• First j entries are kept in original node• Entities from j+1 are moved to new node• jth key value is replicated in the parent of the leaf.

If Internal node overflows• Node is split at j =

• Values and pointers up to Pj are kept in original node• jth key value is moved to parent of the internal node• Pj+1 to the rest of entries are moved to new node.

leaf(m 1)2+

(m 1)2+

mywbut.com 52

Page 53: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Example of Insertionsm = 3 mleaf = 2Insert 20, 11

11 20 11 14

14

20^

^

^

-

-

Insert 14

Overflow. leaf is splitat j = = 2

14 is replicated to upper level

leaf(m 1)2+

Insert 2514

1411 20 25

14

1411 20 25 30

^- 25

^Inserted atleaf level

Insert 30

Overflow. split at 25.25 is moved up

1

2

3 4

mywbut.com 53

Page 54: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Insert 12 Overflow at leaf level.- Split at leaf level,- Triggers overflow at internal node- Split occurs at internal node

14

30

12 25

11 12 14 2520

.5 -

- -

- -

^ ^

Internal node splitat j =

split at 14 and 14 ismoved up

2m

mywbut.com 54

Page 55: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Insert 2214

12 22 25

11 12 14 20 22 25 30

-

-

-

^

^

Insert 23, 2414 24

12 22 25

11 12 14 20 22 23 24 25 30

- ^

6

7

mywbut.com 55

Page 56: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Deletion in B+- trees

Delete the entry from the leaf node

Delete the entry if it is present in Internal node and replace withthe entry to its left in that position.

If underflow occurs after deletion• Distribute the entries from left sibling

if not possible – Distribute the entries from right siblingif not possible – Merge the node with left and right sibling

mywbut.com 56

Page 57: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Example14 24

12 22 25

11 12 14 20 22 23 24 25 30

14 24

12 22 25

11 12 14 22 23 24 25 30

Delete 20Removed entry from leaf here

mywbut.com 57

Page 58: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

14 24

12 23 25

11 12 14 23 24 25 30

14

12 23

11 12 14 23 25 30

Delete 24

Delete 22

25

Entry 22 is removed from leaf and internal node Entries from right sibling are distributed to left

mywbut.com 58

Page 59: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

12

11 23

11 12 23 25 30

Delete 14

25

Delete 12

23 25

2311 25 30

Level drop has occurred

mywbut.com 59

Page 60: File Organization and Indexing - · PDF fileFile Organization and Indexing ... Linked allocation • each file block is assigned to some disk block ... Insertion - Read the last file

Advantages of B+- trees:

1) Any record can be fetched in equal number of disk accesses.

2) Range queries can be performed easily as leaves are linked up

3) Height of the tree is less as only keys are used for indexing

4) Supports both random and sequential access.

Disadvantages of B+- trees:

Insert and delete operations are complicated

Root node becomes a hotspot

mywbut.com 60