카테고리 없음2016. 6. 14. 11:07



EDB는 PostgreSQL OpenSource 지원과 Oracle 지원을 목표로 설립을 하게 됨.



최근 PPAS에서 PAS로 변경(Postgres Advanced Server)


2명의 commiter는 EDB 직원이며 community에 반영 또는 협력하고 있다.



노란색 부분들은 프로세스다. Postmaster 는 main demon 이다. Postmaster가 노란색의 프로세스들을 실행하면서 시작한다.


Utility Process

일반적으로 Background Process라고 하는 것들이다.

1. Background Writer: 

2. Write Ahead Log: Flush 발생시 디스크작성하는 기능을 담당.

3. Checkpointer launcher: 메모리에서 먼저 발생한 것들을 처리할 수 있다. Log 파일을 이용해 복구 할 수 있다. Transaction Log 파일을 이용하여 메모리에서 모든 작업을 수행한다. 이를 이용하여 문제가 생겼을 때 복구 할 수 있다. Checkpoint Process는 메모리에 있는 내용을 주기적으로 Disk에 내려준다.

4. Autovacuum Launcher: 

5. Autobacuum workers

6. Logging collector: Event들의 Log을 처리하고 수집 

7. Status collector: Object의 상태 정보를 수집, 갱신, 통계 활용

8. Archiver : Transaction Log를 Archive 한다. 이를 이용하여 Backup- 복구 가능


Postmaster as Listener


Postmaster 가 Listener의 역활을 한다. Client의 Connection 담당.


Backend Spawning

client가 접속하면 인증 후 Postgres 라는 backend process를 생성한다. 이를 이용하여 client는 db의 작업을 할 수 있다. work mem은 backend process과 관리하는 메모리로 파라미터로 지정가능 한 것으로 sorting 등의 작업등에 활용한다.

 


Cluster 는 Oracle의 Instance와 비슷한 것으로 여러개의 DB를 가지고 있다. 각 DB에는 User를 가지고 있다. Cluster에는 하나의 Postgremaster가 생성된다.


cluster는 다음과 같은 디렉토리 구조로 구성되어 있으며 모든 데이터는 파일로 저장된다.

data는 cluster 이름이다.

global에는 cluster의 control 정보들이 들어 있다.

base 안의 숫자근 각 Database이다.

pg_tblspc는 필요한 물리적인 경로들이 simbolic link 들이 걸려있다.


parameter file에서 중요한 파일이 있다. postgresql.conf는 cluster 설정 파일이고, pg_hba.conf 는 접근 제어를 하는 파일이다. 


Table을 생성하면 

12345

12345_fsm: Free space map 정보

12345_vm: Visivilty Map 정보


Page Layout

Oracle -> Postgres

Table -> Relation

Index -> Relation

Column -> Attribute

Row -> Tuple

block -> Page: 디스크에 있는 데이터 (메모리에 있는것은 butter라고 한다)




Posted by 빨간 양말