PostgreSQL

2022. 1. 11. 09:40Cloud Native/Database

    목차
반응형

About PostgreSQL

1) ORDB

  PostgreSQL은 Relational Database 입니다. 관계형 자료를 저장하는 DB입니다.  그런데 정확히는 RDB라기 보다는 ORDBMS 입니다. 즉, 객체 지향 DB이며, 저장을 객체 단위로 수행한다는 차이가 있습니다. Enterprise 급 DBMS의 기능을 제공합니다. 

 

2) Open source

  PostgreSQL은 MySQL 처럼 open source SQL solution 입니다. 그런데, MySQL이 Oracle로 인수된 후 premium 기능을 사용하려면 비용을 지불하게 된 것과 달리 PostgreSQL은 여전히 open source 입니다. 

 

3) SQL coverage

  PostgreSQL은 ANSI SQL 표준을 가장 많이 준수하고 구현한 SQL 중 하나 입니다. 즉 SQL 문의 다양한 기능들을 활용하여 복잡한 자료형, 연산, 처리 등을 수행할 수 있습니다. 

 

4) 구조

  GraphQL과 마찬가지로 PostgreSQL 역시 client-server 구조로 구성됩니다. server가 database를 관리하며, client가 SQL request를 만들어 전달하게 됩니다. 

 

History

  1985년 개발이 시작되어 1996년에 첫 출시가 되었으며 https://db-engines.com/en/ranking 에서 볼 수 있듯이 현재 4위에 rank 되어 있습니다.

11위에 Casandra DB가 12위에 MariaDB가 포진하고 있으며, 16위에 Amazon DynamoDB가 위치하고 있습니다. 

 

 

장점

1) 안정성

오랜 기간 ANSI SQL을 따라 개발 및 운영 되어왔기에 안정성이 검증 되었습니다. 

ACID(Atomicity, Consistency, Isolation, Durability) 성능이 뛰어납니다. 

 

2) 비용

BSD license입니다. 즉, 무료로 사용이 가능합니다. 

 

3) 진화

꾸준히 진화하고 있는 Database solution 입니다. 

JSONB(JavaScript Object Notation Binding), ARRAY와 같은 타입을 지원합니다. 

vacuum이라는 disk 조각 모음 기능을 지원하여 공간 활용도를 높여줍니다.

 

 

단점으로는 RDB보다는 성능이 낮다는 점이 있습니다.

 

 

특징

1) 다양한 기능

연산자, 함수, 자료형변환자, 확장 기능등 다양한 기능으로의 확장을 지원합니다. 

지정 시간 복구, 미리 쓰리 로깅, 세분화된 access constrol, table space, 중첩 transaction, 온라인 백업, 다중 버전 동시성 제어 등을 지원합니다. 

2) 함수

SQL 문으로 작성된 함수를 지원합니다. 

3) 상속

table을 상속 하여 확장할 수 있습니다. 

4) 유연성

C/C++, Go, Perl, Java, PYthon, Ruby, ODBC, 등 주요 프로그래밍 언어를 지원합니다. 

5) 무결성

고유, NULL 

Primary key, foreign key

제외 제약

explicit lock

6) 성능

  • Indexing
    • B-tree, multi column, expression
    • GiST, KNN Gist, BRIN, SP-Gist, volumn filter
  • MVCC
    • Multi version concurrency control
  • table partitioning
  • JIT 표현식 compile

 

제약

item limit
DB size  unlimited
table size 32 TB
row size (record dize) 1.6 TB
rows per table unlimited
columns per table  250 ~ 1600
indexes per table unlimited

 

구조

  • interface lib: libpg, JDBC, ODBC
    • JDBC: Java DataBaes Connectivity
      • Java에서 DB 사용을 위한 API
      • SQL query를 생성
    • ODBC: Open DataBase Connectivity
      • MS에서 만든 MS-Access, dBase, DB2, Excel, Text 등의 DB에 접근하는 API

 

Postgres server에서의 query 수행 순서

  1. syntax parsing으로 parse tree 생성
  2. semantic parsing으로 query tree 생성
  3. planner를 통해 optimization 수행하여 plan tree 생성
  4. executor를 통해 fetch/store 등을 수행

 

 

 

 

 

 

반응형

'Cloud Native > Database' 카테고리의 다른 글

ORM (Object Relational Mapping) w/ Pydantic and SQLAlchemy  (0) 2022.05.06
master table, transaction table  (0) 2022.04.30
개념적 모델링, 논리적 모델링  (0) 2022.04.30
정규화  (0) 2022.04.30
GraphQL  (0) 2022.01.10