개발자 끄적끄적

정규화, 반정규화, 클리스터링 본문

MySQL

정규화, 반정규화, 클리스터링

햏치 2023. 3. 8. 00:35

<정규화(Normalization)>
- 정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며
  데이터를 분해하는 과정이다
- 정규화는 데이터의 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법이다
- 정규화는 테이블을 분해해서 데이터 중복을 제거하기 때문에 데이터 모델의 유연성을 높인다
- 정규화를 수행하면 비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소할 수 있다


<반정규화(De-Normalization)>
- 데이터베이스의 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법이다
- 반정규화는 조회(SELECT) 속도를 향상하지만, 데이터 모델의 유연성은 낮아진다


<반정규화를 수행하는 경우>
- 정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우
- 다량의 범위를 자주 처리해야 하는 경우
- 특정 범위의 데이터만 자주 처리하는 경우
- 요약/집계 정보가 자주 요구되는 경우


<클러스터링(Clustering)>
- 클러스터링 인덱스라는 것은 인덱스 정보를 저장할 때 물리적으로 정렬해서 저장하는 방법이다
- 조회 시에 인접 블록을 연속적으로 읽기 때문에 성능이 향상된다