728x90
SMALL
- 앞선 글에서 나오지 않은 개념이나 헷갈리는 문제들을 정리하고 '데이터 모델과 SQL' 챕터를 마무리하고자 합니다.
정규화 & 반정규화
✅ 성능 데이터 모델링이란?
- 성능 데이터 모델링은 데이터베이스 성능을 최적화하는 목적으로 데이터 모델을 설계하는 과정입니다.
- 이 과정에서는 데이터베이스의 응답 시간을 개선하고, 시스템의 처리량을 최대화하기 위해 데이터 구조를 조정합니다.
- 성능 데이터 모델링의 방법으로는 정규화, 반정규화, 테이블 통합, 테이블 분할 등이 있습니다.
✅ 성능 데이터 모델링의 순서는?
- 데이터 모델에 맞게 정규화를 수행합니다.
- 데이터베이스의 용량 및 트랜잭션 유형을 파악하여 성능 저하를 일으키는 부분이 없는지 검토합니다.
- 용량과 트랜잭션 유형에 맞게 반정규화를 수행합니다.
- 성능 향상을 위한 이력모델의 조정, PK/FK 조정, 슈퍼/서브타입 조정 등을 수행합니다.
- 데이터 모델의 성능을 검증합니다.
✅ 수직 분할은 언제 진행될까?
- 한 테이블에 속성의 개수가 과도하게 많을 경우에 고려합니다.
- 조회 성능을 향상하기 위해 자주 쓰이는 속성과 그렇지 않은 속성을 나누어 분할할 수 있습니다.
- 반정규화 기법 중 하나이며 분할된 테이블은 1:1 관계를 이루게 됩니다.
✅ 데이터 모델에서 생길 수 있는 이상 현상 3가지!
- 삽입 이상: 원하지 않는 데이터를 데이터베이스에 삽입해야만 새로운 데이터를 추가할 수 있는 상황을 말합니다. 예를 들어, 학생 정보와 수강하는 과목 정보를 하나의 테이블에 저장하는 경우, 아직 수강 과목이 없는 신입생의 정보를 삽입하기 위해서는 과목 관련 필드에 'NULL' 값이나 가짜 데이터를 입력해야 하는 문제가 발생할 수 있습니다.
- 갱신 이상: 데이터베이스 내의 중복된 데이터를 갱신할 때 일부 데이터만 갱신되어 데이터 간의 불일치가 발생하는 상황을 말합니다. 예를 들어, 직원의 부서 정보가 여러 테이블에 걸쳐 중복 저장되어 있는 경우, 한 직원의 부서 정보를 변경할 때 모든 테이블에서 일관되게 갱신하지 않으면 일부 테이블에는 오래된 정보가 남게 됩니다.
- 삭제 이상: 삭제 이상은 한 데이터를 삭제할 때 관련된 데이터까지도 함께 삭제되어 버려야 하는 상황을 말합니다. 예를 들어, 한 과목을 수강하는 모든 학생 정보를 담고 있는 테이블에서 해당 과목이 폐강되어 그 과목에 대한 정보를 삭제하게 되면, 그 과목을 수강하던 학생 정보까지도 모두 삭제되는 문제가 발생할 수 있습니다.
✅ 슈퍼 / 서브 타입이란?
- 데이터 모델을 설계할 때, 공통 속성을 조회하는 빈도수가 개별 속성을 조회하는 빈도수보다 높은 경우 사용되는 타입입니다.
- 공통(슈퍼) 속성과 개별(서브) 속성을 별도로 관리하여 조회 성능을 높여줍니다.
✅ 중복 관계 추가란?
- JOIN이 많이 필요한 상황에서 중복 관계를 추가하는 것이 유리할 경우에 고려하는 방법입니다.
- 테이블 반정규화는 성능 향상을 목적으로 수행되지만 일반적으로 데이터의 무결성을 깨트릴 위험성을 가지고 있습니다.
- 그러나 중복 관계 추가 방법은 데이터의 무결성을 깨뜨릴 위험성 없이 데이터 처리의 성능을 향상할 수 있습니다.
트랜잭션
- 트랜잭션은 데이터를 조작하기 위한 논리적인 작업 단위로, 데이터 모델로 표현할 수 있으며 데이터는 트랜잭션 범위로 묶일 수 있습니다. 또한 트랜잭션은 하나의 커밋 단위로 묶여야 합니다.
✅ 트랜잭션의 특성 4가지!
- 원자성: 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지, 전혀 실행되지 않아야 합니다.
- 일관성: 트랜잭션 실행 전 데이터베이스 내용이 잘못되지 않으면 실행 후에도 잘못되지 않아야 합니다.
- 고립성: 트랜잭션 실행 도중 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안됩니다.
- 지속성: 트랜잭션이 성공적으로 수행되면 데이터베이스의 내용은 영구적으로 저장됩니다.
728x90
LIST
'자격증 > SQLD' 카테고리의 다른 글
SQL 기본 (2) (0) | 2024.02.20 |
---|---|
SQL 기본 (1) (0) | 2024.02.19 |
데이터 모델과 SQL (1) (1) | 2024.02.12 |
데이터 모델링의 이해 (3) (2) | 2024.02.10 |
데이터 모델링의 이해 (2) (2) | 2024.02.10 |