본문 바로가기

데이터 Story

모델러의 주장(主張)과 커뮤니케이션 “그 모델은 내가 모델링한 게 아니야!” 제가 가끔 넋두리로 하는 말입니다. 누구나 다 제가 모델링한 것으로 알고 있는 A회사의 B영역 모델을 제가 모델링한 게 아니라고 말하면 어리둥절해합니다. 오늘은 ‘모델러의 주장(主張)’에 대한 얘기를 하려고 넋두리에 대한 일화를 꺼냈습니다. 본격적인 넋두리는 다음 기회에 하겠습니다. ㅎㅎ 저는 모델링을 하면 보통 제 주장의 70~80%를 관철하는 거 같습니다. 거의 100% 맞을 거 같은 사안 중에서요. 나머지 20~30%는 안타깝게도 상대방의 의견을 따릅니다. 위 문장은 많은 내용을 암시하고 있습니다. 어디서부터 설명해야 할지 모를 정도로 포괄적인 내용을요. 많은 암시 중에서 이 글에서는 '내가 생각하는 모델이 최선이 아닐 수 있다'는 것을 말하려고 합니다. 모.. 더보기
요구 사항에 대한 불편한 진실 요구 사항은 프로젝트의 근간이 되는 대단히 중요한 요소입니다. 그리고 모델링과 밀접하게 연관돼 있죠(요구 사항은 함수 종속과 밀접하게 연관돼 있습니다). 프로젝트는 보통 아래와 같이 진행됩니다. ① 단계에서 개념 모델 또는 초기 논리 모델이 나오고요. ② 단계에서 물리 모델이 나옵니다. 딱 떨어지진 않지만요… 요구 사항은 ①, ② 단계에서 대부분 도출돼야 하는데요. 실제로 ④ 단계에서 폭주합니다. 심리인 거 같아요. ㅎㅎ 홈쇼핑 마감 전에 주문이 폭주하는 거 같이… ④ 단계에서 요구 사항이 폭주하는 원인이 있습니다. 요구 사항은 일정 부분 도출하는 것인데요. 요구 사항을 도출할 수 있는 분석·설계자가 드문 게 현실입니다. 또한 분석·설계자가 도출하는 게 한계가 있습니다. 요구 사항은 근본적으로 사용자(U.. 더보기
이력 엔터티 확정 절차 [그림1]은 이력 엔터티 확정 절차입니다. [그림1] 가장 먼저 해야 할 일은 이력 데이터를 관리해야 하는지를 분석하는 것입니다. 이력(지나간 과거) 데이터를 사용하는 업무가 없다면 이력 데이터 관리 요건은 없는 것입니다. 그냥 기존 데이터를 최신 데이터로 업데이트하면 끝입니다. 속 편하게 그냥 업데이트하고 싶지만 업무가 그렇게 간단하지 않습니다. 변경된 과거 데이터를 관리해야 하는지에 대해서는 현업의 의견이 가장 중요한 기준이 됩니다. 동종 업체의 업무를 참조할 수도 있고요. 현업의 판단이 이력 데이터는 필요 없다는 것이라도 모델러가 판단하기에 필요하다고 생각되면 이력 엔터티를 채택할 수도 있습니다. 당장에는 사용하지 않지만 이력 데이터를 쌓아 두면, 업데이트해서 이전 데이터를 없애는 대신 저장해서 새.. 더보기
이력 엔터티 판단 시점 2 이전 글에서 개념•논리•물리 모델링 단계의 구분 없이 엔터티를 정의하는 시점에 이력 데이터 관리도 같이 정의하는 것이 효율적이라 설명드렸는데요. 하지만 논리 모델링이 끝난 시점에 이력 관리를 한꺼번에 적용하는 것도 또 다른 방법입니다. 실무에서 자주 사용되는 편입니다. 이 방법의 장점은 본질 데이터를 먼저 완전하게 도출한 이후에 이력 데이터를 고려하므로 본질에 집중할 수 있다는 점입니다. 분리가 가져다주는 단순함은 또 다른 장점이고요. 초보 모델러에게 절차는 좋은 가이드가 되기도 합니다. 단점은 이전 글에서 설명했듯이 모델링 후반에 모델 구조가 변경될 수 있다는 점입니다. 또한 어떤 업무는 이력 엔터티를 설계하지 않고는 전체 모델에 대한 방향조차 잡기 힘들 수가 있습니다. 또 한가지 중요하게 고려할 점은.. 더보기
이력 엔터티 판단 시점 언제 이력 엔터티를 도출하는 것이 좋을까요? 개념 모델링 단계에서 시작해야 한다는 것이 제 생각입니다. 물론 핵심적이지 않은 엔터티는 논리 모델링 단계에 도출해도 됩니다. 본질 데이터를 먼저 확고히 해야 한다는 점만 주의하면, 개념 모델링 단계에서 이력 엔터티를 고려하는 것이 좋습니다. 실무에서는 일반적으로 이력 엔터티를 물리 모델링 단계에서 고려하는데요. 이력 데이터가 본질 데이터가 아니라서 뒷 단계에서 별도로 고려합니다. 하지만 이력 데이터 관리 방법에 따라 모델 구조가 바뀔 수 있어 후반에 별도의 타스크에서 고려하는 것은 바람직하지 않습니다. 핵심 엔터티의 구조가 후반에 바뀔수록 영향은 심각해집니다. 주요 엔터티는 본질이 정의되는 시점에 이력 데이터 관리 방안을 같이 논의하는 것이 현실적으로 효율적.. 더보기
어떤 데이터를 이력 데이터로 관리해야 하는가? 이력 데이터의 가장 커다란 특징은 변하는 데이터라는 것입니다. 따라서 이력 데이터를 관리하는 가장 중요한 기준은 어떤 데이터가 시간의 흐름에 따라 변할 수 있는지가 기본적인 기준이 됩니다. 시간이 흘러도 데이터가 변할 수 없다면 이력 관리 대상이 아닙니다. 그리고 특정 데이터의 과거 상태를 추적할 필요가 있으면 이력 데이터를 관리해야 하는 대상이 됩니다. 데이터가 변경됐지만 변경되기 전에 어떤 데이터였는지 관심이 없다면, 알아야 아무 도움이 되지 않는 데이터라면 이력 관리 대상이 아닙니다. 해당 데이터에 대해서 업데이트만 하면 되니까요. 물론 데이터의 과거 상태를 추적할 요건이 없더라도 시간이 흐름에 따라 데이터가 변할 수 있다면 이력을 관리할 수 있는 모델을 우선으로 고려하는 것이 좋습니다. 현업의 요.. 더보기
선분 이력의 종료일자 이번 글에서는 종료일자에 대해 쓰려고 합니다. 선분 이력은 다 아실 것입니다. 자세한 내용은 제 책 등을 참고해 보시고요. 간단히 설명하면 선분 이력은 과거 특정 시점의 데이터를 조회하는 요건이 많을 때 채택하는 조회 성능을 고려한 방법입니다. 즉 성능 문제가 없다면 선분 이력을 채택하지 않아도 됩니다. 제 책에서 선분 이력을 설명한 목적이 두 가지가 있었습니다. 하나는 성능 이슈가 존재할 때 선분 이력을 정확하게 사용할 수 있도록 하는 것이고, 또 하나는 선분 이력의 남용을 방지하기 위해서입니다. 그런데 첫 번째 목적인 성능 문제에 대한 이슈가 최근에 있었는데요. 저 또한 Between 조회가 성능상 유리하다고 생각해 그렇게 썼는데요. Between 조회가 아니더라도 성능상 큰 문제가 없다고 주장한 블.. 더보기
이력 데이터와 내역 데이터 2 그럼 [그림5] 환율 엔터티는 내역 엔터티일까요? 이력 데이터일까요? 환율은 기준 통화에 대한 상대 통화의 교환 비율인데요. 기본적으로 매일 관리하기 때문에 기준일자를 관리합니다. 원화에 대한 달러의 2월 15일 환율 데이터가 생성되고, 16일 환율도 생성되는 등 주 식별자에 따라 데이터가 생성되니 내역 데이터입니다. 환율을 관리하는 원천 엔터티이니 발생 내역 엔터티입니다. 환율 같은 엔터티를 이력 엔터티로 생각하는 경우가 많습니다. [그림5] 이미 존재하는 15일 환율이 바뀌고, 바뀌기 전 데이터를 관리해야 한다면 [그림6]과 같이 이력 엔터티가 있어야 됩니다. [그림6] 그리고 또 많이 혼돈하는 엔터티가 학력이나 회사경력 같은 엔터티입니다. [그림7]과 같은 고객의 학력을 관리하는 엔터티는 주 식별자.. 더보기
이력 데이터와 내역 데이터 1 지난 글에서 이력 데이터의 성격에 대해 간략하게 설명드렸습니다. 다시 정리하면 변경되는 데이터가 이력 데이터이고요. 쌓이는 데이터는 내역 데이터입니다. 그리고 원천(본질) 데이터인지를 구별하는 것이 중요합니다. 원천 엔터티를 도출하고 이력엔터티를 분석해야 하고요. 발생 내역인 원천 데이터가 변경되면, 변경 전의 데이터를 관리해야 이력 데이터 관리라고 합니다. 저는 ‘변경이력’과 ‘발생내역’이라는 용어로 구분합니다. 지난 번에 언급했듯이 이력이라는 용어는 상당히 애매합니다. 과거 데이터라는 포괄적인 의미를 지니고 있습니다. 영어로 표현하면 Time-Dependent Data, Historical Data 정도가 되는데요… 하지만 데이터 모델에서 말하는 이력은 단순히 쌓여있는 과거의 데이터가 아니라 변경된 .. 더보기
데이터를 활용하는 사용자의 불만 오늘날 데이터를 정보로서 활용하는 사용자의 불만과 불신은 널리 퍼져 있습니다. 모델러로서 간혹 현업 사용자와 인터뷰를 하는데 IT에 대한 불만이 심합니다. 물론 IT의 불만도 많습니다. 사실 데이터 품질 문제는 IT의 문제만은 아닙니다. 사용자의 불만을 간단하게 요약하면 아래와 같습니다. 수시로 요청하는 데이터, 화면에서 보여지는 데이터, 리포트 등을 망라해서요. § 요청한 데이터를 선별적으로 받는다 § 요청한 데이터를 늦게 받는다 § 요청해서 받은 데이터가 정확하지 않다 § 필요한 데이터를 관리하지 않는다 사용자 생각에는 만들 수 있는 데이터 같은데 IT 부서에 요청하면 어떤 건 안되고, 어떤 건 된다는 거죠. 지금은 그렇지 않겠지만 예전엔 저도 상대에 따라 후순위로 미뤘던 기억이 납니다. ㅎㅎ IT .. 더보기