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도 만들어서 관리한다.
'컴퓨터공학 > 데이터베이스(database)' 카테고리의 다른 글
[Query Processing]Selection Operation (0) | 2020.06.06 |
---|---|
[Query Processing]Overview (0) | 2020.06.06 |
[Indexing]Dynamic Hashing (0) | 2020.06.06 |
[Indexing]Static Hashing (0) | 2020.06.06 |
[Indexing] Non-unique search key, b+ tree variation, b tree (0) | 2020.06.06 |