테마
반정규화·인덱스·뷰·파티션·분산 DB
정규화로 나눈 테이블은 조회할 때 조인이 늘어 느려질 수 있다. 이 문서는 성능을 위한 설계 조정과 데이터베이스 객체를 다룬다. 실기 시험은 반정규화(denormalization)의 정의와 대가, 시스템 카탈로그(system catalog), CRUD 분석(Create Read Update Delete analysis, 생성 읽기 갱신 삭제 분석), 뷰의 특징, 파티션의 종류, 분산 데이터베이스의 투명성을 단답형으로 묻는다.
반정규화
반정규화(denormalization)는 정규화된 모델을 성능과 운영 편의를 위해 의도적으로 통합·중복·분리해 정규화 원칙을 어기는 일이다. 조회는 빨라지지만 같은 값이 여러 곳에 있어 일관성과 무결성(integrity)이 떨어질 수 있고, 과하면 같은 값을 여러 곳에서 갱신해야 해서 쓰기 비용이 커지고 오히려 성능이 나빠진다.
시스템 카탈로그와 CRUD 분석
시스템 카탈로그(system catalog)는 DBMS가 스스로 관리하는 데이터베이스다. 테이블·뷰·인덱스·사용자·권한 같은 모든 객체의 정의를 담는다. 데이터에 관한 데이터라서 메타데이터(metadata)라고 부르고, 좁은 의미로는 데이터 사전(data dictionary)이라고도 한다. 사용자는 조회만 하고, 갱신은 DBMS가 자동으로 한다.
CRUD 분석은 프로세스와 테이블 사이에 생성(Create)·읽기(Read)·갱신(Update)·삭제(Delete)의 첫 글자를 적은 매트릭스를 만들어 트랜잭션을 분석하는 기법이다. 트랜잭션이 몰리는 테이블과 설계 누락을 찾는 데 쓴다.
인덱스와 뷰
인덱스(index)는 레코드를 빨리 찾기 위해 키 값과 레코드 위치를 짝지어 둔 자료 구조다. 전체를 훑지 않고 바로 위치로 가는 대신, 데이터가 바뀔 때마다 인덱스도 고쳐야 해서 쓰기가 느려진다.
뷰(view)는 하나 이상의 기본 테이블에서 유도한, 이름을 가진 가상 테이블이다. 정의만 저장하며, 허락된 열만 보여 주어 보안에 유리하다.
뷰는 CREATE VIEW로 만들고 DROP VIEW로 지운다. 시험에서는 ALTER로 정의를 바꿀 수 없어 지우고 다시 만들며, 기반 테이블이나 뷰를 지우면 그 위의 뷰도 함께 삭제된다고 설명한다.1 조인·집계로 만든 뷰는 삽입·갱신·삭제에 제약이 있다.
파티션
파티션(partition)은 큰 테이블을 기준에 따라 여러 조각으로 나눠 저장하는 방법이다. 필요한 조각만 읽으므로 조회가 빨라지고 조각 단위로 관리할 수 있다.
| 종류 | 나누는 기준 |
|---|---|
| 범위 분할 | 날짜·숫자 구간, 예를 들어 월별 |
| 목록 분할 | 지역 코드처럼 값 목록 |
| 해시 분할 | 해시 함수(hash function) 결과, 데이터를 고르게 흩을 때 |
| 조합 분할 | 범위로 나눈 뒤 해시로 한 번 더 |
범위 분할은 최근 날짜 같은 한 구간에 조회가 몰리는 쏠림이 생기기 쉬운데, 해시 분할은 값을 고르게 흩어 이를 보완한다. 다만 해시 결과로 조각이 정해지므로 특정 값이 어느 조각에 있는지 미리 알기 어렵다.
분산 데이터베이스의 투명성
분산 데이터베이스(distributed database)는 여러 곳에 나눠 둔 데이터를 하나처럼 쓰는 데이터베이스다. 사용자가 분산 사실을 몰라도 되게 하는 성질을 투명성(transparency)이라 한다.
| 투명성 | 사용자가 몰라도 되는 것 |
|---|---|
| 위치 투명성 | 데이터가 실제로 어느 곳에 있는지 |
| 중복 투명성 | 같은 데이터가 여러 곳에 복제되어 있는지 |
| 병행 투명성 | 여러 트랜잭션이 동시에 돌고 있는지 |
| 장애 투명성 | 일부 장비나 네트워크가 고장 났는지 |
시험 포인트
- "성능을 위해 정규화 원칙을 의도적으로 위배" → 반정규화. 대가는 일관성·무결성 저하.
- "DBMS가 관리하는 모든 객체의 정의를 담은 시스템 데이터베이스" → 시스템 카탈로그, 데이터 사전.
- "프로세스와 테이블 간 매트릭스로 트랜잭션 분석" → CRUD 분석.
- "기본 테이블에서 유도된 가상 테이블" → 뷰. ALTER 불가, 연쇄 삭제.
- 파티션: 범위·목록·해시·조합 분할. 분산 DB 투명성: 위치·중복·병행·장애.
참고
표준 SQL에는
ALTER VIEW가 없지만 MySQL·PostgreSQL은 확장 기능으로 제공한다. MySQL은 기반 테이블을 지워도 뷰 정의가 남고, 그 뷰를 조회할 때 오류가 난다. 시험 답안은 위 설명을 따른다. ↩︎
