데이터베이스란 무엇일까?
데이터베이스는 서로 관계있는 데이터들의 모임이다.
굉장히 광범위하게 사용되는 데 회계, 인적 자원, 은행, 학교, 항공사 등 많은 곳에서 빼놓을 수 없다.
초기에는 사용자는 서비스 직원이나 서류를 통해서 간접적으로 데이터베이스에 접근했지만 최근에는 ATM을 이용하는 등 직접 데이터베이스에 접근하는 경우가 많아졌다.
따라서 여러 단계의 추상화를 통해 데이터베이스의 복잡한 구조를 되도록 감추어 사용자의 이해화 편의를 도와야 한다.
데이터베이스를 관리하는 데 있어 DBMS를 사용하는 데 DBMS란 데이터베이스 관리 시스템이다.
DBMS의 주요 목적은 데이터베이스에 정보를 저장하고 이를 검색하기 위한 편리하고 효율적인 환경을 제공하는 데 있다.
* 왼쪽은 DBMS로 관리하는 DB시스템, 오른쪽은 DBMS 이전 파일-처리 시스템이다. AP는 Application 응용프로그램을 뜻한다.
파일-처리 시스템에서는 파일 1개당 어플리케이션 1개가 필요하였다. 데이터가 분할되고 아래에서 설명할 문제들 때문에 DBMS가 등장하였다.
어플리케이션과 DB는직접 소통하지 않고 DBMS를 통해서 관리되어진다. 따라서 DB가 바뀐다고 AP가 바뀔 필요가 없어지는 등 개선이 되었다.
이제 DBMS가 등장하기 전의 파일-처리 시스템의 문제점에 대하여 알아보겠다.
파일-처리 시스템
DBMS가 등장하기 전까지는 운영체제상의 파일에 각종 데이터들을 저장하였다. 이때 많은 단점들이 있다.
1. 데이터의 중복과 비일관성
프로그램이 장기간 운용되다보면 많은 개발자에 의해 다루어진다. 이때 파일과 응용프로그램들이 기존과 다르게 작성될 수 있다.
이때 데이터베이스에 중복된 정보들이 작성될 수 있다. 중복된 정보들은 저장 공간의 낭비를 초래하고, 액세스 비용도 증가하게 한다.
이런 중복 문제는 데이터의 비일관성(inconsistency)으로 이어진다. 동일한 데이터의 여러 사본이 서로 다른 값을 보유하고 있는 상태를 뜻한다.
2. 데이터 액세스 시의 난점
예를들어 대학교 직원이 특정 도시에 사는 학생들의 정보가 필요하다고 하자. 프로그래머는 그 문제를 해결할 수 있는 응용프로그램을 만들 것이다.
그러나 다른 조건으로 찾고 싶을 때는 다시 또 응용프로그램을 만들어야한다. 물론 수작업으로 찾을 수도 있고 응용프로그램을 만드는 데 문제가 되지 않는다.
다만, 필요한 데이터를 편리하고 효율적으로 검색하기가 힘들다.
3. 데이터의 고립
데이터가 여러 파일에 흩어져 있고 파일 형식이 서로 다를 수 있기 때문에 원하는 데이터를 검색하는 프로그램을 새로 작성하기 어렵다.
4. 무결성(integrity) 문제
데이터베이스에 저장된 데이터 값들은 어떤 형식의 일관성 제약조건(consistency constraint)들을 만족해야한다.
예를 들어 '계좌 잔고가 음수가 되면 안된다' 혹은 '날짜에서 12보다 큰 수의 달은 존재하지 않는다' 등이 있다.
새로운 제약조건이 주어졌을 때 기존 프로그램을 수정하는 것은 쉽지 않으며 서로 다른 파일에 걸친 제약조건일 경우 더욱 어렵다.
5. 원자성(atomic) 문제
다른 장치처럼 컴퓨터도 고장이 날 수 있다. 고장이 났을 때 일관성 있는 상태로 유지시키는 일은 굉장히 중요하다.
예를 들어 계좌이체를 한다고 생각해보자. A계좌에서 B계좌로 송금을 하는 데 A계좌에서는 100만원이 출금됬는 데 고장이나서
B계좌에는 100만원이 입금되지 않은 채로 종료가 되었다. 이러한 데이터베이스의 비일관성을 초래할 수 있다.
일관성을 유지하기 위해서는 반드시 출금과 입금이 둘 다 이루어지든지 안 이루어져야한다. 즉, 원자적(atomic)이어야한다.
All or Nothing
6. 동시 액세스 문제
잔액이 200만원인 A계좌에서 동시에 두 사람이 출금을 한다고 해보자. 1명은 100만원을 출금하고, 다른 1명은 50만원을 출금한다.
정상적으로 출금이 됬다면 50만원이 잔액으로 남아야한다. 그러나 어떤 프로그램이 최종적으로 저장했느냐에 따라 100만원 또는 50만원이 될 수 있다.
데이터는 사전에 조정되지 않은 수많은 응용 프로그램에 의해 액세스되므로 관리하기 어렵다.
7. 보안 문제
은행의 고객이 은행 데이터베이스의 모든 것을 열람할 수 있으면 문제가 발생할 수 있다.
따라서 적절한 접근이 필요한데 이러한 제약조건은 응용 프로그램을 새로 만들어야하는 파일-처리 시스템에서 지키기 어렵다.
위와 같은 많은 어려움으로 DBMS의 개발이 시급히 요청되었다. 다음 글부터는 파일-처리 시스템에서의 문제점들을 해결하기 위해 개발된 데이터베이스의 개념과 알고리즘들을 포스팅하겠다.
'컴퓨터공학 > 데이터베이스 설계' 카테고리의 다른 글
SQL 기본 구문 (0) | 2018.10.28 |
---|---|
관계형 모델 (수학적, 키) (0) | 2018.09.13 |
DB의 시스템 구조 및 사용자, 역사 (0) | 2018.09.13 |
데이터베이스 설계단계 & 정규화 (0) | 2018.09.09 |
데이터베이스 구성 및 언어 (0) | 2018.09.09 |
댓글