⭐⭐⭐ 반드시 / ⭐⭐ 중요 / ⭐ 참고 ⚠️ = 기출 함정 포인트
Chapter 01. 개요
데이터베이스 정의 ⭐⭐
- 여러 응용 시스템이 공용으로 쓰기 위해 통합·저장된 운영 데이터의 집합
- 정의 4가지 : 통합 데이터 (중복 최소화) / 저장 데이터 (저장 매체에 저장) / 운영 데이터 (업무에 꼭 필요) / 공용 데이터 (여럿이 같이 씀)
데이터베이스 특성 ⭐⭐⭐
| 특성 | 의미 |
|---|---|
| 실시간 접근성 | 질의에 즉시 응답 |
| 계속적인 변화 | 삽입·삭제·갱신으로 계속 바뀌면서도 정확한 상태 유지 |
| 동시 공용 | 여러 사용자가 동시에 같은 데이터 사용 |
| 내용에 의한 참조 | 레코드의 주소·위치가 아니라 값(내용) 으로 찾음 |
⚠️ “주소나 위치로 참조한다”는 틀린 보기
발전 과정 ⭐
1 | |
| 모델 | 구조 |
|---|---|
| 계층형 | 트리 (1 : N). N : M 표현 어려움 |
| 망형 | 그래프 (N : M 가능). 구조 복잡 |
| 관계형 | 테이블 (행·열). SQL 사용, 현재 가장 많이 씀 |
Chapter 02. DBMS
파일 시스템의 문제 → DBMS 등장 ⭐⭐
- 파일 시스템은 프로그램마다 파일을 따로 가져서 데이터 종속성과 데이터 중복성이 심함
- 그래서 무결성·일관성·보안성·경제성이 떨어짐 → 데이터를 한곳에서 관리하는 DBMS 도입
DBMS 필수 기능 3가지 ⭐⭐⭐
| 기능 | 내용 | 언어 |
|---|---|---|
| 정의 기능 | 데이터의 형태·구조·저장 방법 정의 | DDL |
| 조작 기능 | 검색·삽입·삭제·갱신 | DML |
| 제어 기능 | 무결성 유지, 보안·권한 검사, 병행(동시성) 제어 | DCL |
- 트랜잭션 제어(COMMIT, ROLLBACK)는 TCL로 따로 분류하기도 하지만, 시험에서는 보통 DCL(제어) 에 포함
DBMS 장단점 ⭐
- 장점 : 중복 최소화, 데이터 공유, 무결성·일관성·보안 유지, 데이터 독립성, 표준화
- 단점 : 비용 큼(전문 인력, 장비), 백업·회복 복잡, 시스템 복잡, 처리 속도 느릴 수 있음
데이터 독립성 ⭐⭐⭐
- DBMS의 궁극적 목적
| 구분 | 의미 | 매핑 |
|---|---|---|
| 논리적 데이터 독립성 | 개념 스키마를 바꿔도 외부 스키마(응용 프로그램) 에 영향 X | 외부 ↔ 개념 |
| 물리적 데이터 독립성 | 내부 스키마(저장 구조) 를 바꿔도 개념 스키마에 영향 X | 개념 ↔ 내부 |
- 예 : 디스크 저장 방식이나 인덱스를 바꿔도 테이블 구조와 앱은 그대로 → 물리적 독립성
Chapter 03. 스키마와 데이터 언어
스키마 ⭐⭐⭐
- 데이터베이스의 구조(개체, 속성, 관계)와 제약 조건에 대한 정의
- 컴파일되어 데이터 사전에 저장됨
3단계 스키마 ⭐⭐⭐
| 스키마 | 관점 | 내용 |
|---|---|---|
| 외부 스키마 (서브 스키마) | 사용자 관점 | 사용자 한 명이 보는 일부분. 여러 개 존재 가능. 뷰라고도 함 |
| 개념 스키마 | 조직 전체 (논리적) 관점 | DB 전체의 논리 구조. 개체·관계·제약 조건·접근 권한·무결성·보안 정책. 하나만 존재. 그냥 “스키마”라고 하면 이것 |
| 내부 스키마 | 물리적 저장 장치 관점 | 실제 저장 방법 (레코드 형식, 인덱스, 저장 순서). 하나만 존재 |
⚠️ 외부 스키마는 여러 개, 개념·내부 스키마는 하나 ⚠️ 무결성 규칙·보안 정책은 개념 스키마에 정의
데이터 언어 ⭐⭐⭐
| 언어 | 용도 | 명령어 | 주 사용자 |
|---|---|---|---|
| DDL (정의어) | 구조 정의·변경·삭제 | CREATE, ALTER, DROP | DBA |
| DML (조작어) | 데이터 검색·삽입·삭제·갱신 | SELECT, INSERT, DELETE, UPDATE | 사용자, 프로그래머 |
| DCL (제어어) | 보안·권한·회복·병행 제어 | GRANT, REVOKE, COMMIT, ROLLBACK | DBA |
⚠️ DROP(테이블 자체 삭제, DDL) vs DELETE(행 삭제, DML) 구분
데이터베이스 사용자 ⭐⭐
| 사용자 | 사용 언어 |
|---|---|
| 일반 사용자 | 질의어 (비절차적 DML) |
| 응용 프로그래머 | 프로그래밍 언어에 DML을 삽입 (절차적 DML) |
| DBA (데이터베이스 관리자) | DDL, DCL로 DB를 정의하고 제어 |
- DBA의 역할 : 스키마 정의, 저장 구조·접근 방법 결정, 보안·권한 관리, 백업·회복, 무결성 유지, 성능 관리
DBMS 구성 요소 ⭐⭐
SQL을 받아서 컴파일하고 실행하는 공장이라고 생각하면 쉬움
| 구성 요소 | 역할 |
|---|---|
| DDL 컴파일러 | DDL로 정의한 스키마를 내부 형태로 바꿔 시스템 카탈로그에 저장 |
| 질의어 처리기 | 질의문을 파싱·분석·최적화·컴파일 |
| DML 예비 컴파일러 | 응용 프로그램에 삽입된 DML을 추출 (프로그래밍 언어 컴파일 전에 실행) |
| DML 컴파일러 | DML 명령어를 목적 코드로 변환 |
| 런타임 DB 처리기 | 컴파일된 코드를 실행 |
| 트랜잭션 관리자 | 무결성·권한 제어, 병행 제어, 회복 |
| 저장 데이터 관리자 | 디스크에 저장된 데이터 접근 제어 |
데이터 사전 vs 데이터 디렉터리 ⭐⭐⭐
| 구분 | 데이터 사전 (시스템 카탈로그) | 데이터 디렉터리 |
|---|---|---|
| 내용 | 메타데이터 (테이블, 뷰, 인덱스, 권한 등 데이터에 대한 데이터) | 데이터 사전의 데이터에 실제로 접근하는 데 필요한 정보 |
| 접근 | 사용자 + 시스템 모두 | 시스템만 |
⚠️ 데이터 사전은 사용자가 조회(SELECT)는 가능하지만 직접 수정 불가. DDL 실행 시 DBMS가 자동 갱신
Chapter 04. 관계 데이터 모델
릴레이션 용어 ⭐⭐⭐
| 학번 | 이름 | 학과 | 학년 |
|---|---|---|---|
| 2401 | 김철수 | 컴퓨터 | 2 |
| 2402 | 이영희 | 경영 | 1 |
| 2403 | 김철수 | 컴퓨터 | 3 |
| 용어 | 의미 | 위 표에서 |
|---|---|---|
| 릴레이션 | 2차원 테이블 | 표 전체 |
| 튜플 | 행 하나 | 학생 한 명 |
| 속성 | 열 하나 | 학번, 이름 … |
| 도메인 | 속성이 가질 수 있는 값의 범위 | 학년 = {1, 2, 3, 4} |
| 차수 (Degree) | 속성(열) 수 | 4 |
| 기수 (Cardinality) | 튜플(행) 수 | 3 |
- 학생이 추가되면 기수만 바뀌고 차수는 그대로
릴레이션의 특징 ⭐⭐⭐
- 튜플은 모두 다름 (똑같은 행 없음)
- 튜플 순서 없음, 속성 순서 없음
- 속성 값은 더 쪼갤 수 없는 원자값
키 ⭐⭐⭐
- 유일성 : 이것만 알면 딱 한 줄로 특정되나? (지금 이 조합 그대로)
- 최소성 : 하나라도 빼면 유일성이 깨지나? (군더더기 없음. 복합키에서만 의미 있음)
| 키 | 조건 | 예시 |
|---|---|---|
| 슈퍼키 | 유일성만 | {학번}, {학번, 이름}, {주민번호, 학과} … |
| 후보키 | 유일성 + 최소성 | {학번}, {주민번호} |
| 기본키 | 후보키 중 설계자가 고른 하나. NULL·중복 불가 | {학번} |
| 대체키 | 후보키 중 기본키로 안 뽑힌 것 | {주민번호} |
| 외래키 | 다른 릴레이션의 기본키를 참조하는 속성 | 수강 테이블의 학번 |
1 | |
⚠️ 외래키는 NULL 가능, 중복 가능 (한 학생이 여러 과목 수강하면 학번이 여러 번 나옴)
무결성 제약 조건 ⭐⭐⭐
| 무결성 | 규칙 |
|---|---|
| 개체 무결성 | 기본키는 NULL이면 안 되고 중복도 안 됨 |
| 참조 무결성 | 외래키 값은 NULL이거나, 참조하는 테이블의 기본키에 있는 값이어야 함 |
| 도메인 무결성 | 속성 값은 정의된 도메인 안의 값이어야 함 |
- 예 : 학생 테이블에 없는 학번 9999를 수강 테이블에 넣으면 → 참조 무결성 위반
Chapter 05. 관계 대수와 관계 해석
관계 대수 vs 관계 해석 ⭐⭐⭐
| 관계 대수 | 관계 해석 |
|---|---|
| 절차적 언어 (어떻게 구할지 순서를 기술) | 비절차적 언어 (무엇을 원하는지만 기술) |
| 연산자 사용 | 수학의 술어 해석 기반 |
- 둘의 표현 능력은 동등
- ⚠️ “관계 대수는 비절차적”은 틀린 보기
일반 집합 연산자 ⭐⭐
| 연산 | 기호 |
|---|---|
| 합집합 | ∪ |
| 교집합 | ∩ |
| 차집합 | − |
| 카티션 프로덕트 | × |
- 합·교·차 집합은 두 릴레이션이 합병 가능해야 함 (차수가 같고 대응 속성의 도메인이 같음)
카티션 프로덕트 ⭐⭐⭐
1 | |
- 예 : R(차수 3, 기수 4) × S(차수 2, 기수 5) → 차수 5, 기수 20
⚠️ 차수는 더하고 기수는 곱함. 계산 문제 단골
순수 관계 연산자 ⭐⭐⭐
| 연산 | 기호 | 의미 |
|---|---|---|
| 셀렉트 (Select) | σ (시그마) | 조건에 맞는 튜플(행) 추출 → 수평적 부분집합 |
| 프로젝트 (Project) | π (파이) | 원하는 속성(열) 추출 → 수직적 부분집합. 중복 튜플 제거 |
| 조인 (Join) | ⋈ | 공통 속성을 기준으로 두 릴레이션을 합침 |
| 디비전 (Division) | ÷ | R ÷ S : S의 모든 값과 관련 있는 R의 튜플 추출 |
- 예 : σ학년=2(학생) → 2학년인 행만 / π이름(학생) → 이름 열만
⚠️ 셀렉트 = 행(수평), 프로젝트 = 열(수직). SQL의 SELECT는 오히려 π에 가까워서 헷갈리게 냄
Chapter 06. SQL
SQL 특징 ⭐
- 관계 대수와 관계 해석 기반의 비절차적 언어
- 집합(여러 레코드) 단위로 처리
- 정의(DDL)·조작(DML)·제어(DCL) 기능 모두 제공
DDL ⭐⭐⭐
| 명령 | 용도 |
|---|---|
| CREATE | 스키마·도메인·테이블·뷰·인덱스 생성 |
| ALTER | 테이블 구조 변경 (열 추가·변경·삭제) |
| DROP | 스키마·도메인·테이블·뷰·인덱스 삭제 |
1 | |
| DROP 옵션 | 의미 |
|---|---|
| RESTRICT | 다른 곳에서 참조 중이면 삭제 거부 |
| CASCADE | 참조하는 것까지 연쇄적으로 같이 삭제 |
DML ⭐⭐⭐
| 명령 | 형식 |
|---|---|
| SELECT | SELECT 열 FROM 테이블 WHERE 조건 |
| INSERT | INSERT INTO 테이블(열) VALUES(값) |
| UPDATE | UPDATE 테이블 SET 열 = 값 WHERE 조건 |
| DELETE | DELETE FROM 테이블 WHERE 조건 |
SELECT 전체 구조 ⭐⭐⭐
1 | |
- 작성 순서 : SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY
- 실행 순서 : FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
⚠️ WHERE = 행(개별 튜플) 조건 / HAVING = 그룹 조건. 집계 함수(COUNT, SUM, AVG, MAX, MIN) 조건은 HAVING에
⚠️ ORDER BY는 항상 맨 마지막. 기본은 오름차순(ASC), 내림차순은 DESC
⚠️ DISTINCT : 중복 행 제거
DROP vs DELETE ⭐⭐
| DROP | DELETE |
|---|---|
| DDL | DML |
| 테이블 자체(구조까지) 삭제 | 테이블 안의 행만 삭제 (구조는 남음) |
DCL ⭐⭐
| 명령 | 용도 |
|---|---|
| GRANT | 권한 부여 |
| REVOKE | 권한 회수 |
| COMMIT | 트랜잭션 확정 |
| ROLLBACK | 트랜잭션 취소 |
1 | |
뷰 (View) ⭐⭐⭐
- 하나 이상의 기본 테이블로부터 만든 가상 테이블 (실제로 저장되지 않음)
- 목적 : 복잡한 질의를 단순화, 사용자에게 필요한 데이터만 보여줘서 보안 강화
1 | |
| 특징 | 내용 |
|---|---|
| 생성 / 삭제 | CREATE VIEW / DROP VIEW |
| 변경 | ALTER로 변경 불가 → 지우고 다시 만들어야 함 |
| 기본 테이블 삭제 시 | 뷰도 자동 삭제 |
| 검색 | 기본 테이블과 거의 동일 |
| 삽입·삭제·갱신 | 제한 있음 (집계 함수, GROUP BY, 여러 테이블 조인으로 만든 뷰 등) |
| 뷰 위의 뷰 | 생성 가능 |
| 인덱스 | 뷰에 독자적인 인덱스 불가 |
- WITH CHECK OPTION : 뷰를 통해 삽입·갱신할 때 뷰의 조건(WHERE)을 벗어나는 변경을 막음
⚠️ “뷰는 ALTER로 변경할 수 있다” → 틀림
Chapter 07. 데이터베이스 설계
설계 순서 ⭐⭐⭐
1 | |
| 단계 | 하는 일 | 결과물 |
|---|---|---|
| 개념적 설계 | 요구사항을 이해하기 쉬운 형태로 표현. DBMS와 무관 | E-R 다이어그램 |
| 논리적 설계 | 특정 DBMS 모델(관계형 등)에 맞게 변환. 정규화 수행 | 논리 스키마 (테이블 구조) |
| 물리적 설계 | 저장 구조, 인덱스, 접근 경로 설계. 응답 시간·저장 공간·처리량 고려 | 물리 구조 (기본 단위 = 레코드) |
⚠️ ERD = 개념적 설계 / 정규화·스키마 = 논리적 설계 / 인덱스·저장 구조 = 물리적 설계. 단계 매칭 단골
- 설계 고려사항 : 무결성, 일관성, 회복, 보안, 효율성, 확장성
Chapter 08. 정규화
정규화 ⭐⭐⭐
- 이상현상을 없애기 위해 속성 간 종속 관계를 분석해서 릴레이션을 분해하는 과정
- 한 줄 요약 : “모든 정보를 그 정보의 주인(후보키)이 있는 테이블에 딱 한 번만 저장”
- 논리적 설계 단계에서 수행
이상현상 ⭐⭐⭐
- 원인 : 한 테이블에 여러 이야기가 섞여서 같은 사실이 여러 줄에 중복 저장됨
| 이상 | 의미 | 예 (학번, 과목, 지도교수 테이블) |
|---|---|---|
| 삽입 이상 | 원하지 않는 값까지 같이 넣어야 함 | 수강 신청 안 한 신입생의 지도교수를 못 넣음 (기본키 NULL) |
| 삭제 이상 | 지우면 안 될 정보까지 같이 삭제됨 | 수강 취소로 줄을 지우면 지도교수 정보도 사라짐 |
| 갱신 이상 | 일부만 바뀌어서 데이터가 모순됨 | 지도교수 변경 시 한 줄이라도 빠뜨리면 모순 |
함수 종속 ⭐⭐⭐
- X → Y : X를 알면 Y가 하나로 정해짐. X = 결정자, Y = 종속자
- 확인법 : X 값이 같은 줄끼리 모았을 때 Y도 전부 같은가?
- Swift로 치면
[X: Y]딕셔너리가 성립하는가
| 종류 | 의미 |
|---|---|
| 완전 함수 종속 | 기본키 전체에 종속 (정상) |
| 부분 함수 종속 | 기본키의 일부에만 종속 (복합키일 때만 생김) |
| 이행 함수 종속 | A → B, B → C 이므로 A → C (건너서 결정) |
암스트롱 공리 ⭐
- 기본 : 반사 (X ⊇ Y면 X → Y), 증가 (X → Y면 XZ → YZ), 이행 (X → Y, Y → Z면 X → Z)
- 부가 : 결합 (X → Y, X → Z면 X → YZ), 분해 (X → YZ면 X → Y, X → Z), 의사이행 (X → Y, WY → Z면 WX → Z)
정규형 단계 ⭐⭐⭐
| 단계 | 제거하는 것 | 던지는 질문 |
|---|---|---|
| 1NF | 도메인이 원자값이 아닌 것 | 한 칸에 값이 여러 개인가? |
| 2NF | 부분 함수 종속 | 키의 일부만으로 정해지는 컬럼이 있나? |
| 3NF | 이행 함수 종속 | 키 아닌 컬럼이 다른 일반 컬럼을 정하나? |
| BCNF | 결정자이면서 후보키가 아닌 것 | 결정자 중에 후보키가 아닌 놈이 있나? |
| 4NF | 다치 종속 (MVD, A →→ B) | 서로 독립적인 여러 값 묶음이 한 테이블에 있나? |
| 5NF | 조인 종속 (JD) | – |
암기 : 도 → 부 → 이 → 결 → 다 → 조
단계별 예시 ⭐⭐⭐
2NF : 수강(학번, 과목번호, 성적, 지도교수)
- 지도교수는 학번(키의 반쪽)만으로 정해짐 → 부분 종속
- 분해 → (학번, 과목번호, 성적) / (학번, 지도교수)
3NF : 지도(학번, 지도교수, 학과)
- 학번 → 지도교수 → 학과 → 이행 종속
- 분해 → (학번, 지도교수) / (지도교수, 학과)
BCNF : 수강과목(학번, 과목, 교수), 교수 한 명은 한 과목만
- 교수 → 과목인데 교수는 후보키가 아님 → BCNF 위반
- 분해 → (학번, 교수) / (교수, 과목)
3NF vs BCNF 구분법 ⭐⭐⭐
- 결정당하는 쪽이 일반 컬럼이면 → 3NF 문제
- 결정당하는 쪽이 키의 일부면 → 3NF는 통과, BCNF 문제
⚠️ 문제에서 몇 정규형 위반이냐 물으면 처음으로 걸리는 단계를 답함 ⚠️ 기본키가 속성 하나면 2NF는 자동 만족 ⚠️ BCNF면 무조건 3NF, 3NF라고 BCNF는 아님 (BCNF = “강한 3NF”)
정규화 주의사항 ⭐⭐
- 정규화는 중복을 줄이는 것이지 종속성을 없애는 것이 아님 (종속은 쪼갠 테이블에 그대로 남음)
- 분해해도 정보가 사라지면 안 됨 → 무손실 분해
- 테이블이 쪼개지면 조인이 늘어나 검색이 느려질 수 있음 → 성능을 위해 일부러 다시 합치는 것 = 반정규화
Chapter 09. 데이터 모델링 (E-R 모델)
구성 요소 ⭐⭐
| 용어 | 의미 |
|---|---|
| 개체 (Entity) | 독립적으로 존재하며 구분 가능한 대상 (학생, 과목). 속성들의 집합 |
| 속성 (Attribute) | 개체의 특성 (학번, 이름) |
| 관계 (Relationship) | 개체 사이의 연관 (학생이 과목을 수강) |
E-R 다이어그램 표기법 ⭐⭐⭐
| 기호 | 의미 |
|---|---|
| 사각형 | 개체 |
| 마름모 | 관계 |
| 타원 | 속성 |
| 밑줄 친 타원 | 기본키 속성 |
| 이중 타원 | 다중값 속성 |
| 점선 타원 | 유도 속성 |
| 이중 사각형 | 약한 개체 |
| 선 | 개체·관계·속성 연결 |
⚠️ 사각형 = 개체, 마름모 = 관계, 타원 = 속성. 기호 매칭 단골
- 관계 유형 : 1 : 1, 1 : N, N : M
- 하나의 관계에 셋 이상의 개체가 참여하는 다원 관계도 가능
속성 유형 ⭐⭐
| 유형 | 예 |
|---|---|
| 단순 속성 / 복합 속성 | 나이 / 주소(시, 구, 동으로 쪼갤 수 있음) |
| 단일값 속성 / 다중값 속성 | 생년월일 / 취미(여러 개) |
| 저장 속성 / 유도 속성 | 생년월일 / 나이(생년월일로 계산 가능) |
| 널 속성 | 값이 없을 수 있는 속성 |
Chapter 10. 질의어 처리
처리 순서 ⭐
1 | |
- 질의 최적화 : 같은 결과를 내는 여러 방법 중 가장 효율적인 실행 계획을 선택
- 최적화 규칙 예 : 셀렉트(σ)와 프로젝트(π)를 최대한 먼저 수행해서 처리할 데이터 양을 줄이고, 조인은 나중에
Chapter 11. 트랜잭션, 회복, 동시성 제어
트랜잭션 ⭐⭐⭐
- 한꺼번에 모두 수행되어야 하는 일련의 연산. 병행 제어와 회복의 논리적 단위
- 예 : 계좌 이체 = A 출금 + B 입금. 하나만 되면 안 됨
ACID 특성 ⭐⭐⭐
| 특성 | 의미 | 관련 |
|---|---|---|
| 원자성 (Atomicity) | 전부 실행되거나 전혀 실행되지 않거나 (All or Nothing) | COMMIT, ROLLBACK, 회복 |
| 일관성 (Consistency) | 실행 후에도 DB가 일관된 상태 유지 | 무결성 |
| 격리성 (Isolation) | 실행 중인 트랜잭션의 중간 결과에 다른 트랜잭션이 접근 불가 | 병행 제어 |
| 영속성 (Durability) | 성공한 트랜잭션의 결과는 영구적으로 보장 | 회복 |
⚠️ 원자성 = 회복·COMMIT·ROLLBACK / 격리성 = 병행 제어. 특성과 관련 기능 매칭 단골
트랜잭션 상태 ⭐⭐
1 | |
| 상태 | 의미 |
|---|---|
| 활동 (Active) | 실행 중 |
| 부분 완료 (Partially Committed) | 마지막 연산까지 실행했지만 아직 COMMIT 전 |
| 완료 (Committed) | COMMIT 완료 |
| 실패 (Failed) | 오류로 중단 |
| 철회 (Aborted) | ROLLBACK되어 실행 전 상태로 복구 |
⚠️ 부분 완료 ≠ 완료. 부분 완료에서도 실패로 갈 수 있음
회복 ⭐⭐⭐
| 연산 | 의미 |
|---|---|
| REDO (재실행) | COMMIT된 트랜잭션의 변경을 로그 보고 다시 실행 |
| UNDO (취소) | COMMIT 안 된 트랜잭션의 변경을 원래대로 되돌림 |
회복 기법 ⭐⭐⭐
| 기법 | 방법 | 필요 연산 |
|---|---|---|
| 지연 갱신 | COMMIT될 때까지 DB 반영을 미뤘다가 한꺼번에 반영 | REDO만 (UNDO 불필요) |
| 즉시 갱신 | 변경을 즉시 DB에 반영 | REDO + UNDO |
| 검사점 (Checkpoint) | 일정 시점마다 기록해두고, 장애 시 검사점 이후만 회복 | 회복 시간 단축 |
| 그림자 페이징 | 변경 전 페이지(그림자)를 보관해두고 장애 시 그걸로 교체 | 로그 불필요, UNDO 불필요 |
⚠️ 지연 갱신 = REDO만. “지연 갱신은 UNDO가 필요하다”는 틀린 보기
동시성(병행) 제어 ⭐⭐⭐
- 여러 트랜잭션을 동시에 실행해도 순서대로 하나씩 실행한 것과 같은 결과가 나오게 함 (직렬성 보장)
병행 제어를 안 하면 생기는 문제 ⭐⭐
| 문제 | 의미 |
|---|---|
| 갱신 분실 (Lost Update) | 한 트랜잭션의 변경을 다른 트랜잭션이 덮어써서 사라짐 |
| 모순성 (Inconsistency) | 동시에 읽고 쓰면서 일관성 없는 결과가 나옴 |
| 연쇄 복귀 (Cascading Rollback) | 한 트랜잭션이 ROLLBACK되면 그 값을 읽은 다른 트랜잭션도 줄줄이 ROLLBACK |
| 비완료 의존성 (Uncommitted Dependency) | COMMIT 안 된 값을 다른 트랜잭션이 읽음 |
로킹 (Locking) ⭐⭐⭐
- 데이터에 잠금을 걸어서 한 트랜잭션이 쓰는 동안 다른 트랜잭션이 못 건드리게 함
| 락 | 의미 |
|---|---|
| 공유 락 (S, Shared) | 읽기용. 다른 트랜잭션도 읽기는 가능, 쓰기는 불가 |
| 배타 락 (X, Exclusive) | 쓰기용. 다른 트랜잭션은 읽기·쓰기 모두 불가 |
로킹 단위 ⭐⭐⭐
| 로킹 단위가 크면 (DB 전체, 테이블) | 로킹 단위가 작으면 (레코드, 필드) |
|---|---|
| 락 개수 적음 → 관리 간단, 오버헤드 ↓ | 락 개수 많음 → 관리 복잡, 오버헤드 ↑ |
| 병행성 ↓ (여럿이 동시에 못 씀) | 병행성 ↑ |
⚠️ 단위 크기와 병행성은 반비례. 거꾸로 내는 문제 단골
2단계 로킹 (2PL) ⭐⭐
- 확장 단계 : 락을 얻기만 함 / 축소 단계 : 락을 풀기만 함
- 직렬성 보장, 하지만 교착상태는 발생 가능
기타 병행 제어 기법 ⭐
- 타임스탬프 순서 : 트랜잭션 시작 시간 순으로 실행 순서 결정. 교착상태 없음
- 낙관적 기법 (검증 기법) : 일단 실행하고 끝날 때 검증. 충돌이 적은 환경에 유리
- 다중 버전 기법 : 데이터의 여러 버전을 유지
Chapter 12. 분산 데이터베이스
분산 데이터베이스 ⭐⭐
- 물리적으로 여러 사이트에 분산된 데이터를 네트워크로 연결해서 논리적으로 하나처럼 쓰는 DB
- 구성 : 분산 처리기, 분산 데이터베이스, 통신 네트워크
투명성 ⭐⭐⭐
- 사용자가 분산되어 있다는 사실을 몰라도 쓸 수 있게 하는 것
| 투명성 | 사용자가 몰라도 되는 것 |
|---|---|
| 위치 투명성 | 데이터가 어느 사이트에 있는지 |
| 중복 투명성 | 데이터가 여러 곳에 복제되어 있는지 |
| 병행 투명성 | 다른 사용자가 동시에 쓰고 있는지 |
| 장애 투명성 | 일부 사이트에 장애가 났는지 |
| 분할 투명성 | 데이터가 쪼개져 저장되어 있는지 |
장단점 ⭐
- 장점 : 지역 자치성, 신뢰성·가용성 ↑, 확장 쉬움, 효율성
- 단점 : 개발 비용 ↑, 오류 가능성 ↑, 처리 오버헤드 ↑, 보안 어려움
Chapter 13. 데이터 웨어하우스와 데이터 마이닝
데이터 웨어하우스 ⭐⭐
- 의사 결정 지원을 위해 여러 시스템의 데이터를 모아둔 대규모 저장소
- 특징 4가지 : 주제 지향, 통합, 시계열 (시간에 따라 변함), 비휘발성 (한번 들어가면 수정·삭제 거의 없음)
OLTP vs OLAP ⭐⭐
| OLTP | OLAP |
|---|---|
| 실시간 거래 처리 (주문, 결제) | 분석·의사결정 |
| 일반 운영 DB | 데이터 웨어하우스 |
| 삽입·갱신 많음 | 조회·분석 위주 |
OLAP 연산 ⭐
| 연산 | 의미 |
|---|---|
| 롤업 (Roll-up) | 상세 → 요약 (일별 → 월별) |
| 드릴다운 (Drill-down) | 요약 → 상세 (월별 → 일별) |
| 슬라이싱 / 다이싱 | 특정 차원을 잘라서 봄 |
| 피보팅 (Pivoting) | 보는 축을 회전 |
데이터 마이닝 ⭐⭐
- 대량의 데이터에서 숨겨진 규칙·패턴을 찾아내는 과정
| 기법 | 의미 | 예 |
|---|---|---|
| 연관 규칙 | 함께 일어나는 항목 관계 | 기저귀를 사면 맥주도 산다 |
| 분류 | 정해진 그룹으로 나누는 규칙 발견 | 대출 승인 / 거절 |
| 군집 (Clustering) | 비슷한 것끼리 묶음 (그룹이 미리 정해져 있지 않음) | 고객 세분화 |
| 순차 패턴 | 시간 순서상의 관계 | A 구매 후 한 달 뒤 B 구매 |
| 예측 | 과거 데이터로 미래 예측 | 매출 예측 |
⚠️ 분류 = 그룹이 미리 정해짐 / 군집 = 그룹을 새로 찾음