데이터베이스 시스템

[데이터베이스] 데이터베이스 관리 시스템(DBMS)와 발전 과정

LimeCoding 2023. 3. 27. 22:48

1. 파일 시스템(File System)


 초기 데이터베이스 관리는 파일 시스템(file)이라는 방식으로 데이터를 관리했다. 우리가 프로그래밍을 배우다보면 마지막 부분쯤에 파일 입출력을 다루는 부분을 볼 수 있게 되는데 이때 파일을 생성하고 파일로부터 데이터를 넣고 쓰는 방식이 바로 파일 시스템이다.

 

 

파일 시스템

 

그러나 이러한 파일 시스템은 다음과 같은 문제점을 가진다.

  • 데이터 종속성(Date dependency)
  • 데이터 중복성(Data redundancy)
  • 파일의 비호환성(incompatibility of file)

 데이터 종속성은 응용프로그램과 데이터사이에 존재하는 상호 의존 관계를 말한다. A라는 프로그램은 A`라는 형태를 가진 데이터만을 다룰 수 있는 프로그램이다. 그런데 갑자기 B`라는 데이터를 처리해야 할 경우가 생기면 A에는 B`를 다룰 수 있는 기능을 추가적으로 넣거나 B프로그램을 새로 만들어야 한다. 이는 A라는 프로그램이 A`라는 데이터만 처리할 수 있는 종속 관계를 가지기 때문이다. 이는 프로그램 내에 데이터 조작 기능을 넣었기 때문에 발생하는 일이다. 이는 생산성 저하와 동시에 파일의 비호환성을 가져온다.

 파일의 비호환성은 A프로그램과 B 프로그램이 같은 내용을 필요로 하지만 데이터 조작 방법이 달라지면 서로 파일을 공유할 수없다. 결국 같은 내용을 가진 파일 두 개를 만들어야 하는데 이는 데이터 중복성을 일으킨다.

 데이터 중복성은 말에서 알 수 있는 것처럼 데이터가 중복되는 것을 말한다. 사원의 정보를 조회하는 프로그램과 월급 지급 프로그램이 있다고 해보자. 이 두 프로그램은 사원 정보라는 데이터를 필요로 한다. 하지만 데이터 조작 방법이 달라 각자 파일을 만들어 사용하면, 동일한 데이터 파일 2개가 생성된다. 이는 저장 공간에 불필요한 낭비를 만들고 이후에 나올 무결성에 문제도 일으킨다. 

 

2. 파일 관리 시스템(File management system)


 앞서 나온 파일 시스템은 많은 문제를 가지고 있었다. 이런 문제를 해결하기 위해 더 나은 시스템을 고민하게 되고 그 결과 파일 관리 시스템이 나오게 된다.

파일 관리 시스템

 

 파일 관리 시스템의 핵심은 프로그램 각자가 데이터에 접근하던 방식을  파일 관리 시스템이 접근 루틴을 제공하고 이를 통해 접근할 수 있도록 하는 것이다. 각자 접근하던 방식에서 루틴을 통해 접근하기 때문에 프로그램안에 접근 방법을 무조건 구현해야하는 문제를 해결할 수 있었다. 그러나 프로그램은 각자가 원하는 데이터 구조가 있기에 결국 중복 데이터를 생성할 수 밖에 없다. 예를 들어 사원 정보에 접근이 가능하더라도 사원 정보만 있고 급여 정보가 없으면 급여 지급하는 프로그램은 작동할 수 없기에 사원 정보와 급여 정보를 동시에 기록하는 파일을 필요로 한다. 결국 데이터 중복성을 피하지 못했다는 뜻이고 이는 다음과 같은 문제를 일으킨다.

  • 데이터 일관성(Data consistency)
  • 데이터 보안성(Data security)
  • 경제성(economics)
  • 데이터 무결성(integrity)

 기존 사원 데이터에서 누군가 승진을 한다고 가정해보자. 그러면 사원 정보와 급여 정보에는 승진한 사원의 데이터를 수정해주어야 한다. 그러나 중간에 문제가 생겨 사원 정보만 수정되고 급여 정보의 사원 정보가 수정이 되지 않는다면 어느 데이터가 맞는 데이터인지 알 수 없다. 이처럼 여러 개의 데이터가 동일한 사실을 나타내고 있을 때 이 데이터가 모두 동일하지 않다면 이를 데이터 일관성이 없다라고 말한다.

 데이터 보안성은 데이터의 보안 유지를 의미한다. 한 파일에 있는 사원 데이터는 관리하기 쉽지만 1만 개 파일에 동일한 사원 데이터가 있다면 모든 파일에서 사원 데이터의 보안 수준을 유지하기는 힘들다.

 경제성은 앞서 말한 저장공간의 낭비와 동시에 갱신할 때 이와 관련된 모든 파일을 갱신해야 하기에 처리 비용도 많이 발생한다.

 데이터 무결성은 일관성, 정확성, 유효성을 모두 만족하는 상태를 말한다. 모든 파일이 완벽하게 현실 세계를 반영하기 위해서는 모든 파일에 흩어져 있는 데이터가 유효한 데이터이면서 값이 정확해야 하고 같은 내용을 가리키는 데이터는 모두 동일한 값을 가져야한다. 하지만 여러 곳에 파일이 흩어져 있으면 유지하기가 상당히 어렵다. 이런 종합적인 문제를 해결하고자 나온 것이 우리가 흔히 알고 있는 데이터베이스 관리 시스템이다.

 

3. 데이터베이스 관리 시스템(DataBase Management System)


 데이터베이스 관리 시스템(일명 DBMS)은 데이터베이스(어느 한  조직의 여러 응용 시스템들이 고용할 수 있도록 통합, 저장된 운영 데이터의 집합)를 공용할 수 있게 관리해주는 소프트웨어 시스템을 말한다. 데이터베이스 관리 시스템은 파일 시스템에서 야기된 데이터 종속성과 중복성 문제를 해결하기 위해 고안된 시스템이다.

 

데이터베이스 관리 시스템

 DBMS는 정의 기능, 조작 기능, 제어 기능 이 세 가지 기능을 필수적으로 가져야 한다.

 데이터 정의(data definition) 기능은 데이터를 정의하는 기능으로 스키마 생성이나 테이블 생성과 같은 기능을 말한다. SQL에서는 DDL(Data Definition Language)이 이 기능을 담당하며 CREATE, ALTER, DROP이 이에 속한다.

 데이터 조작(data manipulation) 기능은 데이터 삽입, 삭제, 검색, 갱신을 할 수 있는 기능으로 SQL에서는 DML(Data Manipulation Language)가 이를 담당하고 있으며, DELETE, INSERT, SELECT, UPDATE가 이에 속한다.

 데이터 제어(data control) 기능은 데이터의 무결성이나 보안 수준, 제약조건 등과 같이 데이터베이스를 안정적으로 유지할 수 있도록 도와준다. SQL에서는 DCL(Data Control Language)가 이를 담당하며, GRANT, REVOKE등이 이에 속한다.

 

 데이터베이스 관리 시스템의 장점으로는 다음과 같다.

  1. 데이터 중복의 최소화(필요한 경우에는 제어된 중복(controlled redundancy) 형태로 중복을 이용할 수 있음)
  2. 데이터 공용(다양한 사용자가 데이터를 사용할 수 있음 -> 병행수행제어)
  3. 데이터 일관성 유지
  4. 데이터 무결성 유지
  5. 데이터 보안 보장
  6. 표준화

그러나 DBMS가 무조건 좋기만 한 것은 아니다. 단점으로는 다음과 같다.

  1. 운영비 증대(DBMS를 위한 시설 필요)
  2. 복잡성(효율적인 동작을 위한 전문화된 기술 요구)
  3. 복잡한 백업과 회복(DBMS 내부가 복잡하기에 백업과 회복이 복잡함)
  4. 시스템 취약성(DBMS 일부에 장애가 발생하면 안정성을 위해 DBMS 전체 시스템 중단)