2. 데이터베이스란?
데이터베이스란 wikipedia에서는 "A database is an organized collection of data"라고 한다. 즉, "체계적인 데이터의 집합"이라는 말이다. 그런데 이 정의만으로는 설명이 부족한 듯하다.
예를 들어서 데이터베이스는 어떤 개념이고, 어떤 필요성으로 등장을 하였고 가장 중요한 특성은 무엇인지 등을 알고 싶은데 위와 같이 간단한 정의로는 그 내용을 알 수가 없다.
그런 내용을 알고 싶다면 아마도 데이터베이스가 탄생하기 이전 상황으로 돌아가서 데이터베이스가 어떤 필요성에 의해서 만들어졌는지, 그 역사를 들여다 볼 수 있어야만 할 것이다.
그렇다면 우리도 그 역사속으로 들어가보면 어떨까? 상상력을 동원해서 한번 과거로 돌아가 보도록 할까?
위의 그림은 어느 대학교의 상황을 가정한 그림이다. 이 대학에는 세 개의 부서가 있다.
왼쪽 상단에 있는 부서는 행정실, 오른쪽 상단의 부서는 도서관이다. 그리고 각 부서는 데이터를 각각 관리하고 있다.
행정실에서 관리하는 파일에는 학생들의 등록금 납입내역이 있고, 도서관에서 관리하는 파일에는 학생들의 도서 대여내역이 있다.
참고로, 이 도서는 재학생에게만 대여해주고 있으며, 그 업무 때문에 도서관에는 납입정보 파일도 가지고 있다. 이 파일은 행정실에서 관리하는 파일의 사본이므로 도서관에서는 읽기 전용으로만 사용한다.
자~! 그럼 데이터베이스가 없던 시절, 위와 같은 상태에서 어떤 문제점들이 있었는지 확인해보도록 하자.
문제점 1. 즉각적인 반영이 안되는 업무처리
이 대학에 다니던 유재석이라는 학생이 군대를 제대하고 행정실에 가서 복학신청과 등록금을 납입하였다. 이 학생은 오랜만에 들른 캠퍼스의 기분을 만끽하기 위해서 도서를 대여하기로 맘을 먹었다.
그래서 도서관에 가서 도서를 빌리려는데, 안타깝게도 이 학생은 도서관에서 도서를 대여 받을 수 없었다. 이유가 무엇이었을까?
애석하게도 도서관에 있는 등록금 납정정보에는 행정실에서 수정한 정보가 반영되지 않았기 때문이다. 그 데이터가 반영되기까지는 하루가 걸린다고 한다. 왜냐하면 그것이 반영되는 시기는 업무가 끝난 후에 반영했기 때문이다.
문제점 2. 동일한 데이터가 여기 저기 반복적으로 사용되어서 데이터의 결함을 유발하는 문제
각 부서가 데이터를 각자 관리하게 되면 동일한 의미의 데이터가 여러 군데 중복되어 저장되는 문제를 가지게 된다.
위의 그림에서 보는 것처럼 파란색 부분과 빨간색 부분이 모두 반복되는 것을 볼 수 있다. 이것은 데이터 수정이 이루어질 때 수정사항 중에 일부분이 누락되는 문제를 낳을 수가 있고, 그렇게 되면 전체 데이터에 결함이 생기게 된다.
사실 앞서 설명했던 1번 문제는 불편하기는 하지만 커다란 문제를 발생시키지는 않치만 2번 문제는 훨씬 심각한 문제를 발생시킬 수가 있다. 그래서 이 문제는 반드시 해결할 수 있는 방법을 강구해야만 했다.
그렇다면 이 문제는 어떻게 해결 할 수 있을까?
해결방법 : 데이터가 한 곳에 모아 놓고 사용하자.
그 해결방법은 데이터(Data)를 베이스(Base)화 하는 것이다.
각 부서가 사용하던 데이터 파일들을 위의 그림처럼 한 곳에 모아 놓고 사용하면 변경사항이 바로 반영 될 수 있으며, 무엇보다 데이터의 사본을 여기 저기 흩어 놓을 필요가 없다는 점이다. 그럼으로써 데이터가 중복되는 것을 막을 수도 있다.
뿐만 아니라 학생 데이터가 두 개의 파일에서 중복되는 부분이 있다면 이것 또한 분리해서 그것을 참조하도록 할 수 있다. 이것은 모든 데이터가 한 곳이 있기에 가능한 일이다.
데이터베이스는 이렇게 중복을 제거함으로써 데이터의 결함을 줄이는데 특화되어 있다.
데이터베이스(Data Base)라는 이름은 어찌보면 그 개념을 너무 너무 잘 설명하고 있는 이름이 아닐까 생각한다.
아직 해결되지 않은 문제
문제는 데이터베이스를 구현하기가 쉽지 않다는 점이다. 기존 방식과 달리 데이터베이스를 구현하려면 다음과 같은 문제를 해결 할 수 있어야만 한다.
1. 데이터베이스를 여럿이서 동시에 접근하는 동시성 문제
2. 데이터베이스는 공유 장소에 있기 때문에 발생하는 보안문제
3. 성능에도 신경써야 하는 문제
이런 문제를 해결할 수 있어야만 데이터베이스라는 개념을 이용할 수 있다. 그렇다면 어떤 방법으로 이문제를 해결 할 수 있을까?
다음 절에서 알아보도록 하자.