일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- sql문 짤릴 때
- pg_dumpall
- Goldengate
- PostgreSQL 스키마 관리
- pgcrypto
- ogg-01028
- oracle error
- PostgreSQL Install
- 다른계정에서 dblink 삭제방법
- ogg 설치 방법
- multitenant
- Linux
- table lock 조치 방법
- 19c tde
- PostgreSQL Admin
- sql문 전체 출력 방법
- OGG
- PostgreSQL Parameter 설정 방법
- PostgreSQL 테이블스페이스 생성 삭제
- oracle
- dblink 삭제
- pg_basebackup
- ogg 구성
- 아카이브로그 삭제
- PostgreSQL 테이블스페이스 관리
- PostgreSQL Backup and Recovery
- PostgreSQL 아키텍처
- PostgreSQL Parameter
- db upgrade
- psql 복구
- Today
- Total
인성장
[PostgreSQL] Database 구조 (1) 본문
PostgreSQL Database 구조
PostgreSQL DB의 기본 구조는 여러 데이터베이스들과 User/Groups, 테이블스페이스들이 모여 클러스터를 구성하는 구조입니다. 클러스터는 사용되어지는 환경에 따라 여러 의미로 해석되는데, PostgreSQL에서 클러스터는 위의 그림과 같이 여러 개의 데이터베이스와 유저, 테이블스페이스의 집합을 의미합니다.
* Oracle에서의 클러스터는 디스크로부터 데이터를 읽어오는 시간을 줄이기 위해 조인이나 자주 사용되는 테이블의 데이터를 디스크의 같은 위치에 저장시키는 방법을 말합니다.
최초 설치 후 psql 로 접속해서 데이터베이스 목록들을 보면, 아래와 같이 template0, template1, postgres 가 생성되어 있습니다. 각각 어떤 역할을 하는 Database 인지 알아보겠습니다.
template1 database
create database는 실제로 이미 존재하는 데이터베이스를 복사하는 방식으로 동작합니다. 기본적으로 template1 이라는 이름의 표준 시스템 데이터베이스를 복사하여 생성합니다. 그래서 이 데이터베이스 이름이 “template” 인 것입니다. template1 에 어떤 객체를 추가하면, 그 객체들은 사용자가 만든 데이터베이스에 복사되어 따라들어가게 됩니다. 예를 들면, 프로시저 언어 PL/pgSQL을 template1에 설치하면, 아무 추가 작용없이 자동적으로 사용자 데이터베이스에도 PL/pgSQL을 사용할 수 있는 것입니다.
template0 database
template0 이라는 두 번째 표준 시스템 데이터베이스도 존재합니다. 이 데이터베이스는 template1의 초기값과 동일한 데이터를 갖고 있습니다. 다시 말해 저희가 사용하는 PostgreSQL 버전에서 정의된 표준 객체들만 들어 있는 것입니다. create database를 함에 있어 template1이 아닌 template0을 복제하도록 하여 추가사항이 없는 깨끗한 사용자 데이터베이스를 만들 수 있는 것입니다. 이 방법은 특히 pg_dump 로 백업파일을 복구할 때 유용합니다. dump script 는 덤프된 데이터베이스의 정확한 내용을 복구하기 위해 깨끗한 데이터베이스에 복구해야 합니다. 그렇게 하지 않으면, template1에 추가된 이후 내용들과 충돌이 있을수 있습니다.
또한, template0을 template1 대신에 사용하는 또 다른 이유는 template0을 복사하면서 새로운 인코딩과 로케일 설정을 지정할 수 있습니다. template1을 복사하여 생성하면 인코딩과 로케일을 바꿀 수 없는데, 이것은 template1이 인코딩이나 로케일에 특화된 데이터를 가지고 있을 수 있기 때문입니다.
postgres
postgres 는 데이터베이스 클러스터가 초기화될 때 기본으로 같이 생성되는 데이터베이스입니다. 이 데이터베이스는 단순히 template1의 사본으로, 필요 시 삭제 및 재생성이 가능합니다.
'PostgreSQL > Architecture' 카테고리의 다른 글
[PostgreSQL] SQL 처리 과정 (6) (2) | 2023.11.29 |
---|---|
[PostgreSQL] 동작 원리 (5) (2) | 2023.11.28 |
[PostgreSQL] Memory 구조 (4) (0) | 2023.11.28 |
[PostgreSQL] Process 구조 (3) (0) | 2023.11.28 |
[PostgreSQL] Data Directory 구조 (2) (0) | 2023.11.28 |