본문 바로가기

Programming/DataBase System

Chapter1 - 데이터베이스 시스템의 목적

데이터베이스 관리 시스템(DBMS) 은 서로 관계 있는 데이터들의 모임과 그 데이터에 접근하기 위한 프로그램 (application) 의 집합으로 구성된다. 데이터베이스(database) 는 보통 이 데이터들의 모임을 일컫는 말로서, 흔히 조직과 관련된 정보들을 포함한다. DBMS 의 주요 목적은 데이터베이스에 정보를 저장하고 또 이를 검색하기 윈한 편리하고효율적인 환경을 제공하는 데 있다.


데이터베이스는 대규모의 정보를 관리하도록 설계된다. 데이터의 관리에는 정보 저장 구조를 정의하는 작업과 저장된 정보를 조작하기 위한 기법을 제공하는 작업 모두가 포함된다. 또, 데이터베이스 시스템은 저장된 정보를 시스템 고장이나 모든 불법적은 액세스 등으로부터 안전하게 보호해야 한다. 데이터가 여러 사용자간에 공유될 경우, 이로 인한 예기치 않은 이상 결과를 방지해야 한다.


어떤 조직에 있어서나 정보는 매주 중요한 것이기 때문에, 컴퓨터 과학자들은 데이터를 관리하는데 있어서 기반이 되는 여러 개념과 기술에 대해 오랫동안 연구해왔다. 이 책에서는 이러한 기본 개념과 기술에 대해 초점을 맞추고 있다. 



  •  데이터베이스 시스템의 목적


데이터베이스 시스템은 상업적 데이터를 컴퓨터로 관리하는 초기 방법들을 개선하기 위해 비롯 되었다. 

전형적인 파일-처리 시스템(file-processing system) 은 통상 운영체제에 의해 지원된다.  이러한 시스템에서는 영속적 레코드가 여러 가지 서로 다은 파일들에 저장되는 경우가 생기게 되는데, 이는 레코드를 검색하거나 새로 입력할 때, 해당 파일에 따라 여러 가지 프로그램들이 서로 다르게 작성되어야 함을 의미한다. DBMS 가 등장하기 전까지는, 대개 이러한 시스템에 정보를 저장했다.


파일 처리 시스템에 정보를 저장했을 때의 주요한 단점은 다음과 같다.
DBMS 를 사용했을 때 해결되는 장점


  • 데이터의 중복과 비일관성 : 파일과 응용 프로그램은 장기간에 걸쳐 서로 다른 많은 프로그래머들에 의해 개발되므로, 파일들이 서로 다른 형식을 갖게 되기 쉽고, 응용 프로그램들이 서로 다른 언어들로 작성될 수도 있따. 게다가, 동일한 정보다 여러 파일에 중복 저장될 것이다.(=> DBMS 를 상용하지 않을 경우 중복된 파일 생성)    중복은 저장 공간의 낭비를 초래하고, 액세스 비용도 늘어나게 한다. 뿐만 아니라, 이는 곧 데이터의 비일관성(inconsistency) -동일한 데이터의 여러 사본이 서로 다른 값을 보유하고 있는 상태- 으로 이어진다.
  • 데이터 액세스 시의 난점 : 기존의 파일-처리 시스템 환경에서는 필요한 데이터를 편리하고 효율적으로 검색하기가 힘들다. 보다 훌륭한 데이터 검색 시스템이 필요하다. (=>응용 X , 새로 만들어야 한다)
  • 데이터의 고립 : 데이터가 여러 파일에 흩어져 있는데다 파일 형식이 서로 다르기 때문에, 원하는 데이터를 검색하는 프로그램을 새로 작성하기 어렵다.
  • 무결성(integrity) 문제 : 데이터베이스 내에 저장된 데이터 값들은 어떤 형식의 일관성 제약조건(consistency constraint)들을 만족해야 한다.(제약 조건들을 DBMS를 통해 쉽게 운용할 수 있다.)
  • 원자성 문제 : 다른 장치처럼 컴퓨터 시스템 또한 고장이 날 수 있다. 많은 경우 시스템이 고장을 일으켰을 때 데이터를 고장 전의 일관성 있는 상태로 유지 시키는 일은 매우 중요하다. ex) A 학과의 계좌에서 B학과의 계좌로 500$을 이체하는 프로그램을 생각해보자. 프로그램이 실행되는 도중에 시스템이 고장이 생기면, A 학과의 계좌에서는 500$가 인출되었는데 B 학과의 계좌에는 확실히 입금되지 않아 데이터베이스의 비일관성을 초래할 수 있다. 명백히, 데이터베이스의 일관성을 지키기 위해서는 반드시 출금과 입금이 둘 다 이루어지든지 아니면 둘 다 이루어지지 않든지 해야 한다(All or Nothing). 즉, 예금 이체는 원자적(Atomic)이어야 한다. 일련의 과정 전체가 수행되든지 아니면 어느 것도 수행되지 않아야 한다.(All or Nothing : 두 데이터 모두 바뀌거나 변하지 않아야 한다.=> 에러가 나도 일관성 유지->DBMS가 보장)
  • 동시 액세스 문제 : 시스템의 전반적인 성능을 향상시키고 응답 시간을 단축시키기 위해, 많은 시스템들은 여러 사용자가 데이터를 동시에 갱신할 수 있도록 한다. 이러한 상황 하에서는 동일한 데이터가 여러 사용자에 의해 동시에 갱신될 수 있는데, 이는 데이터의 비 일관성을 야기할 수 있다. 이러한 가능성을 막기 위해 시스템은 어떤 형태로든 이를 감독해야 한다. 그러나 데이터는 사전에 조정되지 않은 수많은 응용 프로그램에 의해 액세스되므로, 이를 관리하기가 상당히 어렵다.

      예를 들어, 수강 신청 프로그램이 수강 신청 인원을 제한하기 위해 어떤 수업을 신청한 학생의 수를 가직 있다고 하자. 학생이 수강 신청을 하면 프로그램은 그 수업의 현재 인원을 읽어서 수강 신청 인원이 차지 않았는지를 확인한 다음, 인원수를 하나 증가시킨 후 그 숫자를 다시 데이터베이스에 저장한다. 현재 인원이 39 명인 수업을 두 학생이 동시에 수강 신청을 했다고 하자. 두 프로그램은 모두 39를 읽어서 40으로 저장하게 되는데, 이는 1만 증가시키는 정확하지 않은 결과를 내게 되므로 두 학생은 성공적으로 수강 신청이 되고 인원수는 41이 된다.  만약 그 수업의 수강 신청 사능 인원수가 40이었다고 한다면 위의 상황에서 두 학생들이 모두 수강 신청을 할 수 있게 되기 때문에 40명이라는 제한을 위반하게 된다.(DBMS를 통해 lock을 걸어 다른 인원 대기)


  • 보안 문제 : 데이터베이스 시스템의 모든 사용자가 모든 데이터를 액세스하는 것은 아니다. (필요한 파일만 허가). 파일 - 처리 시스템에서는 응용 프로그램이 그때그때 바로 추가되므로 이러한 보안에 관한 제약조건을 지키기 어렵다.