Skip to content

데이터베이스 객체 해설

모든 핵심 PostgreSQL 스키마 객체 — 구조, 테이블, 뷰, 인덱스, 타입, 식별, 루틴, 보안, 복제 — 를 하나의 밀도 높은 참조서에 담았습니다.

PostgreSQL은 데이터를 이름 있는 스키마 객체에 저장합니다. 각 객체는 하나의 역할만 맡습니다. 테이블은 행을 저장하고, 인덱스는 조회를 빠르게 하며, 루틴은 로직을 담습니다. 어떤 객체를 추가할지 정하기 전에 각 객체가 무엇인지 알아 두세요. 제약 조건과 정책은 데이터의 정확성을 지키는 규칙으로 다루세요.

참고 표 · 45 항목
45 of 45 rows
구조
클러스터 안에서 격리된 스키마 카탈로그 하나.데이터를 공유하면 안 되는 애플리케이션이나 환경을 분리한다.
관련 객체들을 묶는, 데이터베이스 안의 이름 있는 네임스페이스.객체를 기능이나 소유자별로 정리하고 이름 충돌을 피한다.
테이블과 인덱스 파일이 놓이는, 디스크 상의 이름 있는 위치.핫한 테이블은 빠른 스토리지로 보내고 콜드 데이터는 저렴한 디스크에 둔다.
규정되지 않은 객체 이름이 어떤 스키마로 해석될지 결정하는 설정.세션을 올바른 스키마로 지정해 쿼리가 짧은 이름을 쓸 수 있게 한다.
COMMENT ON으로 모든 데이터베이스 객체에 저장하는 설명.다음 쿼리 작성자가 찾을 위치에 테이블과 컬럼을 문서화한다.
테이블과 뷰
타입이 지정된 컬럼에 행을 저장하는 이름 있는 릴레이션.영구 데이터의 기본 컨테이너.
세션 또는 트랜잭션이 끝나면 행이 사라지는 테이블.연결보다 오래 살아서는 안 되는 임시·스테이징 데이터를 담는다.
선언된 키 기준으로 자식 파티션으로 쪼개지는 부모 테이블.행을 범위나 목록으로 파티션에 나눠 매우 큰 테이블을 관리 가능하게 유지한다.
행이 외부 시스템에 있고 foreign data wrapper로 접근하는 테이블.원격 데이터베이스나 파일을 로컬 테이블처럼 조회한다.
저장된 쿼리를 가상 테이블로 노출한 것.같은 행을 다른 필터나 조인으로 제시한다.
INSERT, UPDATE, DELETE를 기본 테이블로 전달하는 단순 뷰.테이블의 필터되거나 조인된 조각을 쓰기 가능한 상태로 노출한다.
결과 집합이 디스크에 기록되고 필요 시 갱신되는 뷰.비싸게 계산되는 집계나 조인을 캐시해 빠르게 읽는다.
테이블이 들어갈 수 있는 곳이면 어디서든 쓸 수 있는 행 집합을 반환하는 함수.계산된 집합을 그 자리에서 펼친다. unnest가 배열을 행으로 바꾸는 방식이다.
인덱스
동등성과 범위 조회를 위한 균형 트리 인덱스.정렬 가능한 컬럼에서 WHERE, JOIN, ORDER BY를 가속한다.
키의 중복 값을 거부하는 인덱스.한 컬럼 또는 컬럼 조합에 유일성을 강제한다.
비스칼라 값을 위한 전치 인덱스 또는 일반화 검색 트리 인덱스.배열, JSONB, 전문 검색, 기하 데이터에 인덱스를 만든다.
WHERE 절에 맞는 행에 대해서만 만들어지는 인덱스.핫한 부분 집합만 인덱싱하고 나머지는 건너뛰어 공간을 아낀다.
타입과 확장
값이 고정된 레이블 목록에서 나오는 사용자 정의 타입.상태 코드 같은 닫힌 집합으로 컬럼을 제한한다.
기본 타입에 체크 제약을 더하고, 컬럼 타입으로 재사용하도록 이름 붙인 것.비어 있지 않은 텍스트 같은 검증된 정의 하나를 여러 컬럼이 공유한다.
문자열의 비교와 정렬 방식을 정의하는 규칙 집합.대소문자, 악센트, 특정 로캘에 맞는 올바른 정렬을 얻는다.
함수, 타입, 연산자를 데이터베이스에 추가하는 설치 가능한 패키지.PostGIS나 pg_trgm 같은 검증된 도구를 한 번에 도입한다.
식별과 생성
연속된 정수를 내어놓는 독립 카운터 객체.여러 테이블이 하나의 생성기를 공유할 때 일련 키를 공급한다.
SQL 표준에 따라 내부 시퀀스로 뒷받침되는 테이블 컬럼.SERIAL보다 권장되는 현대적인 자동 증가 기본 키.
같은 행의 다른 컬럼들로 값을 계산하는 컬럼.수동 쓰기 없이 파생 값을 저장하거나 노출한다.
루틴
값이나 행을 반환하는 이름 있는 SQL 블록.재사용 가능한 로직을 캡슐화하고 쿼리 안에서 호출한다.
동작을 실행하고 자체 트랜잭션을 제어하는 이름 있는 블록.루틴 내부에서 커밋이나 롤백을 수행하는 다단계 ETL.
상태 함수와 최종 함수를 거쳐 여러 입력 행을 하나의 값으로 접는 루틴.가중 평균 같은 사용자 정의 집계를 정의한다.
특정 피연산자 타입에 대해 하나 이상의 함수에 묶인 기호.자체 타입에 a + b나 @> 같은 자연스러운 구문을 부여한다.
한 타입에서 다른 타입으로의 변환 경로 선언.값의 타입 변환을 제어한다. 암시적으로 일어나는 변환도 포함한다.
테이블 이벤트에 묶여 자동으로 발사되는 루틴.INSERT, UPDATE, DELETE 시 변경을 감사, 검증, 또는 전파한다.
DDL 명령처럼 데이터베이스 수준 이벤트에서 발사되는 트리거.데이터베이스 전체의 스키마 변경을 기록, 차단, 감사한다.
바인드된 매개변수로 반복 실행하기 위해 저장된 파싱된 쿼리.같은 쿼리의 여러 실행에서 한 번의 파싱과 계획을 재사용한다.
결과 집합을 열어 두고 행 단위로 꺼내기 위한 핸들.큰 결과를 페이지로 나누거나 루틴 안에서 행을 순회한다.
보안과 규칙
권한을 보유한 이름 있는 신원. 사용자는 로그인할 수 있는 롤이다.권한을 한 번 묶은 뒤 사람, 서비스, 다른 롤에 부여한다.
객체에 대한 권한을 롤에 부여하거나 제거하는 문.각 객체를 어떤 롤이 읽고 쓰고 실행할지 정한다.
그랜트와 별개로, 생성자가 객체를 변경·삭제할 수 있는 내장 권리.객체 수명 주기를 책임지는 롤을 지정한다.
롤이 나중에 만드는 객체에 권한을 자동 부여하는 상시 지시.권한을 미리 설정해 새 테이블이 앱 롤용 수동 그랜트를 필요로 하지 않게 한다.
선언된 조건을 위반하는 쓰기를 거부하는 규칙.NOT NULL, CHECK, UNIQUE, PRIMARY KEY, FOREIGN KEY 보장을 강제한다.
세션이 보면 안 되는 행을 숨기는 롤별 규칙.애플리케이션 쿼리를 다시 쓰지 않고 테넌트 격리나 사용자별 접근을 구현한다.
하나의 이름을 다른 곳의 객체로 해석하는 별칭. Oracle과 SQL Server의 네이티브 기능.스키마 구성을 이식한다. PostgreSQL에서는 대신 search_path를 쓴다.
pgaudit이나 벤더 도구로 어떤 동작을 검토용으로 기록할지 정의한 것.컴플라이언스와 조사를 위해 누가 무엇을 읽고 변경했는지 증명한다.
들어온 쿼리를 다른 명령으로 다시 쓰는 지시.레거시 쓰기 전달. PostgreSQL은 이제 트리거나 갱신 가능 뷰를 권장한다.
복제
어떤 테이블과 변경 유형이 레플리카로 스트리밍되는지 정의한 송신 측 정의.데이터베이스가 논리 복제 구독자에게 제공할 내용을 선언한다.
publication에 연결해 그 변경을 로컬 테이블에 적용하는 수신 측.다른 PostgreSQL 데이터베이스의 변경을 이 데이터베이스로 당겨 온다.
컨슈머가 읽을 때까지 프라이머리가 WAL을 유지하게 만드는 표식.스탠바이나 구독자가 변경을 잃지 않고 재개할 수 있게 보장한다.