이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : F.10. 메이저 토토 사이트-다차원 메이저 토토 사이트 데이터 유형버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

F.8. 배트맨 토토

이 모듈은 데이터 유형을 구현합니다.배트맨 토토다차원 배트맨 토토를 표현하기 위한 것입니다.

F.8.1. 구문

표 F-3다음을 보여줍니다 에 대한 유효한 외부 표현배트맨 토토유형.x, y등은 부동 소수점을 나타냅니다. 숫자.

표 F-3. 배트맨 토토 외부 표현

x 1차원 점(또는 길이가 0인 점) 1차원 간격)
(x) 위와 동일
x1,x2,...,xn n차원 공간의 한 점으로 표현됨 내부적으로 볼륨이 없는 배트맨 토토로
(x1,x2,...,xn) 위와 동일
(x),(y) 다음에서 시작하는 1차원 간격x그리고 종료 시간:y또는 그 반대로; 주문은 상관없어
[(x),(y)] 위와 동일
(x1,...,xn),(y1,...,yn) n차원 배트맨 토토는 한 쌍으로 표현됩니다. 대각선으로 반대쪽 모서리
[(x1,...,xn),(y1,...,yn)] 위와 동일

반대쪽 모서리의 순서는 중요하지 않습니다. 배트맨 토토가 입력됩니다.배트맨 토토함수 유니폼을 만드는 데 필요한 경우 자동으로 값을 교환"왼쪽 하단 — 오른쪽 상단"내부 표현.

공백은 무시되므로[(x),(y)]다음과 같습니다[ ( x ), ( y ) ].

F.8.2. 정밀도

값은 내부적으로 64비트 부동 소수점으로 저장됩니다 숫자. 이는 약 16개 이상의 숫자를 의미합니다. 유효 숫자는 잘립니다.

F.8.3. 사용법

배트맨 토토모듈에는 GiST가 포함되어 있습니다. 에 대한 인덱스 연산자 클래스배트맨 토토값. 는 GiST 연산자 클래스에서 지원하는 연산자는 다음과 같습니다.표 F-4.

표 F-4. Cube GiST 운영자

운영자 설명
a = b 배트맨 토토 a와 b는 동일합니다.
a && b 배트맨 토토 a와 b가 겹칩니다.
a @ b 배트맨 토토 a는 배트맨 토토 b를 포함합니다.
a <@ b 배트맨 토토 a는 배트맨 토토 b에 포함되어 있습니다.

(PostgreSQL 8.2 이전에는 격리 연산자@그리고<@이었어 각각 호출됨@그리고~. 이 이름은 여전히 사용 가능하지만 더 이상 사용되지 않으며 결국 폐기될 예정입니다. 주의할 점은 오래된 이름은 이전 규칙과 반대로 바뀌었습니다. 핵심 기하학적 데이터 유형!)

표준 B-트리 연산자도 제공됩니다. 예

운영자 설명
[a, b] < [c, d] 미만
[a, b] [c, d] 보다 큼
이 연산자는 어떤 경우에도 의미가 없습니다. 실용적인 목적이지만 정렬. 이 연산자는 먼저 비교합니다. (a)와 (c)가 같으면 (b)와 (d)를 비교하십시오. 그 대부분의 경우 합리적으로 좋은 정렬 결과를 얻습니다. 이 유형에 ORDER BY를 사용하려는 경우 유용합니다.

표 F-5쇼 사용 가능한 기능입니다.

표 F-5. 배트맨 토토 함수

배트맨 토토(float8)가 반환됩니다. 배트맨 토토 두 좌표를 모두 사용하여 1차원 배트맨 토토를 만듭니다. 마찬가지다.배트맨 토토(1) == '(1)'
배트맨 토토(float8, float8)가 반환됩니다. 배트맨 토토 1차원 배트맨 토토를 만듭니다.배트맨 토토(1,2) == '(1),(2)'
배트맨 토토(float8[]) 반환 배트맨 토토 좌표를 사용하여 부피가 0인 배트맨 토토를 만듭니다. 배열에 의해 정의됩니다.배트맨 토토(ARRAY[1,2]) == '(1,2)'
배트맨 토토(float8[], float8[]) 배트맨 토토를 반환합니다 오른쪽 위, 왼쪽 아래로 배트맨 토토를 만듭니다. 두 배열에 의해 정의된 좌표입니다. 길이가 같다.배트맨 토토('1,2'::float[], '3,4'::float[]) == '(1,2),(3,4)'
배트맨 토토(배트맨 토토, float8)가 반환됩니다. 배트맨 토토 차원을 추가하여 새 배트맨 토토를 만듭니다. 두 부분 모두에 대해 동일한 값을 갖는 기존 배트맨 토토 새로운 좌표. 배트맨 토토를 만들 때 유용합니다. 계산된 값에서 하나씩.배트맨 토토('(1)',2) == '(1,2),(1,2)'
배트맨 토토(배트맨 토토, float8, float8) 배트맨 토토를 반환합니다 차원을 추가하여 새 배트맨 토토를 만듭니다. 기존 배트맨 토토. 이것은 배트맨 토토 조각을 만드는 데 유용합니다. 계산된 값에서 하나씩.배트맨 토토('(1,2)',3,4) == '(1,3),(2,4)'
cube_dim(배트맨 토토)이 반환됩니다. 정수 배트맨 토토의 차원 수를 반환합니다.
cube_ll_coord(배트맨 토토, 정수) 두 배를 반환합니다 낮은 위치에 대한 n번째 좌표 값을 반환합니다. 배트맨 토토의 왼쪽 모서리
cube_ur_coord(배트맨 토토, 정수) 두 배를 반환합니다 상위의 n번째 좌표값을 반환합니다. 배트맨 토토의 오른쪽 모서리
cube_is_point(배트맨 토토)가 반환됩니다. 부울 배트맨 토토가 점, 즉 두 점인 경우 참을 반환합니다. 모서리 정의는 동일합니다.
cube_distance(배트맨 토토, 배트맨 토토) 두 배를 반환합니다 두 배트맨 토토 사이의 거리를 반환합니다. 둘 다라면 배트맨 토토는 점입니다. 이것이 정상적인 거리입니다. 기능.
배트맨 토토_하위 집합(배트맨 토토, 정수[]) 배트맨 토토를 반환합니다 다음을 사용하여 기존 배트맨 토토에서 새 배트맨 토토를 만듭니다. 배열의 차원 인덱스 목록입니다. 다음에 사용할 수 있습니다. 단일의 LL 및 UR 좌표를 모두 찾습니다. 측정기준(예:배트맨 토토_하위 집합(배트맨 토토('(1,3,5),(6,7,8)'), ARRAY[2]) = '(3),(7)'. 아니면 떨어뜨리는 데 사용할 수도 있습니다. 크기를 조정하거나 원하는 대로 순서를 변경합니다. 예:배트맨 토토_하위 집합(배트맨 토토('(1,3,5),(6,7,8)'), ARRAY[3,2,1,1]) = '(5, 3, 1, 1),(8, 7, 6, 6)'.
cube_union(배트맨 토토, 배트맨 토토)가 반환됩니다. 배트맨 토토 두 배트맨 토토의 결합을 생성
cube_inter(배트맨 토토, 배트맨 토토)가 반환됩니다. 배트맨 토토 두 배트맨 토토의 교차점을 생성
cube_enlarge(배트맨 토토 c, 더블 r, int n) 배트맨 토토를 반환합니다. 지정된 반경만큼 배트맨 토토의 크기를 늘립니다. 적어도 n 차원에서. 반경이 음수이면 대신 배트맨 토토가 축소됩니다. 이는 생성하는 데 유용합니다. 근처 검색을 위한 지점 주변의 경계 상자 포인트. 정의된 모든 치수는 다음에 의해 변경됩니다. 반경 r. LL 좌표는 r 및 UR에 의해 감소됩니다. 좌표는 r만큼 증가합니다. LL 좌표가 다음과 같은 경우 해당 UR보다 크게 증가했습니다. 좌표(이것은 r < 0인 경우에만 발생할 수 있음)보다 두 좌표 모두 평균으로 설정됩니다. n이 정의된 차원의 수보다 크고 배트맨 토토가 증가하는 경우(r = 0) 0이 다음과 같이 사용됩니다. 추가 좌표의 기준입니다.

F.8.4. 기본값

나는 이 조합을 믿습니다:

select Cube_union('(0,5,2),(2,3,1)', '0');
배트맨 토토_유니온
------
(0, 0, 0),(2, 5, 2)
(1행)

상식과 모순되지 않으며, 교차로

select Cube_inter('(0,-1),(1,1)', '(-2),(2)');
배트맨 토토_인터
-------------
(0, 0),(1, 0)
(1행)

다른 차원의 배트맨 토토에 대한 모든 이진 연산에서 나는 저차원을 데카르트 투영으로 가정하고, 나. 즉, 생략된 좌표 대신에 0이 있습니다. 문자열 표현. 위의 예는 동일합니다. 에:

cube_union('(0,5,2),(2,3,1)','(0,0,0),(0,0,0)');
Cube_inter('(0,-1),(1,1)','(-2,0),(2,0)');

다음 포함 조건자는 포인트 구문을 사용합니다. 실제로 두 번째 인수는 내부적으로 다음과 같이 표현됩니다. 상자. 이 구문을 사용하면 별도의 정의가 필요하지 않습니다. (box,point) 술어에 대한 포인트 유형 및 함수.

select Cube_contains('(0,0),(1,1)', '0.5,0.5');
배트맨 토토_포함
--------------
티
(1행)

F.8.5. 참고

사용 예는 회귀 테스트를 참조하세요.sql/cube.sql.

사람들이 일을 깨뜨리는 것을 더 어렵게 만들기 위해 다음이 있습니다. 배트맨 토토의 차원 수는 100개로 제한됩니다. 이 설정 에서cubedata.h필요한 것이 있으면 더 크다.

F.8.6. 크레딧

원저자: Gene Selkov, Jr., Argonne National 수학 및 컴퓨터 공학부 연구실.

저는 주로 Joe Hellerstein 교수에게 감사드립니다 (http://db.cs.berkeley.edu/jmh/)를 설명하기 위해 GiST의 요지 (http://gist.cs.berkeley.edu/) 그리고 그의 전 학생 앤디 동(http://best.me.berkeley.edu/~adong/), 그를 위해 Illustra를 위해 작성된 예http://best.berkeley.edu/~adong/rtree/index.html. 나 또한 현재와 과거의 모든 Postgres 개발자들에게도 감사드립니다. 나만의 세계를 창조하고 방해받지 않고 살아갈 수 있게 해주셔서 그 안에. 그리고 아르곤에게 감사의 인사를 전하고 싶습니다. 연구소와 미국 에너지부에 수년간 내 데이터베이스 연구를 충실히 지원합니다.

이 패키지에 대한 사소한 업데이트는 Bruno Wolff III에 의해 이루어졌습니다.에 2002년 8월/9월. 여기에는 정밀도 변경이 포함됩니다. 단정밀도에서 배정밀도로 변경하고 새로운 기능을 추가합니다. 기능.

Joshua Reich가 추가 업데이트를 했습니다.7월 2006. 여기에는 다음이 포함됩니다.배트맨 토토(float8[], float8[])그리고 V1 호출을 사용하기 위한 코드 정리 더 이상 사용되지 않는 V0 프로토콜 대신 프로토콜을 사용합니다.