색인을 통해 삽입/삭제/검색을위한 모든 작업과 함께 b + 트리 색인을 작성했습니다. 거대한 데이터 세트의 삽입을 가속화하기 위해 대규모 데이터 세트를 실험 할 수 있도록 대량로드를 구현하고 싶습니다.b + 트리에 대량로드 데이터
내가하려고 한 것은 데이터를 정렬하고 리프 수준에서 페이지를 채우기 시작하는 것입니다. 필요에 따라 키는 복사되거나 상위 레벨로 푸시됩니다. 나는 항상 색인의 개척지를 다양한 높이에서 추적한다. 예를 들어 내 인덱스의 높이가 3 (루트, 내부 노드와 리프 레벨을 포함하는 한 레벨) 인 경우, 메모리에 3 페이지를 유지하고 일단 가득 차거나 더 이상 데이터가 없으면 디스크.
문제는 모든 개별 노드의 페이지 제한을 유지하기 위해 각 페이지에 쓸 데이터의 양입니다. 이러한 제한은 here입니다. 노드로드 제한을 보장하기 위해 어떤 채우기 비율을 사용할 것인지를 결정하기위한 대량로드 구현 또는 좋은 전략 구현에 대한 세부 정보가있는 유용한 리소스를 찾을 수 없었습니다.
아이디어가 있으십니까?
모든 페이지가 가득 찰 때까지 채우지 않는 이유는 무엇입니까? 이론적 한계는 나무가 병리학 적으로 퇴보하지 않는 한 실제로 중요하지 않습니다. – usr
대부분의 경우 각 페이지를 가득 채우면 언밸런스 드 B + 트리로 끝납니다. 키는 가로 및 세로로 인덱스에 거의 균일하게 분포해야하며 이론상의 한계가 존재합니다. – Pirooz
제공 한 링크에 노드의 최대 용량이 b로 표시되어 최대로 채워졌습니다. 잎이 가득 찰 때까지 잎을 채우고 균형이 맞지 않는 곳으로 데이터 세트를 만들 수는 없습니다. 예를 들어 줄 수 있습니까? – usr