반응형
개요
이번 시간에는 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 의 차이
- Scope and Complexity
- PostgreSQl Function은 보다 포괄적이며 여러 DML 작업, 제어 구조 및 로직을 하나의 명령에 포함할 수 있습니다.
- SQL DML 명령은 간단하고 데이터에 대한 기본 작업으로 제한됩니다.
- Resuability
- Function은 응용 프로그램의 여러 부분에 걸쳐 재사용될 수 있으며, 코드 재사용 및 모듈화에 유리합니다.
- DML 명령은 일반적으로 쿼리 및 스크립트 내의 Situational Context에서 사용됩니다.
- Encapsulation
- Function은 복잡한 로직을 캡슐화하고 사용자로부터 구현 세부 정보를 숨길 수 있습니다.
- DML 명령은 논리의 캡슐화 없이 데이터를 직접 조작합니다.
- 요약
- 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 |