일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 리눅스
- C#
- 파이썬 알고리즘
- 오라클
- VirtualBox
- 알고리즘
- 파이썬 전처리
- PYTHON
- it 용어
- 파이썬
- Oracle VM VirtualBox
- 리눅스 명령어
- Python 라이브러리
- linux
- dbeaver
- Oracle
- putty
- csharp
- python algorithm
- Python DataFrame
- 파이썬 데이터프레임
- HTML
- 데이터베이스
- MariaDB
- it용어
- 코딩테스트
- RFP
- Algorithm
- tibero
- Today
- Total
오경석의 개발노트
PostgreSQL_구성과 기능 본문
PostgreSQL 관리 도구는 서버 도구와 클라이언트 도구로 나뉜다.
서버 도구
● postgres
- 최상위 서버 데몬
● pg_ctl
- 서버 시작, 중지, 상태 등 서버 제어를 위한 명령어
● initdb
- 데이터베이스 초기화 명령어
● pg_resetxlog
- 트랜잭션 로그 초기화 명령어
클라이언트 도구
● psql
- 기초적인 관리 툴은 psql이다. psql의 특징으로는 명령어 기반 인터페이스라는 점이며 셸과 유사한 자동완성 및 스크립트를 통한 자동화 기능 지원
● pgAdmin
- pgAdmin은 그래픽 사용자 인터페이스를 지닌 툴로서 다수의 운영체제에서 작동하며, 배포는 아티스틱 라이선스를 따른다. PostgreSQL 6.3.2 버전부터 지원하기 시작했으며 개발 초기의 이름은 pgManager였다. 현재는 pgAdmin 4이다.
● phpPgAdmin
- phpPgAdmin은 웹 기반의 관리 툴이다. phpMyAdmin과 인터페이스가 거의 똑같이 구성되어있으며 PHP로 작성되었다.
PostgreSQL의 기능
PostgreSQL은 관계형 DBMS의 기본적인 기능인 트랜잭션과 ACID(Atomicity, Consistency, Isolation, Durability)를 지원한다. ANSI:2008 규격을 상당 부분 만족하며, 전부 지원하는 것을 목표로 계속 기능을 추가하고 있다. PostgreSQL은 기본적인 신뢰도와 안정성을 위한 기능뿐만 아니라 진보적인 기능이나 학술적 연구를 위한 기능도 많이 가지고 있는데, PostgreSQL의 주요 기능을 열거해보면 아래와 같다.
PostgreSQL의 주요 기능
- Nested transaction (savepoints)
- Point in time recovery
- Online/hot backups, Parallel restore
- Rules system (query rewrite system)
- B-tree, R-tree, hash, GIST method indexes
- Multi-Version Concurrency Control (MVCC)
- Tablespaces
- Procedural Language
- Information Schema
- I18N, L10N
- Database & Column level collation
- Array, XML, UUID type
- Auto-increment (sequences)
- Asychronous replication
- LIMIT/OFFSET
- Full text search
- SSL, IPv6
- Key/Value storage
- Table inheritance
항목 | 제한 사항 |
최대 DB 크기(Database Size) | 무제한 |
최대 테이블 크기(Table Size) | 32TB |
최대 레코드 크기(Row Size) | 1.6TB |
최대 컬럼 크기(Field Size) | 1GB |
테이블당 최대 레코드 개수(Rows per Table) | 무제한 |
테이블당 최대 컬럼 개수(Columns per Table) | 250 ~ 1600개 |
테이블당 최대 인덱스 개수(Indexs per Table) | 무제한 |
PostgreSQL 내부 구조
클라이언트는 인터페이스 라이브러리(libpg, JDBC, ODBC 등의 다양한 인터페이스)를 통해 서버와의 연결을 요청(1)하면, Postmaster 프로세스가 서버와의 연결을 중계(2)한다. 이후 클라이언트는 할당된 서버와의 연결을 통해 질의를 수행(3)한다. 서버 내부의 질의 수행 과정을 간단히 살펴보면 다음과 같다.
클라이언트로부터 질의 요청이 들어오면 구분 분석 과정(1)을 통해 Parse Tree를 생성하고 의미 분석 과정(2)을 통해 새로운 트랜잭션을 시작하고 Query Tree를 생성한다. 이후 서버에 정의된 Rule에 따라 Query Tree가 생성(3)되고 실행 가능한 여러 수행 계획 중 가장 최적화된 Plan Tree를 생성(4)한다. 서버는 이를 수행(5)하여 요청된 질의에 대한 결과를 클라이언트로 전달하게 된다. 서버의 쿼리 수행 과정에서는 데이터베이스 내부의 시스템 카탈로그가 많이 사용되는데, 사용자가 함수나 데이터 타입은 물론 인덱스 접근 방식 및 RULE 등을 시스템 카탈로그에 직접 정의할 수도 있다.
따라서 PostgreSQL에서는 이것이 기능을 새로 추가하거나 확장하는데 있어 중요한 포인트로 활용된다. 데이터베이스 서버로서 주요 기능은 데이터를 안전하게 저장하고 다른 응용 소프트웨어로부터의 요청에 응답할 때 데이터를 반환하는 것이다.
'프로그래밍 언어 > PostgreSQL' 카테고리의 다른 글
PostgreSQL_윈도우 설치 (0) | 2022.10.07 |
---|---|
PostgreSQL_개념 및 장점 (0) | 2022.08.08 |