B+ Tree

gyumin.park·2023년 10월 1일
0

B+tree

목록 보기
1/1
post-thumbnail

B-tree advanced version
B-tree와의 유일한 차이점은 B+ tree가 leaf node에 데이터를 저장한다는 것이다.

Structure

  • Index

    • 각 node가 record 대신 key로 구성
    • key들은 search시에 navigation 역할
  • Sequence set (data node set)

    • 모든 record 저장
    • node들의 구조는 linked-list
    • 모든 record들은 key 값 순서로 정렬됨

Insertion B+ tree

0. (초반부) root가 NULL인 경우

  • Index node를 만들고 root가 가리킴
  • data node를 만들고 record를 넣음
  • root Index node의 P[0]가 data node를 가리킴
  • root Index node의 P[1]에 NULL을 넣음

1. (초반부) root가 NULL이 아닌 경우

  • Sequence set에 data node가 1개만 존재하는 경우
  • root Index node의 P[1]이 NULL인지 체크
  • 1-1) data node에 빈 자리가 있으면 오름차순으로 삽입 후 종료

  • 1-2) data node에 빈 자리가 없으면 data node를 splitting 진행 (overflow)

2. (일반적인 경우)

  • root Index node의 P[1]이 NULL인지 체크
  • 찾은 데이터 노드에 삽입을 시도
  • 2-1) 빈 자리가 있으면 순서에 맞춰서 삽입 후 종료

  • 2-2) 빈 자리가 없으면 overflow 처리

    • 삽입할 record + 찾은 data node의 모든 record를 big node에 넣고 두 부분으로 분리 -> 이부분이 삽입과 다름
    • bing node의 중간 record까지를 첫 부분으로 하고 뒷 부분은 새로운 new data node를 할당함
    • <mid_key, ptr_new_data>쌍을 찾은 data node의 parent node에 삽입

0개의 댓글