TIL/8주차

선발대 과제 인덱스 b-tree, b+tree

tnals634 2023. 7. 4. 10:43

b-tree

-한 데이터의 검색은 효율적이나, 모든 데이터를 한번 순회하는데 모든 노드를 방문해야하므로 비효율적이다.

 

b+tree : 인덱스 컬럼은 부등호를 이용한 순차 검색 연산이 자주 발생해서 사용

- 위 b-tree의 단점을 개서니킨 자료구조

- left node를 제외하고 데이터를 저장하지 않아 메모리 확보, 따라서 하나의 노드에 더 많은 포인터를 가질 수 있어 트리높이가 낮아져 검색 속도 향상

- left node끼리 linked list로 연결되어있어 모든 노드 스캔시 시간 절약

 

- 반드시 특정 키에 접근하기 위해 left node까지 가야하는 단점

 

인덱스에 b+tree를 사용하는 이유는 트리의 모양이 항상 균형을 맞춰야하기 때문에 다른 트리보다 높이가 낮아지고 자식들의 밸런스를 잘 유지하면 최악의 경우에도O(logN) 의 시간이 보장된다.  

그리고 left-node끼리 링크드리스트로 연결되어있어 모든 노드 스캔시 시간을 절약할 수 있고, left-node를 제외하고는 데이터를 저장하지 않아 메모리를 확보할 수 있습니다.

 

인덱스는 이진탐색트리도 있지만 이경우는 한곳으로만 쏠릴경우 탐색 시간이 O(N)으로 이진탐색 장점을 가졌다고 보기 어려워졌습니다. 그래서 이것을 보완한 트리중 b-tree가 있습니다. 하지만 b-tree는 순차탐색시 모든 트리를 들려야하기 때문에 비효율적입니다. 그래서 이 순차탐색을 보완하기위해 b+tree가 나왔습니다.

데이터는 left-node에만 있어서 메모리를 확보할 수 있고, left-node는 링크드리스트로 연결되어있고 오름순으로 정렬되어있어 순차탐색시 효율적입니다.