[sql] 반정규화의 목적과 경우
데이터베이스 설계 시에는 보통 정규화를 통해 중복을 제거하고 무결성을 유지하는 것이 일반적이지만, 때로는 성능을 향상시키거나 복잡성을 줄이기 위해 반정규화가 필요할 수 있습니다.
반정규화의 목적
보통의 경우, 반정규화는 다음과 같은 이유로 수행됩니다.
-
성능 향상: 정규화된 데이터베이스는 여러 테이블에 데이터가 분산되어 있어서 조인 연산이 많이 발생할 수 있습니다. 이때 반정규화를 통해 조인 연산을 줄여 성능을 향상시킬 수 있습니다.
-
복잡성 감소: 중복 데이터의 양을 늘리더라도, 데이터를 읽고 쓰는 속도가 더 빨라질 수 있으며, 데이터베이스의 구조가 단순해지기 때문에 유지보수가 쉬워질 수 있습니다.
경우의 예
가장 일반적인 경우는 다음과 같습니다.
-
보고서 테이블: 주로 리포팅에 사용되는 테이블은 여러 테이블을 조인해야 하므로 반정규화를 통해 성능을 향상시킵니다.
-
실시간 조회: 실시간으로 많은 양의 데이터를 조회해야 하는 경우, 반정규화를 통해 조회 성능을 향상시킵니다.
반정규화를 적용할 때에는 주의가 필요하며, 반드시 데이터베이스의 용도와 현재 및 미래의 요구사항을 고려해야 합니다.
참고 자료
- “SQLPanda” 블로그의 “반정규화의 목적과 사례” 게시물 - 링크