DBMS - Indexing: Dense Index
DBMS - Indexing: Dense Index
DBMS - Indexing: Dense Index
Indexes are used to quickly locate data without having to search every row in
a database table every time a database table is accessed. Indexes can be created using one
or more columns of a database table, providing the basis for both rapid random lookups and
efficient access of ordered records.
We know that data is stored in the form of records. Every record has a key
field, which helps it to be recognized uniquely.
Primary Index − Primary index is defined on an ordered data file. The data file
is ordered on a key field. The key field is generally the primary key of the
relation.
Dense Index
Sparse Index
Dense Index
In dense index, there is an index record for every search key value in the
database. This makes searching faster but requires more space to store
index records itself. Index records contain search key value and a pointer to
the actual record on the disk.
Sparse Index
In sparse index, index records are not created for every search key. An
index record here contains a search key and an actual pointer to the data
on the disk. To search a record, we first proceed by index record and reach
at the actual location of the data. If the data we are looking for is not where
we directly reach by following the index, then the system starts sequential
search until the desired data is found.
Multilevel Index
Index records comprise search-key values and data pointers. Multilevel
index is stored on the disk along with the actual database files. As the size
of the database grows, so does the size of the indices. There is an immense
need to keep the index records in the main memory so as to speed up the
search operations. If single-level index is used, then a large size index
cannot be kept in memory which leads to multiple disk accesses.
Multi-level Index helps in breaking down the index into several smaller
indices in order to make the outermost level so small that it can be saved in
a single disk block, which can easily be accommodated anywhere in the
main memory.
B+ Tree
A B+ tree is a balanced binary search tree that follows a multi-level index
format. The leaf nodes of a B+ tree denote actual data pointers. B+ tree
ensures that all leaf nodes remain at the same height, thus balanced.
Additionally, the leaf nodes are linked using a link list; therefore, a B + tree
can support random access as well as sequential access.
Structure of B+ Tree
Every leaf node is at equal distance from the root node. A B + tree is of the
order n where n is fixed for every B+ tree.
Internal nodes −
Internal (non-leaf) nodes contain at least ⌈n/2⌉ pointers, except the root node.
Leaf nodes −
Leaf nodes contain at least ⌈n/2⌉ record pointers and ⌈n/2⌉ key values.
Every leaf node contains one block pointer P to point to next leaf node and forms
a linked list.
B+ Tree Insertion
B+ trees are filled from bottom and each entry is done at the leaf node.
B+ Tree Deletion
B+ tree entries are deleted at the leaf nodes.
o If it is an internal node, delete and replace with the entry from the left
position.
o If underflow occurs, distribute the entries from the nodes left to it.