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_ops
Minmax의 예로서box_inclusion_ops
포함의 예로
올바른 문서에 아무것도 표시되면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면