더북(TheBook)

2. 모든 레코드 포인터는 데이터 노드에 있습니다. 실제 데이터를 가리키고 있기 때문에 데이터 노드입니다. 가장 중요한 점은 데이터 노드에 모든 키가 다 있다는 것입니다. B 트리와 비교해 보세요. 루트 노드에 있는 키 5도 세 번째 데이터 노드에 있고, 키 3도 키 3이 있는 노드의 오른쪽 자식 노드에 있습니다. 키 7도 키 7이 있는 노드의 오른쪽 자식 노드에 있습니다. 이렇게 인덱스 노드에 있는 모든 키는 데이터 노드에 있습니다. 하지만 인덱스 노드에서는 키의 중복이 없습니다. 어떤 규칙에 따라 인덱스 노드의 키들이 데이터 노드에서 중복해서 나타날까요? 조금만 살펴보면 그 키의 오른쪽 서브 트리에서 가장 작은 키가 있어야 할 곳에 해당 키가 중복되어 나타납니다. 루트 노드에 있는 키 5를 보면 오른쪽 자식 노드인 키 7을 가진 노드의 왼쪽 자식 노드의 첫 번째 키가 5입니다. 오른쪽 서브 트리에서 가장 작은 키가 들어갈 위치이지요. 모든 인덱스 노드의 키들도 이런 규칙에 따라 데이터 노드에 중복하여 나타납니다.

3. 데이터 노드들은 이중 연결 리스트로 연결되어 있습니다. 그림 10-19에서도 화살표를 통해 모든 데이터 노드가 연결 리스트로 연결된 모습을 볼 수 있습니다.

이로써 B 트리와 B+ 트리를 모두 알아보았습니다. 이전 절에서 테이블에서 PRIMARY KEY에 대해서 B 트리로 만들어진 인덱스가 자동 생성되는 것을 살펴보았습니다. 이번에는 다른 컬럼에 대한 인덱스를 만들어 보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.