728x90
반응형

이전 포스팅에서 정규화 이론이 왜 중요한가?

 

데이터 이상 현상을 제거하기 위해 정규화 이론은 중요하다고 하였습니다

데이터 구조적인 측면에서 중복되는 데이터에 대해서 독립 개체

관리하기 위해서도 정규화 이론은 필요하다고 했습니다

 

그 밖에 또 무엇이 있을까요?

더 자세히 알고 싶다면 아래의 링크를 클릭해서 확인하시길 바랍니다

 

 

2022.08.22 - [Data_Modeling/Methodology] - 데이터 모델링 정규화 이론이 너무나도 중요한 이유는?

 

데이터 모델링 정규화 이론이 너무나도 중요한 이유는?

이전 포스팅 모델러의 마음가짐이란? 이전 포스팅에서는 데이터 모델러에 있어 마음가짐을 어떻게 해야 하는지에 대하여 알아보았습니다 스키마 구조와 모델을 보는 3가지 관점이 왜 중요한지

tantangerine.tistory.com

 

 

데이터-모델링-정규화
데이터 모델링 관계

 

정규화의 의의

 

데이터 모델링의 핵심이론인 정규화 이론은 몇 가지 특징을 가지고 있습니다

 

 

첫째, 속성 간의 종속성을 기준으로 성격이 유사한 속성들은 모이고 관계없는 속성들은 분리합니다

행위와 관계를 구분하고 본질을 파악하여 범주화하는 것이 핵심입니다

 

둘 때, 정규화는 함수 종속을 없애고 밀접한 속성을 하나의 표에 집약시키는 체계적인 방법입니다

따라서 데이터는 응집도는 높고 결합도는 낮게 분리합니다

결국, 데이터 본질에 충실한 제대로 된 엔터티가 도출될 수밖에 없습니다

 

셋째, 데이터 중복이 최소화효율적이고 구조화된 모델입니다

데이터 이상 현상이 사라지게 됩니다

 

넷째, 주식별자는 인스턴스를 구분하는 기준이므로 집합의 개체 발생 규칙도 검증되어 더 장확 해집니다

즉, 주 식별자만으로 엔터티가 어떻게 관계되었는지만 본다면

어떻게 데이터가 관리되고 저장되는지

규칙을 확인할 수 있습니다

 

다섯째, 업무 변경에 따른 확장성이 좋습니다

속성과 그에 따른 데이터가 엔터티 별로 독립 개체로 구성되어

범용성이 높게 구성됩니다

그래서 사용자가 새로운 업무를 추가할 때

확장성이 좋습니다 

 

여섯째, 데이터 중복을 최소화함으로써 데이터 무결성을 극대화합니다

정규화 과정을 거치면 데이터의 중복성을 제거합니다

그리고 독립 개체를 만들어 데이터 무결성을 보장할 것입니다

 

일곱째, 정규화된 모델은 그렇지 않은 모델에 비해 대부분 성능이 좋다.

이 부분은 동의를 못하는 사람이 있을 수 있다

정규화가 된 데이터 모델링은 테이블이 늘어나서

조인이 증가하여 성능이 저하된다고 생각할 수 있습니다

 

아래에서 더 자세히 설명하겠습니다

 



데이터모델링-정규화-성능저하
데이터 모델링 정규화 성능저하

 

 

 

정규화가 정말 성능 저하의 원인일까?

 

정규화를 하게 되면 한 개의 테이블이 두 개의 테이블로 분리해야 합니다

그렇게 되면 조인이 증가하기 때문에 성능이 저하될 거라고 합니다

 

정규화되지 않은 테이블에서는 중복된 데이터를 더 읽어야 하고

정규화가 된 테이블에서는 조건에 맞는 데이터만 읽어 빠르게 처리할 수 있습니다

 

하지만

조인이 필요하다는 것은 변화가 없지요

 

인덱스만 정확히 정의되어 있다면 성능상의 차이는 미미할 것입니다

그리고 테이블의 한 행이 2K고 한 블록의 크기가 8K라면 한 블록에서 4개의 개체가 담길 수 있습니다

DBMS는 한 블록, 즉 IO의 최소 단위가 블록이기 때문에 8K를 메모리로 올립니다

그래서 SQL 최적화할 경우 조회할 레코드 수가 아닌 블록의 수가에 집착하는 이유도 바로 이것 때문입니다

 

그렇기 때문에

정규화가 IO의 대상이 되는 블록수를 줄여줄 수 있는 이야기가 됩니다

모든 속성이 한 개의 테이블에 담겨 있다면 조회하는 속성의 수

많고 적음에 상관없이 항상 전체 블록을 읽어야 합니다

 

그러나 정규화가 잘되어 있다면 훨씬 적은 블록을 읽고도 원하는 결과를 얻을 수 있습니다

물론 조인이 많이 걸려 여러 테이블을 조회하는 것이 시간 소요가 발생할 수 있지만

만약 정규화가 된 여러 테이블이 정규화하지 않은 한 개의 테이블로 관리한다면

그것 또한 관리하는 입장에서는 아찔할 수밖에 없습니다

 

OLTP에서 조인에 의한 성능 저하가 극심한 경우라면 조인의 방법이 잘못되었을 경우가 큽니다

인덱스가 없거조인 연결이 이상하게 되어 옵티마이저가 인덱스를 사용하지 못하는 등의 문제지

조인 자체가 문제의 본질인 경우는 드물기 때문입니다

 

그리고 최근에는 컴퓨터 성능이 좋아져 이전만큼 성능 저하를 많이 느끼지 못합니다

그래서 정규화 때문에 성능 저하라고 하는 것은 조금 아이러니하지요

관리하는 측면에서 정규화는 매우 중요하다는 것이며,

정규화 때문에 성능 저하가 아닌 다른 문제 해결이 정답일 것입니다

데이터 구조적 측면에서 이득이라고 생각합니다

전체적인 것을 본다면 정규화는 대부분의 경우에서 더 뛰어난 성능을 보입니다

 

 

 

프로젝트 성패를 결정짓는 데이터 모델링 이야기김상래 지음

 

 

 

이제 정규화라는 것에 대해 조금은 알 수 있었으면 합니다

몇 개의 포스팅에서 지긋지긋하게 다뤘기 때문에

이제는 조금 익숙해지지 않았을까 합니다

저도 이번 기회에 조금 더 공부하는 계기가 되었습니다

 

IT공부는 즐거울 때도 정말 지루할 때도 있지만

공부하고 그 결과가 바로바로 올 수 있는 몇 안 되는 직업이라고 생각합니다

능력만 있으면 인정받을 수 있으니 더 힘을 내 봅시다

 

그럼 우리의 IT 대모험은 끝나지 않았으니

파이팅 하시길 바랍니다

 

 

 

 

 

728x90
반응형

+ Recent posts

Powered by Tistory, Designed by wallel