이 모듈은 다음을 구현합니다.스포츠 토토 사이트단일 내에 키/값 쌍 세트를 저장하기 위한 데이터 유형PostgreSQL값. 이는 거의 검사되지 않는 속성이 많은 행이나 반구조화된 데이터 등 다양한 시나리오에서 유용할 수 있습니다. 키와 값은 단순히 텍스트 문자열입니다.
이 모듈은 고려됩니다.“신뢰할 수 있는”즉, 슈퍼유저가 아닌 사용자가 설치할 수 있습니다.만들기현재 데이터베이스에 대한 권한입니다.
스포츠 토토 사이트외부 대표의 텍스트 표현스포츠 토토 사이트, 입력 및 출력에 사용되며 0개 이상 포함키 = 값쌍은 쉼표로 구분됩니다. 몇 가지 예:
k = v foo = 바, baz = 뭐든지 "1-a" = "아무거나"
쌍의 순서는 중요하지 않습니다(그리고 출력 시 재생산되지 않을 수도 있습니다). 쌍 사이 또는 주변의 공백=기호는 무시됩니다. 공백, 쉼표를 포함하는 큰따옴표 키와 값=s 또는s. 키나 값에 큰따옴표나 백슬래시를 포함하려면 백슬래시로 이스케이프 처리하세요.
각 키스포츠 토토 사이트고유합니다. 선언하는 경우h스토어중복 키가 있으면 하나만 저장됩니다.스포츠 토토 사이트그리고 어느 것이 보관될 것인지에 대한 보장은 없습니다:
SELECT 'a=1,a=2'::스포츠 토토 사이트; 스포츠 토토 사이트 ---------- "a"="1"
값(키는 제외)은 SQL일 수 있습니다.NULL. 예를 들면:
키 = NULL
그NULL키워드는 대소문자를 구분하지 않습니다. 를 큰따옴표로 묶으세요.NULL일반 문자열로 처리“NULL”.
다음을 명심하세요스포츠 토토 사이트입력에 사용될 때 텍스트 형식이 적용됩니다.이전필요한 인용 또는 이스케이프. 전달하는 경우스포츠 토토 사이트리터럴을 매개변수로 사용하는 경우 추가 처리가 필요하지 않습니다. 그러나 이를 따옴표로 묶은 리터럴 상수로 전달하는 경우 모든 작은따옴표 문자와 (설정에 따라standard_conforming_strings구성 매개변수) 백슬래시 문자를 올바르게 이스케이프해야 합니다. 참조섹션 4.1.2.1문자열 상수 처리에 대한 자세한 내용.
출력 시 큰따옴표는 반드시 필요하지 않은 경우에도 항상 키와 값을 묶습니다.
스포츠 토토 사이트연산자와 함수다음에서 제공하는 연산자스포츠 토토 사이트모듈은 다음에 표시됩니다.표 F.7, 다음의 함수표 F.8.
표 F.7. 스포츠 토토 사이트운영자
|
운영자 설명 예 |
|---|
|
주어진 키와 관련된 값을 반환합니다. 또는
|
|
주어진 키와 연관된 값을 반환합니다. 또는
|
|
두 개를 연결합니다
|
|
그렇습니다
|
|
그렇습니다
|
|
그렇습니다
|
|
왼쪽 피연산자에 오른쪽이 포함되어 있습니까?
|
|
왼쪽 피연산자가 오른쪽에 포함되어 있습니까?
|
|
왼쪽 피연산자에서 키를 삭제합니다.
|
|
왼쪽 피연산자에서 키를 삭제합니다.
|
|
오른쪽 피연산자의 쌍과 일치하는 왼쪽 피연산자 쌍을 삭제합니다.
|
|
왼쪽 피연산자(복합 유형이어야 함)의 필드를 일치하는 값으로 대체
|
|
개종자
|
|
개종자
|
표 F.8. 스포츠 토토 사이트기능
이러한 연산자 및 함수 외에도스포츠 토토 사이트유형은 첨자를 사용하여 연관 배열처럼 작동할 수 있습니다. 유형의 단일 아래첨자만텍스트지정할 수 있습니다. 이는 키로 해석되고 해당 값을 가져오거나 저장합니다. 예를 들어,
CREATE TABLE mytable(h 스포츠 토토 사이트);
INSERT INTO mytable VALUES ('a=b, c=d');
SELECT h['a'] FROM mytable;
시간
---
비
(1줄)
UPDATE mytable SET h['c'] = 'new';
mytable에서 h를 선택합니다.
시간
---------
"a"="b", "c"="새"
(1행)
아래 첨자 가져오기 반환NULL아래 첨자가 다음과 같은 경우NULL또는 해당 키가 다음에 존재하지 않습니다.h스토어. (따라서 아래 첨자 가져오기는 다음과 크게 다르지 않습니다.-연산자.) 아래 첨자가 다음과 같은 경우 아래 첨자 업데이트가 실패합니다.NULL; 그렇지 않으면 해당 키의 값을 대체하고에 항목을 추가합니다.스포츠 토토 사이트키가 아직 존재하지 않는 경우.
스포츠 토토 사이트다음에 대한 GiST 및 GIN 인덱스 지원이 있습니다.@, ?, ?&그리고?|연산자. 예를 들면:
GIST(h)를 사용하여 test스포츠 토토 사이트에서 hidx 인덱스 생성; GIN(h)을 사용하여 test스포츠 토토 사이트에서 인덱스 hidx를 생성합니다.
gist_스포츠 토토 사이트_opsGiST opclass는 키/값 쌍 세트를 비트맵 서명으로 근사화합니다. 선택적 정수 매개변수시글렌서명 길이를 바이트 단위로 결정합니다. 기본 길이는 16바이트입니다. 유효한 서명 길이 값은 1~2024바이트입니다. 서명이 길수록 더 큰 인덱스를 사용하는 대신 더 정확한 검색이 가능합니다(인덱스의 더 작은 부분과 더 적은 힙 페이지 검색).
서명 길이가 32바이트인 색인을 생성하는 예:
GIST를 사용하여 test스포츠 토토 사이트에서 hidx 인덱스 생성(h gist_스포츠 토토 사이트_ops(siglen=32));
스포츠 토토 사이트또한 지원합니다브트리또는해시에 대한 색인=연산자. 이는 허용됩니다스포츠 토토 사이트선언할 열고유또는 다음에 사용됨그룹별, 주문 기준또는독특표현식. 정렬 순서는 다음과 같습니다.스포츠 토토 사이트값은 특별히 유용하지는 않지만 이러한 색인은 동등성 조회에 유용할 수 있습니다. 다음에 대한 색인 생성=비교는 다음과 같습니다.
BTREE(h)를 사용하여 test스포츠 토토 사이트에서 hidx 인덱스 생성; HASH(h)를 사용하여 test스포츠 토토 사이트에서 인덱스 hidx를 생성합니다.
키를 추가하거나 기존 키를 새 값으로 업데이트하세요:
업데이트 탭 SET h['c'] = '3';
동일한 작업을 수행하는 또 다른 방법은 다음과 같습니다:
UPDATE 탭 설정 h = h || 스포츠 토토 사이트('c', '3');
한 번의 작업으로 여러 키를 추가하거나 변경해야 하는 경우 첨자보다 연결 방식이 더 효율적입니다.
업데이트 탭 SET h = h || 스포츠 토토 사이트(array['q', 'w'], array['11', '12']);
키 삭제:
업데이트 탭 SET h = 삭제(h, 'k1');
변환 a기록에h스토어:
CREATE TABLE 테스트(col1 정수, col2 텍스트, col3 텍스트);
테스트 값에 삽입(123, 'foo', 'bar');
SELECT 스포츠 토토 사이트(t) FROM 테스트 AS t;
스포츠 토토 사이트
--------------------------------
"col1"="123", "col2"="foo", "col3"="바"
(1행)
변환h스토어미리 정의된기록유형:
CREATE TABLE 테스트(col1 정수, col2 텍스트, col3 텍스트);
SELECT * FROM populate_record(null::테스트,
'"col1"="456", "col2"="zzz"');
열1 | 열2 | col3
------+------+------
456 | zzz |
(1행)
다음 값을 사용하여 기존 레코드 수정h스토어:
CREATE TABLE 테스트(col1 정수, col2 텍스트, col3 텍스트); 테스트 값에 삽입(123, 'foo', 'bar'); SELECT (r).* FROM (SELECT t #= '"col3"="baz"' AS r FROM test t) s; 열1 | 열2 | col3 ------+------+------ 123 | 푸 | 바즈 (1행)
그h스토어유형은 본질적인 자유로움으로 인해 다양한 키를 포함할 수 있습니다. 유효한 키를 확인하는 것은 애플리케이션의 작업입니다. 다음 예에서는 키를 확인하고 통계를 얻는 여러 기술을 보여줍니다.
간단한 예:
SELECT * FROM Each('aaa=bq, b=NULL, ""=1');
테이블 사용:
CREATE TABLE stat AS SELECT (각(h)).key, (각(h)).value FROM test스포츠 토토 사이트;
온라인 통계:
선택 키, 개수(*) FROM
(SELECT (각(h)).key FROM test스포츠 토토 사이트) AS stat
그룹별 키
ORDER BY 카운트 DESC, 키;
키 | 카운트
---------+-------
라인 | 883
쿼리 | 207
위치 | 203
노드 | 202
공간 | 197
상태 | 195
공개 | 194
제목 | 190
조직 | 189
....................
PostgreSQL 9.0 기준,h스토어이전 버전과 다른 내부 표현을 사용합니다. 덤프에 사용된 텍스트 표현이 변경되지 않으므로 덤프/복원 업그레이드에 장애가 되지 않습니다.
바이너리 업그레이드의 경우 새 코드가 이전 형식 데이터를 인식하도록 하여 상위 호환성이 유지됩니다. 이는 새 코드에 의해 아직 수정되지 않은 데이터를 처리할 때 약간의 성능 저하를 수반합니다. 다음을 수행하여 테이블 열의 모든 값을 강제로 업그레이드할 수 있습니다.업데이트다음과 같은 진술:
UPDATE 테이블 이름 SET 스포츠 토토 사이트col = 스포츠 토토 사이트col || '';
또 다른 방법은 다음과 같습니다:
ALTER TABLE 테이블 이름 ALTER 스포츠 토토 사이트col TYPE 스포츠 토토 사이트 USING 스포츠 토토 사이트col || '';
그테이블 변경메소드는 다음을 필요로 합니다.접속 독점테이블을 잠그지만 이전 행 버전으로 인해 테이블이 부풀어오르지는 않습니다.
다음에 대한 변환을 구현하는 추가 확장을 사용할 수 있습니다.스포츠 토토 사이트44917_45004스포츠 토토 사이트_plperl그리고스포츠 토토 사이트_plperlu, 신뢰할 수 있는 PL/Perl용 및 신뢰할 수 없는 PL/Perl용. 이러한 변환을 설치하고 함수 생성 시 지정하면,스포츠 토토 사이트값은 Perl 해시에 매핑됩니다. PL/Python용 확장이 호출됩니다.스포츠 토토 사이트_plpythonu, 스포츠 토토 사이트_plpython2u및스포츠 토토 사이트_plpython3u(참조PostgreSQL : 문서 : 14 : 46.1. 토토 베이 2 vs. 토토 베이 3PL/Python 명명 규칙의 경우). 사용하신다면,h스토어값은 Python 사전에 매핑됩니다.
변환 확장을 다음과 동일한 스키마에 설치하는 것이 좋습니다.h스토어. 그렇지 않고 변환 확장의 스키마에 적대적인 사용자가 정의한 개체가 포함되어 있으면 설치 시 보안 위험이 있습니다.
올렉 바르투노프<oleg@sai.msu.su, 모스크바, 모스크바 대학교, 러시아
테오도르 시가예프<teodor@sigaev.ru, 모스크바, Delta-Soft Ltd., 러시아
Andrew Gierth의 추가 개선 사항<andrew@tao11.riddles.org.uk, 영국
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.