As well known in the art, an index is a data structure that increases an operating speed for a table in the field of database, and a tree index refers to an index data structure organized in a tree architecture.
A B-tree index, one kind of such a tree index, is a data structure commonly used in a database system to organize a large quantity of data in order and allow rapid access thereto.
The tree index data structure includes a directory node having a descendent node and a leaf node without having a descendent node. Each directory node includes a pointer to another node, and each pointer may be related to an object included in each node.
In a conventional tree index data structure, when there is a process causing a change to the structure of a tree index, it has been required to protect data compatibility of the tree index using a lock in order to compare the tree index while maintaining the data compatibility in another process.
However, such a conventional method of protecting the data compatibility of the tree index using the lock function blocks the tree index from being concurrently accessed by a multiple number of processes. Thus, the method lacks efficiency in the aspect of concurrency.
Further, this method also involves a risk of falling into a dead lock. For example, nodes are searched from a root node to leaf nodes in a process of traversing a B-tree index, whereas, when an index split occurs, the split may spread from a leaf node to a parent node, resulting in a dead lock.