| PostgreSQL 9.3.25 문서 | ||||
|---|---|---|---|---|
| 롤 토토 PostgreSQL : 문서 : 9.3 : Postgres_FDW | PostgreSQL : 문서 : 9.3 : 추가 제공 배트맨 토토 | 부록 F. 추가 제공 모듈 | 다음 | |
이 모듈은 데이터 유형을 구현합니다.세그용 선분 또는 부동 소수점 간격을 나타냅니다.세그간격의 불확실성을 나타낼 수 있음 실험실을 나타내는 데 특히 유용합니다. 측정.
측정의 기하학은 일반적으로 그보다 더 복잡합니다 숫자 연속체의 한 점. 측정값은 일반적으로 한계가 다소 모호한 연속체의 세그먼트입니다. 는 측정값은 불확실성으로 인해 간격으로 나타납니다. 무작위성뿐만 아니라 측정되는 값이 당연히 다음과 같은 일부 조건을 나타내는 간격이 됩니다. 단백질의 안정성 온도 범위.
상식을 사용하면 저장하는 것이 더 편리해 보입니다. 숫자 쌍이 아닌 간격과 같은 데이터입니다. 실제로, 대부분의 응용 프로그램에서 더 효율적인 것으로 나타났습니다.
더욱 상식적인 측면에서, 한계는 전통적인 숫자 데이터 유형의 사용을 제안합니다. 특정 정보 손실로 이어집니다. 이것을 고려하십시오: 당신의 기기는 6.50을 읽고 이 판독값을 데이터베이스. 가져오면 무엇을 얻나요? 시청:
test= "pH"로 6.50 :: float8을 선택합니다. pH --- 6.5 (1행)
측정의 세계에서 6.50은 6.5와 다릅니다. 그것 때로는 결정적으로 다를 수 있습니다. 실험자들은 일반적으로 그들이 신뢰하는 숫자를 적어서 게시하세요. 6.50은 실제로 더 크고 더 퍼지한 간격 내에 포함된 퍼지 간격, 6.5, 중심점이 (아마도) 유일한 공통점입니다. 그들이 공유하는 기능. 우리는 그렇게 다른 데이터를 원하지 않습니다 항목이 동일하게 표시됩니다.
결론? 할 수 있는 특별한 데이터 유형을 갖는 것이 좋습니다. 임의의 변수가 있는 간격의 한계를 기록합니다. 정밀도. 각 데이터 요소가 자신의 데이터를 기록한다는 점에서 변수입니다. 자신의 정확성.
이것을 확인하세요:
test= '6.25 .. 6.50'::젠 토토를 "pH"로 선택합니다.
pH
------------
6.25 .. 6.50
(1행)간격의 외부 표현은 다음 중 하나를 사용하여 구성됩니다. 또는 범위 연산자로 결합된 두 개의 부동 소수점 숫자 (..또는...). 또는 중심점 플러스 또는 마이너스로 지정할 수 있습니다. 편차. 선택적 확실성 표시기(<, 또는~)도 저장할 수 있습니다. (확실성 지표는 그러나 모든 내장 연산자에서는 무시됩니다.)표 F-26개요를 제공합니다. 허용되는 표현;표 F-27일부 표시 예.
에표 F-26, x, y및델타부동 소수점을 나타냄 숫자.x그리고y하지만 아님델타, 앞에 확실성이 올 수 있음 표시기.
표 F-26.세그외부 표현
| x | 단일 값(길이가 0인 간격) |
| x .. y | 간격:x에y |
| x (+-) 델타 | 간격:x - 델타에x + 델타 |
| x .. | 하한이 있는 열린 간격x |
| .. x | 상한이 있는 열린 간격x |
표 F-27. 유효한 예세그입력
| 5.0 | 길이가 0인 세그먼트(원하는 경우 점)를 생성합니다. |
| ~5.0 | 길이가 0인 세그먼트를 생성하고 기록합니다.~데이터에.~무시됨 으로세그작업이지만 다음과 같이 보존됩니다. 댓글. |
| <5.0 | 5.0에 점을 생성합니다.<이다 무시되지만 주석으로 보존됩니다. |
| 5.0 | 5.0에 점을 생성합니다.이다 무시되지만 주석으로 보존됩니다. |
| 5(+-)0.3 | 간격 생성4.7 .. 5.3. 참고 그(+-)표기는 그렇지 않습니다 보존됩니다. |
| 50 .. | 50보다 크거나 같은 모든 것 |
| .. 0 | 0보다 작거나 같은 모든 것 |
| 1.5e-2 .. 2E-2 | 간격 생성0.015 .. 0.02 |
| 1 ... 2 | 다음과 동일1...2또는1 .. 2또는1..2(공백 범위 연산자 주위는 무시됩니다) |
왜냐하면...데이터에 널리 사용됩니다. 소스의 대체 철자로 허용됩니다.... 불행히도 이로 인해 구문 분석이 모호해집니다. 의 상한이 확실하지 않습니다.0...23이것은 다음과 같습니다23또는0.23. 이 문제는 다음을 요구하여 해결됩니다. 의 모든 숫자는 소수점 이하 한 자리 이상세그입력합니다.
건강 점검으로,세그간격을 거부합니다. 예를 들어 하한이 상한보다 큽니다.5 .. 2.
세그값은 내부적으로 쌍으로 저장됩니다. 32비트 부동 소수점 숫자. 즉, 숫자가 더 많다는 의미입니다. 7자리 이상의 유효 숫자는 잘립니다.
유효 숫자가 7개 이하인 숫자는 원래 값을 유지합니다. 정밀도. 즉, 쿼리가 0.00을 반환하면 다음과 같습니다. 뒤에 오는 0은 서식 지정으로 인한 인공물이 아닙니다. 원본 데이터의 정밀도를 반영합니다. 선두의 수 0은 정밀도에 영향을 주지 않습니다. 값 0.0067은 정밀도에 영향을 주지 않습니다. 유효 숫자는 2자리뿐입니다.
그세그모듈에는 GiST 색인이 포함되어 있습니다 에 대한 연산자 클래스세그값. 운영자 GiST 연산자 클래스에서 지원하는 내용은 다음과 같습니다.표 F-28.
표 F-28. 세그먼트 GiST 운영자
| 운영자 | 설명 |
|---|---|
| [a, b] << [c, d] | [a, b]는 [c, d]의 왼쪽에 완전히 있습니다. 즉, [a, b] << [c, d]는 b < c이면 참이고 그렇지 않으면 거짓입니다. |
| [a, b] [c, d] | [a, b]는 [c, d]의 오른쪽에 완전히 있습니다. 즉, [a, b] [c, d]는 a d이면 참이고 그렇지 않으면 거짓입니다. |
| [a, b] &< [c, d] | 겹치거나 남음 — 다음과 같이 읽는 것이 더 나을 수 있습니다."오른쪽으로 확장되지 않음". 그것은 b <= d일 때 참입니다. |
| [a, b] & [c, d] | 겹침 또는 오른쪽 — 이것은 다음과 같이 읽는 것이 더 나을 수 있습니다."왼쪽으로 확장되지 않음". 그것은 사실이다 a = c일 때. |
| [a, b] = [c, d] | 동일함 — 세그먼트 [a, b]와 [c, d]가 동일합니다. 즉, a = c이고 b = d입니다. |
| [a, b] && [c, d] | 세그먼트 [a, b]와 [c, d]가 겹칩니다. |
| [a, b] @ [c, d] | 세그먼트 [a, b]는 세그먼트 [c, d]를 포함합니다. 즉, <= c 및 b = d. |
| [a, b] <@ [c, d] | 세그먼트 [a, b]는 [c, d]에 포함되어 있습니다. 즉, a = c입니다. 그리고 b <= d. |
(PostgreSQL 8.2 이전에는 격리 연산자@그리고<@였습니다 각각 호출됨@그리고~. 이 이름은 여전히 사용 가능하지만 더 이상 사용되지 않으며 결국 폐기될 예정입니다. 주의할 점은 오래된 이름은 이전 규칙과 반대로 바뀌었습니다. 핵심 기하학적 데이터 유형!)
표준 B-트리 연산자도 제공됩니다. 예를 들면
이 연산자는 실제적인 측면에서는 별로 의미가 없습니다. 목적은 있지만 정렬. 이들 연산자는 먼저 (a)를 (c)와 비교합니다. 이것이 동일하다면 (b)를 (d)와 비교하십시오. 그 결과 합리적으로 대부분의 경우 좋은 정렬 기능을 사용하려는 경우 유용합니다. 이 유형으로 ORDER BY하세요.사용 예는 회귀 테스트를 참조하세요.sql/젠 토토.sql.
변환 메커니즘(+-)에 일반 범위는 숫자를 결정하는 데 완전히 정확하지 않습니다 경계에 대한 유효 숫자. 예를 들어, 결과 간격이 다음인 경우 하위 경계에 추가 숫자 10의 거듭제곱을 포함합니다.
postgres= 세그먼트로 '10(+-)1'::seg를 선택합니다.
세그먼트
---------
9.0 .. 11 -- 다음과 같아야 합니다: 9 .. 11
R-트리 인덱스의 성능은 크게 다음에 따라 달라질 수 있습니다. 입력 값의 초기 순서. 정리하는 것이 매우 도움이 될 수 있습니다. 의 입력 테이블세그열; 스크립트 보기sort-젠 토토ments.pl예를 들어.
원저자: Gene Selkov, Jr.<selkovjr@mcs.anl.gov,
Argonne National 수학 및 컴퓨터 공학부
연구실.
저는 주로 Joe Hellerstein 교수에게 감사드립니다. (http://db.cs.berkeley.edu/jmh/)의 요점을 설명하기 위한 것입니다. GiST의 (http://gist.cs.berkeley.edu/). 저도 모두에게 감사드립니다 현재와 과거의 Postgres 개발자들 나만의 세상을 만들고 그 안에서 방해받지 않고 살아보세요. 그리고 나는 Argonne Lab과 미국 부서에 감사드립니다. 내 데이터베이스를 충실히 지원한 수년간의 에너지 연구.