데이타베이스는 전산학 중에서 가장 많은 관심을 끌면서 이용되어온 분야이다. 어떻게 데이타베이스를 구축하느냐에 따라 컴퓨터사회의 명암이 결정된다.
컴퓨터를 기저로한 정보화사회가 성큼 다가서고 있다. 그동안 상당히 많은 부분의 일들이 수동화에서 기계화로, 기계화에서 다시 자동화로 되었으며 급기야 전산화라는 고차원적 의미의 자동화가 우리의 사회 전반에 걸쳐 휘몰아치고 있다.
세상에 존재하는 모든 데이타(자료)는 점점 컴퓨터 속에 모두 저장(기억) 시키려고 하고 있다. 저장된 데이타는 이용자가 원할 때 긴요한 정보를 제공할 수 있어야 한다. 그러나 단순히 컴퓨터 기억장치에 데이타가 저장되어 있다고 해서 원하는 정보를 제공받을 수 있겠는가? 이것은 무한한 다량의 책더미 속에서 한 두권의 필요한 책을 찾는 것에 비유할 수 있다. 그러나 이것이 불가능하다는 것은 아니다. 그러면 과연 이러한 가능성의 그 실체는 무엇인가? 이러한 질문에 대한 답을 찾기 위해서는 데이타베이스 관리시스템(Data Base Management System : DBMS)을 한번 살표볼 필요가 있다.
데이타의 공동활용
데이타베이스(Data Base)란 용어의 기원은 1962년 미국의 한 학술회의 이름에서 찾아볼 수 있다. 1946년 최초의 컴퓨터가 탄생한 후 16년 동안이라는 기간은 데이타베이스를 탄생시키기 위한 잉태기로 볼 수 있다.
하나의 프로그램은 자기가 처리해야될 데이타를 수반해서 컴퓨터 하드웨어로 하여금 처리하게 되어 있었다. 여기서 처리해야 될 데이타의 수집 정리방법은 전적으로 프로그래머에 달려 있었다. 따라서 컴퓨터의 이용자는 자연히 프로그래머라는 등식관계를 유지하게 되었다. 그러나 작성보다 더 어려운 것은 데이타의 수집 정리이다. 특히 프로그램마다 처리하려고 하는 데이타들이 서로 이중 삼중으로 중복될때 일어나는 데이타 내용의 부정확성이나 처리비용의 중복 등의 문제들은, 재래식의 단순한 데이타 처리에서 데이타의 공동활용이라는 아이디어를 창출해 내게 되었다. 이러한 문제 해결의 배경하에서 고안해 낸 해결책이 데이타베이스이다.
즉 데이타베이스는 본질적으로 공동이용이라는 특성을 내포하고 있다. 하나의 원시데이타를 가지고 용도와 목적, 이용방법이 서로 다른 이용자를 지원하는 것이다. 데이타베이스가 데이타의 집합인 것은 틀림없지만 항상 그 내용이 변하는 동적특성을 가지고 있다. 예를 들면 회사의 재고관리 데이타베이스나 주민등록 데이타베이스에서 그 내용은 시간에 따라 변하는 것이다. 따라서 흔히들 정보검색 시스템이나 문헌검색 시스템에서 다루는 데이타와는 전혀 다르다. 이러한데서 다루는 데이타는 상당히 정적인 특성을 가지고 있다. 예를들면 어떤책의 저자나 제목, 초록 등의 내용은 변하지 않는다. 또한 논문초록 데이타베이스라고 얘기할 때 각 논문의 내용이 변하는 것은 전혀 없다. 따라서 이러한 데이타의 집합을 보통 데이타 뱅크(Data Bank)라 하여 데아타베이스와 구별한다.
움직이는 데이타를 잡아라
시간이 변함에 따라 데이타의 내용이 변하는 데이타베이스를 어떻게 관리하고 유지해야 하는가? 돼지우리 속에 쉴새 없이 돌아다니는 돼지새끼 10여마리를 하나 하나 정확히 센다는 것은 책꽂이 위에 꽂아 놓은 책 1백 여권을 세는 것 보다 훨씬 더 어렵다. 이와같이 변한다는 것은 정확성을 위협하는 가장 큰 요인이 된다.
데이타베이스를 정확히 유지하기 위하여 특별히 고안해 낸 프로그램 즉 소프트웨어가 데이타베이스 관리시스템(Data Base Management System : DBMS)이다. 이것은 보통 컴퓨터 시스템 내에서 상주하면서 이용자를 지원하기 때문에 시스템 소프트웨어라 할 수 있다.
DBMS가 수행하는 기능의 중요성과 필요성은 사서관이 없는 대형 도서관을 생각해 보면 된다. 도서관 내부에 익숙치 못한 이용자 각자가 서고에 들어가 원하는 책을 찾거나 책을 뽑아 나오거나 새로운 책을 꽂아 놓는다면 불편과 무질서, 관리부재의 결과를 초래하게 될 것이다. 그러나 사서관을 통해 도서관을 이용하는 곳에서는 서고 내부에 대해서는 전문 사서관이 일정한 규칙에 따라 조직적이고 체계적으로 관리 유지하고 있기 때문에 이용자의 요청에 신속 정확하게 대처할 수 있다.
DBMS는 바로 도서관의 사서관에 해당하는 임무를 수행한다. 데이타베이스를 공동이용하는 이용자는 자기의 요구를 DBMS에게 전달하기만 하면 된다. 그러면 그 요구에 필요한 조치는 DBMS가 판단해서 가장 적절한 방법으로 수행한다. 즉 데이타베이스에 있는 데이타를 '어떻게' 검색, 삽입, 삭제, 갱신하느냐 하는 것은 모두 DBMS가 수행한다. 더 나아가 어떻게 서비스 방법을 개선해 나갈 수 있느냐 하는 것도 이용자와는 관계없이 DBMS가 도맡아서 처리하는것이다. 다만 이용자는 이 DBMS에게 자기의 요구사항을 정확히 표현 전달해 줄 책임이 있다.
이 요구사항을 표현하는 방법은 프로그램을 사용하거나 아니면 간단한 질의어를 사용하기도 한다. 물론 이용자의 입장에서 볼 때 자기의 데이타 요구사항을 그 DBMS가 이해할 수 있는 언어로 얼마나 쉽게 정확히 표현할 수 있느냐 하는 것이 그 DBMS에 대한 편의도의 측정이 된다. 또한 표현만이 문제가 아니라 얼마나 빨리 또 정확히 요구사항을 수행해주느냐 하는 것도 그 DBMS의 성능을 평가하는 기준이 된다.
여기서 한가지 주의해 볼 것은 데이타베이스 사용자가 반드시 프로그램을 작성하지 않고도 원하는 데이타를 검색, 삽입, 삭제, 갱신할 수 있기 때문에 컴퓨터 프로그래머가 아닌 일반인들도 데이타베이스를 이용할 수 있다는 점이다. 즉 컴퓨터 이용자가 프로그래머라는 등식관계를 DBMS가 깬 것이다. 이러한 면에서 볼 때 컴퓨터 이용의 대중화 또는 일반화에 큰 계기가 된 것이 이 DBMS이다.
또한 프로그래머의 입장에서 볼때 실제로 데이타를 어떻게 저장하거나 정렬시키나 하는데는 신경쓰지 않고 원하는 대로만 DBMS에게 요구하면 되니까 그만큼 데이타 처리 그 자체에 더 집중할 수 있게 되는 것이다.
사용자의 입장에서 구별
데이타베이스 관리시스템은 1962년 당시 미국 '제네랄 일렉트릭' 회사의 '바크만'(Bachman)이 제작한 IDS(Integrated Data Store)가 최초의 것이라 할 수 있다. 이 IDS는 현재 '하니웰'회사의 IDSⅡ의 모체이다.
DBMS는 현재 개인용 컴퓨터에서 부터 대형 컴퓨터에 이르기 까지 모든 기종에 설치할 수 있는 수백종의 DBMS가 개발되어 있다. 가격면에서 볼때 수백 달러에서 부터 수십만 달러에 이르는 값비싼 DBMS도 있다. 실제 대형 컴퓨터에 설치할 수 있는 범용 DBMS 하나를 개발하는데는 수백만 불의 제작비와 상당한 개발기간이 소요된다. 이들은 결국 처리할 수 있는 데이타의 양과 성능면에서 크게 차이가 있다고 할 수 있겠다.
그러나 DBMS는 그 가격이나 설치할 수 있는 컴퓨터의 유형에 따라 구분하지 않고 사용자의 입장에서 보아 데이타가 저장되어 있는 형태에 따라 구별하는 것이 보통이다. 그렇게 사용자의 입장에서 보았을 때의 데이타 저장형태를 표현한 것을 '데이타 모델'이라 하는데 DBMS는 바로 이 데이타 모델에 따라 그 유형을 구별한다. 왜냐하면 어느 DBMS도 어느 하나의 특정 데이타 모델에 따라 처리해 줄 수 있는 능력 밖에 갖지 못하기 때문이다.
데이타모델로서 대표적인 것은 계층 데이타 모델(Hierarchical Data Model), 네트웍 데이타 모델(Network Data Model), 관계 데이타 모델(Relational Data Model)이 있다. 따라서 자연히 DBMS도 계층형 DBMS, 네트웍 DBMS, 그리고 관계형 DBMS로 나눌 수 있다.
계층형 DBMS는 데이타베이스내의 데이타들이 트리 (tree)형태의 구조로 저장되어 있다고 이용가자 생각하고 접근하면 된다. 트리에서 볼 수 있듯이 데이타와 데이타 사이의 관계는 링크(link)로 연결되어 있다. 따라서 모든 데이타의 처리가 바로 이 트리 형태를 기초로 수행된다고 이용자는 생각한다. 이러한 유형에 속하는 DBMS는 IBM회사의 IMS와 '인텔'회사의 시스템 2000이 대표적인 것이다.
네트웍 DBMS는 데이타베이스내의 데이타들이 그래프 형태로 조직되어 저장된 것으로 이용자가 생각할 수 있게 만들어 준다. 따라서 계층 DBMS와 같이 모든 데이타의 검색, 삽입, 삭제 갱신은 이 그래프 형태의 테두리 안에서 수행된다. 이 네트웍 DBMS는 1971년 CODASYL(Conference on Data Systems Language) DBTG(Data Base Task Group)에서 작성한 네트웍 DBMS 명세서가 주축이 되기 때문에 종종 DBTG DBMS 또는 CODASYL DBMS라고도 한다. 이러한 네트웍 DBMS에 속하는 것으로서는 '신콤'(CINCOM)회사의 TOTAL, '유니백'(UNIVAC)회사의 DMS1100 등 상당히 많다. 일찌기 '바크만'이 개발한 IDS도 네트웍 DBMS이지만 DBTG 명세가 나오기 전에 개발되었기 떄문에 DBTG 형태와는 다른 것이다.
마지막 부류이면서 최근에 가장 많이 활용되어지고 있는 DBMS가 관계형이다. 이 관계 DBMS에서 이용자는 데이타 베이스 내의 데이타가 모두 테이블 형태로 저장되어 있다고 생각한다. 따라서 이 DBMS에서 데이타의 검색, 삽입, 삭제, 갱신 등은 모두 테이블을 중심으로 행과 열을 기본 단위로 하여 수행된다. 즉 한 레코드의 삽입은 한 테이블에서 행 하나를 참가시키는 것이 되고 삭제는 그 반대로 행 하나를 제거하는 것이 된다.
이러한 관계형 BDMS는 1970년 '코드'(E.F.Codd)가 제안한 이론을 바탕으로 1979년부터 선을 보인 '오러클' 회사의 ORACLE, TRI 회사의 INGRES, IBM 회사의 SQL/DS와 DB2가 모두 이 유형에 속한다.
누구라도 이용할 수 있다
데이타베이스는 데이타의 중복저장이나 처리에서 일어나는 문제를 해결하기 위한 방법의 하나로 데이타의 공용을 목적으로 개발된 시스템이다. 그러나 초기의 DBMS는 그 사용자에게 요구하는 지식이 너무 전문적이었다. 즉 데이타베이스 사용자는 프로그램을 작성할 수 있는 능력 뿐만이 아니라 DBMS의 기능에 대한 지식도 함께 요구하였기 때문에 DBMS에 대한 활용은 고급 프로그래머에 국한되게 되었다. 특히 네트웍 DBMS와 계층 DBMS의 이용자는 일반적으로 숙련된 응용 프로그래머라고 가정하였기 때문에 초보 프로그래머나 일반인들은 이들을 활용할 수가 없었다.
이러한 상황은 마치 아주 복잡한 조정장치가 달린 카메라가 오히려 조작의 어려움으로 인해 사진 기술자 이외에는 아무도 사용하지 못하게 하는 것과 비슷하다. 요즈음의 카메라는 물론 어린아이까지도 다룰 수 있게끔 모든 것이 단순화내지는 있동화 되었다. 이러한 경향은 DBMS에 그대로 적용되고 있다고 볼 수 있다.
네트웍이 계층 DBMS에서 겪은 사용의 어려움을 탈피하기 위하여 고안하게 된것이 앞에서 설명한 관계 DBMS이다. 이 시스템은 기본적으로 구조 자체가 테이블이라는 이해하기 쉬운 단순생 개념에 기초를 두었기 때문에 데이타를 처리하는 방법에서도 개념적으로 간단하다. 특히 시스템에 이용자의 요구를 표현하는 도구로 사용하는 언어가 프로그래밍 언어뿐만이 아니라 일반 이용자도 쉽게 구사할 수 있는 명령문 형태의 질의어를 사용할 수 있기 때문에 데이타베이스 이용자의 자격조건을 크게 완화 시킨 결과가 된다.
이러한 관계DBMS의 장점이 높게 평가되어 지금 컴퓨터 공급업자들은 물론 소프트웨어 공급업자들도 기존의 네트워크나 계층 DBMS에서 관계 DBMS로 전향하여 공급지원하는 추세에 있다. 이러한 추세는 80년대 말까지는 대다수의 DBMS가 관계 DBMS로 대체 내지는 확산될 전망이다.
특히 현재는 질의어의 범주를 벗어나 일상 사용하는 자연어를 통해 데이타베이스를 이용할 수 있는 기법들을 연구하고 있다.
우리나라에서는 서울대학교 데이타 베이스 연구실에서 한글 자연어를 이용한 데이타 베이스의 검색, 삽입, 삭제, 갱신을 할 수 있는 시스템을 연구하고 있다. 이러한 연구들이 성공적으로 결실을 맺을때 진정한 데이타 베이스의 공동활용이 이루어 질 것이다.