정규화 vs 비정규화

박영준·2024년 2월 20일
0

DB

목록 보기
40/41

정규화 (normalization)

RDBMS 의 정규화 (Normalization)

1. 정의

중복을 최소화하도록 설계된 DB

2. 특징

  • 같은 데이터는 DB내에 하나만 놓으려고 함
    • But, 상당수의 일상적 질의를 처리하기 위해 JOIN을 많이 하게 되는 단점

비정규화 (Denormalization, 반정규화)

1. 정의

읽는 시간을 최적화하도록 설계된 DB

2. 특징

  • JOIN 연산의 비용 을 줄일 수 있음
    • 높은 규모 확장성을 실현하기 위해 자주 사용되는 기법

3. 장단점

장점

  • 빠른 데이터 조회

    • JOIN 비용이 줄어들기 때문
  • 살펴볼 테이블이 줄어들기 때문에, 데이터 조회 쿼리가 간단해짐

    • 따라서 버그 발생 가능성도 줄어듦

단점

  • 데이터 갱신 or 삽입 비용이 높음

  • 데이터 갱신 - 삽입 코드를 작성하기 어려워짐

  • 데이터 간의 일관성이 깨어질 수 있음
    (어느 쪽이 올바른 값인가?)

  • 데이터를 중복하여 저장하므로, 저장 공간 多 필요

4. 비정규화 대상

  1. 자주 사용되는 테이블에 액세스하는 프로세스의 수가 가장 많고, 항상 일정한 범위만을 조회하는 경우

  2. 테이블에 대량 데이터가 있고 대량의 범위를 자주 처리하는 경우, 성능상 이슈가 있을 경우

  3. 테이블에 지나치게 JOIN을 많이 사용하게 되어, 데이터를 조회하는 것이 기술적으로 어려울 경우

대부분의 대규모 IT 업체의 경우처럼,
규모 확장성(scalability)을 요구하는 시스템의 경우, 거의 항상 정규화된 DB와 비정규화된 DB를 섞어 사용한다.


참고: [데이터베이스] 정규화 vs. 비정규화(반정규화)

profile
개발자로 거듭나기!

0개의 댓글