본문 바로가기

데이터 Story

프리미엄 가이드 후기 돌이켜보면 언제 썼나 하는 생각이 듭니다. 출판은 2010년 11월이었지만 책을 완성한 건 사실상 6월경이었으니까 1년이 넘었네요. 제가 2004년에 생애 처음으로 책을 냈습니다. SQL Server 책인데요. 아마 절판돼서 구하실 수가 없을 거에요. 다행이죠. ㅎ 그때는 SQL Server를 열심히 했고, 멘토였던 정원혁씨보다 더 최고가 될 자신이 있었습니다. 저 혼자서만 라이벌로 생각하던 때였습니다. 그런데 1년도 안 돼 오라클로 넘어온 후로 다시 돌아가지 못했습니다. SQL Server는 책을 출판하게 만든 고마운 존재입니다. 그리고 작년에 두 번째 책을 냈습니다. 첫 번째 책은 경력에 보탬이 됐으면 하는 생각밖에 없던 책이었습니다. 멘토에 대응(?)할 생각은 전혀 없었고요. 내용도 별다른 건 없는.. 더보기
데이터 통합이란? 데이터 통합이란 유사한 성격의 데이터를 합치는 것을 말합니다. 통합하면서 더 포괄적인(일반적인) 데이터를 도출하므로, 데이터를 통합하는 과정을 일반화(Generalization)라고 합니다. 통합에서는 집합의 개념이 포함됩니다. A 집합과 B 집합을 합쳐서 C 집합을 만드는 것이죠. A, B가 개념적인 정의가 될 수도 있고 엔터티가 될 수도 있습니다. 이와는 조금 다른 통합이 있는데요. 일대일 관계의 엔터티 중에는 그 자체로 이미 하나의 집합인데 성능 등의 이유로 일부 속성을 분리한 경우가 있습니다. 이런 일대일 엔터티를 합치는 것을 저는 엔터티 합체라고 합니다. 데이터 통합에 포함시키지 않습니다. 합체라는 단어의 어감이 유아틱하지만 통합과 구분하기 위해 사용합니다. 성격 자체가 동일한(같은 집합인) 일.. 더보기
물리 모델링 단계에서 무엇을 해야 하는지요? 현재 파견나와 있는 사이트에서 물리 모델링 단계에 들었습니다. 그동안 했던 고민을 다시 하게 되네요. ㅎ 논리 모델링까지는 업무를 중심으로, 물리 모델링에서는 성능을 중심으로 설계하는 게 정설이지만 다른 분들은 고민이 없는지 모르겠습니다. 저는 통합을 해야 하는지에 대한 고민 등과는 다른, 원초적인 고민을 하게 됩니다. 기간상 모든 테이블에 대해 성능을 고려하는 것은 힘들다는 등의 현실적인 사실은 차치하고라도 업무와 성능을 나눠서 생각할 수 있는지도 의문입니다. 만약 나눠서 생각할 수 있다면, 과연 업무와 성능을 나눠서 생각하는 게 효과적인지요? 업무가 없는 상태에서 요건을 분석해서 모델링 하는 경우, 과연 물리 모델링 단계가 필요할까요? 데이터가 없는데 어떤 기준에서 성능을 판단할까요? 리버스 모델링이.. 더보기
일반화(Generalization)와 상세화(Specialization) 데이터 통합과 관련된 용어로 일반화(Generalization)와 상세화(Specialization)가 있습니다. 이에 대해 간략하게 언급하겠습니다. 많은 분야에서 사용하는 용어일텐데, 이번 글에서는 데이터 모델링에서 사용하는 의미로 한정하겠습니다. 일반적인 용어를 공개적으로 설명하는 것은 용기가 필요하니 약간의 장치가 있어야죠. ㅎㅎ 모델링에서 일반화한다는 것은 데이터 통합을 의미합니다. 유사한 것을 묶는 것을 일반화라고 합니다. 원래 유사한 것을 묶을 수도 있고, 인위적으로 유사하게 만들어 묶을 수도 있습니다. 정의를 어떻게 하냐에 따라 유사한 것일 수도 있고, 유사하게 만든 것일 수도 있습니다(이 부분이 데이터 통합도 어렵게 하고 이에 대한 설명도 어렵게 하죠). 사전에서 찾은 '일반화하다'의 뜻은.. 더보기
데이터 통합(서브타입)에 대한 주절거림 데이터 통합은 모델링에서 가장 어려운 주제 중의 하나입니다. 또한 모델러 개개인의 능력 차이가 발생하는 부분입니다. 보통 통합하려는 데이터는 핵심적으로 사용되는 데이터일 가능성이 큽니다. 통합에 대한 이슈가 발생할 수 있는 데이터는 더욱 핵심 데이터이고요. 핵심적이지 않은 데이터는 무관심해서 통합과 관련된 이슈가 발생하지 않습니다. 정규화는 이론에 대한 이견은 거의 없고(조금 있고), 다만 적용 여부에 대한 논란(어느 정규형까지 적용해야 하는지에 대한 논란)이 많습니다. 데이터 통합은 모델러마다 이견이 생길 수 있습니다. 통합해야 좋다, 통합하면 안 좋다는 이견은 언제나 있습니다. 물론 전문가 간에는 의견이 거의 일치한다고 봅니다. 어쨌든 모델러 간에 의견 일치가 어려운 부분이 데이터 통합입니다. 데이터.. 더보기
이력 엔터티를 설계하는 10가지 방법 – 열 번째 드디어 마지막 열 번째 방법입니다. - 마스터에 해당 속성이 존재해 현재 데이터를 관리하고, 속성 그룹의 이력 데이터는 별도의 엔터티에서 관리 - 마스터에 해당 속성이 존재하지 않고, 속성 그룹을 별도 하나의 엔터티를 사용해 현재+과거 데이터를 통합해서 관리 - 마스터에 해당 속성이 존재하지 않고, 속성 그룹을 두 개의 엔터티를 사용해 현재와 과거 데이터를 개별로 관리 유사한 속성을 묶어서 별도의 엔터티로 설계하며, 현재 데이터와 변경된 과거 데이터를 따로 관리합니다. 앞서 밝혔듯이 구분하는 게 도움이 되기 때문에 구별했지만 다섯 번째 방법과 유사합니다. 이력 엔터티를 설계하는 다섯 번째 방법 [그림1] 주식종목가격 엔터티의 속성 값이 하나라도 바뀌면 주식종목가격이력 엔터티에 데이터가 생성합니다. 기준가.. 더보기
이력 엔터티를 설계하는 10가지 방법 – 아홉 번째 아홉 번째 방법은 유사한 속성을 묶어서 별도의 엔터티로 설계하고, 이력 데이터도 같이 관리하는 겁니다. - 마스터에 해당 속성이 존재해 현재 데이터를 관리하고, 속성 그룹의 이력 데이터는 별도의 엔터티에서 관리 - 마스터에 해당 속성이 존재하지 않고, 별도의 엔터티에서 속성 그룹의 현재+과거 데이터를 통합해서 관리 - 마스터에 해당 속성이 존재하지 않고, 속성 그룹을 두 개의 엔터티를 사용해 현재와 과거 데이터를 개별로 관리 이 방법은 네 번째 방법과 유사한데요. 제 기준으로는 내역 엔터티인데, 비교해서 보는 게 이해를 돕기 때문에 10가지의 이력 엔터티 설계에 포함시켰습니다. 여덟 번째 방법, 마지막 열 번째 방법과 비교해 보세요. 유사한 속성을 묶어서 별도의 엔터티에서 현재+과거 데이터를 통합 관리하.. 더보기
이력 엔터티를 설계하는 10가지 방법 – 여덟 번째 이력 데이터를 설계하는 방법이 이제 곧 마무리될 거 같습니다. 시리즈 글 10개 올리는 게 쉽지 않네요. ㅎㅎ 이력 데이터를 설계하는 유형을 정리하면 크게 아래 세 가지입니다. - 전체 속성을 관리(인스턴스 단위) - 속성 하나 하나를 관리(속성 단위) - 유사한 속성을 묶어서 관리(속성 그룹 단위) 위의 두 가지는 이미 설명드렸고 마지막 유형만 남았습니다. 마지막 유형인 유사한 속성을 묶어서 설계하는 방법은 다시 세 가지로 구분할 수 있습니다. - 마스터에 해당 속성이 존재해 현재 데이터 관리, 속성 그룹의 이력 데이터는 별도의 엔터티에서 관리 - 마스터에 해당 속성이 존재하지 않고, 속성 그룹을 별도 하나의 엔터티를 사용해 현재+과거 데이터를 통합해서 관리 - 마스터에 해당 속성이 존재하지 않고, 속.. 더보기
함께 변경된 속성을 알아야 할 때 이번에는 이전에 설명한 변경 속성을 코드로 관리하는 방법(5, 6, 7번 방법)과 연관된 내용입니다. 종테이블(Vertical Table) 방법으로 이력을 관리할 때 동시에 변경된 속성을 알아야 할 때가 있는데요. 동일한 업데이트 트랜잭션에 의해 변경된 속성이 무엇인지를 알려면 [그림1]과 같은 모델을 사용할 수 있습니다. [그림1] 변경순번 속성 값이 같으면 동시에 변경(업데이트)된 속성을 의미합니다. 그리고 변경순번 속성은 이미 인조 식별자 역할을 하기 때문에 변경일자 속성이 주 식별자에 포함될 필요는 없습니다. 순번에 일자 의미가 이미 포함돼 있죠. [그림2] 릴레이션처럼 관리하면, 가장 최근에 함께 변경된 속성은 계좌 관리사원(‘123’)과 계좌 비밀번호(‘2222’)라는 것을 나타냅니다. [계좌.. 더보기
영향받은 사람 오늘은 모델러인 저에게 영향을 미친 사람들을 소개하려 합니다. 연대순으로 소개해드리겠습니다. 제가 일을 시작한 건 99년이고요. HTML만 조금 알 때 운명적으로(?) 엑세스를 다루게 됐습니다. 곧바로 SQL Sever에 관심을 가지게 됐고요. 데이터베이스가 신기했고 동시에 데이터가 핵심이라는 것을 직감하고 주 분야로 정했습니다. 99년부터 정규화에 관심이 많았고요. 외국 사이트나 원서에서 조금씩 도움을 받았습니다. 그러다 2002년이었던 거 같은데요. 수원으로 출퇴근하게 됐는데 버스에서 읽은 책이 있습니다. -손호성, Practical Database Design, 삼각형프레스 책을 읽으면 공감하는 내용과 그렇지 않은 내용이 있을텐데, 공감하는 부분이 평소 중요하게 생각하는 부분이면 생각이 통한다는 느.. 더보기