최근에 몇몇 지인들과 모델링에 관한 즐거운 토론이 있었다.
화두는 두가지 였다.

1."논리 데이터 모델과 물리데이터 모델의 차이가 심하면 모델링이 잘못된 것인가? "

2."논리모델 단계에서의 성능을 고려한 논리모델링이 있으냐? 없느냐?"


여러가지 의견이 있었다.
1번에 대한 의견중에 한가지는 논리 데이터 모델과 물리 데이터 모델의 차이가 심하면 물리모델이 잘못되었다는
것이다.
왜냐하면 "물리모델링시에 역정규화및 목정성 테이블들이 많이 나오면 정합성, 확장성에 역행된다"는 것이다.
2번에 대한 의견중에 한가지는 "God of Modeling"(모델링의 신)형이다.
즉 "어짜피 물리모델링에서 역정규화 될테니 논리모델링의 마지막 단계에서 미리 하자"는 것이다.    


하지만 필자의 생각은 조금 다르다.
튜닝과는 달리 모델링의 세계에서는 정답이 하나일수는 없다.
다시말하면 모범답안은 있지만 누구의 의견도 틀렸다고 볼수는 없는것이다.
따라서 아래에서 제시한 필자의 의견 또한 관점에 따라서는 답이 아닐수 있다.

1번 ,2번에 대하여 필자의 항상 필자는 아래와 같은 말을 해왔다.

"논리모델은 정합성 확장성을 보장하는 위주로 극한까지 가보는것"

"물리모델은 정합성 확장성을 해치는것을 최소화 하면서 성능위주로 극한까지 가보는것"

필자는 위와 같은 생각을 논리모드,물리모드라고 부른다.


즉 논리단계에서는 성능생각을 머리속에서 지우고 물리단계에서는 논리모드를 머리속에서 지우는것이다.
하지만 훈련이 되지않으면 논리모드,물리모드의 변환이 상당히 어렵다.
예를 들면 9월 까지가 논리모델링 단계이고 10월 부터는 물리모델링 단계라고 가정하면
9월 말일까지는 논리모드만 생각하다가 갑자기 10월 1일 부터 물리모드로 전환하기가 어렵다는 것이다.
또하나의 어려움은 DBA 출신이 모델링을 하면 논리모델링시 성능생각을 자연스럽게 하게되고
DBA 출신이 아닌 이론적 모델러의 경우 물리모델링시에 정합성,확장성을 저해하지만 성능이 좋아지는
역정규화 및 집계속성, 계산속성등을 과감히 선택해야할 때가 있지만 이를 두려워 한다는 것이다.
이래서는 모델링이 잘될수가 없다.

어찌되었건 위에서 설명한 논리모드 및 물리모드를 적용하여 1,2번에 대하여 필자가 답을 한다면 아래와 같다.

1번 :
논리데이터 모델과 물리데이터 모델의 차이가 심하면 모델링이 잘된것이다.

왜냐하면 논리모델링시에  논리모드로만 생각했다면 물리모델링시 성능관점에서 손볼것이 꽤 있을것이고
그렇다면 논리와 물리는 차이점이 꽤 있을것이기 때문이다.
반대로 논리단계에서 논리모드 + 물리모드 둘다 생각했다면 논리와 물리의 차이는 거의 없다.
필자는 이경우를 논리모드 <--> 물리모드 를 변환하는 훈련이 부족 하다고 보는것이다.

2번:
논리 모델링 단계에서는 논리모드로만 생각하면 된다.
즉 논리모델링 단계에서는 성능 생각을 지워야 한다.

편집 후기 :
한 지인은 필자가 논리모드/물리모드라고 이야기 했더니 E 모사의 사장님이 이야기한 "단위삼각형의 법칙"
이라고 이야기 하는데 그것과는 전혀 다른 이야기 이다.
이는 필자의 독창적인 용어임을 밝혀둔다.
사실 필자의 ID 의 앞자리인 Extreme 도  "~극한 까지 가보는것" 의 극한 에서 나온것이다.

여러분들이 1번 2번에 대한 답을 한다면?
필자는 여러분들의 의견을 듣고싶다.
Posted by extremedb
,