B- 트리는 하드 디스크의 데이터베이스 인덱스에 가장 많이 사용되지만 여러 계층의 캐시와 가상 메모리를 갖춘 최신 메모리 계층 구조를 고려할 때 인 메모리 데이터 구조로도 이점이 있습니다. 가상 메모리가 SSD에 있어도 변경되지 않습니다.
나는 C ++로 꽤 많이 쓴 메모리 내 B + 스타일 멀티 웨이 트리 라이브러리를 사용합니다. 원래 작성된 이유는 캐시를 더 잘 사용하려고했기 때문에 성능 이점 이 있을 수 있지만 종종 그런 식으로 작동하지 않는다는 것을 인정해야합니다. 문제는 항목이 삽입 및 삭제시 노드 내에서 이동해야하며 이진 트리에서는 발생하지 않는 절충입니다. 또한, 내가 그것을 최적화하는 데 사용한 저수준 코딩 해킹 중 일부는 아마도 옵티 마이저를 혼동하고 물리 칠 것입니다.
어쨌든 데이터베이스가 SSD에 저장되어 있어도 여전히 블록 지향 저장 장치이며 B-Tree 및 기타 멀티 웨이 트리를 사용하는 것이 여전히 유리합니다.
그러나 약 10 년 전에는 캐시를 모르는 알고리즘과 데이터 구조가 발명되었습니다. 이것들은 캐시 등의 크기와 구조에 대해 잘 모릅니다.-모든 메모리 계층 구조를 (무의식적으로) 최대한 활용합니다. B- 트리는 특정 메모리 계층 구조에 맞게 "조정"되어야 최상의 활용을 할 수 있습니다 (다양한 범위에서 상당히 잘 작동하지만).
캐시의 명백하지 않은 데이터 구조는 아직 야생에서 종종 보이지는 않지만 일반적인 메모리 내 이진 트리를 쓸모 없게 만들 수 있습니다. 또한 클러스터 크기 또는 하드 디스크 캐시 페이지 크기가 무엇인지 신경 쓰지 않기 때문에 하드 디스크 및 SSD에도 가치가 있습니다.
Van Emde Boas 레이아웃은 캐시를 모르는 데이터 구조에서 매우 중요합니다.
MIT OpenCourseware 알고리즘 과정에는 캐시가 보이지 않는 데이터 구조에 대한 내용이 포함되어 있습니다.