320x100
320x100
데이터베이스(Database)와 스키마(Schema)의 차이
데이터를 다루다 보면 "데이터베이스(Database)"와 "스키마(Schema)"라는 용어를 자주 접하게 됩니다. 이 두 개념은 서로 밀접한 관계가 있지만, 역할과 사용 방식이 다릅니다. 이번 글에서는 데이터베이스와 스키마의 개념, 차이점, 그리고 실무에서 어떻게 활용되는지를 쉽게 설명해 보겠습니다.
1. 데이터베이스(Database)란?
데이터베이스는 데이터를 저장하고 관리하는 전체적인 시스템을 의미합니다. 다양한 객체(테이블, 뷰, 인덱스 등)를 포함하며, 여러 개의 스키마(Schema)를 가질 수 있습니다.
🔹 데이터베이스의 특징
- 데이터를 저장하고 구조화하여 관리하는 공간
- 하나 이상의 **스키마(Schema)**를 포함 가능
- 테이블(Table), 뷰(View), 인덱스(Index), 트리거(Trigger), 저장 프로시저(Stored Procedure) 등의 객체를 포함
- 데이터베이스 단위로 사용자 접근 권한을 설정 가능
📌 예시
- 전자상거래 데이터베이스 → ecommerce_db
- 인사 데이터베이스 → hr_db
- ERP 시스템 데이터베이스 → erp_db
2. 스키마(Schema)란?
스키마는 데이터베이스 내에서 테이블, 뷰, 관계(Relation) 등을 논리적으로 묶은 구조적 정의입니다. 하나의 데이터베이스에는 여러 개의 스키마가 존재할 수 있으며, 보통 데이터 접근 권한을 구분하는 용도로도 사용됩니다.
🔹 스키마의 특징
- 데이터베이스 내에서 특정 그룹을 논리적으로 구성하는 단위
- 같은 데이터베이스 내에서도 여러 개의 스키마가 존재 가능
- 사용자별 접근 권한을 스키마 단위로 관리할 수 있음
📌 예시 (ETL 데이터 저장)
- ODS 스키마 (Operational Data Store) → 원천 데이터를 저장
- DW 스키마 (Data Warehouse) → 정제된 데이터를 저장
- DM 스키마 (Data Mart) → 분석용 데이터를 저장
- Public 스키마 → 기본적으로 모든 사용자가 접근 가능
3. 데이터베이스 vs. 스키마 차이점 정리
구분 데이터베이스(Database) 스키마(Schema)
개념 | 데이터를 저장하고 관리하는 전체 시스템 | 데이터베이스 내에서 테이블, 뷰 등을 논리적으로 묶은 단위 |
포함 요소 | 하나 이상의 스키마, 테이블, 뷰, 프로시저 등 포함 | 테이블, 뷰, 인덱스, 트리거 등 포함 |
독립성 | 데이터베이스는 독립적인 개체 | 하나의 데이터베이스 안에서 여러 스키마 존재 가능 |
접근 권한 | 전체 데이터베이스 단위로 관리됨 | 스키마별로 접근 권한을 따로 설정 가능 |
4. PostgreSQL 기준 예제
아래는 PostgreSQL에서 데이터베이스와 스키마를 생성하는 예제입니다.
-- 1. 데이터베이스 생성
CREATE DATABASE ecommerce_db;
-- 2. 특정 데이터베이스로 이동
\c ecommerce_db;
-- 3. 스키마 생성
CREATE SCHEMA ods;
CREATE SCHEMA dw;
-- 4. ods 스키마 내 테이블 생성
CREATE TABLE ods.p_product (
goodsno INT PRIMARY KEY,
name TEXT,
price DECIMAL
);
-- 5. dw 스키마 내 테이블 생성
CREATE TABLE dw.sales (
order_id INT PRIMARY KEY,
user_id INT,
total_amount DECIMAL
);
5. 쉽게 이해하는 비유 🏢
데이터베이스 = 건물 🏛️
- 전체적인 데이터 저장 공간
스키마 = 층 🏢
- 1층: ODS (원천 데이터 저장)
- 2층: DW (정제된 데이터 저장)
- 3층: DM (분석용 데이터 저장)
테이블 = 방 🏠
- 1층(ODS)에는 상품 정보 테이블
- 2층(DW)에는 판매 데이터 테이블
즉, 데이터베이스는 큰 건물이고, 스키마는 각 층을 나누는 개념입니다. 같은 건물 안에서도 층이 다르면 다른 역할을 하는 것처럼, 스키마도 목적에 따라 데이터를 분리하는 역할을 합니다.
6. 실무에서의 활용 예시
1️⃣ 대규모 시스템 관리 🏢
- 하나의 데이터베이스 안에서 여러 부서(인사, 회계, 영업 등)별로 스키마를 분리하여 사용
- 예: hr_db 내에 recruitment_schema, payroll_schema 등 존재
2️⃣ ETL(Extract, Transform, Load) 프로세스 🔄
- ODS(원천 데이터) → DW(정제된 데이터) → DM(분석 데이터) 로 스키마를 구분하여 데이터 정리
- 데이터 흐름을 명확하게 관리 가능
3️⃣ 보안 및 접근 권한 관리 🔐
- 특정 부서 또는 사용자 그룹에게 특정 스키마만 접근 허용
- 예: sales_schema는 영업팀만 접근 가능
320x100
320x100
'빅데이터 관련 자료' 카테고리의 다른 글
비정형 데이터란? 빅 데이터 로그 데이터 (2) | 2025.03.28 |
---|---|
빅 데이터 엔지니어링이란? (0) | 2025.03.27 |
프롬프트 엔지니어가 되기 위한 로드맵 (7) | 2025.03.17 |
PostgreSQL에서 연속된 공백을 단일 공백으로 변환하는 방법 (0) | 2025.03.06 |
Intellij 에서 코드 자동 정렬하기 (0) | 2025.02.11 |