이 모듈은 데이터 유형을 구현합니다.토토 베이선 토토 베이먼트 또는 부동 소수점 간격을 나타냅니다.토토 베이간격 끝점의 불확실성을 나타낼 수 있으므로 실험실 측정을 나타내는 데 특히 유용합니다.
이 모듈은 고려됩니다.“신뢰할 수 있는”, 즉, 슈퍼유저가 아닌 사용자가 설치할 수 있습니다.생성현재 데이터베이스에 대한 권한입니다.
측정의 기하학은 일반적으로 숫자 연속체의 한 점보다 더 복잡합니다. 측정은 일반적으로 한계가 다소 모호한 연속체의 한 부분입니다. 불확실성과 무작위성 때문에 측정값이 간격으로 나오는 것은 물론, 측정되는 값이 자연적으로 단백질의 안정성 온도 범위와 같은 일부 조건을 나타내는 간격일 수 있기 때문입니다.
상식적으로 보면 숫자 쌍보다는 간격으로 데이터를 저장하는 것이 더 편리해 보입니다. 실제로는 대부분의 애플리케이션에서 더 효율적인 것으로 나타났습니다.
상식에 더하여, 한계의 모호함은 전통적인 숫자 데이터 유형의 사용이 특정 정보의 손실로 이어진다는 것을 암시합니다. 이것을 고려하십시오: 귀하의 기기는 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.28허용된 표현에 대한 개요를 제공합니다.표 F.29몇 가지 예를 보여줍니다.
에표 F.28, x, y및델타부동소수점 숫자를 나타냅니다.x그리고y하지만 아님델타, 확실성 표시가 앞에 올 수 있습니다.
표 F.28. 토토 베이외부 표현
|
단일 값(길이가 0인 간격) |
|
간격:x에y |
|
간격:x - 델타에x + 델타 |
|
하한이 있는 열린 간격x |
.. |
상한이 있는 열린 간격x |
표 F.29. 유효한 예토토 베이입력
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.30.
표 F.30. 토토 베이먼트 GiST 운영자
|
운영자 설명 |
|---|
|
첫 번째입니다 |
|
첫 번째입니다 |
|
첫번째를 수행합니다 |
|
첫 번째를 수행합니다 |
|
둘이요 |
|
둘을 수행하세요 |
|
첫번째를 수행합니다 |
|
첫 번째입니다 |
위의 연산자 외에도 다음과 같은 일반적인 비교 연산자가 있습니다.표 9.1유형에 사용 가능토토 베이. 이들 연산자는 먼저 (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, 아르곤 국립 연구소 수학과 컴퓨터 공학부.
저는 주로 Joe Hellerstein 교수에게 감사드립니다. (https://dsf.berkeley.edu/jmh/) GiST의 요점을 설명하기 위한 것입니다(http://gist.cs.berkeley.edu/). 또한 나만의 세계를 만들고 그 안에서 방해받지 않고 살아갈 수 있도록 도와준 현재와 과거의 모든 Postgres 개발자들에게도 감사드립니다. 그리고 수년 동안 내 데이터베이스 연구를 성실하게 지원해 준 Argonne Lab과 미국 에너지부에 감사의 말씀을 전하고 싶습니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.