나현
# ch01. 데이터 모델링에 대한 상념
1.1 데이터 모델링이 왜 어려운가?
💭 데이터 모델링에는 절대적인 정답은 없지만, 분명히 90점에 가까운 모델은 존재하며, 이를 지향해야 한다.
모델링은 시작하기 어렵고 결과를 확신할 수 없으니 어렵다.
- 모델링 이론 외에도 데이터의 본질을 통찰하는 분석력, DBMS의 구체적인 특징과 기능까지 제대로 알아야 하기 때문이다.
- 사실상 정답이 없지만, 최소한 모범 답안은 존재하기에 이를 지향해야 한다.
- 좋은 모델링에 대한 정량적 기준이 없다. 모델러의 판단력과 통찰력에 의존적인 분야임
- 구축한 모델을 다양한 이해관계자(개발자, 운영자 등)에게 설득할 때 객관적이고 구체적인 방법으로 설득해야 한다.
👀 생각) 데이터 구조 설계와 변경 과정에서 특히 많은 커뮤니케이션이 오간다. 모델링 이론과 분석력을 강화하고 이를
객관적이고 구체적으로 설명하며, 팀 내 커뮤니케이션을 명확히 정리하는 것이 중요한 것 같다.
1.2 데이터 모델링의 매력
💭 이론이라는 근거 위에 통찰력, 사고력, 경험을 더해 만들어진 데이터 모델이 프로젝트의 중심을 잡아준다면, 프로젝트의 근간이 흔들릴 일은 없다.
데이터 모델링의 매력은 무에서 유를 창조하는 느낌
- 인터뷰와 분석을 반복하며 모델의 구조가 형성
- 그리고 모델 구조를 관련자에게 설명 및 논의하는 과정에서 많은 업무 지식을 습득
과거에 비해 중요해진 데이터 품질 관리
- 데이터 표준화에 대한 구축이 데이터 모델링과 연결, DA(Data Architect) 수요 급증
- 이러한 데이터 전문가가 되기 위한 가장 중요한 관문이 데이터 모델링
1.3 모델링은 상식적이다.
💭 상식이라는 근거가 없는 모델은 누구도 확신시킬 수 없으며 혼란을 일으킬 뿐..
데이터 모델링은 크게 이론
과 경험
으로 구성
- 정규화는 초보자든 전문가든 이론만 정확히 알고 있다면 같은 결과 도출
- 데이터 통합과 관련해서는 전문가 사이에서도 이견 존재. 물론 상세한 면만 조금 다를 뿐, 크게 보면 대단히 유사하다.
- 경험에 의해 자의적으로 모델링이 이루어지는 것 같지만, 이론이라는 상식 기반에서 모델링이 이루어지기 때문
1.4 모델러와 바둑 프로기사
💭 전문 모델러가 구축한 모델을 보거나 설명을 들으면 맞는 것 같지만, 실제로 그런 모델을 구축하기란 어렵다. 매번 그렇기 하기는 더욱 어렵다.
바둑은 정석을 모르면 제대로 두기 어렵다.
- 모델링도 엔티티와 관계, 속성, 정규화 관련 다양한 이론을 알아야 제대로 수행할 수 있다.
- 처음 핵심 엔티티를 제대로 정의하지 않으면 전반적으로 힘들어진다.
바둑에서 수 읽기는 중요하다.
- 이론은 기본이며 다양한 상황에 따른 최선의 모델을 판단할 수 있어야 한다.
- 분석력과 논리력, 종합적인 사고능력, 설득력, 섬세함 등이 있어야 한다.
- 모델링을 수행하면서 데이터가 생성되는 것을 읽어야 하며, 확인을 위해 직접 작성하는 것이 좋다. (타인을 위해서라도)
👀 생각) 책을 읽으며 이론을 공부해 가되, 실제 업무와 유사한 상황에서 구현된 좋은 모델을 분석하고,
왜 그렇게 설계했는지 고민해보며 데이터의 흐름을 읽는 연습이 필요하다고 느꼈다.
1.5 좋은 모델은?
💭 좋은 모델은 '사용자가 원하는 데이터를 정확하고 빠르게 보여줄 수 있는 단순한 모델'
💡 좋은 모델은 단순하고 명확한 모델
- 명확한 모델은 명확한 정의에서 비롯. 특히 엔티티에 대한 명확한 정의가 출발
- 단순하고 명확한 모델은 이론을 기반으로 하며, 데이터를 보고 데이터의 성격을 한눈에 판단할 수 있는 감각도 이론이 바탕이 되었을 때 생긴다.
💡 모델링의 핵심 목표
- 데이터 무결성(Integrity) - 중복 제거
- 성능
- 비즈니스를 효율적으로 표현한 모델 - 누락되는 데이터 요소는 문제 - 필요치 않은 비즈니스는 표현하지 않는다.
- 확장성이 좋은 유연한 모델
- ERD 표기법에 맞게 정확한 모델 표현 - 데이터 모델은 커뮤니케이션을 지원하는 도구이기도 하기에, 이론적으로도 완전해야 하지만 가독성도 좋아야 한다.
1.6 모델링이 왜 필요한가?
💭 데이터를 정확히 관리하고 빠르게 제공하며 확장하기 쉬운 모델을 구축하면 같은 인력으로 많은 일을 할 수 있다. 이것은 경영 혁신의 지름길 ✨
- 모델링 과정 없이 생성된 모델은 조악한 모델이 될 가능성이 크다.
- 모델링 수행 도중 커뮤니케이션 >>> 완성된 모델로 이루어지는 커뮤니케이션보다 더욱 중요
1.7 좋은 모델러란?
좋은 모델러가 갖춰야 하는 요소는 크게 기술력
과 분석력
- 기술적 측면은..
- 모델링 이론을 깊은 이해. 이론과 기본은 아무리 강조해도 지나치지 않는다.
- 관계형 데이터베이스에 대한 깊은 이해
- 데이터 모델링은 테이블로 구현될 때까지의 전반적 과정. 테이블로 생성되는 물리 모델은 데이터베이스와 밀접한 연관이 있기에 이에 대해서도 잘 알아야 한다.
- 튜닝. 데이터를 정확하고(무결성) 빠르게(성능) 제공하려면 튜닝 요소를 알고 모델링에 적용해야 함
- 분석력 측면은..
- 모델링 기법과 별개로, 정확한 분석을 통해 모델의 기반이 되는 엔티티 정의
- 속성 하나도 숙고하고 종합적으로 사고해 판단하려하면 분석력은 향상될 것
- 많은 이해 관계자와 합의, 설득 과정에서 원활한 커뮤니케이션 수행
- 모델링 경험
- 데이터 모델링은 틀에 맞지 않은 상황이 많아서, 최종 판단 기준이 경험이 될 때가 많음.
- 사명감
- 모델러가 시스템에 미치는 영향은 대단히 크다.
- 효율적인 시스템을 위해 엔티티 정의하고 관계 도출 과정에서 전력을 기울여야 할 것
🥲 히지만 현실적으로 절대적인 시간이 부족하다. 이럴 땐...
- 프로젝트 초반, 선봉대로 나서 핵심 데이터 구조부터 제대로 잡는다.
- 튼튼하고 확장성이 좋은 뼈대를 구축
- 환경에 따라 적절한 전략을 사용
- 중복 데이터까지 제거하면 성공적 🏰
1.8 모델링 목표
- 데이터 무결성
- 중복 데이터 제거
- 엔티티를 통합해 서브타입으로 관리하는 것이 바람직
- 성능 고려
- 일부 작업(eg. 배치)에서의 성능 병목을 주의
- 과도한 최적화 지양
- 유연성(확장성)
- 존재할 가능성이 희박하거나, 향후 몇십 년 후에 발생할 요건을 대비할 필욘 없다.
- 분리된 모델을 통합하는 것보다, 통합된 모델을 분리하는 것이 더욱 수월하기에
데이터를 통합하는 방향으로 모델링 목표를 세워야 한다
. - 모델이 애플리케이션에 종속되지 않아야 유연한 모델이 된다. 데이터 성격에 맞는 엔티티를 정의할 것
- 화면에서 보려고 하는 뷰는 데이터베이스 뷰로 대부분 해결 가능. 뷰를 잘 사용하면 애플리케이션과 모델을 더욱 독립적으로 관리 가능
- ERD로 잘 표현된 모델 (가독성)
👀 하지만 실제 업무에서 무결성을 높이기란 쉽지 않다. 이미 너무 많은 테이블, 데이터, 쿼리 중심의 구조가 문제인 것 같다.
현실적으로 어떻게 개선할 수 있을지 고민이 든다...
📍 요약
- 데이터 모델링은 정답이 없고 복합적 능력을 요구하는 분야
- 상식적 이론과 경험을 바탕으로, 단순하고 명확한 구조를 지향해야 한다.
- 모델링은 설계뿐 아니라 다양한 이해관계자와의 커뮤니케이션 도구이기도 하다.
- 좋은 모델은 무결성, 성능, 비즈니스 표현, 확장성, 표현력을 충족해야 한다.
- 훌륭한 모델러는 기술력과 분석력뿐 아니라, 시간 제약 속에서도 전략적으로 설계할 수 있어야 한다.
🤔 생각 정리
이론적 이해를 바탕으로 한 모델링뿐 아니라, 실제 업무와 유사한 사례를 통해 왜 그렇게 모델링했는가를 추론하며 연습하는 것이 중요하다고 느꼈다. 특히 커뮤니케이션이 중요한 만큼, 내가 설계한 모델을 명확하고 구체적으로 설명할 수 있는 역량도 함께 키워야겠다고 생각했다. 현실에서 이미 복잡해진 구조를 개선하기 위해선 작은 단위부터 무결성을 지켜가는 전략이 필요하며, 단기성과보다 장기적 유연성과 확장성을 우선하는 시각을 갖고 싶다.
한음
# ch01. 데이터 모델링에 대한 상념
1.1 데이터 모델링이 왜 어려운가
- 데이터 모델링 이론을 알고 있더라도 막상 시작하려면 무엇을 어떻게 해야할지 막막하다
- 완료 하고나서는 모델링이 제대로 됐는지에 대한 확신이 없다
이유가 뭘까
- 우선 모델링 이론 외에 알아야 하는 분야의 폭이 넓다 (데이터의 본질, DBMS의 구체적인 특징까지...)
- 데이터의 집합을 정의하고 일반화하는 것이 어렵다
- 쿼리 작성 능력이 뛰어나야하고 쿼리 플랜을 분석할 수 있어야 한다
- 모델링엔 정답이 없다. 다만 100점에 가까운 모델은 있다
어떻게 하면 좋은 모델이라는 것을 확인할 수 있을까
- 수치만으로 판단할 수 없다. 판단력과 통찰력에 의존적이다
- 사용자를 설득하고 개발자를 설득해야 한다
1.2 데이터 모델링의 매력
- 무에서 유를 창조하는, 백지 상태에서 시작해 창작하는 희열이 있다
- 이 과정에서 많은 업무 지식을 습득한다는 장점이 있다
- 20년 전에 모델링은 블랙박스 였지만 지금은 누구라도 데이터에 관심을 가진다
- 데이터 모델은 시스템에서 가장 중요한 토대이므로 중압감이 있지만 매력적이다
1.3 모델링은 상식적이다
- 다른 이론에 비교해 모델링 이론이 어렵지 않은 것인 상식적이기 때문이다
- 정규화, 데이터 무결성 같은 이론은 상식적이다
- 반면 경험을 통해 터득하는 부분도 존재한다
- 데이터 모델링은 상식적인 이론이 토대가 돼야 하며, 상식을 기반으로 한 경험이 축적되어야 좋은 모델을 만들 수 있다
1.4 모델러와 바둑 프로기사
- 모델링은 바둑과 비슷하다
- 첫 엔티티를 그리는 것이 마치 바둑에서 첫 수를 두는 느낌이다
- 정석을 모르면 바둑을 두기 어렵듯 모델링 이론을 모르면 모델링이 힘들어진다
- 분석력, 논리력, 종학적인 사고능력, 설득력, 섬세함 등이 있어야 전문 모델러가 될 수 있다
- 수 읽기가 중요하듯이 모델링을 수행하면서 데이터가 생성되는 것을 읽어야 한다
- 프로 기사의 수를 이해하긴 쉽지만 따라하기 어렵듯, 전문 모델러의 모델은 이해가 되지만 실제로 그런 모델을 구축하기는 어렵다
1.5 좋은 모델은?
단순하고 명확한 모델
- 엔티티에 대한 명확한 정의가 출발이다
- 복잡한 것을 단순하게 만드는 것이 위대하다
데이터 무결성이 보장되는 모델
- 무결성이 훼손된 데이터는 비즈니스 요구사항을 충족하더라도, 빠른 성능이 보장되어도 좋은 모델이 아니다
- 가장 기본적인 방법은 중복 제거.
기타
- 빠른 성능을 보장하는 모델
- 비즈니스를 효율적으로 표현한 모델
- 업무의 변화에 유연하게 대처할 수 있는 모델
- 모델 표현이 정확한 것(ERD)
1.6 모델링이 왜 필요한가?
- 당연히 좋은 모델을 만들기 위해서 필요하다
- 관련자의 커뮤니케이션을 돕는다
- 정확하고 빠르게 프로그램을 제공하게 한다
- 같은 인력으로 더 많은 일을 할 수 있으므로 경영 혁신의 지름길이다
1.7 좋은 모델러란?
기술력
- 모델링 이론을 깊게 알아야 한다
- RDBMS에 대해서도 깊게 알아야한다
- 튜닝 요소를 알고 모델링에 적용할 줄 알아야 한다
분석력
- 정확한 분석을 통해 모델의 기반이 되는 엔티티가 정의된다
그 밖의 능력
- 발표력, 자신의 모델을 설명하고 여러 사람과 커뮤니케이션 해야한다
- 경험, 틀에 맞지 않는 상황에서 경험이 상당히 중요하다
- 사명감, 효율적인 시스템을 구축하려는 사명감이 필요하다
1.8 모델링 목표
- 데이터의 무결성을 높이는 것(데이터 중복 제거, 정합성 유지)
- 데이터 값의 중복과 모델 구조의 중복을 제거하는 것
- 심각한 성능 이슈가 발생하지 않도록 하는 것
- 모델이 애플리케이션에 종속되지 않는 유연한 모델을 설계하는 것
- ERD로 잘 표현된 모델을 구축하는 것