F.10. 메이저 토토 사이트-다차원 메이저 토토 사이트 데이터 유형#

이 모듈은 데이터 유형을 구현합니다메이저 토토 사이트다차원 메이저 토토 사이트를 나타내는 것.

이 모듈이 고려됩니다신뢰할 수있는Create현재 데이터베이스의 권한.

F.10.1. 통사론#

테이블 F.1에 대한 유효한 외부 표현을 보여줍니다메이저 토토 사이트타입.x, y등. 부동 소수점 번호를 나타냅니다.

표 F.1. 메이저 토토 사이트 외부 표현

외부 구문 의미
x 1 차원 지점 (또는 제로 길이의 1 차원 간격)
(x) 위와 동일
x1,x2,...,xn 내 차원 공간의 지점, 내부적으로 제로 볼륨 메이저 토토 사이트로 표현
(x1,x2,...,xn) 위와 동일
(x), (y) 1에서 시작하는 1 차원 간격x및 끝에서y또는 그 반대; 주문은 중요하지 않습니다
[(x), (y)] 위와 동일
(x1,...,xn), (Y1,...,yn) 대각선 반대쪽 코너 쌍으로 표현 된 N- 차원 메이저 토토 사이트
[(x1,...,xn), (y1,...,yn)] 위와 동일

메이저 토토 사이트의 반대쪽 모서리를 입력하는 것은 중요하지 않습니다.메이저 토토 사이트함수는 균일을 생성하는 데 필요한 경우 값을 자동으로 교체합니다왼쪽 하단 - 오른쪽 상단내부 표현. 모서리가 일치 할 때메이저 토토 사이트한쪽 코너와 함께 저장is point공간 낭비를 피하기위한 깃발.

입력시 공백이 무시되므로[(x), (y)]|[(x), (y)].

F.10.2. 정도#

값은 내부적으로 64 비트 플로팅 포인트 번호로 저장됩니다. 이것은 약 16 개의 중요한 숫자가있는 숫자가 잘릴 것임을 의미합니다.

F.10.3. 용법#

테이블 F.2유형에 제공된 특수 연산자를 보여줍니다메이저 토토 사이트.

표 F.2. 메이저 토토 사이트 연산자

운영자

설명

메이저 토토 사이트 && 메이저 토토 사이트부울

메이저 토토 사이트가 겹치는가?

메이저 토토 사이트 @ 메이저 토토 사이트부울

첫 번째 메이저 토토 사이트에는 두 번째 메이저 토토 사이트가 포함되어 있습니까?

메이저 토토 사이트 <@ 메이저 토토 사이트부울

두 번째 메이저 토토 사이트가 두 번째 메이저 토토 사이트가 포함되어 있습니까?

메이저 토토 사이트 - Integerfloat8

추출n-TH CUBE의 좌표 (1에서 카운트).

메이저 토토 사이트 ~ Integerfloat8

추출n-메이저 토토 사이트의 좌표, 다음 방식으로 계산합니다.n= 2 *K- 1은 하한을 의미합니다K-th dimension,n= 2 *K상한을 의미K-Th Dimension. 부정적인n해당 양의 좌표의 역 값을 나타냅니다. 이 연산자는 KNN-Gist 지원을 위해 설계되었습니다.

메이저 토토 사이트 <-- 메이저 토토 사이트float8

두 메이저 토토 사이트 사이의 유클리드 거리를 계산합니다.

메이저 토토 사이트 <# 메이저 토토 사이트float8

두 메이저 토토 사이트 사이의 택시 (L-1 메트릭) 거리를 계산합니다.

메이저 토토 사이트 <= 메이저 토토 사이트float8

두 메이저 토토 사이트 사이의 ChebyShev (L-inf metric) 거리를 계산합니다.


위의 연산자 외에도에 표시된 일반적인 비교 연산자표 9.1유형에 사용할 수 있습니다메이저 토토 사이트. 이 연산자는 먼저 첫 번째 좌표를 비교하고, 동일하면 두 번째 좌표 등을 비교합니다. 주로 B-Tree Index Operator Class for을 지원하기 위해 존재합니다.메이저 토토 사이트, 예를 들어 A에 고유 한 제약을 원할 경우 유용 할 수 있습니다.메이저 토토 사이트열. 그렇지 않으면이 주문은 실용적으로 사용되지 않습니다.

the메이저 토토 사이트모듈은 또한 GIST 인덱스 연산자 클래스를 제공합니다메이저 토토 사이트값. 에이메이저 토토 사이트GIST 인덱스를 사용하여를 사용하여 값을 검색 할 수 있습니다.=, &&, @<@운영자여기서클로즈.

또한 A메이저 토토 사이트Gist Index는 메트릭 연산자를 사용하여 가장 가까운 이웃을 찾는 데 사용될 수 있습니다<--, <#<=in주문조항. 예를 들어, 3D 포인트 (0.5, 0.5, 0.5)의 가장 가까운 이웃은 다음과 같이 효율적으로 찾을 수 있습니다.

C <- 메이저 토토 사이트로 테스트 순서에서 C를 선택하십시오 (배열 [0.5,0.5,0.5]) 제한 1;

the~연산자는 이러한 방식으로 사용하여 선택한 좌표로 정렬 된 처음 몇 가지 값을 효율적으로 검색 할 수 있습니다. 예를 들어, 첫 번째 좌표 (왼쪽 하단)에서 순서대로 첫 몇 개의 메이저 토토 사이트를 얻으려면 다음 쿼리를 사용할 수 있습니다.

C ~ 1 한계 5로 테스트 순서에서 C를 선택하십시오.

그리고 오른쪽 상단 코너 하강의 첫 번째 좌표로 2D 메이저 토토 사이트를 주문하려면 :

C ~ 3 DESC LIMIT 5;의 테스트 순서에서 C를 선택하십시오.

테이블 F.3가용 함수를 보여줍니다.

표 F.3. 메이저 토토 사이트 기능

기능

설명

예제

메이저 토토 사이트(float8) →메이저 토토 사이트

두 좌표와 함께 1 차원 메이저 토토 사이트를 만듭니다.

메이저 토토 사이트 (1)(1)

메이저 토토 사이트(float8, float8) →메이저 토토 사이트

1 차원 메이저 토토 사이트를 만듭니다.

메이저 토토 사이트 (1, 2)(1), (2)

메이저 토토 사이트(float8 []) →메이저 토토 사이트

배열에서 정의 된 좌표를 사용하여 제로 볼륨 메이저 토토 사이트를 만듭니다.

메이저 토토 사이트 (배열 [1,2,3])(1, 2, 3)

메이저 토토 사이트(float8 [], float8 []) →메이저 토토 사이트

두 배열에 의해 정의 된대로 오른쪽 상단 및 하단 좌표가있는 메이저 토토 사이트를 만듭니다.

메이저 토토 사이트 (배열 [1,2], 배열 [3,4])(1, 2), (3, 4)

메이저 토토 사이트(메이저 토토 사이트, float8) →메이저 토토 사이트

새 좌표의 두 엔드 포인트에 대해 동일한 값을 가진 기존 메이저 토토 사이트에 치수를 추가하여 새 메이저 토토 사이트를 만듭니다. 이것은 계산 된 값에서 메이저 토토 사이트를 조각으로 구축하는 데 유용합니다.

메이저 토토 사이트 ( '(1,2), (3,4)':: Cube, 5)(1, 2, 5), (3, 4, 5)

메이저 토토 사이트(메이저 토토 사이트, float8, float8) →메이저 토토 사이트

기존 메이저 토토 사이트에 치수를 추가하여 새 메이저 토토 사이트를 만듭니다. 이것은 계산 된 값에서 메이저 토토 사이트를 조각으로 구축하는 데 유용합니다.

메이저 토토 사이트 ( '(1,2), (3,4)':: Cube, 5, 6)(1, 2, 5), (3, 4, 6)

Cube_dim(메이저 토토 사이트) →Integer

메이저 토토 사이트의 치수 수를 반환합니다.

Cube_dim ( '(1,2), (3,4)')2

cube_ll_coord(메이저 토토 사이트, Integer) →float8

반환n메이저 토토 사이트의 왼쪽 하단 모서리에 대한 조정 값.

Cube_ll_Coord ( '(1,2), (3,4)', 2)2

Cube_ur_Coord(메이저 토토 사이트, Integer) →float8

반환n메이저 토토 사이트의 오른쪽 상단 모서리에 대한 조정 값.

Cube_ur_Coord ( '(1,2), (3,4)', 2)4

Cube_is_point(메이저 토토 사이트) →부울

메이저 토토 사이트가 포인트 인 경우, 즉 두 정의 모서리가 동일하다면 TRUE를 반환합니다.

Cube_is_point (Cube (1,1))t

Cube_distance(메이저 토토 사이트, 메이저 토토 사이트) →float8

두 메이저 토토 사이트 사이의 거리를 반환합니다. 두 메이저 토토 사이트가 포인트 인 경우 이것은 정상 거리 기능입니다.

Cube_distance ( '(1,2)', '(3,4)')2.8284271247461903

Cube_Subset(메이저 토토 사이트, 정수 []) →메이저 토토 사이트

배열의 치수 인덱스 목록을 사용하여 기존 메이저 토토 사이트에서 새 메이저 토토 사이트를 만듭니다. 단일 치수의 엔드 포인트를 추출하거나 치수를 삭제하거나 원하는대로 재정렬하는 데 사용할 수 있습니다.

Cube_Subset (Cube ( '(1,3,5), (6,7,8)'), Array [2])(3), (7)

Cube_Subset (Cube ( '(1,3,5), (6,7,8)'), 배열 [3,2,1,1])(5, 3, 1, 1), (8, 7, 6, 6)

Cube_union(메이저 토토 사이트, 메이저 토토 사이트) →메이저 토토 사이트

두 개의 메이저 토토 사이트의 연합을 생산합니다.

Cube_union ( '(1,2)', '(3,4)')(1, 2), (3, 4)

Cube_inter(메이저 토토 사이트, 메이저 토토 사이트) →메이저 토토 사이트

두 개의 메이저 토토 사이트의 교차점을 생성합니다.

Cube_inter ( '(1,2)', '(3,4)')(3, 4), (1, 2)

Cube_enlarge(C 메이저 토토 사이트, r 더블, n 정수) →메이저 토토 사이트

지정된 반경만큼 메이저 토토 사이트의 크기를 증가시킵니다r적어도n치수. 반경이 음수 인 경우 대신 메이저 토토 사이트가 줄어 듭니다. 정의 된 모든 치수는 반경에 의해 변경됩니다r. 왼쪽 하위 좌표는에 의해 감소합니다.r|r. 왼쪽 하단 좌표가 해당 상단 좌표보다 더 많이 증가한 경우 (이 경우에만 발생할 수 있습니다r<0) 두 좌표보다 평균으로 설정됩니다. 만약에n정의 된 치수 수보다 크고 메이저 토토 사이트가 확대되고 있습니다 (r 0), 그런 다음 추가 치수가 추가됩니다n완전히; 0은 추가 좌표의 초기 값으로 사용됩니다. 이 기능은 근처 지점을 검색하기위한 한 지점 주위에 경계 상자를 만드는 데 유용합니다.

Cube_enlarge ( '(1,2), (3,4)', 0.5, 3)(0.5, 1.5, -0.5), (3.5, 4.5, 0.5)


F.10.4. 기본값#

이 연합 :

cube_union을 선택하십시오 ( '(0,5,2), (2,3,1)', '0');
Cube_union
--------------------
(0, 0, 0), (2, 5, 2)
(1 행)

상식과 모순되지 않으며 교차점도 마찬가지입니다.

cube_inter ( '(0, -1), (1,1)', '(-2), (2)');
Cube_inter
-------------
(0, 0), (1, 0)
(1 행)

다르게 차원 메이저 토토 사이트의 모든 바이너리 작업에서, 저 차원 메이저 토토 사이트는 직교 투영으로 가정됩니다. i. 예를 들어, 문자열 표현에서 좌표 대신 제로가 생략됩니다. 위의 예는 다음과 같습니다.

Cube_union ( '(0,5,2), (2,3,1)', '(0,0,0), (0,0,0)');
cube_inter ( '(0, -1), (1,1)', '(-2,0), (2,0)';

다음 격리 술어는 포인트 구문을 사용하는 반면 실제로 두 번째 인수는 내부적으로 상자로 표시됩니다. 이 구문은 (박스, 포인트) Predicates에 대한 별도의 포인트 유형과 함수를 정의 할 필요가 없습니다.

cube_contains ( '(0,0), (1,1)', '0.5,0.5');
cube_contains
--------------
티
(1 행)

F.10.5. 노트#

사용의 예는 회귀 테스트를 참조하십시오SQL/Cube.sql.

사람들이 물건을 깨기 어렵게 만들기 위해 메이저 토토 사이트의 크기 수에는 100의 한계가 있습니다. 이것은에서 설정됩니다.cubedata.h더 큰 것이 필요한 경우.

F.10.6. 크레딧#

원래 저자 : Gene Selkov, Jr., Argonne National Laboratory의 수학 및 컴퓨터 과학 부서.

주로 Joe Hellerstein 교수에게 감사드립니다 (https : //dsf.berkeley.edu/jmh/) 요점의 요점을 설명하기 위해 (http : //gist.cs.berkeley.edu/), 그리고 그의 전 학생 Andy Dong에게 그의 모범을 보여 주었다. 또한 현재와 과거의 모든 Postgres 개발자에게 내 자신의 세계를 만들고 방해받지 않은 살 수있게 해주셔서 감사합니다. 그리고 저는 데이터베이스 연구에 대한 수년간의 충실한 지원을 위해 Argonne Lab과 미국 에너지 부에 대한 감사를 인정하고 싶습니다.

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

추가 업데이트는 Joshua Reich에 의해 만들어졌습니다2006 년 7 월. 여기에는 포함메이저 토토 사이트 (float8 [], float8 [])감가 상각 된 V0 프로토콜 대신 V1 Call 프로토콜을 사용하기위한 코드를 정리하십시오.

정정 제출

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