데이터 모델링
데이터 모델링(Data Modeling)이란 주어진 개념으로 부터 논리적인 데이터 모델을 구성하는 작업을 말한다. 여기서 데이터 모델(Data Model)이란 데이터(data)의 관계, 접근과 흐름에 필요한 처리과정을 추상화한 모형이다. 일반적으로 물리적인 데이터베이스 모델 구현, 시스템 데이터베이스 반영 과정을 포함한다. 데이터 모델링은 단순 데이터를 다루는 것 뿐만 아니라 시스템의 구체적인 흐름을 정의하는데도 매우 큰 영향을 끼친다.[1][2]
목차
개요
일상생활에서 어떤 사물을 제작, 설계할 때 참고하는 본보기, 예시, 모형 등을 모델이라고 하는데, 데이터에 있어 모델은 현실세계에 대해 우리가 관심있어하는 대상을 데이터베이스화 하기 위한 개념적 도구라 정의할 수 있다. 그런 데이터 모델을 단순 표현과 명확하게 나타내기 위해 설계하고 구현하는 과정을 데이터 모델링이 된다. 모델링 과정 중 설계에서 중요한 개념을 구분 하여 개념적 설계를 하는 '개념적 모델링', 그렇게 구현된 기초 모델링을 상세화 하는 과정을 '논리적 모델링', 논리적 모델링에서 완성된 데이터 모델은 데이터베이스에 적용하는 과정을 '물리적 모델링'으로 나뉜다.[2]
탄생 배경
초창기 데이터의 저장 매체가 존재하지 않아, 기업의 정보시스템은 저장 매체가 없는 단치 배치(batch)프로그램 위주의 정보 시스템이다. 하지만 정보 기술의 발전에 따라 배치위주의 정보시스템은 한계가 있었으며 이 후 파일이나 데이터베이스 관리 시스템(DBMS, DataBase Management System)과 같은 저장 메체의 발전과 더불어 온라인 데이터 처리 정보시스템이 등장하게 되었다. 현재의 관계형 데이터베이스 관리 시스템이 아닌 이러한 시기의 파일이나 데이터베이스 관리 시스템 의 데이터 중심의 관리 기법이 아니라 배치 프로세스에서 태동한 프로세스 중심의 데이터 관리 기법(구조적 방법론)에 의하여 정보의 고립화라는 현상을 초래하게 되었으며, 많은 기업들은 정보시스템을 유지관리 하는데 막대한 비용을 투자해야만 하는 문제점이 생겼다. 이에 많은 학자들은 프로세스 중심의 정보 시스템 분석, 설계 기법에 문제점이 있다고 생각하게 되었고, 진정 기업 정보시스템의 핵심은 데이터(정보)를 어떻게하면 중복없이 정확하게 유지 관리할 수 있을가에 대한 보다 근본적인 안을 제시하게 되었다. 기업의 경영 정보 시스템의 근본적인 문제가 설계나 개발의 문제보다는 정확한 업무 파악이 선결되야 한다는 결론에 이르러 보다 현실적인 관계형 데이터베이스나 개체 관계 모델링 기법(ERD:Entity Relationship Diagram)이 발전하게 되었다.[3]
필요성
데이터가 증가하면서 시스템에는 많은 변화가 생긴다. 그 중 데이터에 대해서만 확인을 했을 때 데이터의 증가와 함께 발생하는 문제는 두 가지이다. 데이터 증가로 인한 중복이 발생하여 데이터의 정합성 문제가 발생하거나 데이터의 증가로 SQL의 응답속도가 저하되여 성능의 문제가 발생한다. 이 두문제를 해결하기 위해 최적화된 모델링을 통해 해결 할 수 있으며 이 방법이야말로 근본적인 문제를 해결하는 방법이다. 고품질의 데이터 모델은 시스템의 안정성과 성능, 유연성 등에 미치는 영향이 크기때문에 고품질의 데이터베이스를 보호하기 위한 데이터 모델링은 시스템 개발에 있어서 가장 핵심적인 과정이다.[4][5]
- 어플리케이션과의 데이터 통합: 많은 애플리케이션을 하나로 묶어 종합 포털격인 애플리케이션을 구축하려면 많은 시간과 노력을 요구하는데 보다 효과적이면서 동시에 저비용으로 통합 프로젝트를 안정적으로 수행하기 위한 필요조건이 되고 있다.[5][6]
- 개발자들의 시스템 이해: 애플리케이션 간의 데이터 사용, 물리적 표현 또는 사용에 관계없는 데이터의 본질을 사용자 관점에서 데이터를 모델화하여 좀 더 확실하게 이해할 수 있게 된다.[5]
- 파급효과(Leverage): 시스템 구축이 완성되가는 시점에서 많은 어플리케이션이 테스트(test)를 수행하고 대규모의 데이터 이행을 성공적으로 수행하기 위해서는 많은 단위의 테스트와 이어서 병행테스트, 통합테스트를 수행하게 된다. 이 시점에서 데이터 모델의 변경이 발생하면 이를 위해 데이터 구조의 변경에 따른 파급효과에 대해 생각해보아야 한다. 큰 시스템일 수록 데이터 구조의 변경으로 인한 일련의 변경 작업은 클 수 밖에 없다. 큰 변경작업은 큰 위험요소로 다가오게 된다. 이러한 이유로 시스템 구축 작업 중에서는 다른 어떤 설계 과정보다 데이터 설계가 더 중요해진다.[7]
- 간결한 표현(Conciseness): 시스템을 구축함에 있어 많은 이해 관계자 간 훌륭한 의사 소통의 도구가 될 수 있다. 요구사항을 파악하는 데있어서 수많은 페이지의 기능적인 요구사항을 파악하는 것보다 간결하게 그려져 있는 데이터 모델을 리뷰하면서 파악하는 것이 훨씬 빠른 방법이다. 요구사항과 한계를 간결하고 명확하게 표현할 수 있어 중요한 역할이 된다.[7]
- 데이터의 품질(Data Quality): 데이터의 품질 기간이 오래될 수록 활용가치는 훨씬 높아진다. 오늘날 데이터가 기업의 큰 자산임을 고려할 때, 정확하지 않은 데이터는 기업 측면에서 크나큰 손실이다.데이터가 쌓이는 초기에는 쉽게 인지를 못하는데 초기 때부터 오랜 기간동안 숙성된 데이터를 전략적으로 사용하기위해 데이터 품질의 중요성을 인지해야한다. 그러기에 데이터 품질 향상을 위해 잘 형성된 데이터 모델이 필수라고 할 수 있다.[5]
유의점
- 중복(Duplication):데이터 모델은 같은 데이터를 사용하는 사람, 시간, 장소를 파악하는데 도움을 준다. 이러한 지식 응용은 데이터베이스의 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 한다.[8]
- 비 유연성(Inflexibility): 데이터 모델을 어떻게 설계했느냐에 따라 사소한 업무변화에도 데이터 모델이 수시로 변경됨으로써 유지보수의 어려움을 가중시킬 수 있다. 데이터의 정의를 데이터의 사용 프로세스와 분리함으로써 데이터 모델링은 데이터 혹은 프로세스의 작은 변화가 애플리케이션과 데이터베이스에 중대한 변화를 일으킬 수 있는 가능성을 줄인다.[8]
- 비 일관성(Inconsistency): 데이터의 중복이 없어도 비일관정이 발생하는데, 예를 들면 신용 상태에 갱신없이 고객의 납부 이력정보를 갱신하는 것이다. 개발자가 다른 데이터와 모순된다는 고려없이 일련의 데이터를 수정할 수 있기 때문이다. 데이터 모델링을 할 때 데이터와 데이터간의 상호연관관계에 대한 명확한 정의는 이러한 위험을 사전에 예방할 수 있게 해준다.[8]
기본 개념
모델링
모델링(Modeling)은 현실 세계에 있는 사람, 사물, 개념 등을 단순화 표현하는 것이다. 모델링은 추상화, 단순화, 명확화로 세가지 특징으로 나뉜다. 추상화(Abstraction)는 복잡한 상황을 간결하고 명확하게 핵심 위주로 단순화가 목적이며, 구체적인 상황은 되도록 생략하고, 핵심 요소와 원리만 추구하는 것이다. 단순화(simplification)는 복잡한 현실세계를 약속된 규약이나 제한된 표기법이나 언어로 표현하여 쉽게 이해할 수 있도록 하는 것을 말한다. 명확화(clarification)란 누구나 이해하기 쉽도록 대상에 대한 애매모호함을 제거하고 보다 정확하게 기술하는 것을 의미한다.[9]
ER모델
관계형 데이스베이스
단계
요구사항 분석
개념적 모델링
논리적 모델링
물리적 모델링
원칙
모델링의 방법론, 기법, 도구와 같은 개발 보조 수단 사용 없이 시스템이 잘 설계될 수 없을 거라 생각하게 된다. 하지만 과거 수많은 시스템들은 이러한 개발 보조기구의 사용없이 성공적으로 개발됐다. 프로젝트의 어려움 정도 또는 도구와 기술에 상관없이 좋은 설계를 포함한 훌륭한 시스템 개발은 해결해야 하는 문제점의 구체화, 시스템 구축, 구현을 통한 단계로 부터 시작된다. 시스템의 개발되기 위해서는 요구사항을 완전하고 정확하게 식별,분석해야하고, 논리 데이터 모델링은 조직이 사용하는 물리적 설계 구조에 관계없이 기업의 비즈니스에 존재하는 데이터의 명확한 구조 및 정의를 제시해야한다. 사용자 관점에서 바라보는 정보구조를 개념화하고 추상화시킨 데이터의 구조이기에 다음의 설명할 세가지 최우선 원칙이 데이터 모델링의 접근 방식을 성공적으로 이끄는 토대이다. [3]
커뮤니케이션의 원칙
커뮤니케이션의 원칙(Communication Principle)이란 최종 사용자 및 이해 당사자들에게 시스템의 지향점을 분명하게 설명하기 위함을 전제로한 원칙이다. 요구사항을 모든 사람들이 이해할 수 있도록 명확하게 공표됨은 물론 최종 사용자 지향적으로 분명하게 파악되는 수준으로 작성되어야 한다. 논리 데이터 모델링의 주목적은 최종 사용자 데이터에 대한 뷰(View)를 개념화하고 취상화하여 시스템 설계자들에게 전달하는 것이다. 물론 커뮤니케이션의 원칙이 최종 사용자들에게 국한되는 것은 아니다. 시스템 분석가(System Analyst)에는 사용되어질 정확한 데이터의 구조 및 데이터가 갖는 업무의 규칙 이해를 도우며 데이터 베이스 관리자(DBA,database administrator)에 있어 논리데이터 모델의 구조 물리 스키마(schema)의 차이점을 이해하고 최종 사용자에게 데이터의 제공, 시스템 분석가에게는 물리 스키마의 제공을 위한 데이터의 구조의 이해를 돕는다. 타 프로젝트에서 작업하는 분석가 일 경우, 관련 프로젝트가 데이터를 어떻게 정의하고 있는지를 알아낼 수 있으며, 인터페이스가 개발되어지고 데이터가 애플리케이션 또는 시스템간에 공유되기 위한 데이터 구조 및 업무 규칙의 이해를 돕는다. 논리 데이터 모델의 문서와 그림들 작성할 때 그 목적을 명확히 하여 모델을 보는 사람들에게 기술적으로 알아보기 힘든 혼란을 주어서는 안된다. 이 와 같이 명확한 정의를 통해 개발 관련자와 최종 사용자간의 요구사항이 전달이 정확히 전달되도록 해야한다. [3]
모델링 상세화 원칙
모델링 상세화의 원칙(Granularity Principle)은 데이터의 본질과 잠재적으로 사용을 이해할 수 있을 만큼 상세화되어야 한다는 원칙이다. 복잡한 구조는 요소적인 부분들로 쪼개야 하며 불필요한 구조와 중복을 제거함으로 상세화 한다. 설계의 분석 단계(논리 데이터 모델)을 위한 상세수준이 다른 단계(물리 데이터 모델)에서 선택된 수준만큼 상세화되어야 좋은 설계를 의미한다. 많은 모델러들이 격는 논리적 데이터 모델에서 물리적 데이터 모델로의 이동이 분해 과정이라 오해하는데 사실 논리 데이터 모델에서 물리 데이터 모델로의 이동은 분해가 아니라 보통 수준의 상세화에서 발생하는 변환이다.[3]
논리적 표현 원칙
논리적 표현 원칙(Logical Representation Principle)은 조직의 데이터에 대한 논리적 측면을 최대화하여 표현하고, 모델은 물리적 제약 조건 없이 비즈니스를 그대로 반영해야 한다는 원칙이다. 즉, 논리 데이터 모델은 특정 아키텍처, 기술 또는 제품과 독립적이어야 한다는 것이다. "요구의 이해 부족"은 최종 사용자들이 항상 시스템 개발자들에게 가지는 주요 불만 사항이다. 또한 요구사항의 분석단계와 논리적 설계를 대수롭게 여기지 않아 성급하게 물리적 설계 단계로 들어갈려하는 분석가들의 성향으로 인해 어플리케이션에 대한 빈약한 문서화의 중요 원인이 되었다. 논리적 설계와 물리적 설계를 구별하지 못하면 추구하고자 하는 물리적 선택 사항을 제한하거나 잘못된 방향으로 진행된다. 구체적으로 문제에 대한 솔루션을 섣불리 구체화하는 것은 잘못된 것이다. 문제를 해결할 수있는 데이터를 확보하여 문제로부터의 솔루션을 발견할 수 있기 때문이다. 즉, 개발 과정에서 발생할 수 있는 모든 것을 알 수 없기 때문에 솔루션의 구체화전에 문제와 요구사항에 중점을 두어 충분한 생각을 한 후에 솔루션에 대한 좋은 생각이 표현화 되었을 때 그것을 기록하여 논리 설계 다음 물리 설계자에게 전달해야 한다는 것이다. [3]
좋은 데이터 모델링의 요소
좋은 데이터 모델을 만들기 위해 고려될 평가 요소이다. 완정성, 중복 배제, 업무 규칙, 데이터 재사용, 의사 소통, 통합성이 있다.
- 완전성(Compeleteness): 업무에서 필요로 하는 모든 데이터가 데이터 모델에 정의되어 있어야 한다는 것이다. 데이터 모델을 검증하기 위해 가장 먼저 확인해야 할 부분이며, 이 기준이 충족되지 못한다면 다른 평가기준도 의미가 없어진다.[10]
- 중복배제(None-Redundancy): 하나의 데이터베이스 내에 동일한 사실은 반드시 한 번만 기록하여야한다는 것으로 예를 들어, 하나의 테이블에서 '나이'속성과 '생년월일'속성이 동시에 존재하면 이것이 데이터 중복이라 볼 수 있다. 이러한 형태의 데이터 중복관리로 인하여 여러가지 바람직하지 않은 형태로 데이터 관리 비용을 지불할 수 있다.[10]
- 업무규칙(Business Rules): 데이터 모델에서 매우 중요한 요소 중 하나가 데이터 모델링 과정에서 도출되고 규명되는 수만은 업무규칙을 데이터 모델에 표현하고 이를 해당하는 데이터 모델을 활용하는 모든 사용자가 공유할 수 있도록 제공하도록 하는 것이다. 데이터 아키텍처에서 언급되는 논리 데이터 모델에서 이러한 요소들이 매우 중요하다. [10]
- 데이터 재사용(Data Reusability): 데이터의 통합성과 독립성에 대해서 충분히 고려가 된다면 데이터 재사용성을 향상시킬 수 있는 것이다. 데이터 재사용을 높임으로써 시스템 유지보수 뿐 아니라, 신규 시스템을 구축하는 데에 있어도 매우 유리하게 작용될 수 있다. 데이터가 애플리케이션에 대해 독립적으로 설계되어야만 재사용성을 향상 시킬 수 있으며, 최대한 단순하게 적은 데이터로 분류하는 것이 확장성과 유연성을 고려했을 때 좋은 방법이다.[9]
- 의사소통(Communication): 데이터 모델의 역할 중 중요한 것이 데이터 모델의 의사소통 역할이다. 대상으로 하는 업무를 데이터 관점에서 분석하고 설계하는 과정에서 많은 업무 규칙들이 도출된다. 그러한 업무 규칙들에 대해서 해당 정보 시스템을 운용, 관리하는 많은 관련자들이 설계자가 정의한 업무 규칙들을 동일한 의미로 받아들이고 정보시스템을 활용할 수 있도록 의사소통의 도구로써 역할을 하는 것이 데이터 모델이다.[9]
- 통합성(Integration): 기업들이 과거부터 정보시스템을 구축해 왔던 방법은 개별 업무별로의 단위 정보시스템을 구축하여 현재까지 유지보수를 해오고 있는 것이 보통이다. 점진적인 확장과 보완의 방법으로 정보시스템을 구축해 왔기 때문에 동일한 성격의 데이터임에도 불구하고 전체 조직관점에서 보면 여러 곳에서 동일한 데이터가 존재하기 마련이다. 특히 이러한 데이터 중에서도 고객, 상품 등과 같이 마스터 성격의 데이터들이 분할되어 관리됨으로 인해 전체 조직 관점에서 데이터 품질, 관리, 활용 관점에서 많은 문제점들이 나타나고 있는 것이 현실이다. 따라서 데이터 모델링을 진행하는 동안 동일한 성격의 데이터를 한번만 정의함으로써 공유 데이터에 대한 구조를 여러 업무 영역에서 공동으로 사용하기 용의하도록 해야한다.[10][9]
각주
- ↑ 〈데이터 모델링〉, 《위키백과》
- ↑ 2.0 2.1 syp,〈데이터모델링〉, 《인코덤》, 2020-05-06
- ↑ 3.0 3.1 3.2 3.3 3.4 〈데이터모델링의 개요〉, 《티스토리》, 2018-08-02
- ↑ axiom, 〈권순용의 데이터모델링 이야기〉, 《구루비》, 2014-03-11
- ↑ 5.0 5.1 5.2 5.3 나는연어다, 〈DAsP - 데이터 모델링 이해 (데이터 모델링 개요)〉, 《티스토리》, 2017-11-10
- ↑ 비니아니아빠 Augustine™, 〈데이터 모델링(데이터 모델링 이해)〉, 《티스토리》, 2018-06-06
- ↑ 7.0 7.1 jihoson94, 〈[SQLD 데이터 모델링의 이해]〉, 《velog》, 2020-01-13
- ↑ 8.0 8.1 8.2 Tigercow.Door, 〈(DB 이론) #3_데이터 모델링(Data Modeling)〉, 《티스토리》, 2020-01-17
- ↑ 9.0 9.1 9.2 9.3 열정적인 Logan Moon, 〈(SQL) 데이터 모델의 이해 - TIL -〉, 《티스토리》, 2020-05-18
- ↑ 10.0 10.1 10.2 10.3 원모어찬스, 〈1-1-1(10) 좋은 데이터 모델의 요소〉, 《네이버》, 2019-11-22
참고 자료
- 〈데이터 모델링〉, 《위키백과》
- syp,〈데이터모델링〉, 《인코덤》, 2020-05-06
- 〈데이터모델링의 개요〉, 《티스토리》, 2018-08-02
- axiom, 〈권순용의 데이터모델링 이야기〉, 《구루비》, 2014-03-11
- 나는연어다, 〈DAsP - 데이터 모델링 이해 (데이터 모델링 개요)〉, 《티스토리》, 2017-11-10
- 비니아니아빠 Augustine™, 〈데이터 모델링(데이터 모델링 이해)〉, 《티스토리》, 2018-06-06
- jihoson94, 〈[SQLD 데이터 모델링의 이해]〉, 《velog》, 2020-01-13
- 원모어찬스, 〈1-1-1(10) 좋은 데이터 모델의 요소〉, 《네이버》, 2019-11-22
- 열정적인 Logan Moon, 〈(SQL) 데이터 모델의 이해 - TIL -〉, 《티스토리》, 2020-05-18
같이 보기