brunch

You can make anything
by writing

C.S.Lewis

by 김유환 Sep 06. 2019

2. 데이터베이스 이해하기

왜 제대로된 데이터분석은 데이터베이스를 기반으로 해야하는가? (2/2)

배경

데이터 베이스에 대해서 알아보기 전에, 스프레드시트 기반 업무의 문제점을 다시 한번 정리하고 넘어갑시다. 여러 명이 다루는 데이터, 정확하고 깊은 분석이 필요한 데이터의 경우 스프레드시트로 관리하면 아래와 같은 문제점들을 야기하게 됩니다.


1. 동시 수정 문제 - 여러명이 동시에 하나의 정보를 수정하는 경우 데이터 일관성이 깨짐

2. 오타 문제 - 열의 속성에 맞지 않는 데이터가 입력되는 경우 데이터 무결성이 깨짐

3. 처리 속도 문제 - 기본으로 모든 데이터를 테이블 형태로 시각화하기 때문에 데이터가 많아지면 매우 느려짐

4. 데이터 탐구 어려움 - 데이터 저장소와 분석 장소가 구분되어있지 않아 데이터 탐구하는 비용이 매우 높음


데이터베이스 구조

지금부터는 데이터베이스가 어떻게 스프레드시트 기반 업무의 문제점을 해결하는지 알아보도록 합시다. 이 해결방안의 핵심에는 DBMS (Database Management System) 가 있습니다.

위 그림에 있는 3가지 요소 저장소(Storage), DBMS, 앱(Application)에 대해 살펴봅시다. 먼저, 데이터베이스는 DBMS 와 저장소 2가지로 구분되어있습니다. 여기서 이야기하는 저장소는 데이터가 저장되는 파일 혹은 폴더입니다. DBMS 는 이 저장소에 직접 접근해서 데이터를 저장, 수정, 추출하는 프로그램입니다. 앱(Application)은 사용자가 DBMS 에 요청을 보내기 위한 프로그램입니다. 


스프레드시트는 사용자가 데이터 저장소와 직접 소통하는 방식입니다. 사용자가 스프레드시트로 파일을 열면 모든 데이터가 불러와져서 화면에 그려지고, 셀 내용을 변경하면 바로 저장되는 방식입니다. 하지만, 데이터베이스는 사용자가 반드시 DBMS 를 통해서만 데이터 저장소에 접근하도록 합니다. 사용자는 데이터를 얻고 싶을때는 DBMS 에 데이터를 얻고 싶다고 요청해야하고, 데이터를 추가하고 싶을때도 이런 데이터를 추가하고 싶다고 DBMS 에 요청해야합니다. 지금부터는 DBMS가 어떻게 스프레드시트의 문제점을 해결하는지 살펴봅시다.


1. 동시 수정 지원

스프레드시트는 저장소에 동시에 접속해서 수정을 했기 때문에, 데이터가 한 행 안에서 셀 정보가 덮어씌워져 버려 데이터의 일관성에 문제가 발생했습니다. DBMS 는 여러명의 사용자가 동시에 요청을 보내는 것을 지원합니다. 하지만, 요청을 셀 단위가 아닌 행단위로 하기 때문에, 하나의 행 안에서 데이터 일관성이 깨지는 문제가 발생하지 않습니다. 예를 들어, A라는 사람은 스타벅스 평점을 5점을 주고, B라는 사람은 1점을 주었다고 가정합시다. 스프레드시트에서는 셀단위로 데이터가 수정되기 때문에 동시 수정 과정에서 A가 1점을 주었다고 쓰여질 위험이 있습니다. 하지만, DBMS는 'A가 1점', 'B가 5점' 즉 하나의 행 단위로 수정이 이루어지기 때문에 이런 문제가 발생하지 않습니다.


2. 무결성 지원

두번째 문제인 오타 문제는 데이터를 저장소에 보내기 전에 DBMS 가 데이터 검증을 진행하면서 이룰 수 있습니다. 예를 들어, 입출금 정보 데이터에서 금액 정보는 반드시 숫자여야만 합니다. 여기에 문자가 들어가면 나중에 통계 정보를 뽑을 때 문제가 발생합니다. 스프레드시트는 데이터를 넣는 사람이 매우 조심히 데이터를 넣거나, 잘못되더라도 저장소의 데이터가 변경된 이후에 이를 확인할 수 있습니다. 하지만, DBMS 는 데이터를 넣기 전에 저장소 테이블 명세를 가지고 이를 검증하고 잘못된 경우, 저장소를 건드리지 않고 사용자에게 오류 메세지를 보냅니다.


3. 빠른 처리 속도

스프레드시트는 모든 데이터를 직접 보면서 수정하기 때문에 프로그램을 실행하면 모든 데이터를 가져와서 보여줘야 하지만, 데이터베이스는 그럴 필요가 없습니다. 사용자는 DBMS 에 접속하는 프로그램을 켜고, 자신이 필요한 정보만을 요청해서 받으면 됩니다. 만약, 수정이나 추가만 해야하는 상황이라면 데이터를 추출해서 그려볼 이유도 없습니다.


4. 쉬운 데이터 탐구

데이터베이스에서 사용자는 DBMS 를 통해 데이터를 추출해서 데이터를 살펴보기 때문에 저장소를 전혀 건드리지 않습니다. 한 사용자는 남자 데이터만 보고 싶고, 다른 사용자는 어제 날짜 데이터만 보고 싶더라도 저장소에서 분석이 일어나지 않기 때문에 아무런 문제도 일어나지 않습니다. 쉽게 생각하면 DBMS 에서 내가 분석에 필요한 정보만 계속 복사해서 가져오고 저장소는 데이터 분석 과정에서 아무런 변화도 일어나지 않는 것 입니다.



SQL

지금까지 이야기에서 DBMS 에 요청만 하면 모든 것이 해결된다고 이야기 했습니다. 그렇다면, DBMS 에 어떻게 요청을 보내는 걸까요? 이 요청을 보내는 방법이 바로 SQL 입니다. SQL 은 Structured Query Language의 약자로, 발음은 그대로 "에스큐엘" 이라고도 하며 "씨퀄" 이라고도 합니다. 굳이 해석해보자면 구조화된 질의 언어라고 해석할 수 있을 듯 합니다. 다시 말해, DBMS 에 요청하기 위해서 사용하는 언어입니다.


"어제 가입한 남자 사용자들의 전화번호 100개 추출해" 라고 DBMS 에 명령어를 내릴 수 있으면 좋겠지만, 아직 기술이 여기까지 발전하지는 못했습니다. 이 명령어를 SQL 로 만들어 보면 다음과 같습니다. DBMS 에게 위의 명령어를 보내면 이를 분석해서 원하는 정보를 돌려줍니다.



Application

마지막으로, 어플리케이션은 데이터베이스에 접속해서 DBMS 에 요청을 보내고 결과를 보는 것을 편하게 해주는 프로그램입니다. 인터넷에 접속하기 위해서 인터넷 익스플로러, 크롬, 사파리 등 다양한 브라우저 어플리케이션이 존재하듯이, 데이터베이스에 접속하는 프로그램도 다양합니다. 이 부분은 데이터베이스 접속 관련 글에서 실제 연습을 해보면서 더 깊이 다루고자 합니다.


마치며

이 글에서는 데이터베이스가 어떤 구조로 구성되어있는지, 사용자까지 어떤 흐름으로 데이터가 전달되는지, 이것이 어떤 장점이 있는지, 그리고 이를 위해 왜 SQL이 필요한지까지 다루었습니다. 이 글이 데이터 분석에 관심을 가지고 있는 입문자들의 시작에 도움이 되었으면 합니다. 다음 글 데이터베이스 설치하기에서는 데이터베이스 프로그램이 실제 컴퓨터에 어떻게 설치되는지 살펴봅시다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari