태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

'데이터 Story/데이터 상념(想念)'에 해당되는 글 36건

데이터 모델링은 상식적입니다. 만약에 모델링이 상식적이지 않은 분야였다면 필자는 모델러로서 지금까지 일할 수 없었을 것입니다.

 

모델링과 관련된 내용을 크게 두 가지로 나누면 하나는 이론이고 다른 하나는 경험입니다. 그중에 모델링 이론은 지극히 상식적입니다. 모델링 이론이 다른 분야와 비교해서 어렵지 않다고 느껴지는 것은 상식적이기 때문일 것입니다.

 

정규화를 기초로 한 이론은 상식적이라고 생각합니다. 데이터 무결성을 최우선 과제로 삼는 데이터 모델링의 이론은 지극히 상식적입니다. 데이터를 제대로 관리하는 데 필요하므로 상식적일 수밖에 없습니다.

 

하지만 비록 이론은 상식적이지만 실제로 모델링을 하면 어렵게 느껴집니다. 상식적으로 알 수 있는 쉬운 이론으로 모델링을 수행해도 어려운 것이 모델링인데 이론을 모른다면 더욱 막막할 것입니다.

 

그리고 이론 이외에 경험을 통해 터득하는 부분이 존재합니다. 엔터티를 구성하는 데이터의 정체성에 대한 판단이나 데이터를 통합하는 기준은 개인마다 다를 수 있습니다. 그리고 많은 경험에 의해 단련됩니다.

 

정규화는 처음 경험하는 초보자든 경험이 많은 전문가든 이론을 정확히 알고 있다면 같은 결과가 나옵니다. 하지만 데이터 통합과 관련해서는 전문가 사이에서도 이견(異見)이 존재할 수 있습니다.

 

물론 전문가가 구축한 모델은 상세한 면에서 조금 다를 뿐 크게 보면 대단히 유사하다고 생각합니다. 이는 경험에 의해 자의적으로 모델링이 이루어지는 것 같지만, 이론이라는 상식을 기반으로 판단하기 때문입니다.

 

자신이 사용해 본 모델만을 고수하면 근거가 없으며 상식적이지 않은 것입니다. 경험이 상식이 되지 못하면 고집에 지나지 않습니다.

 

데이터 모델링은 상식적인 이론이 토대가 돼야 하며 상식을 기반으로 한 경험이 축적돼야 좋은 모델을 만들 수 있습니다. 상식이라는 근거가 없는 모델은 누구도 확신시킬 수 없으며 혼란을 일으킬 뿐입니다. 이론을 무시하면 또한 상식적이지 않은 것입니다. 이론을 바탕으로 통찰력과 분석력, 경험이 조화를 이룬다면 데이터 모델링은 어렵지 않으며 상식적인 것이 됩니다.

 

[이론과 실무를 겸비한 전략서 관계형 데이터 모데링 프리미엄 가이드] 中에서

블로그 이미지

블루퍼필

Tag 모델링

댓글을 달아 주세요

데이터 모델링은 어렵습니다. 모델링 이론이 어렵다는 말은 아닙니다. 이론은 다른 분야의 것과 비교해서 어렵지 않다고 생각합니다. 하지만 이론을 알고 있더라도 막상 시작하려면 무엇을 어떻게 해야 할지 막막해집니다. 또한 완료하고 나서는 모델링이 제대로 됐는지에 대한 확신이 없습니다. 시작하기 어렵고 결과를 확신할 수 없으니 어려운 분야임이 틀림없습니다.

 

이유는 여러 가지가 있을 것 같습니다. 우선 모델링 이론(理論) 외에 알아야 하는 분야의 폭이 넓습니다. 모델링은 데이터의 본질을 통찰해야 하는 추상적인 개념에서부터DBMS(데이터베이스)의 구체적인 특징과 기능까지 알아야 제대로 수행할 수 있습니다.

 

데이터의 집합을 정의하는 것은 쉽지 않습니다. 유사한 집합을 일반화(Generalization)하는 것도 쉬운 작업이 아닙니다. DBMS의 기본적인 특징을 알아야 하는 것은 기본이고 성능 관점의 구체적인 지식을 습득해야 합니다. 개발자보다SQL 작성 능력이 뛰어나야 하고PLAN을 분석해 효율적인 구조의 모델을 선택할 수 있어야 합니다.

 

그리고 사실상 정답이 없다는 점이 어렵습니다. 공식이나 틀에 맞추기보다는 상황에 따라 판단이 달라져서 정답이 없이 느껴집니다. 똑같은 요건도 상황에 따라 최적의 모델이 달라질 수 있습니다. 하지만 분명히 상황에 맞는 정답은 있습니다. 최소한 모범 답안은 존재합니다. 100점짜리 모델과0점짜리 모델은 존재하지 않을 수 있지만10점에 가까운 모델과90점에 가까운 모델은 존재합니다.

 

흔히 데이터 모델을 데이터 저장소와 같이 인식하고 사용합니다. 마치 블랙박스와 같은 엔터티에 무엇이 어떻게 들어 있는지는 상관없이 결과만 제대로 나오면 프로젝트는 이상 없이 진행됐습니다. 하지만 최근에는 데이터 모델에 대한 관심이 높아져서 블랙박스 안에 존재하는 모델을 공개해 더 좋은 모델이 될 수 있도록 노력합니다. 분명히90점에 가까운 모델은 있으며 어떻게든 그 모델을 지향해야 합니다.

 

또 다른 어려움은 어떤 모델이90점에 가까운 모델인지 확인할 수가 없다는 것입니다. 잘 된 모델을 확인하는 방법에 대한 연구가 절실하다고 생각합니다. 프로그램은 원하는 결과가 나오면 확인할 수 있고 튜닝은 원하는 수치나 현재보다 월등한 수치가 나오면 확인할 수 있지만 좋은 모델은 확인하기 쉽지 않습니다.

 

필자가 모델링을 수행하면서 가장 어려워하는 부분 중 하나는 구축된 모델을 관련자한테 설득하는 것입니다. 사실은 설명하는 것인데 결국 설득으로 이어지는 경우가 많습니다. 사용자를 설득해야 하고 개발자를 설득해야 합니다. 데이터 집합(주제)를 정의한 개념적인 내용을 설명하고 이해시키기는 쉽지 않습니다. 다양한 이해관계가 있는 사람을 설득하는 것 또한 쉽지 않습니다. 특히 실제로 모델을 사용해서 개발해야 하는 개발자를 설득하는 것은 힘들 때가 많습니다. 관련자를 설득할 때는 모델러 역시 객관적이고 구체적인 방법으로 설득해야 합니다. 이런 여러 가지 이유 때문에 데이터 모델링은 쉬운 분야가 아닙니다.

 

[이론과 실무를 겸비한 전략서 관계형 데이터 모데링 프리미엄 가이드] 中에서

 

 

하지만 데이터 모델링은 상식적입니다. 이는 쉽다는 것을 의미합니다.

블로그 이미지

블루퍼필

Tag 모델링

댓글을 달아 주세요

이전 글에서 사명감이 없는 모델러는 좋은 모델러가 아니라고 했습니다.

하지만 시간이 절대적으로 부족하면 분석을 제대로 할 수 없기 때문에 사명을 가지고 의욕적으로 모델링을 수행할 수 없습니다.

 

최근의 대형 프로젝트에서 모델러의 역할을 제대로 할 수 없을 정도로 자원(인력과 시간)이 주어지는 것은 안타까운 일입니다.

 

이런 프로젝트에서는 모델러가 보통 두 가지 정도의 역할을 해야 한다고 생각합니다. 하나는 프로젝트 초반을 주도하며 끌고가는 선봉대와 같은 역할입니다.

 

업무에 대한 충분한 분석은 말 할 것도 없고 데이터에 대한 충분한 분석 없이 모델링을 수행하면서 산출물을 만들고 다른 사람들한테 데이터와 관련된 자료를 제공합니다.

 

상향식(Bottom-Up) 방법으로 모델링을 수행하면 충분하게 분석하지 않고도 제공할만한 모델이 나올 수 있습니다. 바람직하지 않지만 어쩔 수 없을 때가 있습니다.

 

두 번째 역할은 데이터 구조를 잡는 것이고 중복 속성을 제거하는 것입니다. 속성 하나 하나를 분석할 시간이 없기 때문에 데이터 구조만 잘 잡아도 모델러의 역할은 충분히 한 것이 됩니다.

 

물론 데이터 구조를 잡는 것은 쉬운 일은 아닙니다. 데이터에 대한 분석력과 관계형 모델링 이론을 모르고서는 할 수 없는 일입니다.

따라서 데이터 구조를 제대로 잡고 중복 데이터까지 제거한다면 성공적이라고 생각합니다.

 

현실적으로 자원이 부족하다면 데이터 구조에 집중하는 것이 바람직합니다. 데이터 구조야말로 모델링을 하면서 포기할 수 없는 중요한 부분이며 모델러가 해야 할 역할입니다. 뼈대가 튼튼하며 확장성이 좋은 모델을 구축하는 모델러가 좋은 모델러입니다.

블로그 이미지

블루퍼필

Tag 모델러

댓글을 달아 주세요

지난번에 이어 이번에는 모델러가 되기 위한 기술력 이외의 분석력 등을 언급하려 합니다.

어떻게 보면 광범위한 범위가 될 수도 있습니다.

 

좋은 모델러가 되기 위해서는 정규화, DBMS, 튜닝 등의 기술적인 측면 못지 않게 분석력과 설득력, 발표력 등이 필요합니다.

 

분석력은 모델러에게 대단히 중요한 요소입니다.

모델링 기법을 익혀도 분석력이 없다면 모델링을 진행하기 어렵습니다.

정확한 분석을 통해 모델의 기반이 되는 엔터티가 정의되며 속성 하나의 쓰임새도 업무와 연관지을 수 있는 분석력이 없다면 좋은 모델러가 되기 어렵습니다.

 

아마 많은 사람들이 모델링 이론은 어느 정도 알고 있는데 모델링을 수행하기 힘든 이유가 분석력이 없기 때문이라고 생각합니다.

제 책에서도 거듭 강조했지만 모델링의 시발점은 엔터티가 정의하는 것인데요.

데이터에 대한 명확한 분석 없이는 엔터티를 정의하기 힘듭니다.

 

분석력은 개인 성향과도 연관이 있기 때문에 쉽게 키워지는 것은 아닙니다.

하지만 속성 하나도 숙고하고 종합적으로 사고해 판단하려 한다면 분석력은 향상될 것입니다.

 

발표력은 모델링의 진행 방법과 밀접한 관련이 있습니다.

경우에 따라 달라지지만 모델러는 자신이 구축한 모델을 많은 사람들에게 설명해주고 이해시키면서 진행해야 합니다.

한 두 번 결과 발표만을 하는 것이 아니라 보통은 여러 사람과 지속적인 검토를 하게 됩니다.

 

모델러는 많은 사람들과 이해 관계가 얽혀 있는데 현업·개발자·DBA 등 다양한 이해 당사자들과 많은 협의를 해야 합니다.

상대방을 설득해야 할 경우도 많고요.

원활하게 커뮤니케이션이 되지 않는다면 좋은 모델러가 될 수 없습니다.

 

그리고 무시할 수 없는 부분이 모델링 경험입니다.

경험은 어떤 분야에서도 중요하지만 데이터 모델링은 틀에 맞지 않는 경우가 많기 때문에 경험에 의존해야 할 때가 있습니다.

최종 판단 기준이 경험이 되는 경우도 많고다.

 

같은 업무의 같은 요건이라도 환경이나 상황에 따라 모델은 달라질 수 있습니다.

심지어는 관련자의 성향에 따라 달라질 수도 있고요.

많은 사람과 다양한 리뷰 경험이 커뮤니케이션 능력을 키워주기 때문에 기술 외적인 면에서도 경험은 중요합니다.

 

마지막으로 강조하고 싶은 부분은 사명감입니다.

모델러가 시스템에 미치는 영향은 대단히 크기 때문에 모델러는 더 효율적인 시스템이 될 수 있도록 최선을 다해야 합니다.

힘들더라도 효율적이고 오래 사용할 수 있고 효율적인 시스템이 될 수 있도록 노력해야 합니다.

 

아무리 이론이 깊고 분석력이 뛰어나고 경험이 풍부해도 사명감이 없는 모델러는 좋은 모델러라고 생각하지 않습니다.

엔터티를 대충 정의하고 관계를 대충 도출한다면 좋은 모델러는 아닐 것입니다.

블로그 이미지

블루퍼필

Tag 모델러

댓글을 달아 주세요

주변에서 모델러가 되고 싶어하는 사람들을 많이 봅니다.

막연하게 좋아보이니까 모델러가 되고 싶어하는 거 같습니다.

 

이 글을 읽는 분들은 대부분 프로그래밍 개발 경험이 있을 거 같습니다.

처음 프로그래밍 언어를 대할 때를 생각해 보시면 아마 해당 언어에 대한 책 한 두 권은 필독하셨을 거 같고요.

 

일단 언어가 익숙할 수 있도록 많은 연습(Hello World로 시작되는)과 몰두를 했을 것입니다.

프로그래밍 언어를 처음 시작할 때의 설레임과 각오, 노력이 떠오를 것 같습니다.

 

모델러가 되기 위해서도 기본적으로 같은 노력을 해야 합니다. 이번 글에서는 모델러가 되기 위해 알아야 하는 이론에 대해서 언급하겠습니다.

 

프로그래밍을 개발하려면 프로그래밍 언어를 알아야 하듯이 모델링을 하려면 모델링에 대한 이론을 알아야 합니다. 특히 모델링 언어라고 할 수 있는 정규화에 대해서 완전한 이해가 필요합니다.

 

하지만 정규화를 완전히 이해하는 모델러조차 드문 것이 현실입니다. 정규화를 모르고 어떻게 모델링을 수행하는지 모르겠지만 많은 사람들이 정규화를 모르는채 모델링을 수행하고 있습니다.

 

3규형까지로 제한하고 모델링을 한다고 해도 4정규형, 보이스코드정규형, 5정규형까지도 알아야 됩니다. 정규화 외에 엔터티, 속성, 관계를 비롯한 비정규화, 이력모델, 서브타입 등에 대한 이론을 알아야 됩니다.

 

모델러는 모델링 이론 외에 DBMS에 대해서도 상세하게 알아야 됩니다.

인덱스, 파티션 등의 기본적인 것 외에 해당 DBMS에서의 주요 기능을 알고 있어야 합니다.

SQL 작성 능력도 뛰어나야 자신이 구축한 모델에 대해 확신할 수 있습니다. 또한 SQL로 설명하면 모델로 설명하는 것 보다 훨씬 이해도가 빠릅니다.

 

사례 데이터도 대단히 중요한데 한 번 보여주는 것이 박스와 선으로 된 다이어그램 가지고 열 번 설명하는 것 보다 좋을 때가 많습니다.

 

데이터 모델링은 결국 DBMS에 구현될 모델을 만드는 것이기 때문에 DBMS를 모르면 모델러로서 한계를 느끼게 될 것입니다.

간혹 개념 모델만을 전문적으로 하는 모델러도 있지만 일반적인 모델러는 아닙니다.

 

그리고 튜닝을 할 줄 알아야 한다는 것이 제 생각입니다.

데이터를 정확하고(무결성) 빠르게(성능) 제공할 수 있는 모델을 구축하는 것이 모델러가 해야 할 일이기 때문에 튜닝에 대한 해박한 지식이 있어야 성능 문제를 해결하면서 모델링을 수행할 수 있습니다.

 

이런 다양한 기술력은 갖춰야 좋은 모델러가 된다고 생각합니다. 어떠한 분야든지 몰두해야 하는 것은 가장 어려우면서 기본적인 사항입니다.

블로그 이미지

블루퍼필

Tag 모델러

댓글을 달아 주세요

좋은 모델은 사용자가 원하는 데이터를 정확하게 빠르게 보여줄 수 있는 단순한 모델이다.


업무요건(Business Requirement)
모델링은 업무에서 필요로 하는 데이터를 설계하는 작업이다. 좋은 모델은 당연히 업무 요건을 만족해야 한다.
업무가 기준이 되지 않은 모델은 좋은 모델이 아니다. 업무에서 요구하는 데이터를 분석해서 엔터티를 명확하게 정의하는 것이 정규화이므로 업무를 모델에 표현하려면 정규화 과정을 거쳐야 한다.


데이터 무결성(Data Integrity)
데이터 무결성(Integrity)을 높이는 것이 모델링의 최우선 목표다. 데이터 무결성은 데이터에 결점이 없는 상태를 의미한다. 무결성이 훼손된 데이터는 아무리 업무 요구 사항을 충족한다 해도, 아무리 빠른 성능이 보장된다 해도 좋은 모델이 될 수 없다. 데이터 무결성을 보장하는 가장 기본적인 방법은 중복을 제거하고 관계를 관리하는 것이다.
더는 삭제할 것이 없는 모델이 좋은 모델이다. 데이터를 통합할수록 중복은 제거된다.


성능(Performance)
데이터 무결성 다음으로 고려해야 하는 부분이 성능이다. 데이터 모델링은 단순히 업무를 개념적으로 표현하는 것에 그치는 게 아니라 DBMS에 구현됐을 때 문제가 발생하지 않도록 하는 것이다. 심각한 성능 이슈가 발생하지 않도록 하는 것 또한 모델링의 목표다. 데이터 무결성과 데이터베이스 성능을 높이는 것이 모델링의 양대 목표나 마찬가지다.


유연성(Flexibility)
업무 변화에 유연하게 대처할 수 있는 모델이 좋은 모델이다. 신규로 업무가 추가되거나 바뀌더라도 모델 구조가 변하지 않도록 설계해야 한다. 확장성이 좋은 유연한 모델을 구축할 수 있는지는 모델러의 주요한 능력이며, 모델러에 따라서 차이가 많이 나는 부분이다. 데이터 자체를 기준으로 판단해 유사한 데이터라면 통합된 모델이 확장성이 좋은 유연한 모델이다. 정규화(Normalization)와 일반화(Generalization)를 할수록 확장하기 좋은 유연한 모델이 된다.


정규화(Normalization)를 정확히 수행할 수 있고 데이터를 통합(Generalization)할 수 있는 능력만 있다면 좋은 모델을 만들 수 있다.


블로그 이미지

블루퍼필

댓글을 달아 주세요