관계형 데이터 모델링: 전체 흐름

최건우·2023년 2월 27일
0

관계형 데이터 모델링이란

  • 데이터 모델링: 목적을 갖고 현실세계모방한 것
  • 목적에 부합하게 모방된 모델일 수록 좋은 모델이다.
  • 즉, 관계형 데이터 모델링이란, 복잡한 현실을 관계형 데이터베이스(=표)에 집어넣기 위한 방법을 의미한다.
    - 또한, 문제를 현실로부터 뜯어내어 고도로 추상화하여 컴퓨터의 세계로 옮겨놓는 작업이다.
    • 해결하려고 했던 문제가 관계형 데이터베이스의 표에 잘 담겼는지를 끊임없이 확인해야 한다.

모델링의 흐름

업무 파악

  • 담당하게 된 프로젝트, 나의 팀이 무엇을 하려고 하는지 파악한다.
  • 해결하려고 하는 문제가 무엇인지를 파악하는 단계이다.

개념적 데이터 모델링

  • 현실의 업무를 분해하고 분석해 보는 단계.
    • (1) 현실에 어떤 개념들이 있는지,
    • (2) 각 개념들은 어떻게 상호작용하는지를 숙고하는 것.
  • ERD(Entity Relationship Diagram)

논리적 데이터 모델링

  • 개념적 데이터 모델링 단계에서 파악한 현실의 개념들을 관계형 데이터베이스에 알맞게 구성하는 단계.
  • 표의 항목(컬럼)을 구성하고, 표와 표의 관계를 정의한다.

물리적 데이터 모델링

  • 어떤 데이터베이스 제품을 사용할 것인지 선택하고,
  • 그 제품에 최적화된 코드를 작성하여 표를 만드는 단계.
  • 그 표를 생성하는 SQL이 이 단계에서의 산출물이 된다.
  • 성능이 좋은 쿼리일수록 좋은 산출물이다. 쿼리 성능을 높이기 위해 다음과 같은 방법을 시도한다.
    • (1) 작성한 쿼리 중 slow query를 찾아내고, 튜닝한다.
    • (2) index: 행에 대한 읽기 성능을 비약적으로 향상시키고, 쓰기 성능을 비관적으로 희생시킨다(쓰기가 이뤄질 때마다 그 행에 인덱스가 걸려있다면 입력된 정보를 정리하기 위해 복잡한 연산이 필요하다. 여기서 시간이 많이 걸릴 뿐더러, 저장공간도 더욱 차지한다)
    • (3) 데이터베이스에서 할 수 있는 부분을 다 했다면, application 영역에서 취할 수 있는 방법을 강구하여 데이터베이스의 부하를 줄인다(ex. caching).
    • (4) 역정규화(denormalization): 이 이상으로 성능을 향상시킬 수 없다면, 마지막으로 정규화된 테이블의 구조를 수정한다. 단, 이로 인해 더욱 큰 손해가 발생할 수 있으므로 주어진 상황을 현명하게 판단해야 한다.




* 이 내용은 생활코딩의 "관계형 데이터 모델링" 수업을 듣고 개인적인 공부를 위해 정리한 것입니다. 문제가 있다면, 지적해 주시면 감사하겠습니다!

profile
부족한 경험을 채우기 위한 나만의 기록 공간

0개의 댓글