DB - Data Modeling

들어가기

사내에서 진행된 DB 관련 교육을 듣고 이를 정리하려한다.

Why should we get data modeling training

설계도 없이 커다란 건물을 짓는다고 생각해보자. 과연 가능한 일인가? 물론 작은 건물이거나 텐트 같은 경우는 설계도가 없더라도 설치가 가능할 수도 있다.

하지만 복잡하고 규모있는 건물일수록 설계도가 중요하다. 그렇지 않으면 부실 공사로 건물이 무너지는 것은 당연하다.

Data Modeling도 같은 이유다.

Database를 설계할때 그 기초가 되는 것은 Data 사이의 관계이다. 여러 Data의 관계가 복잡하지 않고 간단하다면 손 쉽게 설계도(Modeling)없이도 Database를 구축할 수 있다.

하지만 건물과 마찬가지로 복잡한 Data의 관계를 조금 더 정확하고 관리하기 편하게 구축 하기 위해서는 Data Modeling이 필요하다.

많은 서비스들이 Database에 의존적이라 할 수 있다. Database의 속도가 느려 bottleneck이 된다면 서비스들의 영향을 끼칠 수 있다.

본론

데이터 모델이란

데이터 모델이란 무엇인가? 이는 쉽게 설명해서 기업의 비지니스 룰에 대한 설계를 약속된 표기법으로 표현하는 과정(ERD)이라고 할 수 있다.

만약 데이터 모델을 정의하지 않고 여러 사내 팀에서 회원 가입 테이블을 만든다고 상상해보자.

어떤 팀은 이메일과 이름만 필요할 것이고 또 다른 팀은 이름과 핸드폰 번호만 필요할 수도 있다.

이럴때마다 기준을 정해두지 않으면 중구 난방 비슷한 테이블을 만들 수 있다.

데이터 모델은 데이터의 설계도이며 정규화, 반정규화, 테이블 통합, 테이블 분할 등 여러가지 고려 문제를 고려해 유연하게 설계한다.

데이터 모델의 구성

데이터 표기법에는 바커 표기법과 I/E 표기법이 존재한다. 현재 사내에서는 I/E 표기법을 중심으로 사용한다. 또 I/E를 지원하는 툴들이 더 많이 존재한다.

I/E는 쉽게 Entity, Relationship, cardinality 이 3가지로 구성된다.

Entity는 집합을, relationship은 집합간에 관계, cardinality 속성을 의미한다.

좀 더 자세히 말하자면 Entity는 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이자 유일한 식별자(PK)에 의해 식별이 가능한 정보이다.

Attribute는 엔티티가 갖는 속성을 의미하며 반드시 단일 값이 필요하다. 중복되는 값이 있다면 이는 정규화가 필요하다는 의미일 수 있다.

Relationship은 entity들 간에 존재하는 업무 규정(관계)이며 일반적으로 일반적으로 RDBMS에서는 FK로 구현한다.

데이터 모델링 절차

많이 데이터 모델링은 배울 것은 많이 없다. 경험이 중요하다.

데이터 모델링을 위한 표현은 단순하다. 하지만 직접 해보려고 하면 막막할 따름이다.

데이터 모델링에는 정답은 없다. 그러나 설계한 데이터 모델의 각 요소들이 시스템에 어떤 영향을 미칠지 데이터가 향후에 유용하게 사용될 수 있는지 검토하여 최적의 데이터 모델을 설계해야 한다.

절차 또한 따로 존재하지 않지만 주로 step by step으로 설계한다.

초반에는 핵심만, 그리고 점점 확장하는 방식으로 처음부터 예외처리 생각하지 않는다. 이는 문제를 더 복잡하게 만들 수 있기 때문이다.

  • Conceptual - 가볍게 entity를 스케치(핵심 엔티티 + 관계), 전체적인 그림을 그리는 것
  • Logical - Conceptual을 약속된 표기법으로 그리면서 attribute 추가 및 필요한 entity 추가
  • Physical - 데이터 베이스 종류에 맞게 도출

정규화와 성능

데이터의 일관성 보장을 위한 데이터 중복을 최소화하는 장치

비정규화와 성능

정규화된 entity, attribute, relationship에 대해 시스템 성능, 개발 & 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 모델링 기법이다.

정규화를 진행하다보니 오히려 빈번한 join과 같은 역효과가 발생할수도 있다. 이럴때 다시 반정규화를 진행한다.

마무리

앞으로 교육이 몇회가 더 남아있지만 계속 정리를 해볼까한다.

Share