A bitmap index is a specific kind of data structure. In computer science, data structures are methods of arranging and classifying data in order to utilize it in the most efficient way. The advantage to using this particular data structure is that certain information can be processed more quickly and will require a smaller amount of hardware memory. In particular, a bitmap index is commonly used when dealing with data warehousing.
The concept of "data warehousing" refers to a method of organizing enormous quantities of data. When the data is organized, it is possible to sift through and pick out various trends or patterns so that it can be better understood. This means that the data is sorted into a table and defined by numbers representing different values in the data. Generally, data indexes of this type are more efficient when the data being defined does not include the same values repeatedly. A bitmap index, on the other hand, is best used when values do repeat.
This kind of repetition can be described as data having a low cardinality — that is, when the information being displayed can only have a very small number of outcomes. Therefore, the same value would be repeated multiple times. One example of this is when values are defining male and female. There are only two different ways of describing gender so each column in the table would have low cardinality and be perfect to display with a bitmap index.
Although displaying this kind of a data in an index allows it to be read more quickly, there is a trade-off. The greatly condensed structure allows it to be easily readable but at the same time, data must be processed by the CPU multiple times to decompress it into simpler terms that the computer can understand. In addition, modifying a bitmap index can be extremely time-consuming. Since everything is very systematic and specific, one thing that needs to be changed can cause change throughout the entire structure.
Another advantage to bitmap indexes is that they require very little memory storage. Oftentimes, a database index has more components than the data itself and requires additional space to be stored. When utilizing the bitmap index, this is not the case. It condenses the data into smaller, easier to read parts, freeing up space that does not need to be used.