PostgreSQL

Minjun_·2023년 2월 3일
0

42Seoul

목록 보기
10/11
post-thumbnail

PostgreSQL은 객체-관계형 데이터베이스 시스템(ORDBMS)으로 오픈소스 DBMS이다.

Database란

용어를 확실히 알고 넘어가자.

데이터(Data)
현실 세계에서 측정하고 수집한 사실이나 값

정보(Information)
어떠한 목적이나 의도에 맞게 데이터를 가공 처리한 것

데이터베이스(Database)
구조화된 정보 또는 데이터의 조직화된 모음

데이터베이스 관리 시스템(DBMS)
데이터베이스를 관리하고 운영하는 소프트웨어

SQL(Structured Query Language)
데이터를 쿼리, 조작 및 정의하고 액세스 제어를 제공하기 위해 거의 모든 관계형 데이터베이스에서 사용되는 프로그래밍 언어

데이터베이스 관리 시스템이 존재하기 이전에는 파일 시스템을 이용하여 데이터를 관리하였다.

데이터베이스 관리 시스템(DBMS)의 특징

데이터의 독립성

  • 물리적 독립성 : 데이터베이스 크기를 늘리거나 데이터를 수정해도 관련된 응용프로그램을 수정할 필요가 없다.
  • 논리적 독립성 : 데이터베이스는 다양한 응용프로그램의 논리적 요구를 만족시켜줄 수 있다.

데이터의 무결성

잘못된 데이터가 발생하는 경우의 수를 방지하기 위한 기능
데이터 유효성 검사를 통해 데이터 무결성을 구현한다.

e.g. 입력 형식에 맞지 않는 입력값 방지

데이터의 보안성

허가된 사용자들만 데이터베이스에 접근할 수 있도록 계정 관리 또는 접근 권한 설정

데이터의 일관성

연관된 정보를 논리적인 구조로 관리함으로써 하나의 데이터 변경이 발생한 경우 데이터의 불일치성을 배제할 수 있다.

데이터 중복 최소화

데이터베이스는 데이터를 통합해서 관리해서 데이터 중복 문제를 해결할 수 있다.

관계형 데이터베이스 (Relational-Database)

관계형 데이터베이스는 데이터가 하나 이상의 열과 행의 테이블에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로 데이터를 구성하는 정보 모음이다.

관계는 테이블간의 상호작용을 기반으로 설정되는 여러 테이블 간의 논리적 연결을 의미한다.

RDB는 테이블, 행, 열의 정보를 구조화하는 방식이다.

RDB에는 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있는 기능이 있어, 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있다.

대표적인 관계형 데이터베이스 관리 시스템(RDBMS)

  • MySQL
  • MariaDB ...

관계형 데이터베이스의 특징

직관적인 데이터 표현 방법을 제공하고 관련 데이터 포인트에 쉽게 접근할 수 있다.

문자, 숫자, 날짜 등 단순 정보타입만 지원한다.

객체지향 데이터베이스 (Object-Oriented Database; OODB)

객체지향 프로그래밍에서 영향을 받아 생성되었다. 객체라는 개념을 데이터베이스에 사용한 형태

잘 사용되지 않는다.

객체 관계형 데이터베이스 (Object-Relational Database; ORD, ORDB)

객체지향 데이터베이스 모델을 가진 관계형 데이터베이스 관리 시스템을 말한다.

소프트웨어 개발자가 스스로 데이터 형과 메서드를 자유롭게 정의하여 데이터베이스를 개발할 수 있는 데이터 베이스 관리 시스템(DBMS)이다.

  • 사용자 정의 타입을 지원한다.
  • 참조 타입을 지원한다.
  • 중첩 테이블을 지원한다.
  • 대용량 객체의 저장, 추출이 가능하다.
  • 객체 간의 상속을 지원한다.

관계형 데이터베이스에서는 다른 레코드와 연관관계를 조인을 통해서 나타낼 수 있었지만, 객체 관계형 데이터베이스는 참조 구조를 사용하여 접근이 가능하다.

이미지, 오디오, 비디오 등 멀티디이어는 기존의 데이터보다 크기가 큰 특징을 가지고 있다.

이러한 데이터 유형을 지원하기 위해 (LOB, Large Object) 타입이 기본 타입으로 지원되었다.

대표적인 객체 관계형 데이터베이스 관리시스템에는 PostgreSQL이 있다.

PostgreSQL의 로고는 Slonik이라는 이름을 가진 코끼리다.

PostgreSQL Logo

PostgreSQL의 특징

장점

사용하는데 비용이 들지 않는다. (open source BSD license)

ANSI SQL의 거의 모든 기능을 제공한다.

다양한 데이터 유형을 지원한다.

다양한 프로그래밍 언어를 지원한다.

PostgreSQL은 관계형 DBMS의 기본적인 기능인 트랜잭션과 ACID(Atomicity(원자성), Consistency(일관성), Isolation(독립성), Durability(영구성))를 지원한다.

Atomicity(원자성)
트랜잭션의 작업 내용이 데이터베이스에 모두 반영되거나, 아예 반영되지 않아야 한다.
작업 단위의 일부분만 실행되면 안된다.

Consistency(일관성)
트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지해야 한다.

Isolation(격리성)
하나의 트랜잭션 작업이 수행 중일 때 다른 트랜잭션 작업이 중간에 수행될 수 없다. 트랜잭션 작업 사이의 간섭이 있으면 안된다.

Durability(지속성)
트랜잭션이 성공적으로 완료되면 수행된 트랜잭션은 영원히 반영된다. commit을 통해 트랜잭션 작업 내용을 완료할 수 있다.

다중버전 동시성 제어(MVCC)를 제공한다.

동시성 제어
다수의 사용자가 동시에 DBMS 트랜잭션을 일으켜 상호 간섭이 발생하는 상황에서 Database를 보호하는 방법

다중버전 동시성 제어
동시성 제어의 한 방법. 갱신/변경된 데이터를 이전 데이터와 버전을 달리해 관리하고, 이를 기반으로 일관성을 유지하는 방법이다.
데이터가 계속 쌓인다는 단점이 있지만, 일반적인 RDBMS보다 빠르게 작동한다는 장점이 있다.

단점

UPDATE 쿼리에 약하다.

메모리 성능이 떨어진다.

클라이언트 연결에 대해 PostgreSQL은 새로운 프로스를 생성한다.

새로운 프로세스를 생성하는데 메모리가 할당되므로 연결이 많은 경우 메모리 사용량이 빠르게 증가한다.

참고 자료

객체 관계 데이터베이스 (wikipedia)

데이터베이스란

How to Choose The Right Database for Your application

PostgreSQL

profile
졸음을 이겨내자..!

0개의 댓글