PostgreSQL이란 ?

GonnabeAlright·2022년 3월 2일
0
post-thumbnail

Postgres라고도 불리는 PostgreSql은 "세계에서 가장 진보된 오픈소스 관계형 데이터베이스"라고 자부합니다. 확장성이 뛰어나고 표준을 준수한다는 목표로 만들어졌습니다. PostgreSql은 객체 관계형(object-reliational)데이터베이스입니다. 즉, 기본적으로는 관계형 데이터베이스지만 객체 데이터베이스와 연관되는 기능(예를 들면 테이블 상속 및 함수 오버로딩)도 포함하고 있습니다.

Postgres는 동시성(Concurrency)을 특징으로 갖고 있습니다. 동시성은 동시에 여러 작업을 효율적으로 처리할 수 있도록 합니다. ACID 준수라고도 하는 트랜잭션의 원자성, 일관성, 격리성, 내구성을 보장하는 MVCC(Multiversion Concurrency Control)덕분에 읽기에 대한 잠금 없이 이를 달성할 수 있습니다. PostgreSql은 MySQL만큼 널리 사용되지는 않지만 pgAdmin 및 Postbird를 포함하여 PostgreSql 작업을 단순화하도록 설계된 타사 도구 및 라이브러리가 많습니다.

PostgreSql의 데이터 타입

PostgreSql은 MySQL과 같이 숫자, 문자열, 날짜와 시간 타입을 지원합니다. 또한 기하학적인 도형, 네트워크 주소, 비트 문자열, 텍스트 검색, JSON 항목과 몇 가지 특이한 데이터 타입을 지원하기도 합니다.

Numeric 타입

  • bitint: 부호 있는 8바이트 정수
  • bigserial: 자동으로 증가하는 8바이트 정수
  • double precision: 8바이트 double precision 부동 소수점 숫자
  • integer: 부호 있는 4바이트 정수
  • serial: 자동으로 증가하는 4바이트 정수
  • number, decimal: 선택 가능한 precision, 돈의 금액과 같이 정확성이 중요한 경우 사용하도록 권장
  • real: 4바이트 single precision 부동 소수점 숫자
  • smallint: 부호 있는 2바이트 정수
  • smallserial: 자동으로 증가하는 2바이트 정수

Character 타입

  • character: 지정된 고정 길이를 가지는 문자열.
  • character varying, varchar: 가변이지만 제한된 길이를 갖는 문자열.
  • text: 길이에 제한이 없는 문자열

Date와 Time 타입

  • date: 일, 월, 년도로 구성된 날짜
  • interval: 시간 간격 범위
  • time, time without time zone: 시간대를 제외한 시간
  • time with time zone: 시간대를 포함한 시간
  • timestamp, timestamp without time zone: 시간대를 제외한 타임스탬프
  • timestamp with time zone: 시간대를 포함한 타임스탬프

Geometric 타입

  • box: 평면상의 직사각형 상자
  • circle: 평면상의 원
  • line: 평면상의 무한한 선
  • lseg: 평면상의 선분
  • path: 평면상의 기하학적 경로
  • point: 평면상의 기하학적 점
  • polygon: 평면상의 닫힌 기하학적 경로

Network address 타입

  • cdir: IPv4 또는 IPv6 네트워크 주소
  • inet: IPv4 또는 IPv6 호스트 주소
  • macaddr: MAC(Media Access Control) 주소

Bit string 타입

  • bit: 고정된 길이의 비트 문자열
  • bit varying: 가변 길이의 비트 문자열

Text search 타입

  • tsquery: 텍스트 검색 쿼리
  • tsvector: 텍스트 검색 문서(document)

JSON 타입

  • json: 텍스트 JSON 데이터
  • jsonb: 분해된 이진 JSON 데이터

그 외의 데이터 타입

  • boolean: true 또는 false를 나타내는 논리값
  • bytea: "byte array"의 약자, 이 타입은 이진 데이터에 사용됩니다.
  • money: 통화 금액
  • ph_lsn: 로그 시퀀스 번호
  • txid_snapshot: 사용자 수준의 트랜잭션 ID 스냅샷
  • uuid: 보편적인 고유한 식별자
  • xml: xml 데이터

PostgreSql의 장점

  1. 표준 SQL을 준수합니다.
  2. 오픈소스 및 커뮤니티가 이끄는 데이터베이스입니다.
  3. 확장성이 뛰어납니다.

PostgreSql의 단점

  1. 메모리 성능이 떨어집니다.

모든 새로운 클라이언트 연결에 대해 PostgreSQL은 새로운 프로세스를 포크(fork)합니다. 각각의 새로운 프로세스에는 약 10MB의 메모리가 할당되므로 많은 연결이 있는 경우 메모리가 빠르게 증가합니다. 따라서 읽기가 많은 간단한 작업의 경우 PostgreSQL은 일반적으로 MySQL과 같은 다른 RDBMS보다 성능이 떨어집니다.

  1. 인기도가 떨어집니다.

최근 몇 년 동안 더 널리 사용되고 있지만 PostgreSql은 역사적으로 보았을 때 인기 측면에서 MySQL에 뒤쳐집니다. 그 결과 PostgreSql 데이터베이스를 관리하는데 도움이 되는 타사 도구가 여전히 적습니다. 마찬가지로 MySQL은 경험이 있는 사람이 많은 것에 비해 PostgreSql은 데이터베이스 관리 경험이 있는 사람들이 많지 않습니다.

PostgreSql을 사용하면 좋은 경우

  1. 데이터 무결성이 중요한 경우 적합합니다.

PostgreSql은 2001년부터 ACID를 완벽히 준수하고 데이터 일관성이 유지되도록 MVCC를 구현하였습니다. 데이터 무결성이 중요한 경우 RDBMS 중 PostgreSql을 강력하게 추천합니다.

  1. 다른 도구들과 통합되어야 하는 경우에 적합합니다.

PostgreSQL은 다양한 프로그래밍 언어 및 플랫폼과 호환됩니다. 즉 데이터베이스를 다른 운영체제로 마이그레이션하거나 특정 도구와 통합이 필요한 경우 다른 DBMS보다 PostgreSQL 데이터베이스를 사용하는 것이 더 쉽게 작업할 수 있습니다.

  1. 복잡한 작업 연산을 수행하는 경우 적합합니다.

Postgres는 더 빠른 속도로 쿼리에 응답하기 위해 여러 CPU를 활용할 수 있는 쿼리 계획을 지원합니다. 이는 동시에 여러 사용자에 대한 강력한 지원과 결합되며 데이터웨어 하우스 및 온라인 트랜잭션 처리와 같은 복잡한 작업에 적합한 선택이 될 수 있습니다.

PostgreSql을 사용하면 안되는 경우

  1. 속도에 민감한 경우 적합하지 않습니다.

PostgreSql은 속도를 희생하며 확장성과 호환성을 염두하고 설계되었습니다. 프로젝트에 가능한 빠른 읽기 작업이 필요한 경우 PostgreSql은 최선의 선택이 아닐 수도 있습니다.

  1. 간단한 설정이 필요한 경우 적합하지 않습니다.

광범위한 기능들과 표준 SQL에 대한 강력한 준수로 인해 PostgreSql은 간단한 데이터베이스 설정에 대해서도 많은 작업이 필요합니다. 속도가 중요하고 읽기 작업이 많은 경우 일반적으로 MySQL이 더 실용적인 선택이 될 수 있습니다.

postgreSQL 설치하기 (MAC)

brew install postgresql
brew services restart postgresql
psql postgres
\du

CREATE ROLE "postgres" WITH LOGIN PASSWORD '<비밀번호>'

생성된 postgres 계정에 데이터베이스 생성 권한 부여

ALTER ROLE postgres CREATEDB;

생성된 postgres 계정에 역할 생성 권한 부여

ALTER ROLE postgres CREATEROLE;

postgres 계정에 부여한 역할이 속성에 추가되었음을 확인

board라는 이름의 데이터베이스 생성

CREATE DATABASE board;

데이터베이스 리스트에 생성한 데이터베이스를 확인

\list

pgAdmin을 설치해서 GUI로 데이터베이스를 관리하세요.
pgAdmin Downloads

✅Tip psql 접속종료 명령어 = \q

0개의 댓글