이 섹션은 구현 세부 사항 및 구현 자에게 유용한 기타 트릭을 다룹니다.SP-Gist알아볼 운영자 클래스.
개별 잎 튜플과 내부 튜플은 단일 인덱스 페이지 (기본적으로 8kb)에 맞아야합니다. 따라서 가변 길이의 데이터 유형의 인덱싱 값을 인덱싱 할 때, 긴 값은 Radix Trees와 같은 방법에 의해서만 지원 될 수 있으며, 여기에는 트리의 각 레벨에는 페이지에 맞을 정도로 짧은 접두사가 포함되며 최종 잎 수준에는 페이지에 맞을 정도로 짧은 접미사가 포함됩니다.LongValuesok
이것이 일어날 준비가 된 경우에만 참으로. 그렇지 않으면SP-GistCore는 색인 페이지에 너무 큰 값을 색인하라는 요청을 거부합니다.
마찬가지로, 내부 튜플이 인덱스 페이지에 맞지 않기에는 내부 튜플이 너무 커지지 않는 것이 운영자 클래스의 책임입니다. 이것은 하나의 내부 튜플에서 사용할 수있는 자식 노드의 수와 접두사 값의 최대 크기를 제한합니다.
또 다른 한계는 내부 튜플의 노드가 잎 튜플 세트를 가리키면 그 튜플이 모두 같은 색인 페이지에 있어야한다는 것입니다. (이것은 그러한 튜플을 묶는 링크의 탐색을 줄이고 공간을 절약하기위한 설계 결정입니다.) 잎 튜플 세트가 페이지에 비해 너무 커지면 분할이 수행되고 중간 내부 튜플이 삽입됩니다.필수잎 값 세트를 하나 이상의 토토 캔 그룹으로 나눕니다. 운영자 클래스의 경우picksplit
함수는 그렇게하지 못합니다.SP-Gist코어 리조트에 설명 된 특별한 조치에 대한섹션 65.4.3.
언제longValuesok
사실입니다.의 연속적인 수준이 예상됩니다.SP-Gist트리는 내부 튜플의 접두사 및 노드 레이블에 점점 더 많은 정보를 흡수하여 필요한 잎 기준을 작고 작게 만들어 결국 페이지에 맞습니다. 운영자 클래스의 버그가 무한 삽입 루프를 유발하지 않도록SP-Gist코어는 잎 기준이 10 사이클 이내에 더 작아지지 않으면 오류가 발생합니다선택
메소드 호출.
일부 트리 알고리즘은 각 내부 튜플에 대해 고정 된 노드 세트를 사용합니다. 예를 들어, 쿼드 트리에는 항상 내부 튜플의 중심 지점 주위의 4 개의 사분면에 해당하는 정확히 4 개의 노드가 있습니다.picksplit
함수는 null을 반환 할 수 있습니다Nodelabels
배열 및 마찬가지로선택
함수는 null을 반환 할 수 있습니다PrefixNodelabels
A 중 배열spgsplittuple
행동. 결과적으로Nodelabels
후속 호출 중선택
andInner_consistent
. 원칙적으로 노드 레이블은 일부 내부 튜플에 사용되어 같은 색인의 다른 튜플에 생략 할 수 있습니다.
표지되지 않은 노드를 가진 내부 튜플로 작업 할 때는에 대한 오류입니다.선택
반품SPGADDNODE
, 그러한 경우 토토 캔 세트가 고정되어야하기 때문에.
theSP-Gist코어는 운영자 클래스의 결과를 무시할 수 있습니다picksplit
picksplit
제공된 잎 값을 최소한 두 노드 범주로 나누지 못합니다. 이런 일이 발생하면 새 내부 튜플은 각각 동일한 레이블 (있는 경우)을 갖는 여러 노드로 생성됩니다.picksplit
사용했던 하나의 토토 캔에 주어졌으며, 잎 값은 이들 동등한 토토 캔들 사이에서 무작위로 나뉩니다. 그만큼Allthesame
플래그는 내부 튜플에 설정되어선택
andInner_consistent
튜플에 다른 방법으로 기대할 수있는 토토 캔 세트가없는 함수
대처할 때Allthesame
튜플, A선택
결과SPGMATCHNODE
새 값이 동등한 토토 캔에 할당 될 수 있음을 의미하는 것으로 해석됩니다. 핵심 코드는 제공된 것을 무시합니다Noden
값을 무작위로 토토 캔 중 하나로 내려갑니다 (나무의 균형을 유지하기 위해). 에 대한 오류입니다.선택
반환Spgaddnode
, 그로 인해 토토 캔가 모두 동일하지 않기 때문입니다. 그만큼SPGSPLITTUPLE
삽입 할 값이 기존 토토 캔와 일치하지 않으면 동작을 사용해야합니다.
대처할 때Allthesame
튜플,Inner_consistent
함수는 모두 동등하기 때문에 인덱스 검색을 계속하기위한 대상으로 노드 또는 전부를 반환해야합니다. 이것은 얼마나 많은지에 따라 특수 사례 코드를 요구할 수도 있고 필요하지 않을 수 있습니다.Inner_consistent
함수는 일반적으로 토토 캔의 의미에 대해 가정합니다.