1. 데이터베이스 개요
● 데이터베이스란?
데이터베이스(Database)는 데이터를 효율적이고 체계적으로 저장하고 관리하는 시스템입니다. 수많은 데이터를 중복 없이 저장하며, 다양한 사용자들이 동시에 안전하게 데이터를 사용할 수 있게 도와줍니다.
예: 은행의 고객정보, 계좌정보, 거래내역 등은 모두 데이터베이스에 저장되어 있고, 이를 여러 시스템이 동시에 안전하게 사용하는 구조입니다.
2. 데이터 모델링과 구조
● 데이터 모델링 계층 설명
- 개념적 모델: 현실 세계를 추상화하여 데이터 구조를 표현합니다. ERD(Entity-Relationship Diagram)로 설계되며, 개체(Entity), 속성(Attribute), 관계(Relationship) 등으로 구성됩니다.
- 논리적 모델: 개념 모델을 릴레이션(Relation)으로 구조화한 것입니다. 이 단계에서 정규화를 적용하여 이상현상(Anomaly)을 제거합니다.
- 물리적 모델: 논리 모델을 DBMS가 이해할 수 있는 실제 테이블, 인덱스 등의 구조로 구현합니다.
● 스키마 3계층 구조
- 외부 스키마: 사용자 관점에서 보는 뷰(View)
- 개념 스키마: 데이터베이스 전체의 논리적 구조
- 내부 스키마: 데이터의 물리적 저장 구조 (파일, 블록 등)
3. 정규화와 반정규화
● 정규화란?
정규화(Normalization)는 데이터의 중복을 최소화하고 무결성을 높이기 위한 테이블 구조 설계 방식입니다. 이를 통해 삽입, 삭제, 갱신 이상 현상을 방지합니다.
주요 단계
단계 | 설명 | 예시 |
1NF | 원자값으로 분해 | 복수 전화번호 → 별도 행 분리 |
2NF | 부분 함수 종속 제거 | 복합키의 일부분에만 종속된 속성 제거 |
3NF | 이행 함수 종속 제거 | 비키 속성이 다른 비키 속성에 종속된 경우 제거 |
BCNF | 결정자이지만 후보키가 아닌 것 제거 | 고급 정규형 |
● 반정규화란?
반정규화(Denormalization)는 정규화를 해제하거나 일부 중복을 허용하여 조회 성능을 향상시키는 기법입니다. 실무에서는 조인 성능 이슈, 보고서 최적화를 위해 자주 활용됩니다.
4. 트랜잭션과 동시성 제어
● 트랜잭션이란?
트랜잭션(Transaction)은 데이터베이스에서 하나의 논리적 작업 단위입니다. 여러 SQL 문이 하나의 트랜잭션으로 묶이며, 모두 성공하거나 전부 실패해야 합니다.
● ACID 4대 특성
특성 | 설명 |
Atomicity (원자성) | 전부 수행 또는 전부 무효 |
Consistency (일관성) | 일관된 상태 유지 |
Isolation (고립성) | 동시 실행 시 간섭 없음 |
Durability (지속성) | 성공한 트랜잭션은 영구 반영 |
● 동시성 제어 기법
- Lock 기반: Shared Lock, Exclusive Lock, 2PL(2단계 잠금)
- 타임스탬프 순서 기법: 트랜잭션 타임스탬프를 기준으로 순서 결정
- 낙관적/비관적 제어: 충돌 가능성 여부에 따라 접근 방식 다름
5. 무결성과 키 설계
● 무결성이란?
무결성 제약(Integrity Constraint)은 데이터의 정확성과 일관성을 보장하는 규칙입니다.
주요 무결성 제약
- 개체 무결성: 기본키는 NULL이거나 중복될 수 없음
- 참조 무결성: 외래키는 반드시 참조 대상이 존재해야 함
- 도메인 무결성: 값이 허용된 범위 내에 있어야 함 (예: 나이는 0 이상)
● 키의 종류
- 기본키(Primary Key): 각 행(Row)을 유일하게 식별하는 키
- 예: 주민등록번호, 사번 등
- 후보키(Candidate Key): 기본키로 사용할 수 있는 모든 키 후보들
- 슈퍼키(Super Key): 유일하게 식별할 수 있는 속성 집합 (후보키 + 여분 속성 포함 가능)
- 외래키(Foreign Key): 다른 테이블의 기본키를 참조하여 관계를 맺는 키
- 예: 주문 테이블의 고객ID → 고객 테이블의 기본키 참조
6. 성능 최적화 설계
● 인덱스란?
인덱스(Index)는 데이터 검색 속도를 향상시키기 위한 자료구조입니다. 책의 목차와 유사한 개념입니다.
- B-tree 인덱스: 범위 검색에 유리
- Bitmap 인덱스: 중복도가 높은 컬럼에 유리
● 파티셔닝
파티셔닝(Partitioning)은 대용량 테이블을 논리적으로 분할하여 관리 성능을 높이는 기법입니다.
- Range Partitioning: 날짜 등 연속 범위 기준
- List Partitioning: 명확한 목록 기반
- Hash Partitioning: 해시 함수를 이용한 균등 분할
● 조인 알고리즘
- Nested Loop Join: 소규모 테이블에 적합
- Sort-Merge Join: 양 테이블 정렬 후 병합
- Hash Join: 메모리 기반 해시 테이블 생성
7. 데이터베이스 관리와 운영
● 백업과 복구
- Full Backup: 전체 데이터를 백업
- Incremental Backup: 변경된 데이터만 백업
- Differential Backup: 마지막 전체 백업 이후 변경된 전체 내용 백업
복구 시에는 로그 파일(Redo/Undo), 체크포인트, 아카이브 로그 등이 활용됩니다.
● 보안과 접근제어
- 인증(Authentication): 사용자 신원 확인
- 인가(Authorization): 권한 부여 (RBAC 등)
- 암호화: 저장 데이터 또는 전송 데이터 보호
- 감사 로그(Audit Log): 모든 행위 기록
8. NoSQL과 최신 트렌드
● NoSQL이란?
NoSQL은 RDBMS의 한계를 극복하고 대규모 데이터 처리와 비정형 데이터를 저장하기 위해 등장한 시스템입니다.
유형 | 설명 | 예시 |
Document | JSON 기반 문서 저장 | MongoDB |
Column | 열 기반 스토리지 | Cassandra |
Key-Value | 단순 키/값 저장 | Redis |
Graph | 노드-엣지 구조 | Neo4j |
● CAP 이론
- Consistency(일관성): 모든 노드가 같은 데이터 보장
- Availability(가용성): 응답 가능성 유지
- Partition Tolerance(분산 허용성): 네트워크 분할 시에도 동작 보장
→ 이 세 가지 중 두 가지를 보장하는 구조만 가능
● BASE 이론
NoSQL에서 전통적인 ACID 대신 사용
- Basically Available
- Soft state
- Eventually consistent
9. 실무 연계 흐름도 (학습 로드맵)
'정보관리기술사 > 데이터베이스' 카테고리의 다른 글
RDBMS vs NoSQL (1) | 2025.05.12 |
---|