- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
데이터아키텍처전문가 - 국가공인자격 대학생 단무지의 DASP 도전기 4회
2014.07.03 17:08
대학생 단무지의 DASP 도전기 4회
데이터 모델링: 군 편제 모델링
1회는 DBA와 DASP 전반에 걸쳐 이야기 하였고, 2회는 전사 아키텍처, 3회 데이터 표준화를 이야기 하였습니다. 마지막 4편은 DASP의 백미 ‘데이터 모델링’에 대해 소개 하도록 하겠습니다.
단무지의 고민
단무지는 도서관에 앉아 데이터 모델링을 공부하고 있다. 책은 4개의 챕터로 구성돼 있다. 1장 데이터 모델링 이해, 2장 개념 데이터
모델링, 3장 논리 데이터 모델링, 4장 물리 데이터 모델링. 단무지는 데이터 모델링 이해 챕터부터 차례대로 읽어 나가기 시작했다. 데이터
모델링 이해를 중간까지 읽었으나, 도무지 무슨 소리를 하는지 이해가 되지 않았다. 하지만 이해하는 것보다는 끝까지 읽는 것을 목표로 활자 하나
하나를 읽어 나가기 시작했다. 200 페이지 가량 되는 분량을 5시간 동안 모두 읽었다. 다 읽고 나도 단무지의 가슴은 답답하기만 하다. 도대체
이게 무슨 소리인지 알 수가 없었다. 개념 데이터 모델은 뭐고 논리, 물리 데이터 모델은 뭐란 말인가? 그게 그거인 것 같고 머리 속은 완전
뒤죽박죽이 돼버렸다. 그리고 다음날 한 번 더 읽어볼까 생각했으나, 도저히 엄두가 나지 않았다.
단무지는 강의실에 들어왔다.
모델링 분야는 교수님이 아무리 잘 가르쳐 주신다고 해도 따라가지 못할 것만 같았다. 군에 가기 전 1, 2학년 때 같으면 이른바 ‘땡땡이’를
치며 친구들과 PC방에 들어앉아 3~4시간 게임에 몰두하고 있었을 터였다. 하지만 예비역 단무지는 많이 달라져 있었다. 한 번 힘들다고 포기하면
이 과목은 다시는 넘을 수 없을 것이다. 일단 부딪혀 보자는 심산으로 수업에 임했다. 교수님의 강의가 이어진다.
개념-논리-물리 데이터 모델링
“데이터 모델링에는 △개념 데이터 모델링 △논리 데이터 모델링 △물리 데이터 모델링 크게 3 단계로 나뉩니다. 하지만 이걸 두 단계로
나누면 그냥 논리 데이터 모델링과 물리 데이터 모델링으로 나눌 수 있습니다. 먼저 물리 데이터 모델링은 생각지 마시고, 논리 데이터 모델링만
먼저 생각해 봅시다.
자, 지금부터 여러분들은 상상에 빠져 봅시다. 잠시 잠들었다 일어 났더니 여러분들은 어떤 특정한 나라의 군대를
편제해야 하는 위치에 있습니다. 저라면 이렇게 군대를 편제해 보겠습니다. 모든 부대를 관장하는 최고 사령관을 두겠습니다. 그 사령과 아래에는
4개 정도의 군단을 둘 것이고, 다음은 각 군단마다 3개의 사단을 둘 것입니다. 그리고 사단까지는 ‘장군’이 지휘하게 할 것입니다. 그리고 그
아래에는 대대-중대-소대 이렇게 분류할 것입니다.
제가 만든 군대의 편제는 <그림>과 같습니다.
아주 쉽게 생각하면, 논리 데이터 모델링은 사령부부터 저 아래 소대까지 모두를 그려 내는 것입니다. 그럼 저 점들 하나 하나를 엔터티로 생각해 봅시다. 처음부터 사령부에서 소대까지 모두를 그려낼 수는 없을 겁니다. 왜 그럴까요? 복잡성의 한계에 직면할 것이기 때문입니다. 따라서 사령부를 만들고, 군단을 만들고, 그 하위의 사단까지만 만든 다음, 나머지 세부는 하나씩 별도로 처리하는 것이 훨씬 단순하고 수월합니다.
그럼 개념 데이터 모델링은 무엇일까요? 위에서 사단까지만 설계하는 것이 개념 데이터 모델링이 되는 겁니다. 중요한 핵심 엔터티를 추출해 전체의 모습을 구성하고, 세부적인 소대 단위까지 분해해 나가는 것이 논리 데이터 모델링입니다.
그럼 한발 더 나아가 물리 데이터 모델링은 무엇일까요? 다시 군대 이야기로 돌아가 봅시다. 저렇게 군대를 만들었으니, 이제 전장에 내 보내야 한다고 합시다. 저 군대를 정글로 보낸다면 군복 색을 어떻게 해서 보내야 할까요? 푸른색? 흰색? 그렇죠. 푸른색을 입혀 보내야겠죠. 정글 환경에 맞는 군화 등 각종 보급품을 지급해야겠죠. 그러면 이번엔 중동 사막에 파병한다면 어찌해야 할까요? 군복도 밝은 색 계열이어야 하고, 각종 보급품도 사막에서 사용하기 편리한 것으로 지급해야겠죠.
물리 데이터 모델링은 이 개념과 같습니다. 우리가 설계해 놓은 논리 데이터 모델을 Oracle에 적용을 할 것인지, DB2, Sybase 또는 SQL Server에 적용할 것인지에 따라 설계는 조금씩 달라질 수 있습니다. 즉 DBMS에 맞춰 적절하게 설계해 주는 것이 물리 데이터 모델링입니다.
개념 데이터 모델링
그럼 개념 데이터 모델링에 대해 자세히 알아보겠습니다. 한마디로 이야기 하자면 이렇습니다 ‘주제 영역을 정의하고 그 하위의 핵심 엔터티를
도출해 그들간의 관계를 정의하는 것’
말은 쉬운데, 우리가 못 알아 듣는 이야기가 세 가지 있습니다.
‘주제영역’,
‘핵심 엔터티’, ‘관계’인데요. 주제영역은 업무의 기능 분류와 같습니다. 학교 업무를 나누자면 학생처, 교무처, 입학처 등으로 나눌 수 있죠.
회사 업무도 마찬가지입니다. 인사부, 재무부 등으로 나눌 수 있습니다. 그냥 이렇게 업무에 따라 나누는 단위가 주제 영역입니다. 대형 프로젝트에
투입된 모델러가 여럿이 있다면 저렇게 각 주제 영역별로 업무를 나눌 것입니다.
그리고 핵심 엔터티인데요. 엔터티는 물리 모델링에서
테이블로 전환되는 ‘놈’입니다. 즉 테이블에 해당하는 놈을 논리 모델에서는 이렇게 부른다고 하고 넘어갑시다. 그럼 그냥 엔터티가 아니고 핵심
엔터티는 무엇일까요? 엔터티는 3개로 구분할 수 있어요. 부모가 없이 생성되는 키(Key) 엔터티, 키 엔터티들의 관계에 의해 생성되는 메인
엔터티.
메인 엔터티의 특성은 무수한 자식을 낳는다는 특징이 있습니다. 그리고 마지막으로 액션 엔터티 입니다. 어렵게 생각하지 말고
군대 편제로 따져 본다면 장군이 지휘하는 사단까지가 핵심 엔터티라(키 엔터티, 메인 엔터티) 생각하시면 이해하기 아주 편리할 겁니다. 그리고
대대 이하가 액션 엔터티가 될 것입니다.
적군이 포로를 잡을 때 소대장을 잡는 것을 좋아할까요? 아님 사단장을 잡는 것을
좋아할까요? 당연히 사단장을 더 좋아 할겁니다. 왜냐면 그만큼 많은 정보를 알고 있기 때문에 그렇습니다. 모델링에서도 본다면, 저 아래 소대를
바라보는 프로그램은 많지 않을 겁니다. 즉 액션 엔터티를 잘못 설계했을 때 다시 설계한다면 프로그램 한두 개 정도만 수정하면 될 겁니다. 하지만
키 엔터티나 액션 엔터티를 바라보는 프로그램들은 아마도 회사 내의 50% 가량 됩니다. 즉 핵심 엔터티를 재설계 한다는 것은 전체 시스템을
재개발하는 상황을 초래하게 됩니다. 전체 시스템을 재개발하는 것을 차세대시스템 구축이라 하는데요. 일반 은행에서 차세대시스템 구축 프로젝트를
진행하면 통상적으로 1,000억원 이상 소요되는 곳이 많습니다. 엄청난 금액이죠. 따라서 핵심 엔터티를 설계할 때는 굉장히 세심한 배려를 하며
설계에 임해야 합니다.
개념 데이터 모델은 이렇게 주제 영역을 정의하고 그 하위의 핵심 엔터티를 도출해 그들 간의 관계를 맺어주는
것입니다. 이제 각 핵심 엔터티들 간의 관계를 맺어주면 개념 데이터 모델은 완료 됩니다. 우리가 대부분 사용하는 데이터베이스는 RDBMS입니다.
여기서 R은 Relationship을 이야기합니다. 즉 관계형 데이터베이스입니다. 개념 데이터 모델에서도 핵심 엔터티들 간의 관계를 맺는 것도
여기서 이야기하는 관계형 데이터베이스이기에 관계가 매우 중요하죠. 이렇게 관계까지 맺어주면 개념 데이터 모델링이 끝나는 것이지요.
자 오늘 수업은 여기까지 하겠습니다.
다음 시간에는 논리 데이터 모델링을 하겠습니다. 논리 데이터 모델링은 속성의
정의, 엔터티 상세화, 이력관리의 정의 순으로 돼 있습도움이 되었고, 다시 복습한다면 거의 완벽하게 이해할 수 있을 것 같았다.
단무지, DASP 자격증을 따다
단무지는 개념 데이터 모델 수업에 이어 논리 데이터 모델, 물리 데이터 모델 진도까지 예습 복습을 빼 놓지 않고 성실히 했다. 그리고 마지막 기말고사를 치르고 강의실을 나서고 있다.
단무지: 지현아, 시험 잘 쳤어? 정지현: 아~~~ 난 망쳤어. 4문제 중 3문제만 정확하게 답을 하고 정규화 문제는 못 풀었어. 난 이론으로만 이해했는데 직접 실습 문제가 나올지는 꿈에도 몰랐지 뭐야. 어케하지? 오빠는 잘 봤어? 단무지: 나야 데이터 모델링 과목만큼은 완벽하지. 4문제 모두 완벽히 풀었어... 하하하. 데이터 모델링은 이해 → 지식의 숙성과정 → 모델링을 그리는 단계까지 학습을 해야 해. 모델링을 그려내는 단계까지 학습하지 않으면 전혀 쓸모 없는 지식일 뿐이라고. 정지현: 어쭈~~~ 오빠, 올챙이적 시절 기억 못하는 거 같은데~~~ 단무지: 그런가? 하하. 사실 이게 다 지현이 니 덕분이야. 네가 다 공부하는 방법을 알려주었고, 그 방법대로 공부한 것뿐이야. 자 중간고사도 끝났는데, 이 오라버니가 너에 대한 고마운 마음을 담아 치맥 한잔 쏜다. 가자 정지현: 오~~~ 땡큐. 시험 망친 건 잊고 술이나 한잔 해야겠다. 단무지: 그래, 가자. 정지현: 참 오빠, DASP 자격증에 도전한다고 하지 않았어? 단무지: 어, 다음달에 시험볼 거야. 벌써 시험 접수했어. 정지현: 우~~와. 오빠는 꼭 합격할 거야. 열심히 해. 내가 옆에서 도울게. 단무지: 그래 고마워
단무지는 한 달 후에 있는 DASP 시험에도 무난히 합격했다. DASP 자격증을 받아 쥔 단무지는 군 전역 후 오로지 여학생 생각밖에 없이
복학했던 때가 생각났다. 그리고 데이터베이스 개론 수업, 정지연의 도움, DASP 자격증 합격…. 이 모든 것이 꿈만 같았다. 이제는 자신감이
붙은 듯 했다. 뭘 해도 다 할 수 있을 것만 같았다. 그리고 다음 학기는 내친김에 SQLD 자격증에도 도전해 봐야겠다고 생각했다.
군 전역 후 한 학기를 알차게 마친 단무지는 예비역으로서의 남은 대학시절 계획까지 갖고 있었다. 3학년 2학기 때는 SQLD
자격증을 딸 것이며, 4학년에 들어 서서는 DB진흥원의 ‘데이터 모델링 공모전’ 학생부에 참가해 볼 심산이었다. 어차피 DBA를 하기로
마음먹었으니, 모델링 분야에 대한 이론적 지식뿐만 아니라 실무에서도 본인의 실력을 당당히 입증해 보이고 싶었다.
단무지 시즌 2를 마치고
이제 단무지 시즌 2가 완료됐습니다. 항상 탈고를 하고 나면 독자 여러분들께 고맙다는 생각이 듭니다. 끝까지 읽어주신 여러분께 다시 한번
고개 숙여 감사의 말씀을 드립니다. 진심으로 고맙습니다.
그리고 학생 여러분들께 당부 드리고 싶은 몇 가지 이야기를 덧붙여
보겠습니다. DBA가 되고 싶은 학생들이 많은 걸로 알고 있습니다. DBA가 되고 싶다면 데이터 모델링 자격증인 DASP(Data
Architecture Semi-Professional)에 도전해 보세요. 그다지 어렵지는 않을 겁니다. 그러고 나면 SQLD(SQL
Developer) 자격증에도 도전해 보시고요. 정말 좋은 자격증입니다. 추후 진정한 DBA가 되어 핵심 역할을 수행 하려면 DAP와
SQLP(SQL Professional) 자격증을 가지고 있어야 합니다. 물론 꼭 자격증이 필요한 것은 아니고, 자격증을 취득할 수준에 오르면
되겠지요. 하지만 본인의 실력을 객관적으로 입증하기에는 자격증 만한 것이 없습니다. DAP와 SQLP 자격증은 본인의 실력을 입증하기에 충분한
자격증입니다. 학생 여러분들이 나중에 시니어 자격증에 도전하는 데 DASP와 SQLD 자격증이 도움이 될 겁니다. 또한 두 자격증이 있으면 취업
후 DBA 직무로 가는 데 많은 보탬이 됩니다.
기업에서 DBA를 시킬 때는 아무런 준비가 되어 있지 않은 사람보다는 어느 정도
준비가 된 사람을 선택하겠지요. 그리고 확실히 DBA로 가는 데 보장을 받고 싶다면, 한국데이터베이스진흥원에서 주관하는 데이터모델링 공모전에 꼭
참가해 보세요. 입상하게 된다면 DBA로 취직은 보장될 겁니다. 물론 그만큼 쉽지는 않습니다. 하지만 누구나 할 수 있는 것에 도전하기보다는
누구나 쉽지 않는 것에 도전하는 것이 돌아오는 것 또한 많다는 점 명심하시고요. ^^
그리고 학생 여러분들에게 당부하고 싶은 또 한
가지가 있어서 조심스레 이야기를 해 보겠습니다. 특정 DBMS 벤더에서 주관하는 자격증 시험이 있습니다. 이 자격증을 취득하기 위해 돈과 시간을
허비하지 않았으면 합니다. 이러한 자격증은 제 경험을 놓고 볼 때, 실무에서 인정해주지 않는 곳이 많습니다. 그 자격증을 취득하기 위해서는
굉장히 많은 비용이 필요합니다. 아마도 학생시절에는 현장에 대한 지식이 없기에 이런 자격증이 취업 및 취업 후 일하는 데 많은 보탬이 될
것이라는 막연한 생각으로 도전하는 경우가 많은 것 같습니다. 제 주변에 그런 학생이 있으면 말리고 싶어서 제 개인적인 생각을 조심스레 피력해
봅니다.
빅데이터 패러다임에 대한 생각
마지막으로 요즘 한창 주가 상승중인 빅데이터에 대한 이야기를 해 보겠습니다. 빅데이터가 굉장히 선풍적인 인기를 끌고 있어서, 앞으로 굉장히
중요한 역할을 할 것 보여집니다. IT 관련 신문이나 인터넷에서 거의 매일 이야기가 나오고 있습니다. 가트너그룹에서 발표한 자료들 또한
빅데이터가 매우 유망직종으로 부상할 것으로 예측하고 있습니다. 이 이야기에 굳이 반대하고 싶은 생각은 없습니다. 또한 틀렸다고 생각되지도
않습니다.
하지만 현재의 RDB와 빅데이터를 비교하자면 RDB는 금이요, 빅데이터는 다이아몬드라고 비교하고 싶군요. 다이아몬드가
비싸고 화려합니다. 하지만 금이 기본 화폐로 쓰였던 때가 있었지요. 금을 보유한 만큼 화폐를 찍어 냈던 시절도 있었고, 지금 또한 금은 경제적
가치 척도로서 매우 중요한 역할을 하고 있습니다. 빅데이터가 아무리 화려하고, 주요한 역할을 한다고는 하나, 기업 IT의 핵심은
OLTP(online transaction processing)이며, OLTP 시스템에서 핵심중의 핵심은 RDBMS입니다. 특히나 필자가
근무하는 금융권은 더더욱 그러합니다. 한 가지 더 비교를 해보겠습니다. 인체를 통해 비교를 하자면 RDBMS는 심장, 신장, 폐와 같은 생존에
꼭 필요한 장기이나, 빅데이터는 팔, 다리와 같은 존재가 아닐까 생각합니다. 팔 다리는 불편하지 않게 잘 살아갈 수 있는 기관이지만, 생존에 꼭
필요한 기관은 아니지요.
그렇다고 빅데이터가 중요하지 않다는 이야기는 아닙니다. 지속적으로 데이터 양은 늘어나고 있으며, 대용량
데이터와 사외 데이터를 연동 분석하는 빅데이터 영역 또한 매우 중요한 위치를 차지할 것입니다. 빅데이터는 미래의 가치 창출에 매우 중요한 역할을
하게 될 것입니다. 하지만 중요한 것은 기업의 핵심 자산은 현재도 RDBMS이며, 향후 10여년 이상은 그 자리를 차지할 것입니다. 그리고
10여년 이후는 빅데이터도 RDB도 어떻게 될 것이라고 어느 누구도 쉽게 예측할 수는 없을 것이고요. 또한 기업의 핵심 역할을 수행하고 있기에
RDBMS는 유행에 따라 어느 한 순간에 사라지는 시스템은 되지 않을 것이리라 확신합니다.
단무지 시즌 3: ‘단무지 과장의 프로젝트 경험기’ 예고
이제 단무지 시즌 3편에 대해 소개해 드리겠습니다. 단무지 대리가 단무지 과장으로 승진을 합니다.
단 과장은 승진 후 처음
프로젝트에 투입돼 꽤나 고생을 합니다. 프로젝트 진행은 한치 앞을 내다 볼 수 없을 정도로 암울합니다. 어려운 프로젝트 경험을 바탕으로 회사의
중대 프로젝트에 다시 투입됩니다. 첫 프로젝트의 실패 경험을 거울삼아 중요한 프로젝트에서 단무지 과장이 활약을 하게 된다는 이야기입니다.
여기서 제가 다루고자 하는 주제는 두 가지 입니다. 첫째, 프로젝트는 각 이해관계자들이 있으며, 그 당사자들의 입장은 매우
다릅니다. 외주 개발자의 입장, 프로젝트 매니저(PM)의 입장, 고객사 현업 담당자들의 입장, 고객사 IT 매저니의 입장이 서로 다르며 복잡
미묘하게 얽혀져 있죠. 이 상황에서의 올바른 대안을 제시해 보고자 합니다.
둘째, 실패할 수밖에 없는 프로젝트와 성공할 수밖에 없는
프로젝트의 비교입니다. 실패한 프로젝트는 서로 자기는 잘 했는데, 상대방이 잘못되었다고 하죠. 책임 전가하기에 바쁩니다. 또한 성공한 프로젝트는
시간외 근무와 휴일 근무가 없으나, 실패한 프로젝트는 그렇지 않죠. 실제 근무하는 시간 또한 실패한 프로젝트가 월등히 많습니다. 그리고 실패한
프로젝트의 가장 비참한 현실은 프로젝트가 끝나자마자 서로 뒤도 안 돌아 보고 바로 헤어진다는 겁니다. 서로 마주앉아 술 한잔 하고 싶은 생각도
없어지죠. 개발사나 고객사나 그저 당장 안 보고 싶은 마음뿐입니다. 그리고 다시는 만날 수 없습니다. 고객사는 그 회사와 새로운 프로젝트를
진행하지 않고, 개발자 역시 그 사이트에 다시는 가기 싫어하죠. 이러한 상황을 피하기 위하여 잘나가는 프로젝트와 못나가는 프로젝트를 비교해 보고
그 대안을 제시해 보고자 합니다.
그럼 ‘단무지 과장의 프로젝트 경험기’도 많이 사랑해 주시길 부탁을 드립니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 오라클 기본 샘플 데이터베이스 | 졸리운_곰 | 2014.01.02 | 86160 |
| 공지 | [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE | 가을의 곰을... | 2013.02.10 | 78656 |
| 공지 | [G_SQL] Sample Database | 가을의 곰을... | 2012.05.20 | 95389 |
| 13 |
[데이터 수집 및 전처리] 주식 전종목 어떻게 불러올까? 거래소 종목 불러오기
| 졸리운_곰 | 2023.12.09 | 1701 |
| 12 |
[데이터 수집 및 전처리] [Python/파이썬]네이버증권API 활용 - 회사명, 종목코드 받아오기
| 졸리운_곰 | 2023.12.08 | 1509 |
| 11 |
[데이터 수집 및 전처리] 네이버 금융(차트)에서 주가 갈무리(크롤링)하기
| 졸리운_곰 | 2023.12.08 | 1495 |
| 10 |
[데이터 수집 및 전처리] 네이버 증권에서 일봉, 주봉 데이터 가져오기
| 졸리운_곰 | 2023.12.08 | 1499 |
| 9 |
[데이터 수집 및 전처리] (놀라운) 한글 데이터 짱! AwesomeKorean_Data
| 졸리운_곰 | 2023.03.07 | 1197 |
| 8 |
[데이터 수집 및 전처리] Crawling, Scraping
| 졸리운_곰 | 2022.05.21 | 1476 |
| 7 |
[데이터분석][데이터수집 전처리] MS 엑셀(Excel)에서 UTF-8 로 된 csv 파일 가져오기
| 졸리운_곰 | 2021.09.30 | 1415 |
| 6 | 카프카 설치 시 가장 중요한 설정 4가지 | 졸리운_곰 | 2021.07.13 | 1928 |
| 5 |
Prometheus Query(PromQL) 기본 이해하기
| 졸리운_곰 | 2020.12.17 | 1413 |
| 4 |
[인프라 모니터링 오픈소스] Prometheus 를 알아보자
| 졸리운_곰 | 2020.12.17 | 1906 |
| 3 |
Prometheus + Grafana 대시보드
| 졸리운_곰 | 2020.12.17 | 2488 |
| 2 |
Grafana란?
| 졸리운_곰 | 2020.12.17 | 2158 |
| 1 | Importing wikipedia dump to MySql | 졸리운_곰 | 2020.10.04 | 2494 |

