주요 차이점 : 컴퓨터에서 이진 트리는 데이터를 저장하는 트리 데이터 구조이며 사용자가 알고리즘 시간에 데이터에 액세스, 검색, 삽입 및 삭제할 수 있도록합니다. B와 B + 트리의 차이는 B- 트리에서 내부 노드와 리프 노드 모두에 키와 데이터를 저장할 수있는 반면 B + 트리에서는 데이터와 키를 리프 노드에만 저장할 수 있다는 것입니다 .
이진 트리는 자기 디스크와 같은 직접 액세스 보조 저장 장치에서 잘 작동하도록 설계된 균형 잡힌 검색 트리입니다. Rudolf Bayer와 Ed McCreight는 B-tree의 개념을 발명했습니다.
B- 트리는 모든 노드가 세 개 이상의 자식을 가질 수있는 일반 이진 탐색 트리입니다. B- 트리의 각 내부 노드에는 여러 개의 키가 있습니다. 이러한 키는 값을 분리하고 하위 트리를 추가로 형성합니다. B- 트리의 내부 노드는 가변 수의 자식 노드를 가질 수 있으며 미리 정의 된 범위 내에서 배열됩니다. 각 노드에서 데이터가 삽입되거나 제거 될 때 하위 노드 수가 변경됩니다. 사전 정의 된 범위를 유지하기 위해 내부 노드를 조인하거나 분할 할 수 있습니다. B- 트리에서 미리 정의 된 범위를 유지해야하기 때문에 일정 범위의 하위 노드가 허용됩니다.
B- 트리는 다른 자체 균형 검색 트리와 달리 자주 균형을 재조정 할 필요가 없습니다. 이 트리의 노드가 항상 가득 찬 것은 아닙니다. 따라서이 나무들에서 공간이 낭비되어 공간을 낭비하게됩니다. 자식 노드의 수에 대한 상한 및 하한 만 일반적으로 특정 구현에 대해 고정되어 있습니다. 예를 들어 2-3 B- 트리 (2-3 트리라고도 함)에서는 각 내부 노드에 2 개 또는 3 개의 하위 노드 만있을 수 있습니다.
또한 B- 트리는 큰 데이터 블록을 읽고 쓰는 시스템에 최적화되어 있습니다. 데이터베이스 및 파일 시스템에서 일반적으로 사용됩니다. B 트리에서 모든 노드는 루트 노드와 동일한 밸런싱 깊이에 유지됩니다. 이러한 깊이는 요소 수가 증가함에 따라 천천히 증가합니다. 이것은 모든 리프 노드가 루트에서 멀리 떨어진 하나의 노드가되도록합니다. 또한 B- 트리는 데이터에 액세스하는 데 소요되는 시간과 관련하여 다른 구현과 비교할 때 더 유리합니다.
B + 트리는 노드가있는 n-array 트리입니다. 노드 당 많은 수의 자식으로 구성됩니다. 루트는 세 개 이상의 자식을 포함하는 리프 또는 노드 일 수 있습니다. B + 트리는 루트, 내부 노드 및 리프로 구성됩니다.
B + 트리는 B 트리와 같습니다. 유일한 차이점은 B + 트리의 하단에 연결된 나뭇잎이있는 추가 레벨이 있다는 것입니다. 또한 B 트리와 달리 B + 트리의 각 노드는 키만 포함하고 키 - 값 쌍은 포함하지 않습니다.
또한 B + 트리의 균형 조정 요소 또는 순서는 트리에서 내부 노드의 용량, 즉 보유 할 수있는 노드 수를 측정합니다. 노드에 대한 실제 하위 노드 수는 내부 노드에 따라 제한됩니다. 그러나 루트는 두 개 이상의 자식을 가질 수 있으므로 예외입니다. 예를 들어, B + 트리의 순서가 7 일 경우 각 내부 노드 (루트 제외)는 4 ~ 7 개의 자식을 가질 수 있습니다. 루트는 2와 7 사이 일 수 있습니다. B + 트리의 기본 값은 블록 지향 스토리지 컨텍스트 및 특히 파일 시스템에서 효율적인 검색을 위해 데이터를 저장하는 데 있습니다.
B + 트리의 기본 값은 데이터를 저장하고 유지 관리하므로 데이터가 손실되지 않습니다. 이 접근법은 특히 블록 지향 스토리지 컨텍스트와 일부 특정 파일 시스템에 적용됩니다. B + 트리의 최하위 인덱스 블록 인 리프는 종종 링크 된 목록에서 서로 링크됩니다. 따라서 블록을 통해 범위 쿼리 또는 순서화 된 반복을보다 간단하고 효율적으로 수행 할 수 있습니다. 또한 공간 계수는 B + 트리에서 낭비되지 않습니다. B + 트리는 효율적인 주택 데이터 구조 형식을 제공하므로 액세스 및 저장이 간단합니다. B + 트리는 데이터가 일반적으로 디스크에있는 데이터베이스 시스템 인덱스로 특히 유용합니다.
B 트리와 B + 트리의 비교 :
B 트리 | B + 나무 | |
짧은 웹 설명 | AB 트리는 모든 터미널 노드가베이스에서 같은 거리에 있고 모든 비 터미널 노드가 n과 2 n 개의 하위 트리 또는 포인터 사이에있는 트리 형식의 정보 저장 및 검색을위한 조직 구조입니다 n은 정수). | B + tree는 변수가 있지만 노드 당 많은 수의 자식이있는 n- 배열 트리입니다. B + 트리는 루트, 내부 노드 및 리프로 구성됩니다. 루트는 리프 또는 두 개 이상의 자식이있는 노드 일 수 있습니다. |
또한 ~으로 알려진 | 균형 잡힌 나무. | B 플러스 나무. |
공간 | 에) | 에) |
수색 | O (log n) | O (로그 bn) |
끼워 넣다 | O (log n) | O (로그 bn) |
지우다 | O (log n) | O (로그 bn) |
저장 | B 트리에서 내부 또는 리프 노드에 저장된 키와 데이터를 검색합니다. | B + 트리에서 데이터는 리프 노드에만 저장됩니다. |
데이터 | 세 레코드의 리프 노드는 실제 레코드가 아닌 레코드를 가리 킵니다. | 트리의 리프 노드는 레코드에 대한 포인터가 아닌 실제 레코드를 저장합니다. |
공간 | 이 나무들은 공간을 낭비한다. | 거기 나무는 공간을 낭비하지 않는다. |
잎 노드의 기능 | B 트리에서 리프 노드는 링크 된 목록을 사용하여 저장할 수 없습니다. | B + 트리에서 리프 노드 데이터는 순차 링크 된 목록으로 정렬됩니다. |
수색 | 여기서 잎 노드에서 데이터를 찾을 수 없으므로 B-tree에서 검색이 어려워집니다. | 여기서 모든 데이터는 리프 노드에서 발견되므로 B + 트리의 모든 데이터 검색은 매우 쉽습니다. |
검색 접근성 | B 트리에서 검색은 B + 트리에 비해 쉽지 않습니다. | B + 트리에서는 검색이 쉬워집니다. |
중복 키 | 그들은 중복 검색 키를 저장하지 않습니다. | 그들은 중복 검색 키를 저장합니다. |
응용 프로그램 | 그들은 오래된 버전이며 B + 나무에 비해 유리하지 않습니다. | 많은 데이터베이스 시스템 구현자는 B + 트리의 구조적 단순성을 선호합니다. |