PostgreSQL 9.6.2 문서 | |||
---|---|---|---|
이전 | 위로 | 장 22. 데이터베이스 관리 | 다음 |
데이터베이스는 명명된 SQL 객체 컬렉션이다("데이터베이스 객체"). 일반적으로 모든 데이터베이스 객체(테이블, 함수 등)은 데이터베이스 한곳에만 속한다. (예를 들면, pg_database처럼 전체 클러스터에 속하고 클러스터 내의 각 데이터베이스에서 접근 가능한 시스템 카탈로그는 몇 개 있다.) 좀 더 정확하게는, 데이터베이스는 스키마의 컬렉션이며, 스키마에는 테이블, 함수 등이 포함된다. 따라서 전체 구조는, 서버, 데이터베이스, 스키마, 테이블(또는 함수 같이 종류가 다른 일부 객체)로 구성된다.
데이터베이스 서버에 연결하는 경우 클라이언트는 연결하려는 데이터베이스 이름을 연결 요청에서 지정해야 한다. 연결당 데이터베이스를 하나 이상 접근할 수도 있다. 단, 애플리케이션은 동일한 데이터베이스 또는 다른 데이터베이스에 대해 열리는 연결 수에 제한되지 않는다. 데이터베이스는 물리적으로 구분되며 접근 제어는 연결 레벨에서 관리된다. 한 PostgreSQL 서버 인스턴스가 서로 인식하지 못하는 프로젝트 또는 사용자를 수용하는 경우, 두 가지를 별도의 데이터베이스에 두는 것이 좋다. 프로젝트 또는 사용자가 서로 연관되어 있고 서로의 자원을 사용해야 하는 경우에는 두 가지를 동일한 데이터베이스에 두고 스키마는 분리해야 한다. 스키마는 순전히 논리적 구조이며, 권한 시스템에 의해 관리되는 대상에 접근할 수 있는 사용자이다. 스키마 관리에 대한 자세한 내용은 5.8절을 참조 바란다.
데이터베이스는 CREATE DATABASE 명령(22.2절 참조)으로 생성되고 DROP DATABASE 명령(22.5절 참조)으로 소멸된다. 기존 데이터베이스를 판단하려면 pg_database 시스템 카탈로그를 검사해야 한다. 예를 들면,
SELECT datname FROM pg_database;
psql 프로그램의 \l 메타 명령 및 -l 명령줄 옵션도 기존 데이터베이스를 나열하는 데 유용하다.
참고: SQL 표준은 데이터베이스 "카탈로그"를 호출하지만 실제로는 차이가 없다.