0% found this document useful (0 votes)
97 views

ISAM: Indexed-Sequential-Access-Method: Adapted From Prof Joe Hellerstein's Notes

ISAM is an indexed sequential access method for organizing data files that allows for efficient retrieval by key value. It uses a B-tree like structure with index files containing keys and pointers to data pages, allowing binary search on the index. Data records are stored sequentially in pages, with overflow pages used if a page fills. Inserts and deletes only affect leaf pages, keeping the index structure static.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
97 views

ISAM: Indexed-Sequential-Access-Method: Adapted From Prof Joe Hellerstein's Notes

ISAM is an indexed sequential access method for organizing data files that allows for efficient retrieval by key value. It uses a B-tree like structure with index files containing keys and pointers to data pages, allowing binary search on the index. Data records are stored sequentially in pages, with overflow pages used if a page fills. Inserts and deletes only affect leaf pages, keeping the index structure static.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 9

ISAM: Indexed-Sequential-Access-

Method

Adapted from Prof Joe Hellerstein’s notes


http://db.cs.berkeley.edu/dbcourse/notes.html
A Note of Caution

• ISAM is an old-fashioned idea


– B+-trees are usually better, as we’ll see
• Though not always
• But, it’s a good place to start
– Simpler than B+-tree, but many of the same ideas

• Upshot
– Don’t brag about being an ISAM expert on your
resume
– Do understand how they work, and tradeoffs with
B+-trees
Range Searches
• ``Find all students with gpa > 3.0’’
– If data is in sorted file, do binary search to find first such
student, then scan to find others.
– Cost of binary search can be quite high.
• Simple idea: Create an `index’ file.
– Level of indirection again!

k1 k2 kN Index File

Page 1 Page 2 Page 3 Page N Data File

 Can do binary search on (smaller) index file!


index entry

ISAM
P K P K 2 P K m Pm
0 1 1 2

• Index file may still be quite large. But we can


apply the idea repeatedly!

Non-leaf
Pages

Leaf
Pages
Overflow
page
Primary pages

 Leaf pages contain data entries.


Example ISAM Tree

• Each node can hold 2 entries; no need for


`next-leaf-page’ pointers. (Why?)
Root
40

20 33 51 63

10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97*
Data Pages

Comments on ISAM Index Pages

• File creation: Leaf (data) pages allocated


sequentially, sorted by search key. Overflow pages
Then index pages allocated.
Then space for overflow pages.
• Index entries: <search key value, page id>; they `direct’
search for data entries, which are in leaf pages.
• Search: Start at root; use key comparisons to go to leaf.
Cost  log F N ; F = # entries/index pg, N = # leaf pgs
• Insert: Find leaf where data entry belongs, put it there.
(Could be on an overflow page).
• Delete: Find and remove from leaf; if empty overflow
page, de-allocate.

 Static tree structure: inserts/deletes affect only leaf pages.


Example ISAM Tree

• Each node can hold 2 entries; no need for


`next-leaf-page’ pointers. (Why?)
Root
40

20 33 51 63

10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97*
After Inserting 23*, 48*, 41*, 42* ...
Root
Index 40

Pages

20 33 51 63

Primary
Leaf 10* 15* 20* 27* 46* 55*
33* 37* 40* 51* 63* 97*
Pages

23* 48* 41*


Overflow
Pages
42*
... then Deleting 42*, 51*, 97*
Root
40

20 33 51 63

10* 15* 20* 27* 33* 37* 40* 46* 55* 63*

23* 48* 41*

 Note that 51 appears in index levels, but 51* not in leaf!

You might also like