<aside> ✅ 확장성과 객체 관계형 데이터베이스의 기능, 데이터 보호, 다양한 언어지원의 장점 등을 가지고있는 PostgreSQL로 DB구축이 가능합니다. 간략하게 설명해보겠습니다.

</aside>

확장성

-- 대규모 데이터 세트를 위한 테이블 파티셔닝 예시
CREATE TABLE measurements (
    city_id         int not null,
    logdate         date not null,
    peaktemp        int,
    unitsales       int
) PARTITION BY RANGE (logdate);

-- 파티션 생성
CREATE TABLE measurements_y2021 PARTITION OF measurements
    FOR VALUES FROM ('2024-01-01') TO ('2024-12-01');

대량의 데이터와 복잡한 쿼리를 효율적으로 처리가능합니다. 예를 들어, 파티셔닝 기능을 사용하여 대규모 데이터 세트를 관리하고 쿼리 성능을 향상시킬 수 있습니다.

객체 관계형 데이터베이스의 기능

-- 사용자 정의 타입 생성
CREATE TYPE address AS (
    street VARCHAR(100),
    city VARCHAR(50),
    zip_code CHAR(5)
);

-- 사용자 정의 타입을 사용하는 테이블 생성
CREATE TABLE company (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    location address
);

복잡한 데이터 구조와 상속, 함수 오버로딩 등을 사용할 수 있습니다. 사용자 정의 타입과 도메인을 생성하여 데이터 무결성을 강화할 수 있습니다.

데이터 보호

-- 행 수준 보안 정책 설정 예시
CREATE TABLE employee (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    department VARCHAR(50),
    salary NUMERIC
);

-- 행 수준 보안 활성화
ALTER TABLE employee ENABLE ROW LEVEL SECURITY;

-- 정책 추가
CREATE POLICY employee_view_policy ON employee
    USING (department = current_user);

SSL을 통한 데이터 암호화, 역활 기반 액세스 제어, 행수준 보안 등 다양한 데이터 보호 기능을 제공합니다.

다양한 언어지원

-- PL/pgSQL을 사용한 저장 프로시저 예시
CREATE OR REPLACE FUNCTION update_salary(emp_id INT, new_salary NUMERIC)
RETURNS VOID AS $$
BEGIN
    UPDATE employee SET salary = new_salary WHERE id = emp_id;
END;
$$ LANGUAGE plpgsql;

PL/pgSQL 이외에도 PL/Python, PL/Perl, PL/Java 등 다양한 프로그래밍 언어로 저장 프로시저와 트리거를 작성할 수 있는 확장 가능성을 제공합니다.