71.3. 확장 성

the브린인터페이스는 높은 수준의 추상화를 가지고있어 액세스 방법 구현자가 액세스하는 데이터 유형의 의미를 구현해야합니다. 그만큼브린레이어 자체는 동시성, 인덱스 구조를 로깅 및 검색합니다.

a를 얻는 데 필요한 모든 것브린액세스 방법 작업은 몇 가지 사용자 정의 메소드를 구현하여 인덱스에 저장된 요약 값의 동작과 스캔 키와 상호 작용하는 방식을 정의하는 것입니다. 요컨대브린확장 성과 일반성, 코드 재사용 및 깨끗한 인터페이스를 결합합니다.

무지개 토토가 클래스하는 4 가지 방법이브린제공해야합니다 :

brinopcinfo *opcinfo (Oid type_oid)

인덱스 된 열의 요약 데이터에 대한 내부 정보를 반환합니다. 반환 값은 palloc'd를 가리켜 야합니다Brinopcinfo,이 정의가 있습니다.

typedef struct brinopcinfo

    / *이 opclass의 인덱스 열에 저장된 열 수 */
    UINT16 OI_NSTORED;

    / * opclass의 개인 용도를위한 불투명 포인터 */
    void *oi_opaque;

    / * 저장된 열의 캐시 항목을 입력하십시오 */
    typecacheentry *oi_typcache [flexible_array_member];
 brinopcinfo;

Brinopcinfo.oi_opaque인덱스 스캔 중에 지원 기능간에 정보를 전달하기 위해 무지개 토토 클래스 루틴에서 사용할 수 있습니다.

bool 일관성 (Brindesc *bdesc, brinValues *열, 스캔 키 *키, int nkeys)

모든 스캔 키 항목이 범위에 대한 지정된 색인 값과 일치하는지 여부를 반환합니다. 사용할 속성 번호는 스캔 키의 일부로 전달됩니다. 동일한 속성에 대한 다중 스캔 키는 한 번에 전달 될 수 있습니다. 항목 수는에 의해 결정됩니다.nkeys매개 변수.

bool 일관성 (Brindesc *bdesc, brinValues *열, 스캔 키 키)

스캔 키가 범위에 대한 주어진 색인 값과 일치하는지 여부를 반환합니다. 사용할 속성 번호는 스캔 키의 일부로 전달됩니다. 이것은 일관된 함수의 오래된 후진 호환 변형입니다.

bool addValue (Brindesc *bdesc, brinValues *열, Datum NewVal, bool isnull)

인덱스 튜플과 인덱스 값이 주어지면 튜플의 표시된 속성을 수정하여 새 값을 추가로 나타냅니다. 튜플에 대한 수정이 완료되면true반환되었습니다.

Bool UnionTuples (Brindesc *bdesc, brinvalues *a, brinvalues *b)

두 개의 인덱스 튜플을 통합합니다. 두 개의 인덱스 튜플이 주어지면 두 튜플을 나타내도록 첫 번째의 표시된 속성을 수정합니다. 두 번째 튜플은 수정되지 않았습니다.

무지개 토토 클래스브린다음 방법을 선택적으로 지정할 수 있습니다.

무효 옵션 (local_relopts *repopts)

무지개 토토 클래스 동작을 제어하는 사용자가 가시 가능한 매개 변수 세트를 정의합니다.

the옵션함수는 A로 포인터가 전달됩니다local_relopts구조물은 일련의 무지개 토토 클래스 특정 옵션으로 채워야합니다. 옵션은를 사용하여 다른 지원 기능에서 액세스 할 수 있습니다.pg_has_opclass_options ()andpg_get_opclass_options ()Macros.

인덱스 값의 키 추출과 키의 표현이 모두 이후브린융통성이 있으며 사용자 지정 매개 변수에 의존 할 수 있습니다.

핵심 분포에는 Minmax, Minmax-Multi, Inclusion and Bloom의 4 가지 유형의 무지개 토토 클래스에 대한 지원이 포함됩니다. 무지개 토토 클래스 정의를 사용하는 클래스 정의는 코어 내 데이터 유형에 적절하게 배송됩니다. 추가 연산자 클래스는 소스 코드를 작성하지 않고도 동등한 정의를 사용하여 다른 데이터 유형에 대해 사용자가 정의 할 수 있습니다. 적절한 카탈로그 항목으로 선언 된 항목으로 충분합니다. 운영자 전략의 의미론에 대한 가정은 지원 기능의 소스 코드에 포함됩니다.

완전히 다른 의미를 구현하는 무지개 토토 클래스도 가능합니다. 위에서 설명한 4 가지 주요 지원 기능의 구현이 작성되었습니다. 주요 릴리스의 역 호환성은 보장되지 않습니다. 예를 들어, 후기 릴리스에서 추가 지원 기능이 필요할 수 있습니다.

완전히 주문한 세트를 구현하는 데이터 유형에 대한 연산자 클래스를 작성하려면에 표시된대로 해당 연산자와 함께 Minmax 지원 기능을 사용할 수 있습니다.표 71.2. 모든 무지개 토토 클래스 멤버 (기능 및 운영자)는 필수입니다.

표 71.2. Minmax 무지개 토토 클래스의 기능 및 지원 번호

무지개 토토 클래스 멤버 개체
지원 기능 1 내부 기능brin_minmax_opcinfo ()
지원 기능 2 내부 기능brin_minmax_add_value ()
지원 기능 3 내부 기능brin_minmax_consistent ()
지원 기능 4 내부 기능brin_minmax_union ()
무지개 토토 전략 1 무지개 토토보다
무지개 토토 전략 2 무지개 토토가 적거나 평등하지 않은 무지개 토토
무지개 토토 전략 3 무지개 토토 동등한
무지개 토토 전략 4 무지개 토토는 더 큰 것보다 동등합니다
무지개 토토 전략 5 무지개 토토보다 더

다른 유형 내에 포함 된 값이 포함 된 복잡한 데이터 유형에 대한 연산자 클래스를 작성하려면, 포함 된 연산자와 함께 포함 지원 기능을 사용할 수 있습니다.표 71.3. 모든 언어로 작성할 수있는 단일 추가 기능 만 있으면됩니다. 추가 기능을 위해 더 많은 기능을 정의 할 수 있습니다. 모든 무지개 토토는 선택 사항입니다. 일부 무지개 토토는 테이블의 종속성으로 표시된 것처럼 다른 연산자를 요구합니다.

표 71.3. 포함 작업자 클래스의 기능 및 지원 번호

무지개 토토 클래스 멤버 개체 의존성
지원 기능 1 내부 기능brin_inclusion_opcinfo ()
지원 기능 2 내부 기능brin_inclusion_add_value ()
지원 기능 3 내부 기능brin_inclusion_consistent ()
지원 기능 4 내부 기능brin_inclusion_union ()
지원 기능 11 두 요소를 병합하는 기능
지원 기능 12 두 요소가 합병 가능한지 확인하는 선택적 함수
지원 기능 13 요소가 다른 내에 포함되어 있는지 확인할 수있는 선택적 함수
지원 기능 14 요소가 비어 있는지 확인하는 선택적 함수
무지개 토토 전략 1 무지개 토토 왼쪽 무지개 토토 전략 4
무지개 토토 전략 2 운영자는 extend-to-the grong-of 무지개 토토 전략 5
무지개 토토 전략 3 무지개 토토 중첩
무지개 토토 전략 4 무지개 토토는 leftent-to-left-of가 아닙니다 무지개 토토 전략 1
무지개 토토 전략 5 무지개 토토 권리 무지개 토토 전략 2
무지개 토토 전략 6, 18 무지개 토토 동성 또는 동일하게 무지개 토토 전략 7
무지개 토토 전략 7, 16, 24, 25 무지개 토토가 포함되어 있거나 평등합니다
무지개 토토 전략 8, 26, 27 무지개 토토 IS가 포함 또는 평등합니다 무지개 토토 전략 3
무지개 토토 전략 9 무지개 토토는 extend-above가 아닙니다 무지개 토토 전략 11
무지개 토토 전략 10 무지개 토토 IS-BELOW 무지개 토토 전략 12
무지개 토토 전략 11 무지개 토토 IS-ABOVE 무지개 토토 전략 9
무지개 토토 전략 12 무지개 토토는 extend-below가 아닙니다 무지개 토토 전략 10
무지개 토토 전략 20 무지개 토토보다 무지개 토토 전략 5
무지개 토토 전략 21 무지개 토토는 적거나 평등하지 않은 무지개 토토 무지개 토토 전략 5
무지개 토토 전략 22 무지개 토토보다 무지개 토토 전략 1
무지개 토토 전략 23 무지개 토토가 더 큰 무지개 토토 무지개 토토 전략 1

지원 함수 번호 1 ~ 10은 브린 내부 함수에 대해 예약되어 있으므로 SQL 레벨 함수는 숫자 11으로 시작합니다. 지원 기능 번호 11은 인덱스를 구축하는 데 필요한 주요 기능입니다. 무지개 토토 클래스와 동일한 데이터 유형을 가진 두 가지 인수를 수락하고 연합을 반환해야합니다. 포함 무지개 토토 클래스는로 정의 된 경우 다른 데이터 유형으로 Union 값을 저장할 수 있습니다.스토리지매개 변수. 노조 기능의 반환 값은와 일치해야합니다.스토리지데이터 유형.

지원 함수 번호 12 및 14는 내장 데이터 유형의 불규칙성을 지원하기 위해 제공됩니다. 기능 번호 12는 합병 할 수없는 다른 패밀리의 네트워크 주소를 지원하는 데 사용됩니다. 기능 번호 14는 빈 범위를 지원하는 데 사용됩니다. 함수 번호 13은 선택 사항이지만 권장되는 권장이므로 새로운 값을 Union 함수로 전달하기 전에 확인할 수 있습니다. Brin Framework가 조합이 변경되지 않을 때 일부 작업을 단축시킬 수 있으므로이 기능을 사용하여 색인 성능을 향상시킬 수 있습니다.

평등 연산자 만 구현하고 해싱을 지원하는 데이터 유형에 대한 연산자 클래스를 작성하려면 다음과 같이 해당 연산자와 함께 Bloom 지원 절차를 사용할 수 있습니다.표 71.4. 모든 무지개 토토 클래스 멤버 (절차 및 운영자)는 필수입니다.

표 71.4. 블룸 무지개 토토 클래스의 절차 및 지원 번호

무지개 토토 클래스 멤버 개체
지원 절차 1 내부 기능brin_bloom_opcinfo ()
지원 절차 2 내부 기능brin_bloom_add_value ()
지원 절차 3 내부 기능brin_bloom_consistent ()
지원 절차 4 내부 기능brin_bloom_union ()
지원 절차 5 내부 기능brin_bloom_options ()
지원 절차 11 요소의 해시를 계산하는 함수
무지개 토토 전략 1 연산자 동등한

지원 절차 번호 1-10은 브린 내부 기능에 예약되어 있으므로 SQL 레벨 기능은 11 번으로 시작합니다. 지원 기능 번호 11은 인덱스를 구축하는 데 필요한 주요 기능입니다. 연산자 클래스와 동일한 데이터 유형을 가진 하나의 인수를 수락하고 값의 해시를 반환해야합니다.

Minmax-Multi 무지개 토토 클래스는 완전히 주문한 세트를 구현하는 데이터 유형을위한 것이며 Minmax 무지개 토토 클래스의 간단한 확장으로 볼 수 있습니다. Minmax 무지개 토토 클래스는 각 블록 범위의 값을 단일 연속 간격으로 요약하지만 Minmax-Multi는 여러 개의 작은 간격으로 요약하여 특이 치 값의 처리를 향상시킵니다. 다음과 같이 Minmax-Multi 지원 절차를 해당 연산자와 함께 사용할 수 있습니다.표 71.5. 모든 무지개 토토 클래스 멤버 (절차 및 운영자)는 필수입니다.

표 71.5. Minmax-Multi 무지개 토토 클래스의 절차 및 지원 번호

무지개 토토 클래스 멤버 개체
지원 절차 1 내부 기능brin_minmax_multi_opcinfo ()
지원 절차 2 내부 기능brin_minmax_multi_add_value ()
지원 절차 3 내부 기능brin_minmax_multi_consistent ()
지원 절차 4 내부 기능brin_minmax_multi_union ()
지원 절차 5 내부 기능brin_minmax_multi_options ()
지원 절차 11 두 값 (범위의 길이) 사이의 거리를 계산하는 함수
무지개 토토 전략 1 무지개 토토가 덜
무지개 토토 전략 2 무지개 토토가 적거나 평등하지 않은 무지개 토토
무지개 토토 전략 3 연산자 동등한
무지개 토토 전략 4 무지개 토토는 더 큰 것보다 동등합니다
무지개 토토 전략 5 무지개 토토보다

Minmax 및 포함 작업자 클래스는 크로스 데이터 유형 연산자를 지원하지만 의존성은 더욱 복잡해집니다. Minmax 무지개 토토 클래스는 전체 운영자 세트를 동일한 데이터 유형을 가진 두 인수로 정의해야합니다. 추가 작업자 세트를 정의하여 추가 데이터 유형을 지원할 수 있습니다. 포함 무지개 토토 클래스 운영자 전략은 다른 운영자 전략에 의존합니다.표 71.3또는 동일한 무지개 토토 전략 자체. 종속성 연산자는로 정의해야합니다.스토리지데이터 유형 왼쪽 인수와 다른 지원되는 데이터 유형은 지원되는 연산자의 오른쪽 인수입니다. 보다float4_minmax_opsMinmax의 예로서box_inclusion_ops포함의 예로

정정 제출

올바른 문서에 아무것도 표시되면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면