B tree가 왜 DB 인덱스(index)로 사용되는가?

최민수·2023년 2월 22일
0

CS 전공지식

목록 보기
7/36

movie

DB는 secondary storage 에 저장된다

  • 데이터 보존이 영구적, 대용량의 메모리 영역이기 때문
  • 메인 메모리에 비해 access 속도가 매우 느림
    • 따라서, secondary storage로의 접근 횟수를 줄여주는 것이 유리하다.

B 계열 트리 vs Balanced BST 트리

  • 조회, 삽입, 삭제의 시간복잡도 관점에서 봤을 때 위의 트리들은 모두 O(logN)으로 같다.
  • 그렇다면 B 계열 트리를 쓰는 이유는 무엇일까?
    • B 계열 트리(ex. 5차 B tree)의 경우 자녀 노드 수가 3-5개 이고, Balanced BST의 한 종류인 AVL 트리의 경우 자녀 노드 수가 1-2개 이기 때문에 데이터를 찾을 때 탐색 범위를 더 빠르게 좁힐 수 있다.
    • 노드가 가질 수 있는 key값이 5차 트리의 경우 2-4개 AVL 트리의 경우 1개이고, secondary storage에서 데이터를 block 단위로 가져오기 때문에 B 트리를 사용할 때 access 횟수가 줄 확률이 더 크다.

B 트리의 강력함

  • 101차 B 트리 (최대 자녀 수 101개, 최대 key값 100개) 가 저장할 수 있는 데이터 수
  • 높이 3 (레벨4) 인 경우
    • Best case: 약 1억개
    • Worst case: 약 26만개

해시 기법을 쓰면?

  • 해싱(hash) 기법은 삽입/조회/삭제에 O(1) 이기 때문에 이 점에서는 이점이 있다.
    • 그렇지만 정확한 값을 조회하는 equality 조회만 가능하고 (범위 조회 X)
    • 정렬에 사용할 수 없다는 점이 문제가 된다.
profile
CS, 개발 공부기록 🌱

0개의 댓글