본문 바로가기
컴퓨터공학/데이터베이스(database)

[Indexing]Bitmap Index

by 바코94 2020. 6. 6.

m개의 레코드가 있으면 n개의 비트를 할당하는 방식이다. 특정한 칼럼, 예를 들면 학년(1~4)을 가지고 구분을 하면 4개의 집합으로 나뉜다. 

 

1학년인지 파악하는 bitmap을 하나 만들 수 있다.

1학년, 3학년, 1학년, 1학년, 2학년 의 레코드가 있다고하면  10110과 같은 값을 가지게 한다. 

2학년인지 파악하는 bitmap을 만들면 00001이 된다.

3학년: 01000

4학년: 00000

 

bitmap index는 칼럼의 값이 몇 개만 존재할 때 만들 수 있다. 위와 같은 학년이라던지 성별과 같은 칼럼에 대해서 가능하다. 학생의 학점과 같은 경우에도 가능하다. 범위에 대한 bitmap을 만들 수 있다. 4.0이상, 3.0이상 4.0 미만 과 같은 방식으로 만들 수도 있다.

 

bitmap index는 어떤 질의를 처리할 때 좋을까?

학년이 1학년이고 학점이 3.0이상 4.0미만인 학생을 찾는 것과 같은 여러 개의 조건이 있는 상황이다. 1학년 여부에 대한 bitmap, 3.0~4.0에 있는지에 대한 bitmap이 있을 때 두 bitmap을 &하면 바로 결과를 얻어낼 수 있다. 

 

bitmap에 대한 overhead의 비용은 굉장히 작다.

 

deletion

삭제가 되었는지에 대한 확인을 위해 존재 유무에 대한 bitmap을 만들어 관리한다. 검색을 할 때 존재하는 레코드에 대해서만 결과를 얻을 수 있도록 existence bitmap 과 and 연산을 해야한다.

null value에 대한 bitmap도 만들어서 관리한다.