성능 데이터 모델링
데이터베이스 성능 향상을 목적으로 설계 단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것
성능 데이터 모델링 특징
- 데이터가 빠르게 증가할 수록 성능 저하가 발생하기 쉬우며, 이를 개선하기 위한 비용도 증가한다.
- 데이터 모델은 성능 튜닝 과정에서 변경될 수 있다.
- 이는 성능을 최적화하기 위해 모델 구조가 조정될 수 있음을 의미한다.
- 분석 및 설계 단계에서 성능을 고려하여 데이터 모델링을 수행하면, 성능 저하로 인한 Rework 비용을 최소화할 수 있는 기회를 가지게 된다.
성능 데이터 모델링 수행 절차
- 정규화 수행 : 데이터의 중복을 줄이고 무결성을 유지하기 위해 데이터 모델링 시 정확하게 정규화를 수행한다.
- 데이터베이스 용량 산정 : 데이터베이스가 처리할 데이터의 양을 미리 계산하여 필요한 저장 용량을 예측한다.
- 트랜잭션 유형 파악 : 데이터베이스에서 발생할 트랜잭션의 종류와 빈도를 파악하여 성능 요구 사항을 이해한다.
- 반정규화 수행 : 예상 용량과 트랜잭션 유형을 고려해 성능 최적화를 위해 필요할 경우 비정규화를 적용한다.
- 모델 조정 : 이력 관리 모델 조정, 기본키(PK)와 외래키(FK) 설정 조정, 슈퍼타입/서브타입 모델 조정 등을 통해 성능을 개선한다.
- 성능 검증 : 데이터 모델을 성능 관점에서 검토하여 문제가 없는지 확인하고 필요한 수정 작업을 수행한다.
정규화(Normalization)
데이터 정합성을 위해 엔터티를 작은 단위로 분리하는 과정
정규화를 할 경우 데이터 조회 성능은 처리 조건에 따라 향상되는 경우도 있고 저하되는 경우도 있지만 입력, 수정, 삭제 성능은 일반적으로 향상된다고 볼 수 있다.
하지만 그렇다고 모든 엔터티를 무작정 분리하면 안 되기 때문에 정규화를 하기 위한 일정한 룰이 존재한다.
제1정규화(제1정규형을 만족하는 테이블)
한 칸에는 하나의 데이터만
- 모든 속성은 반드시 하나의 값을 가져야 한다.
- 각 속성의 모든 값은 동일한 형식이어야 한다.
- 각 속성들은 유일한 이름을 가져야 한다.
- 레코드들은 서로 간에 식별 가능해야 한다.
제2정규화(제2정규형을 만족하는 테이블)
현재 테이블의 주제와 관련없는 칼럼을 다른 테이블로 빼는 작업
- 엔터티의 모든 일반 속성은 반드시 모든 주식별자에 종속되어야 한다.
- 이것을 물리 데이터 모델의 테이블로 말하면, 기본키가 아닌 모든 칼럼들이 기본키에 종속적이어야 2차 정규형을 만족할 수 있다는 것이다.
제3정규화(제3정규형을 만족하는 테이블)
일반 컬럼에만 종속된 컬럼은 다른 테이블로 빼는 것
- 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다.
반정규화(De-Normalization)
데이터의 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정
여기서 주의해야 할 점은 조회 성능은 향상될 수 있으나 입력, 수정, 삭제 성능은 저하될 수 있으며 데이터 정합성 이슈가 발생할 수 있다는 점이다.
반정규화의 과정은 정규화가 끝난 후 거치게 되며 정규화와 마찬가지로 일정한 룰이 존재한다.
트랜잭션(Transaction)
데이터를 조작하기 위한 하나의 논리적인 작업 단위
NULL
값이 없음(존재하지 않음)
- SELECT 수입 - 지출 FROM 테이블
- 가로 연산 : NULL이 포함되어 있으면 결과값은 NULL이 된다. (같은 행, 다른 열 연산)
- SELECT SUM(수입) FROM 테이블
- 세로 연산 : 다른 인스턴스의 데이터와 연산할 때는 NULL 값을 제외한다. (다른 행, 같은 열 연산)
- NULL과의 비교 연산 결과는 늘 NULL이 된다.
'certification > SQLD' 카테고리의 다른 글
[SQLD] SQL 기본 및 활용 (6) | 2024.11.12 |
---|---|
[SQLD] 데이터 모델링의 이해 (0) | 2024.10.28 |