F.9. 입방체

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

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

F.9.1. 통사론

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

표 F.2. 사설 토토 사이트 외부 표현

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

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

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

F.9.2. 정도

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

F.9.3. 용법

테이블 F.3유형에 제공된 특수 연산자 표시사설 토토 사이트.

표 F.3. 사설 토토 사이트 연산자

운영자

설명

사설 토토 사이트 && 사설 토토 사이트부울

사설 토토 사이트가 겹치는가?

사설 토토 사이트 @ 사설 토토 사이트부울

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

사설 토토 사이트 <@ 사설 토토 사이트부울

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

사설 토토 사이트 - Integerfloat8

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

사설 토토 사이트 ~ Integerfloat8

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

사설 토토 사이트 <-- 사설 토토 사이트float8

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

사설 토토 사이트 <# 사설 토토 사이트float8

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

사설 토토 사이트 <= 사설 토토 사이트float8

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


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

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

또한 a사설 토토 사이트Gist Index는 메트릭 연산자를 사용하여 가장 가까운 이웃을 찾는 데 사용될 수 있습니다<--, <#<=in주문 by조항. 예를 들어, 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.4사용 가능한 함수를 보여줍니다.

표 F.4. 사설 토토 사이트 기능

기능

설명

예제

사설 토토 사이트(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-TH 조정 값 사설 토토 사이트의 왼쪽 하단 모서리에 대한 좌표 값.

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

Cube_ur_Coord(사설 토토 사이트, 정수) →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)'), 배열 [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.9.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.9.5. 노트

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

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

F.9.6. 크레딧

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

주로 Joe Hellerstein 교수에게 감사드립니다 (https : //dsf.berkeley.edu/jmh/) 요점의 요점을 설명하기 위해 (http : //gist.cs.berkeley.edu/), 그리고 그의 전 학생 Andy Dong에게 그의 모범을 보여 주었다. I am also grateful to all Postgres developers, present and past, for enabling myself to create my own world and live undisturbed in it. 그리고 저는 데이터베이스 연구에 대한 수년간의 충실한 지원을 위해 Argonne Lab과 미국 에너지 부에 대한 감사를 인정하고 싶습니다.

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

추가 업데이트는 Joshua Reich에 의해 만들어졌습니다2006 년 7 월. 포함사설 토토 사이트 (float8 [], float8 [])그리고 더 이상 사용되지 않은 V0 프로토콜 대신 v1 통화 프로토콜을 사용하기위한 코드 정리.

수정 제출

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