데이터 베이스 : 정형화된 대량 데이터를 효율적으로 관리하는 기술
워드나 파워포인트 같은 작업을 하다가 프로그램이 갑자기 죽어 기껏 작성한 자료를 다 잃어버리는 일이 있다. 다행히 자동저장 기능이 있어 임시 파일이라도 있으면 다행이지만 그도 아니면 대략 난감하다.
컴퓨터에서 작성한 자료, 정보, 데이터는 저장장치에 저장히지 않으면 컴퓨터가 꺼지면 모두 사라진다. 자료든 정보든 데이터든, 저장장치에 제대로 저장되어야 다시 사용할 수 있다. 어쩌면 컴퓨터의 가장 중요한 기능이 데이터를 저장하는 것이 아닐까.
데이터 관리라는 것은 데이터를 저장하고 저장된 데이터를 다시 조회하거나, 이미 저장된 데이터를 갱신, 또는 삭제하는 일이다. 데이터를 관리하는 것은 IT의 본질적인 핵심기능이다. 데이터를 보관하는 방법은 크게 두 가지로 나눌 수 있다. 데이터를 파일에 저장하거나 데이터 베이스에 저장하는 것이다.
파일에 데이터를 저장하는 것은 익숙하다. 매일 사용하는 문서편집기에서 저장하면 작업 내용이 파일에 저장된다. 하지만 파일 방식은 쉽게 저장하는 면에서는 편리하지만 많은 데이터를 관리(저장, 검색, 갱신, 삭제)를 하기에는 어려움이 많다. 국내 최대의 이동통신사의 고객수가 1,300만 명 정도 된다고 하는데 이렇게 많은 고객의 데이터와 매 초마다 쏟아지는 그들의 통화기록을 관리하기에는 파일 방식은 아무래도 무리이다.
이런 방대한 데이터를 좀 더 효율적으로 관리하기 위해 고안된 것이 데이터 베이스이다. 그러나 모든 데이터를 데이터 베이스로 관리할 수 없다.
데이터는 크게 정형 데이터와 비정형 데이터로 구분할 수 있는데, 비정형데이터는 데이터 베이스로 관리하기에 부적합해서 여전히 파일로 관리한다.
정형 데이터(Structured Data)는 미리 정해 놓은 형식과 구조에 따라 저장 수 있는 데이터이다. 쉽게 말하면 표로 만들 수 있는 데이터이다. 표는 데이터의 항목 즉 컬럼이 각 컬럼에 맞는 데이터가 들어간다. 이렇게 데이터의 형식과 구조가 정확한 정형 데이터는 데이터 베이스를 만들기에 적합하다. 대부분의 일반적인 업무, 거래는 정형화된 데이터를 기반으로 시스템이 구축되어 있다.
비정형 데이터(Unstructured Data)는 데이터의 형식과 구조를 만들 수 없는 데이터이다. 워드나 파워포인트에 작성하는 대부분의 문서가 여기에 해당한다. 동영상, 오디오, 사진, 메일 본문 등이 비정형 데이터이다. 이러한 데이터는 구조(표)를 만들 수 없어 파일로 관리할 수밖에 없다.
최근 CPU, GPU와 같은 하드웨어와 데이터 처리 기술이 발전하면서 비정형 데이터를 분석할 수 있게 되었다. 파일에 갇혀 있던 데이터를 가공하고 분석할 수 있게 되었다. 페이스북, 트위트에 올라오는 수많은 글과 같은 비정형 데이터를 분석하여 인사이트를 도출하고 있다. 이것이 빅데이터 기술의 핵심이라 할 수 있다.
(빅데이터에 대해서는 차후 필요하면 다시 살펴볼 것이다.)
표로 만들 수 있는(구조화된) 데이터라야 데이터 베이스를 만들 수 있다. 하지만 모든 데이터가 쉽게 구조화될 수 있도록 되어 있지 않다. 우리가 자료를 표로 만들 때처럼 일상의 데이터를 구조화하는데도 분석이 필요하다. 이렇게 데이터를 구조화하는 과정을 데이터 모델링이라고 한다.(이에 대해 다시 설명할 것임)
데이터 베이스도 데이터를 저장하는 방법에 따라 종류가 많지만, 이 글은 데이터 베이스 이론 강의가 아니므로, 여기서는 가장 기본적이고 일반적인 관계형 데이터 베이스를 중으로 살펴볼 것이다.
|데이터 베이스의 그림 표현|
데이터 베이스(DB)는 데이터 베이스 관리 시스템(DBMS)의 줄임말이다. DB는 데이터를 관리하는 SW이다. 한글 문서를 보려면 한글 프로그램이 필요하듯, DB에 데이터를 저장, 검색, 갱신, 삭제하려면 DBMS라는 SW가 필요하다.
일반적으로 DB 하면 원통형의 아이콘으로 표시하는데, 이 아이콘은 데이터를 저장되는 원통형 자기 디스크를 의미한다. 자기 디스크는 데이터를 저장하는 저장 매체, 즉 하드웨어다. 그래서 일반인들이 DB 하면 저장매체인 디스크라고 생각하기 쉽다. 다시 말하지만 DB는 데이터가 저장되는 하드 디스크가 아니고 데이터를 관리하는 SW이다. 마치 워드나 한글이 문서 편집 SW인 것처럼.
*최근에는 저장 매체도 디스크가 아닌 반도체 메모리를 많이 사용한다. 따라서 이런 원통형 디스크는 사실 잘 사용하지 않는다. 말 그대로 유물이다. 마치 문서편집 프로그램에 [저장] 아이콘이 아직도 디스켓 모양을 하고 있는 것과 유사하다. (요즘 세대들은 이 아이콘이 왜 [저장]을 의미하는지 이해를 못 한다.)
데이터 베이스로 데이터를 관리하는 것은 우리가 엑셀에서 표를 만드는 것과 유사하다. 아래는 한 대학강의 수강생들 학생기본사항을 표로 만든 것이다.
데이터 베이스에서 데이터를 관리하는 방법도 이런 표를 만드는 것과 비슷하다. 데이터 베이스에서는 표를 테이블이라고 한다. 그리고 표의 컬럼을 어트리뷰터 또는 필드라고 하고, 표의 데이터 열을 레코드라 한다. 따라서 [학생기본사항]이라는 테이블을 만들고, 그 테이블 내에 [이름] [성별] [주소] [생년월일] 필드를 만든다. 테이블이 생성되면 테이블에 데이터를 추가하면 표처럼 5개의 레코드가 생성된다.
테이블에는 무한정 레코드를 추가할 수 있다. 수많은 레코드 중 개별 레코드는 다른 레코드와 다른 유니크한 키값을 가져야 한다. 다시 말해 하나의 레코드만을 특정할 수 있어야 한다.(이를 '유일성'이라 한다.) 이는 마치 우리가 이메일 아이디를 만들 때 중복되는 않는 세계에서 유일한 것이어야 하는 것과 유사하다.
[학생기본사항] 테이블에서 이름으로 데이터를 선택한다면 '김윤서'라는 이름이 두 개이므로 유일(Unique) 하지 않다. [학생기본사항] 테이블에서는 유일성을 확보하기 위해 [이름]+[생년월일] 두 개의 필드를 키로 한다면 유일성을 확보할 수 있을 것 같다. 그러나 생일도 똑같다면 또 다른 필드를 더 추가해야 한다.
데이터의 유일성이 보장되지 않으면 어떤 데이터를 선택할지 알 수 없다. 따라서 백만 건이건 천만 건이건 하나의 테이블에 들어있는 데이터는 유일성이 보장되어야 한다.
따라서 [학생기본사항] 테이블과 같은 경우 유일성을 확보할 수 있도록 유일성을 보장하는 키가 될 수 있는 필드를 추가하는 것이 좋다. 유일성을 확보할 수 있는 번호라는 필드를 추가하고 테이블 내에 중복되지 않도록 학생들에게 번호를 부여하면 된다. 일상에서는 이름과 성별로 학생을 한 명 한 명을 식별하지만 데이터 베이스는 번호로 학생 한 명 한 명 정확하게 식별할 것이다.
그러나 학생의 단순한 인적사항만 다루기 위해 데이터 베이스를 만들지는 않는다. 이를 기본으로 더 많은 데이터를 관리해야 할 필요가 있다. 추가로 학생들의 성적 데이터를 관리한다면,
새로운 필드 [과목] [점수]를 추가하고 학생별 과목 점수 데이터를 생성한다. 테이블의 레코드 수가 늘어났다.
그러나 위 [학생기본사항] 테이블이 과목별 점수를 관리하는 것은 비효율적인 면이 있다. 어떤 점이 그런지 발견을 하였는지? 발견을 했다면 대단한 통찰력이라고 하겠다(DBA로 자질이 풍부^^).
레코드를 자세히 살표 보면 중복되는 데이터가 많다. [과목] 별 점수를 입력하다 보니 앞의 [번호].... [생년월일] 필드의 같은 데이터가 계속 반복된다. 여기서는 두 과목이지만 만약 10과목이라면 10개의 데이터가 계속 중복될 것이다. 중복 데이터는 데이터 사이즈를 늘려 저장 공간을 잡아먹을 것이고 또 처리 속도를 늦출 것이다.
데이터 중복을 없애기 위해 어떻게 해야 할까?
그렇다. 여러분들이 예상한 대로 테이블을 분리하는 것이다. 별도로 [과목별 성적]이라는 테이블을 만들어서 점수 데이터를 입력한다. 과목별 성적은 어느 학생의 점수인지 알아야 하기 때문에 학생기본 정보와 연결되어야 한다. 그래서 [과목별 성적] 테이블에 [학생기본사항] 테이블의 유일성을 보장하는 키 값 필드인 [번호] 필드를 추가하여 과목 성적이 어느 학생의 점수인지 알 수 있도록 했다.
이와 같이 두 테이블을 키 값(여기서는 [번호] 필드)으로 연결하는 것이 관계형 데이터 베이스다.
김윤서 학생의 점수를 알기 위해 [학생기본사항] 테이블에서 김윤서 학생을 조회한다. 두 명의 김윤서 학생이 나오면 우리가 알고자 하는 김윤서 학생의 번호가 3번이라면, [과목별 성적] 테이블에서 번호가 3번의 데이터를 조회하면 3번 김윤서 학생의 두 개의 과목 점수를 조회할 수 있다.
(이러한 과정을 실행하는 데이터 베이스 실행 언어가 SQL이다. 위 과정은 SQL 한 문장으로 실행될 수 있다.)
관계형 데이터 베이스는 데이터의 중복을 최소화하기 위해 필요에 따라 테이블로 쪼개고, 이렇게 쪼개진 테이블과 테이블은 키 값을 공유하여 테이블 간의 관계를 만들어, 유일(Unique)한 개별 데이터와 연계된 모든 데이터를 관리할 수 있도록 한다.(말이 복잡한데 충분히 위의 예시를 보면 무슨 말인지 이해하리라 생각함^^)
*[학생기본사항] 테이블 하나에 점수를 관리하면 7개 필드 X 10개 레코드 = 70개 데이터가 생성되고
[과목별 성적] 테이블로 분리해 두 개 테이블로 관리하면 (5x5 = 25) + (3 x 10 = 30) = 55개 데이터
=> 테이블을 분리하는 경우가 데이터의 양이 15개 적다.
초간단 데이터 베이스에 대해 알아보았다. 데이터 베이스 하나만으로도 최소 한 학기의 양이다. 이 정도만 이해한다 하더라도 데이터 베이스 관련 직업을 이해하기에 적정할 것 같다. 더 깊게 알아보고 싶으면 자료들이 많이 있으므로 직접 찾아보기 바란다.
앞서 말한 국내 최대 이동통신사의 고객 수가 1,300만 명, 국내 최대 은행의 고객 수는 3,000만 명이 넘는다. 이들 고객의 기본 정보와 거래를 저장하기 위해 수백 개의 테이블이 필요하다. 매 초 수천 건 실시간으로 데이터가 조회되고 입력하고 갱신될 것이다. 이런 과정을 묵묵히 실행하는 것이 DBMS다. 프로그램과 마찬가지로 DB가 잠시라도 멈춘다면 모든 업무가 마비된다. 또 거래 과정 데이터가 유실되거나 제대로 처리가 되지 않는다면 데이터는 신뢰성을 잃는다. 신뢰할 수 없는 데이터는 가치가 없다.
DB는 IT에서 가장 중요한 자원이다. 사용자가 원하는 고품질의 프로그램을 개발자가 개발하는 것이 중요한 것처럼, 데이터의 신뢰성과 DB의 성능을 보장하는 데이터 베이스를 구축하고 문제없도록 운영하는 데이터 베이스 관리자의 역할의 중요성도 두말할 필요가 없다.
체계적이고 보완된 내용으로 브런치 글과 같은 이름으로 출간을 하게되었습니다. 아래의 링크를 통해 자세한 내용을 확인할 수 있습니다.
교보문고
나에게 맞는 IT 직업 찾기
예스24
나에게 맞는 IT 직업 찾기
알라딘
나에게 맞는 IT 직업 찾기
다음 편에는 데이터 베이스 관리자(DBA)의 기술과 자격에 대해 알아볼 것이다.