관계형 데이터 모델링이란
- 데이터 모델링: 목적을 갖고 현실세계를 모방한 것
- 목적에 부합하게 모방된 모델일 수록 좋은 모델이다.
- 즉, 관계형 데이터 모델링이란, 복잡한 현실을 관계형 데이터베이스(=표)에 집어넣기 위한 방법을 의미한다.
- 또한, 문제를 현실로부터 뜯어내어 고도로 추상화하여 컴퓨터의 세계로 옮겨놓는 작업이다.
- 해결하려고 했던 문제가 관계형 데이터베이스의 표에 잘 담겼는지를 끊임없이 확인해야 한다.
모델링의 흐름
업무 파악
- 담당하게 된 프로젝트, 나의 팀이 무엇을 하려고 하는지 파악한다.
- 해결하려고 하는 문제가 무엇인지를 파악하는 단계이다.
개념적 데이터 모델링
논리적 데이터 모델링
- 개념적 데이터 모델링 단계에서 파악한 현실의 개념들을 관계형 데이터베이스에 알맞게 구성하는 단계.
- 표의 항목(컬럼)을 구성하고, 표와 표의 관계를 정의한다.
물리적 데이터 모델링
- 어떤 데이터베이스 제품을 사용할 것인지 선택하고,
- 그 제품에 최적화된 코드를 작성하여 표를 만드는 단계.
- 그 표를 생성하는 SQL이 이 단계에서의 산출물이 된다.
- 성능이 좋은 쿼리일수록 좋은 산출물이다. 쿼리 성능을 높이기 위해 다음과 같은 방법을 시도한다.
- (1) 작성한 쿼리 중 slow query를 찾아내고, 튜닝한다.
- (2) index: 행에 대한 읽기 성능을 비약적으로 향상시키고, 쓰기 성능을 비관적으로 희생시킨다(쓰기가 이뤄질 때마다 그 행에 인덱스가 걸려있다면 입력된 정보를 정리하기 위해 복잡한 연산이 필요하다. 여기서 시간이 많이 걸릴 뿐더러, 저장공간도 더욱 차지한다)
- (3) 데이터베이스에서 할 수 있는 부분을 다 했다면, application 영역에서 취할 수 있는 방법을 강구하여 데이터베이스의 부하를 줄인다(ex. caching).
- (4) 역정규화(denormalization): 이 이상으로 성능을 향상시킬 수 없다면, 마지막으로 정규화된 테이블의 구조를 수정한다. 단, 이로 인해 더욱 큰 손해가 발생할 수 있으므로 주어진 상황을 현명하게 판단해야 한다.
* 이 내용은 생활코딩의 "관계형 데이터 모델링" 수업을 듣고 개인적인 공부를 위해 정리한 것입니다. 문제가 있다면, 지적해 주시면 감사하겠습니다!