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

FS Lecture

Indexed sequential files provide both indexed and sequential access simultaneously. They use blocks to localize changes to a sequence set of records. A simple index and sequence set form a simple prefix B+ tree, where the index contains shortest record prefixes rather than full keys. Loading processes the data in a single pass to sequentially write the sorted sequence set and index blocks. B+ trees and simple prefix B+ trees provide height-balanced indexed access but differ in whether the index contains full keys or prefixes.

Uploaded by

Tanvir1987
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)
126 views

FS Lecture

Indexed sequential files provide both indexed and sequential access simultaneously. They use blocks to localize changes to a sequence set of records. A simple index and sequence set form a simple prefix B+ tree, where the index contains shortest record prefixes rather than full keys. Loading processes the data in a single pass to sequentially write the sorted sequence set and index blocks. B+ trees and simple prefix B+ trees provide height-balanced indexed access but differ in whether the index contains full keys or prefixes.

Uploaded by

Tanvir1987
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 17

File Structures

Indexed Sequential File Access


and Prefix B+ Trees

1
Indexed Sequential Access
• Up to this point, we have had to choose between
viewing a file from an indexed point of view or from a
sequential point of view.
• Here, we are looking for a single organizational method
that provides both of these views simultaneously.
• Why care about obtaining both views simultaneously? If
an application requires both interactive random access
and cosequential batch processing, both sets of actions
have to be carried out efficiently. (E.g., a student record
system at a University).

March 16 & 21, 2000 2


Maintaining a Sequence Set: The
Use of Blocks I
• A sequence set is a set of records in physical key order which
is such that it stays ordered as records are added and deleted.
• Since sorting and resorting the entire sequence set as records
are added and deleted is expensive, we look at other strategies.
In particular, we look at a way to localize the changes.
• The idea is to use blocks that can be read into memory and
rearranged there quickly. Like in B-Trees, blocks can be split,
merged or their records re-distributed as necessary.

3
Maintaining a Sequence Set: The
Use of Blocks II
• Using blocks, we can thus keep a sequence set in order
by key without ever having to sort the entire set of
records.
• However, there are certain costs associated with this
approach:
– A Blocked file takes up more space than an
unblocked file because of internal fragmentation.
• The order of the records is not necessarily physically
sequential throughout the file. The maximum
guaranteed extent of physical sequentiality is within a
block.
4
Maintaining a Sequence Set: The
Use of Blocks III
• An important aspect of using blocks is the choice
of a block size. There are 2 considerations to keep
in mind when choosing a block size:
– The block size should be such that we can hold
several blocks in memory at once
– The block size should be such that we can
access a block without having to bear the cost
of a disk seek within the block read or block
write operation.
5
Adding a Simple Index to the
Sequence Set
• Each of the blocks we created for our Sequence Set
contains a range of records that might contain the
record we are seeking.
• We can construct a simple single-level index for these
blocks.
• The combination of this kind of index with the
sequence set of blocks provides complete indexed
sequential access. This method works well as long as
the entire index can be held in memory.
• If the entire index cannot be held in memory, then we
can use a B+ Tree which is a B-Tree index plus a
sequence set that holds the records.

6
The Content of the Index:
Separators Instead of Keys
• The index serves as a kind of road map for for the
sequence set ==> We do not need to have keys in
the index set.
• What we really need are separators capable of
distinguishing between two blocks.
• We can save space by using variable-length
separators and placing the shortest separator in the
index structure.
• Rules are: Key < separator ==> Go left .
Key = separator ==> Go right .
Key > separator ==> Go right
7
The Simple Prefix B+ Tree
• The separators we just identified can be formed
into a B-Tree index of the sequence set blocks and
the B-Tree index is called the index set.
• Taken together with the sequence set, the index set
forms a file structure called a simple prefix B+
Tree.
• “simple prefix” indicates that the index set
contains shortest separators, or prefixes of the
keys rather than copies of the actual keys.
8
Simple Prefix B+ Tree
Maintenance
• Changes localized to single blocks in the sequence set:
Make the changes to the sequence set and to the index set.
• Changes involving multiple blocks in the sequence set:
– If blocks are split in the sequence set, a new separator
must be inserted into the index set
– If blocks are merged in the sequence set, a separator
must be removed from the index set.
– If records are re-distributed between blocks in the
sequence set, the value of a separator in the index set
must be changed.

9
Index Set Block Size
• The physical size of a node for the index set is usually the same
as the physical size of a block in the sequence set. We, then,
speak of index set blocks, rather than nodes.
• There are a number of reasons for using a common block size for
the index and sequence sets:
– The block size for the sequence set is usually chosen because
there is a good fit among this block size, the characteristics of
the disk drive, and the amount of memory available.
– A common block size makes it easier to implement a
buffering scheme to create a virtual simple prefix B+Tree
– The index set blocks and sequence set blocks are often
mingled within the same file to avoid seeking between 2
separate files while accessing the simple prefix B+Tree.

10
Internal Structure of Index Set
Blocks: A Variable-Order B-Tree
• Given a large, fixed-size block for the index set, how
do we store the separators within it?
• There are many ways to combine the list of
separators, the index to separators, and the list of
Relative Block Numbers (RBNs) into a single index
set block.
• One possible approach includes a separator count
and keeps a count of the total length of separators.

March 16 & 21, 2000 11


Loading a Simple Prefix B+ Tree I
• Successive Insertions is not a good method because splitting
and redistribution are relatively expensive and would be best to
use only for tree maintenance.
• Starting from a sorted file, however, we can place the records
into sequence set blocks one by one, starting a new block when
the one we are working with fills up. As we make the transition
between two sequence set blocks, we can determine the
shortest separator for the blocks. We can collect these
separators into an index set block that we build and hold in
memory until it is full.

March 16 & 21, 2000 12


Loading a Simple Prefix B+ Tree II:
Advantages
• The advantages of loading a simple Prefix B+ Tree almost always
outweigh the disadvantages associated with the possibility of
creating blocks that contain too few records or too few separators.
• A particular advantage is that the loading process goes more
quickly because:
– The output can be written sequentially;
– we make only one pass over the data;
– No blocks need to be reorganized as we proceed.
• Advantages after the tree is loaded
– The blocks are 100% full.
– Sequential loading creates a degree of spatial locality within our
file ==> Seeking can be minimized.

March 16 & 21, 2000 13


B+ Trees
• The difference between a simple prefix B+ Tree and a plain B+ Tree
is that the plain B+ Tree does not involve the use of prefixes as
separators. Instead, the separators in the index set are simply copies
of the actual keys.
• Simple Prefix B+ Tree are often more desirable than plain B+ Trees
because the prefix separators take up less space than the full keys.
• B+ Trees, however, are sometimes more desirable since 1) they do
not need variable length separator fields and 2) some key sets are not
always easy to compress effectively.

March 16 & 21, 2000 14


B-Trees, B+Trees and Simple
Prefix B+ Trees in Perspective I
• B and B+ Trees are not the only tools useful for File Structure Design.
Simple Indexes are useful when they can be held fully into memory and
Hashing can provide much faster access than B and B+ Trees.
• Common Characteristics of B and B+ and Prefix B+ Trees:
– Paged Index Structures ==> Broad and shallow trees
– Height-Balanced Trees
– The trees are grown Bottom Up and the operations used are: block
splitting, merging and re-distribution
– Two-to-Three Splitting and redistribution can be used to obtain
greater storage efficiency.
– Can be implemented as Virtual Tree Structures.
– Can be adapted for use with variable-length records.

March 16 & 21, 2000 15


B-Trees, B+Trees and Simple
Prefix B+ Trees in Perspective II
Differences between the various structures:
• B-Trees: multi-level indexes to data files that are entry-sequenced.
Strengths: simplicity of implementation. Weaknesses: excessive
seeking necessary for sequential access.
• B-Trees with Associated Information: These are B-Trees that
contain record contents at every level of the B-Tree. Strengths: can
save up space. Weaknesses: Works only when the record
information is located within the B-Tree. Otherwise, too much
seeking is involved in retrieving the record information.

March 16 & 21, 2000 16


B-Trees, B+Trees and Simple
Prefix B+ Trees in Perspective III
Differences between the various structures (Cont’d):
• B+ Trees: In a B+ Tree all the key and record info is contained in a
linked set of blocks known as the sequence set. Indexed access is
provided through the Index Set. Advantages over B-Trees: 1) The
sequence set can be processed in a truly linear, sequential way; 2) The
index is built with a single key or separator per block of data records
rather than with one key per data record. ==> index is smaller and hence
shallower.
• Simple Prefix B+ Trees: The separators in the index set are smaller than
the keys in the sequence set ==> Tree is even smaller.

March 16 & 21, 2000 17

You might also like