worldint
mathengi
worldint
전체 방문자
오늘
어제
  • 분류 전체보기 (152)
    • infra, cloud (4)
      • aws (4)
    • TIL,WIL(일간,주간 회고) (57)
    • 컴퓨터 공학 (5)
      • 정보통신 (3)
      • 컴퓨터 구조 (2)
    • Math (1)
      • linear algebra (0)
      • 명제와 집합 (1)
      • Linux Ubuntu (0)
    • Operating System (9)
    • programming (63)
      • c , c++ (9)
      • c# (0)
      • java (2)
      • javascript (14)
      • Python (4)
      • github (1)
      • programing terms (12)
      • html, css (2)
      • docker (3)
      • algorithm_datastructure (4)
      • database (9)
      • flutter(dart) (2)
    • 항해99 부트캠프 (7)
      • 사전교육 (7)
    • IT English(개발관련 영어공부) (0)
    • 알고리즘 (1)
    • 보안관련 (1)

블로그 메뉴

    공지사항

    인기 글

    태그

    • node
    • Javascript
    • CloudFront
    • NoSQL
    • 디비데드락
    • EC2
    • docker
    • MONGOOSE
    • ec2 #코드디플로이 #리눅스
    • NVM
    • flutter #provider #error
    • AWS
    • nodejs
    • Blue/Green
    • db데드락
    • ci/cd
    • MongoDB

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    worldint

    mathengi

    B+트리, B트리 비교
    programming/algorithm_datastructure

    B+트리, B트리 비교

    2024. 12. 1. 09:15

    B+트리란?

    B트리에서 확장된 개념으로, 리프 노드에만 실제 데이터를 담는다

    B+트리는 리프 노드에만 데이터를 저장하고, 내부 노드에는 데이터가 아닌 키만을 저장한다

    키는 데이터를 찾기 위한 인덱스 역할을 하며, 실제 데이터는 리프 노드에서만 접근 가능

    이로 인해 모든 데이터 접근이 리프 노드에서 이루어지며, 데이터가 정렬된 형태로 연결되어 있다


    B+트리는 리프 노드를 순차적으로 연결하는 포인터 집합을 가지고 있다.

    인덱스된 순차 파일 처리시,

    포인터를 이용하여, `키 : 값`을 일일이 비교하지 않고 다음 데이터에 접근해서 빠르게 처리할 수 있다.
    (이부분 무슨 말인지 이해가 안된다, 다시 알아보자)

     

    https://en.wikipedia.org/wiki/B%2B_tree#/media/File:Bplustree.png

     

     

    데이터 삽입

    처음 1,2가 노드에 들어있을때

    3을 추가하면

     

    노드의 최대 키을 초과하여( 3차이기 때문에 키는 2개가 최대이다)

    중간에 있는값 2 를 부모노드로 승격시킨다

    근데 이때 b트리와 다른점은 데이터는 리프에서만 접근하기 때문에

    부모노드로 2를 올려도 리프에 2가 계속 남아있어야한다

    부모노드의 2는 탐색키 역활이다.(3을 찾고 싶을때 이것이 2보다 큰지 작은지 따지는 용도)

     

    또 5를 추가하면 
    2보다 크기 때문에 [2,3]이 있는 노드에 5를 추가하고
    [2,3,5]가 되기 때문에 중간의 3을 부모노드에 추가하고 [2],[3,5]로 리프노드를 분할 하게된다

    데이터 삭제

    *경우의 수가 다양하다고한다

     

    여기서 2를 삭제한다고 하면

    리프노드에서 2를 제거하고
    근데 노드의  최소 키보다 작아지기 때문에

    형제 노드에서 3을 빌려온다

    그리고 부모노드를 알맞게 정리한다

     

     

    B트리 vs B+트리

     

    특성 B-트리 B+트리
    데이터 저장 위치 키와 데이터를 같은 노드에 저장 데이터는 리프 노드에만 저장
    범위검색 상대적으로 비효율적 매우 효율적
    단일 키 검색 더 빠를 수 있음  약간 느릴 수 있음
    삽입/삭제 간단 리프 노드에서 주로 작업, 포인터 조정 필요
    • b+트리가 범위 검색에 좋은 이유 : 연속적 접근이 가능 하기 때문에,
      리프 노드의 시작점만 찾으면 나머지는 연결된 노드를 따라가며 데이터를 빠르게 읽을 수 있습니다.
      (예: id BETWEEN 10 AND 50)

     

    여기서 삽입 삭제 해볼 수 있음

    https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html

    'programming > algorithm_datastructure' 카테고리의 다른 글

    이진트리, 이진탐색트리  (0) 2024.11.11
    B-tree  (0) 2024.11.11
    [hackerrank] sorting 문제  (0) 2023.04.08
      'programming/algorithm_datastructure' 카테고리의 다른 글
      • 이진트리, 이진탐색트리
      • B-tree
      • [hackerrank] sorting 문제
      worldint
      worldint
      공부한 내용들, 트러블 슈팅, 아티클 번역 등등 올리는 블로그입니다

      티스토리툴바