Relational Systems
데이터의 무결성과 일관성을 보장하는 관계형 모델, SQL 표준, 그리고 트랜잭션의 물리적 보호 기법을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts6 min read
1. Overview
관계형 시스템(Relational Systems, RS)은 데이터를 수학적 집합론에 기초한 표(Table) 형태로 관리하고, ACID 원칙을 통해 데이터의 절대적 신뢰성을 확보하는 기술을 다룹니다.
현대 애플리케이션의 가장 견고한 SSOT(Single Source of Truth) 역할을 수행하는 RDBMS는 복잡한 비즈니스 엔티티 간의 관계를 정의하고 구조화된 질의로 데이터를 추출합니다. 학습자는 정규화(Normalization)를 통한 중복 제거 물리와 트랜잭션 격리 수준(Isolation Levels)이 동시성 환경에서 데이터 파괴를 어떻게 막는지 학습합니다. 이를 통해 데이터의 생애주기 동안 무결성을 유지하는 설계 능력을 갖춥니다.
2. Scope & Boundaries
In-Scope
- Relational Model: 튜플, 어트리뷰트, 도메인 정의 및 릴레이션 대수 기초
- Schema Design: 1NF~3NF 및 BCNF 정규화 과정과 데이터 물리 모델링
- SQL Standards: DML, DDL, DCL 및 조인(Join), 서브쿼리 최적화 논리
- Transaction Engine: ACID 속성, 락킹(Locking) 메커니즘, MVCC(다중 버전 동시성 제어)
Out-of-Scope
- 분산 노드 간의 합의 알고리즘 (07-02 Distributed Systems 영역으로 위임)
- 비정형 데이터 저장 기술 (06-02 NoSQL 영역으로 위임)
Boundaries
- RS vs. Storage: Storage Systems(06-06)가 '디스크의 비트 기록 물리'에 집중한다면, RS는 '사용자 관점의 논리적 구조와 정합성 규칙'에 집중합니다.
3. Counterexample
- 단순히 SQL 문법을 외워 CRUD를 구현하는 것은 RS 학습이 아닙니다. 비정규화(Denormalization)된 테이블에서 발생할 수 있는 삽입/삭제/수정 이상(Anomaly) 현상을 예방하기 위해 어떻게 물리적 테이블을 분리하고 참조 무결성(Referential Integrity)을 유지할지 증명할 수 있어야 합니다.
4. Prerequisites
- 이산 구조 및 모델링 (Basic): 집합론(Set Theory)과 관계(Relation) 개념 이해가 필수입니다. (01. Discrete Structures)
- 핵심 자료 구조 (Recommended): 인덱싱 최적화를 위해 B-Tree와 Hash Table의 동작 원리를 알아야 합니다. (04. CDS)
5. Learning Map
- Modeling Reality: 현실 세계의 엔티티를 관계형 테이블로 매핑하는 정규화 이론을 익힙니다.
- Querying Intelligence: 선언적 언어인 SQL을 통해 효율적으로 데이터를 필터링하고 결합하는 법을 배웁니다.
- Guarding Integrity: 물리적인 충돌 상황에서도 데이터가 오염되지 않도록 ACID를 적용합니다.
- Optimization Logic: 질의 최적화 도구(Optimizer)가 최적의 실행 계획을 짜는 물리적 과정을 이해합니다.
6. Learning Topics
Basic
Core: 관계형 모델과 정규화 (Relational Model & Normalization)
- Why to Learn: 데이터 중복에 의한 이상 현상을 막고 저장 효율을 극대화하기 위함입니다.
- What to Learn:
- 기본키(PK)와 외래키(FK)의 물리적 역할과 제약 조건
- 제1, 2, 3 정규형(3NF) 및 보이스-코드 정규형(BCNF) 전개 과정
- 함수적 종속성(Functional Dependency) 분석
- How to Learn:
- 중복 데이터가 가득한 거대 시트를 정규화 과정을 거쳐 3개 이상의 테이블로 분해하는 실습
- 정규화 단계별 테이블 구조가 쿼리 복잡도에 미치는 영향 비교
- Implement: 특정 도메인의 요구사항을 분석하여 3NF를 만족하는 ERD(Entity-Relationship Diagram) 설계
Recommended
Core: SQL 엔진과 질의 역학 (SQL Query Engine)
- Why to Learn: 고수준 질의가 데이터베이스 내부에서 어떻게 물리적인 스캔으로 변환되는지 파악하기 위해서입니다.
- What to Learn:
- Join 알고리즘의 물리: Nested Loop, Hash Join, Merge Join
- 실행 계획(Execution Plan) 해석 및 인덱스 스캔 vs 풀 스캔 구분
- Group By, Window Function 등 고수준 집계 로직의 내부 처리
- How to Learn:
- 10만 건 이상의 데이터셋에서 인덱스 유무에 따른 조인 수행 속도 실측
- 실행 계획 트리(Plan Tree)를 보며 옵티마이저가 선택한 경로의 타당성 분석
- Implement: 복잡한 비즈니스 조건(필터링, 조인, 집계 포함)을 처리하는 최적화된 SQL 스크립트
Practical
Core: 트랜잭션과 동시성 보호 (Transactions & ACID)
- Why to Learn: 수천 명의 사용자가 동시에 접근해도 데이터가 깨지지 않는 안전 환경을 구축하기 위함입니다.
- What to Learn:
- ACID(원자성, 일관성, 격리성, 지속성)의 물리적 구현체
- 격리 수준(Isolation Level): Read Uncommitted부터 Serializable까지의 트레이드오프
- 데드락(Deadlock) 탐지와 해결을 위한 락 에스컬레이션(Lock Escalation)
- How to Learn:
- 두 개의 세션을 열고 동시에 동일 행을 수정하며 Dirty Read나 Lost Update 현상 재현
- PostgreSQL이나 MySQL의 MVCC 로그가 데이터 버전을 관리하는 아키텍처 연구
- Implement: 동시 주문 시스템과 같이 경쟁 상태가 심한 상황을 처리하는 트랜잭션 로직 시뮬레이터
Advanced
Core: 데이터베이스 튜닝 및 고급 아키텍처 (Database Tuning)
- Why to Learn: 폭발적인 데이터 증가 상황에서도 시스템의 응답 속도를 유지하기 위해서입니다.
- What to Learn:
- 복합 인덱스(Composite Index)의 컬럼 순서 최적화 전략
- 파티셔닝(Partitioning) 및 샤딩(Sharding)의 물리적 데이터 격리
- 힌트(Hint)를 이용한 옵티마이저 강제 제어 및 느린 쿼리(Slow Query) 프로파일링
- How to Learn:
- 프로파일링 도구를 사용하여 CPU/Memory 병목을 일으키는 특정 SQL 구문 식별
- 읽기 전용 복제본(Read Replica) 도입 시의 데이터 복제 지연(Replication Lag) 영향 분석
- Implement: 특정 워크로드에 대해 응답 속도를 2배 이상 개선한 인덱스 및 스키마 개선 보고서
7. Terminology
8. References
Primary References
- [P1] CS2023 - DM/Relational Databases — Core database theory.
- [P2] SWEBOK - Software Construction — Database design and integration.
Secondary References
- [Database System Concepts] Silberschatz, Korth, Sudarshan — The standard university text.
- [Designing Data-Intensive Applications (DDIA)] Martin Kleppmann — Real-world systems view.
Industry References
- [PostgreSQL Documentation - Internals Section] — Industrial MVCC implementation study.
- [SQL Performance Explained] Markus Winand — Pragmatic indexing and tuning guide.
9. Final Checklist
Primary Checklist
- 정규화되지 않은 테이블에서 데이터 삭제 시 관련 정보가 의도치 않게 사라지는 '삭제 이상'을 설명하고 방지할 수 있는가? (P1)
- 특정 비즈니스 로직에 대해 원자성(Atomicity)이 깨질 경우 발생할 수 있는 물리적 손실 시나리오를 제시 가능한가? (P1)
Secondary Checklist
- 인덱스가 검색 속도는 높이지만 삽입/수정 속도를 저하시키는 물리적 이유(Tree 균형 조정 등)를 이해하고 있는가?
- '팬텀 리드(Phantom Read)' 현상이 발생하지 않는 격리 수준이 시스템 성능에 미치는 영향을 설명 가능한가?
Industry Checklist
- 애플리케이션 로그에 찍힌 Slow Query를 분석하여 실행 계획 상의 병목 지점(예: 임시 테이블 생성)을 식별 가능한가? (SFIA)
- RDBMS의 제약 조건(Not Null, Unique)이 애플리케이션 코드의 유효성 검사 대비 가지는 물리적 신뢰 우위를 인지하는가?