Database

[Database] RDBMS - PostgreSQL

kahnco 2024. 7. 10. 04:06
반응형

개요

이번 시간에는 RDBMS에 대해서 간략하게 알아보고, 그 중에서 PostgreSQL에 대해서 심도있게 파헤쳐보겠습니다.


RDBMS란?

RDB의 데이터 관리를 위한 다양한 기능을 제공하는 소프트웨어입니다. 다음과 같은 특징을 가지고 있습니다.

 

Software Layer

RDBMS 는 데이터베이스와 사용자 혹은 애플리케이션 사이에 존재하는 소프트웨어 입니다. 데이터, 데이터베이스 엔진 및 데이터베이스 스키마를 관리하여 데이터의 구성 및 조작을 용이하게 합니다.

 

Functions and Services

  • Data Definition: 데이터베이스 구조 (테이블, 인덱스, View) 등을 정의하는 도구를 제공합니다.
  • Data Manipulation: 데이터의 삽입, 업데이트, 삭제 및 쿼리가 가능합니다.
  • Data Control: 접근 권한을 관리하고 데이터 보안을 보장합니다.
  • 트랜잭션 관리: 트랜잭션을 관리하고 ACID 속성을 지원하여 데이터 무결성을 보장합니다.
  • 백업 및 복구: 데이터 백업 및 복구를 위한 도구 및 프로세스를 제공합니다.

User Interaction

쿼리를 위한 SQL 와 같이 사용자가 데이터베이스와 상호 작용할 수 있는 인터페이스를 제공합니다.


PostgreSQL 이란?

PostgreSQL은 단순한 RDBMS로 설명되는 경우도 있지만, 더 정확하게는 ORDBMS (객체 관계형 데이터베이스 관리 시스템) 으로 설명됩니다. 이 용어는 전통적인 관계형 데이터베이스 기능과 고급 객체 지향 데이터베이스 기능을 모두 지원하는 PostgreSQL의 기능을 강조합니다.

 

RDB 적인 특징들

  • Tables and Relationships: PostgreSQL은 데이터를 행과 열의 형태로 저장하기 위해 테이블이라는 개념을 사용합니다. 해당 테이블들은 서로 다른 테이블들과 관계를 가지고 있으며, 외래 키를 활용해 데이터 무결성과 일관성을 준수합니다.
  • SQL 준수: PostgreSQL은 관계형 데이터베이스의 표준 언어인 SQL을 지원하여 사용자가 복잡한 쿼리, 업데이트 및 트랜잭션을 수행할 수 있도록 합니다.
  • ACID 특성: PostgreSQL은 트랜잭션이 ACID 원칙을 보장하여 안정적이고 예측 가능한 트랜잭션 처리를 제공합니다.

 

Object-Orient 적인 특징들

  • 사용자 정의 타입: PostgreSQL을 사용하면 사용자가 데이터와 동작을 모두 캡슐화할 수 있는 사용자 정의 데이터 유형을 만들 수 있습니다.
CREATE TYPE complex_number AS (
    real_part DOUBLE PRECISION,
    imaginary_part DOUBLE PRECISION
);
  • 테이블 상속: Child 테이블은 Parent 테이블의 Column과 제약 조건들을 상속받을 수 있습니다.
CREATE TABLE person (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100)
);

CREATE TABLE employee (
    salary NUMERIC
) INHERITS (person);
  • 기능 및 연산자: PostgreSQL을 사용하면 사용자가 자신의 기능 및 연산자를 정의할 수 있으므로 데이터베이스 내에서 직접 복잡한 데이터 조작 및 계산이 가능합니다.
CREATE FUNCTION add_complex(a complex_number, b complex_number)
RETURNS complex_number AS $$
BEGIN
    RETURN (a.real_part + b.real_part, a.imaginary_part + b.imaginary_part);
END;
$$ LANGUAGE plpgsql;
  • Composite Types and Arrays: PostgreSQL은 복합 유형 및 배열 타입을 지원하여 보다 복잡한 데이터 구조를 지원합니다.
CREATE TYPE address AS (
    street VARCHAR(100),
    city VARCHAR(50),
    zip_code VARCHAR(10)
);

CREATE TABLE customers (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    addresses address[]
);
  • 다형성: PostgreSQL 함수는 다형성을 지원하므로 이름은 같지만 파라미터 타입이 다른 여러 함수를 정의할 수 있습니다.
CREATE FUNCTION area(radius DOUBLE PRECISION)
RETURNS DOUBLE PRECISION AS $$
BEGIN
    RETURN 3.14159 * radius * radius;
END;
$$ LANGUAGE plpgsql;

CREATE FUNCTION area(length DOUBLE PRECISION, width DOUBLE PRECISION)
RETURNS DOUBLE PRECISION AS $$
BEGIN
    RETURN length * width;
END;
$$ LANGUAGE plpgsql;

 

Function 과 DML 의 차이

  1. Scope and Complexity
    • PostgreSQl Function은 보다 포괄적이며 여러 DML 작업, 제어 구조 및 로직을 하나의 명령에 포함할 수 있습니다.
    • SQL DML 명령은 간단하고 데이터에 대한 기본 작업으로 제한됩니다.
  2. Resuability
    • Function은 응용 프로그램의 여러 부분에 걸쳐 재사용될 수 있으며, 코드 재사용 및 모듈화에 유리합니다.
    • DML 명령은 일반적으로 쿼리 및 스크립트 내의 Situational Context에서 사용됩니다.
  3. Encapsulation
    • Function은 복잡한 로직을 캡슐화하고 사용자로부터 구현 세부 정보를 숨길 수 있습니다.
    • DML 명령은 논리의 캡슐화 없이 데이터를 직접 조작합니다.
  4. 요약
    • PostgreSQL Function은 복잡한 로직을 캡슐화하여 재사용할 수 있는 방법을 제공하며, SQL DML 명령은 데이터베이스 내에서 직접적인 데이터 조작을 위해 사용됩니다.

 

반응형

'Database' 카테고리의 다른 글

[Database] PostgreSQL Commands - DML  (0) 2024.07.17
[Database] PostgreSQL Commands - DDL  (8) 2024.07.15
[Database] NoSQL 이란?  (0) 2024.07.10
[Database] RDB  (0) 2024.07.04
[Database] 데이터베이스의 기초  (0) 2024.07.02