본문 바로가기

엔터티 통합

액셀과 사례 데이터 이번 주에 기준 엔터티를 설계할 때의 일입니다. 보통은 머리 속에서 데이터 생성하면서 엔터티를 설계합니다.설계한 후에 맞는지 머리 속에서 다시 데이터 생성해 보고요.이상하면 엔터티 다시 설계하고, 또 데이터 생성해 봅니다.이걸 저는 수읽기라고 합니다. 바둑을 아시면 금방 이해하실 거에요.내가 여기에 두면 상대는 어디다 둘 거고, 그럼 나는 또 어디에 두고, 상대는 어디에 둘거다를 머리 속에서 둬보는 것이죠.내가 둘 수 밖에 없는 곳, 또는 가장 유리한 곳을 찾은 후에 상대의 입장에서도 그 곳을 찾는 게 수읽기입니다.프로기사는 50수 정도 수읽기를 한다고 해요.보통 1분 내에 한 수를 둬야 하니까 엄청난 속도입니다. 여담이지만 알파고는 이 수읽기를 50수 정도 한 게 아니고 바둑 끝까지 한 것입니다.쉽게 .. 더보기
판다곰과 원숭이 그리고 바나나 “판다곰과 원숭이와 바나나가 있습니다. 이중 두 가지를 묶는다면 어떤 것을 묶으시겠습니까?” 책을 읽다보면 모델링과 연관해서 생각할 때가 종종 있습니다. 일종의 직업병이죠. 생각하고 싶지 않은데 저절로 생각이 흐르니까 좋지 않은 병입니다. ㅎ 서양과 동양의 차이를 설명한 책을 읽었는데1), 한 부분을 제가 이해한 방식으로 소개하겠습니다. 아리스토텔레스로 대표되는 서양 사람은 사물의 본질을 잘 파악한다고 합니다. 성격 그대로 생각하는 것이죠. 데이터 본질이 생각나더라고요. 반면, 공자로 대표되는 동양 사람에게는 사물의 본질과 함께 관계가 지대한 영향을 미친다고 합니다. ‘관시(관계)’라는 중국어를 강조하던 선배가 생각났고요. 모델링 관계가 생각났습니다. 서양 사람은 자기 자신을 잘 파악해서 개인주의 성향이.. 더보기
서브타입은 어떻게 도출하는가? 서브타입을 도출하는 방법은 크게 두 가지입니다. 두 개 이상의 유사한 엔터티에서 공통 속성을 분류하는 방법과, 복잡한 엔터티에서 유사한 속성끼리 분류하는 방법이 있습니다. 전자는 엔터티를 통합(Generalization)하는 행위이고, 후자는 엔터티를 상세화(Specialization) 또는 논리화(Logicalization)하는 행위입니다. 모든 엔터티가 서브타입이 존재하는 것은 아닙니다. 서브타입이 도출되는 엔터티는 소수인데요. 통합할 수 있고 상세화할 수 있는 엔터티에서는 서브타입을 반드시 도출해야 합니다. 물리 모델링 단계에서 다시 하나의 엔터티로 통합되더라도 과정 중에는 도출해야 합니다. 모델링은 과정을 의미하니까요. [그림1] 모델에는 유사한 엔터티가 있습니다. 두 개 이상의 엔터티가 유사하다.. 더보기
어떤 경우에 통합을 고려하는가? – 다양한 경우 이번 글에서는 통합을 고려할 수 있는 다양한 경우를 설명하겠습니다. 다양한 케이스를 소개하지만 결국은 데이터의 본질이 유사하다는 것으로 통하게 됩니다. 역할을 관리하는 엔터티는 [그림1]과 같이 통합 모델을 사용할 때가 많습니다. [그림1] 사원은 특정 계좌에 대해 관리사원·유치사원·주문사원 등 여러 가지 역할을 할 수 있습니다. 여러 역할에 따른 엔터티가 개별로 존재하는 것이 아니라 계좌관계사원 엔터티와 같은 통합 엔터티로 존재하는 것이 바람직합니다. [그림2]와 같이 대칭적인 업무를 관리하는 데이터도 통합을 고려할 수 있습니다. [그림2] 이경우 업무 성격은 대칭적이지만 데이터 성격은 유사합니다. [그림2]는 식별자가 같지만 식별자가 다르더라도(매출전표번호와 매입전표번호) 통합할 수 있습니다. 매도와.. 더보기
어떤 경우에 통합을 고려하는가? - 두 번째 지난 번에 설명한 데이터 성격이 유사하다는 것이 데이터 통합을 고려할 가장 중요한 요소입니다. - 데이터의 성격(본질)이 유사할 때, 즉 집합의 정의가 유사할 때 [그림1]은 고객이 요청한 알림 서비스를 관리하는 엔터티입니다. [그림1] 고객알림서비스 엔터티는 고객별 알림 서비스를 관리하는 엔터티이고, 계좌알림서비스 엔터티는 계좌별 알림 서비스를 관리하는 엔터티입니다. 어떤 종류의 알림 서비스를 원하는지와 어떻게 알림 서비스를 받는지, 서비스 신청 일자와 알림을 몇 번 반복하는지 등의 데이터 성격은 두 엔터티가 동일합니다. 단지 고객을 지정해 서비스를 하는지, 계좌를 지정해 서비스를 하는지가 달라 주 식별자가 달라졌습니다. 그래서 엔터티가 통합되지 못한 예제인데 통합 대상입니다(주 식별자가 다른 여러 엔.. 더보기
데이터 통합이 어려운 이유 - 데이터 통합에 대한 불편한 진실 데이터 통합이 어려운 이유, 통합이 안 되는 이유는 크게 두 가지가 있습니다. 하나는 이전에 설명드린 통합의 단점 때문일 것입니다. 아래 글을 참고하세요. 통합이 대세인가? 통합 시 주의할 점 통합을 위한 통합은 경계하고, 단점은 충분히 고려해야 합니다. 오늘의 주제는 두 번째 이유입니다. 통합이 어려운 두 번째 이유는 조직에 있습니다. 조직 구조에 따라 통합되지 않는 경우가 빈번합니다. 단순하게 주식계좌 엔터티와 수익증권계좌 엔터티를 관리하는 담당자가 다르면 통합이 어렵습니다. 담당자만 달라도 어렵지만 담당자의 소속(팀)이 다르면 더욱 어렵고요. 이것의 근본적인 원인은 리소스입니다. 업무가 줄지 않는다면 다른 업무를 감당하기 벅차기 때문이죠. 진짜 감당하기 힘든지는 차치하고라도 지금보다 많아지는 것에 .. 더보기
어떤 경우에 통합을 고려하는가? 지난 달에 프로젝트를 마치고 중국 여행을 다녀왔습니다. 빚을 내서라도 애들하고 여행하라는 글을 자주 봐서 이번에 빚을 냈습니다. ㅎ 사실 여행에 대한 중요성은 이미 알고 있죠. 여유가 없었을 뿐이죠. 여행을 하면 시야가 넓어집니다. 많은 생각을 할 수 있어 좋고… 홀로 3개월을 돌아다니던 그때가 생각나네요. 어쨌든 고생해서 여행은 갔다왔는데 마음이 풀렸는지 블러그 슬럼프가 왔습니다. 그래서 다시 마음을 다잡고 글을 올리려고 합니다. 오늘부터 데이터를 통합할 수 있는 여러 가지 경우를 설명하겠습니다. 어떻게 통합하느냐에 대한 얘기보다 어떤 것(무엇)을 통합하느냐에 대한 얘기입니다. 가장 원론적인 원칙이 데이터의 성격이 유사할 때입니다. - 데이터의 성격(본질)이 유사할 때, 즉 집합의 정의가 유사할 때 데.. 더보기
통합이 대세인가? 통합 시 주의할 점 데이터(엔터티) 통합이 대세지만 통합 시 주의할 점이 있습니다. 일반적으로 많이 언급되는 것은 성능입니다. 데이터를 통합하면 데이터는 많아질 수밖에 없습니다. A집합과 B집합의 인스턴스 개수가 합쳐지기 때문에 데이터가 늘어납니다. 데이터가 증가하는 것과 성능은 유관합니다. 요건에 따라 때론 큰 차이가 생기고, 때론 미미한 차이가 생깁니다. 때론 성능이 좋아지기도 하고요. 통합해야 성능이 좋아지는 요건도 많아 저는 통합을 우선적으로 고려합니다. 그러면서 성능이 나빠질 수 있다는 점을 염두에 두죠. 흔하지는 않지만 대기 현상으로 인한 인서트 성능 저하를 고려할 때도 있습니다. 인서트가 많이 발생하는 엔터티에 어떤 엔터티를 통합하는 것은 바람직하지 않습니다. 인서트가 많다는 기준이 애매한데요. 참고로 말씀드리.. 더보기
데이터 통합이란? 데이터 통합이란 유사한 성격의 데이터를 합치는 것을 말합니다. 통합하면서 더 포괄적인(일반적인) 데이터를 도출하므로, 데이터를 통합하는 과정을 일반화(Generalization)라고 합니다. 통합에서는 집합의 개념이 포함됩니다. A 집합과 B 집합을 합쳐서 C 집합을 만드는 것이죠. A, B가 개념적인 정의가 될 수도 있고 엔터티가 될 수도 있습니다. 이와는 조금 다른 통합이 있는데요. 일대일 관계의 엔터티 중에는 그 자체로 이미 하나의 집합인데 성능 등의 이유로 일부 속성을 분리한 경우가 있습니다. 이런 일대일 엔터티를 합치는 것을 저는 엔터티 합체라고 합니다. 데이터 통합에 포함시키지 않습니다. 합체라는 단어의 어감이 유아틱하지만 통합과 구분하기 위해 사용합니다. 성격 자체가 동일한(같은 집합인) 일.. 더보기
일반화(Generalization)와 상세화(Specialization) 데이터 통합과 관련된 용어로 일반화(Generalization)와 상세화(Specialization)가 있습니다. 이에 대해 간략하게 언급하겠습니다. 많은 분야에서 사용하는 용어일텐데, 이번 글에서는 데이터 모델링에서 사용하는 의미로 한정하겠습니다. 일반적인 용어를 공개적으로 설명하는 것은 용기가 필요하니 약간의 장치가 있어야죠. ㅎㅎ 모델링에서 일반화한다는 것은 데이터 통합을 의미합니다. 유사한 것을 묶는 것을 일반화라고 합니다. 원래 유사한 것을 묶을 수도 있고, 인위적으로 유사하게 만들어 묶을 수도 있습니다. 정의를 어떻게 하냐에 따라 유사한 것일 수도 있고, 유사하게 만든 것일 수도 있습니다(이 부분이 데이터 통합도 어렵게 하고 이에 대한 설명도 어렵게 하죠). 사전에서 찾은 '일반화하다'의 뜻은.. 더보기