본문 바로가기

University/Database

[데이터베이스] 데이터베이스 관리 시스템

1. 데이터베이스 관리 시스템의 등장 배경

과거에는 데이터를 관리하기 위해 파일 시스템(file system)이라는 소프트웨어를 이용했다.
데이터를 파일로 관리할 수 있도록 파일을 생성 · 수정 · 검색하는 기능을 제공하며, 운영체제와 같이 설치된다. 응용 프로그램별로 필요한 데이터를 별도의 파일로 관리한다.

파일 시스템 환경에서는 응용 프로그래머가 파일의 논리적인 구조뿐 아니라 물리적인 구조까지 정확히 파악해야 한다. 그래야 필요한 데이터에 접근해 처리하는 응용 프로그램을 개발할 수 있었다.

 

파일 시스템은 별도의 구매 비용이 들지 않는다는 장점이 있지만, 응용 프로그램마다 파일을 따로 유지하는 특징 때문에 다음과 같은 문제가 발생한다.

① 같은 내용의 데이터가 여러 파일에 중복 저장된다

응용 프로그램별로 파일을 유지하므로 같은 데이터가 여러 파일에 저장될 수 있다. 즉, 데이터 중복성(data redundancy) 문제가 발생한다.

파일 시스템에서의 데이터 관리

위 그림을 봤을 때 고객아이디, 고객명, 연락처, 주소 데이터가 중복이 되어, 저장 공간이 낭비될 뿐만 아니라 데이터 일관성(data consistency)데이터 무결성(data integrity)을 유지하기 어렵다.

  • 데이터 일관성 : 고객의 연락처가 변경되어 고객 데이터 파일만 수정하고, 주문 데이터 파일을 수정하지 않으면 같은 고객의 연락처가 파일마다 달라 데이터 간 불일치가 발생한다. 그렇기에 데이터 일관성이 유지되지 않는다.
  • 데이터 무결성 : 고객아이디에 영어와 숫자를 섞어야 한다는 규약이 있다면, 해당 파일을 이용하는 모든 응용 프로그램에서 이 제약 사항을 확인해야 한다. 그렇지 않으면 유효하지 않은 고객아이디가 존재할 수 있기 때문에 데이터 무결성, 정확성이 유지되지 않는다.

다음 그림과 같은 데이터 통합을 통해 데이터 중복성 문제를 해결할 수 있다. 하지만 중복 문제가 해결되어도 다른 문제점들이 남아 있다.

파일 시스템의 데이터 중복성 문제를 해결하는 1차 방안

② 응용 프로그램이 데이터 파일에 종속적이다

응용 프로그램은 파일에 직접 접근하여 데이터를 처리해야 하기에 사용하는 파일의 데이터를 구성하는 방법이나 물리적인 저장 구조에 맞게 작성해야 한다.
그래서 사용하는 파일의 구조를 변경하면 응용 프로그램도 함께 변경해야 하는데, 이러한 특징을 데이터 종속성(data dependency)이라 한다.

파일 구조 변경 예

고객아이디와 고객명으로 구성된 고객 파일이, 나이 데이터가 추가되어 변경된 그림이다. 그림과 같이 변경되면 관련된 모든 응용 프로그램에서 파일에 접근하는 방법을 변경해야 한다. 데이터의 형식이나 길이가 변경될 때도 마찬가지다.
파일을 사용하는 응용 프로그램이 많거나, 구조가 자주 변경된다면 더욱 부각될 문제이다.

③ 데이터 파일에 대한 동시 공유, 보안, 회복 기능이 부족하다

  • 동시 공유 : 응용 프로그램 하나가 사용 중인 파일을 다른 응용 프로그램이 접근하여 사용할 수 있는 동시 공유 기능을 제공하지 않는다. 
    같은 내용의 파일을 여러 개 만들어 응용 프로그램마다 제공할 수는 있지만, 데이터가 중복되기 때문에 더 큰 문제가 발생할 수 있다.
  • 보안 : 사용자에게 보통 파일 단위로 읽기 · 수정 · 시랭 권한을 부여하는 방식으로 데이터 접근을 통제한다. 하지만 데이터 보안에 대한 요구가 세분화되면서 파일 안의 레코드나 필드 같은 더 작은 단위에 대한 접근 통제와 더 구체적인 권한 부여가 가능해야 한다.
    또, 중복된 파일의 보안을 같은 수준으로 유지하기도 어렵다.
  • 회복 : 응용 프로그램이 파일을 사용하는 도중에 장애가 발생하면 데이터를 일관된 상태로 회복하기 어렵다. 특히 데이터를 수정하는 도중에 발생하면 더욱 어려워진다.

④ 응용 프로그램을 개발하기 쉽지 않다

데이터를 관리하는 모든 작업을 응용 프로그램이 담당하는데, 사용자 요구에 맞는 응용 프로그램을 개발하기 어렵다. 새로운 응용 프로그램을 개발하려면 파일에서 데이터 읽기, 삽입하기, 삭제하기 등의 기능을 모두 포함해야 한다.

 

2. 데이터베이스 관리 시스템의 정의

데이터를 통합하여 저장하는 것으로 중복성 문제를 해결했었지만, 여전히 많은 문제가 있었다. 이 문제를 해결하기 위해 제시된 방안이 데이터베이스 관리 시스템이다.

데이터베이스 관리 시스템(DBMS; DataBase Management System)파일 시스템의 데이터 중복과 데이터 종속 문제를 해결하기 위해 제시된 소프트웨어이다.

조직에 필요한 데이터를 데이터베이스에 통합하여 저장하고 이에 대한 관리를 집중적으로 담당한다. 응용 프로그램을 대신해 데이터베이스에 들어 있는 데이터를 삽입 · 삭제 · 수정 · 검색하고, 모든 응용 프로그램이 데이터베이스를 공유할 수 있게 한다.

데이터베이스 관리 시스템에서의 데이터 관리

공유 데이터는 데이터베이스에 통합되어 저장되며, 고객 관리 응용 프로그램과 주문 관리 응용 프로그램이 동시에 데이터베이스를 사용해도 데이터베이스 관리 시스템이 중재하기 때문에 중복성을 해결한다. 사용하기 쉬운 인터페이스를 제공해 응용 프로그램 없이도 사용자가 데이터 처리를 직접 요구할 수 있다.

 

데이터베이스를 생성하고 접근하며 관리하는 일은 데이터베이스 관리 시스템이 모두 담당한다. 작업을 모두 수행한 후 결과만 응용 프로그램을 통해 사용자에게 전달한다.

사용자가 물리적 저장 구조나 데이터 접근 및 처리 방법을 알 필요가 없어 부담이 줄어들며, 데이터 독립성이 확보된다.

 

데이터베이스 관리 시스템이 제공하는 주요 기능은 세 가지는 다음과 같다.

  • 정의 기능 : 데이터베이스 구조를 정의하거나 수정할 수 있다.
  • 조작 기능 : 데이터를 삽입 · 삭제 · 수정 · 검색하는 연산을 할 수 있다.
  • 제어 기능 : 데이터를 항상 정확하고 안전하게 유지할 수 있다. 데이터를 조작한 후에도 내용이 일관되게 유지하고, 장애가 발생해도 회복한다. 권한이 있는 사용자에게만 접근을 허용하여 보안이 유지되고, 여러 사용자가 동시에 접근하여 데이터를 제어할 수 있도록 한다.

 

3. 데이터베이스 관리 시스템의 장·단점

▶ 데이터베이스 관리 시스템의 장점

① 데이터 중복을 통제할 수 있다

데이터베이스에 데이터를 통합하여 관리하므로 데이터 중복 문제를 해결할 수 있다. 효율성 때문에 중복을 허용하는 경우에는 중복을 최소화하도록 통제하므로 데이터 일관성도 유지할 수 있다.

 

② 데이터 독립성이 확보된다

응용 프로그램을 대신해서 데이터베이스에 접근하고 이를 관리하는 모든 책임을 지기 때문에 데이터베이스 구조가 변경되어도 응용 프로그램이 영향을 받지 않아, 응용 프로그램과 데이터베이스 사이에 독립성이 확보된다.

 

③ 데이터를 동시 공유할 수 있다

데이터베이스에 통합된 데이터를 여러 응용 프로그램이 공유하여 같은 데이터에 동시 접근할 수 있도록 지원한다. 동시 공유를 지원하기 때문에 불필요한 데이터 중복을 제한할 수 있다.

 

④ 데이터 보안이 향상된다

데이터를 중앙 집중식으로 관리하므로 데이터에 대한 효율적인 접근 제어가 가능하다. 사용자별로 접근 가능한 데이터베이스 영역을 제한하거나 접근 수준을 차별화 할 수 있다.

 

⑤ 데이터 무결성을 유지할 수 있다

데이터 무결성은 저장된 데이터 값의 정확성을 의미한다. 새로운 데이터가 입력되거나 기존 데이터가 변경될 때마다 유효성을 검사할 필요가 있는데, 데이터베이스 관리 시스템은 데이터에 대한 관리를 집중적으로 수행하면서 데이터에 대한 연산이 수행될 때마다 유효성을 검사해 데이터 무결성을 유지할 수 있게 해준다.

 

⑥ 표준화할 수 있다

데이터에 대한 모든 접근이 데이터베이스 관리 시스템을 통해 이루어지기에 데이터에 접근하는 방법, 데이터 형식과 구조 등을 표준화하기 쉽다. 모든 응용 프로그램은 미리 정해진 표준화를 통해 데이터베이스에 접근한다.

 

⑦ 장애 발생 시 회복이 가능하다

장애가 발생해도 데이터 일관성과 무결성을 유지하면서 데이터를 장애가 발생하기 이전 상태로 복구하는 회복 기능을 지원한다.

 

⑧ 응용 프로그램 개발 비용이 줄어든다

파일 시스템을 사용할 때보다 응용 프로그램 개발 비용이 적게 든다. 데이터베이스의 구조가 변경되어도 응용 프로그램은 변경할 필요가 없기 때문에 보수 비용이 줄어든다.

▶ 데이터베이스 관리 시스템의 단점

① 비용이 많이 든다

파일 시스템은 운영체제와 함께 설치되어서 따로 구매 비용이 없지만, 데이터베이스 관리 시스템은 따로 설치해야 하기 때문에 비용이 많이 든다. 동시 사용이 허용되는 사용자 수에 따라 제품 가격도 증가하며, 복잡하고 다양한 기능을 제공하기에 컴퓨터 자원이 많이 소모된다.

 

② 백업과 회복 방법이 복잡하다

데이터베이스는 데이터양이 많아 구조가 복잡하고, 여러 사용자가 같이 사용하게 되면 장애가 어디에서 발생했는지 알기 어렵다. 그래서 장애 발생 전에 데이터를 미리 백업하고 회복하는 과정이 복잡할 수 밖에 없다.

 

③ 중앙 집중 관리로 인한 취약점이 존재한다

데이터베이스나 데이터베이스 관리 시스템에 장애가 발생하면 모든 시스템이 중단된다. 데이터베이스에 많이 의존하는 프로그램일수록 가용성과 신뢰성에 치명적인 영향을 받을 수 있다.

 

많은 단점에도 불구하고 데이터베이스 관리 시스템을 사용했을 때 얻는 이점이 더 많기 때문에, 데이터베이스 관리 시스템을 많이 사용한다.
물론 소수 사용자를 위한 시스템을 개발하거나, 데이터 구조나 내용이 자주 변경되지 않으면 사용하지 않는 것이 더 나을 수도 있기에, 상황에 따라 사용 여부를 결정해야 한다.

데이터베이스 관리 시스템의 장점과 단점

 

4. 데이터베이스 관리 시스템의 발전 과정

1960년대에 개발된 데이터베이스 관리 시스템은 현재까지도 진화하고 있다. 발전 과정에 따라 4세대로 분류할 수 있다.

데이터를 데이터베이스에 저장하는 구조를 데이터 모델(data model)이라 한다.

▶ 1세대 데이터베이스 관리 시스템 : 네트워크 · 계층 DBMS

1960~1970년대에 사용된 네트워크 DBMS와 계층 DBMS가 1세대에 속한다.

1세대 DBMS 구조의 예

  • 네트워크 DBMS : 데이터베이스를 노드와 간선을 이용한 그래프 형태로 구성하는 네트워크 데이터 모델을 사용한다.
    고객은 상품을 주문할 수 있고, 직원은 상품과 고객을 관리하며 부서에 소속되어 있다.
    간선을 이용해 표현하기 때문에 구조가 복잡하고 변경하기 어렵다는 단점이 있다.
    대표적인 네트워크 DBMS : IDS(Integrated Data Store)
  • 계층 DBMS : 데이터베이스를 트리 형태로 구성하는 계층 데이터 모델을 사용한다.
    부서에 소속된 직원이 상품과 고객을 관리할 수 있다.
    네트워크 DBMS보다 구조가 단순하지만, 현실 세계의 모습을 트리 형태로만 표현하기가 힘들고, 구조 변경이 어렵다는 단점이 있다.
    대표적인 계층 DBMS : IMS(Information Management System)

▶ 2세대 데이터베이스 관리 시스템 : 관계 DBMS

1980년대 초반부터 계속 사용되어 온 관계 DBMS가 2세대에 속한다. 데이터베이스를 테이블 형태로 구성하는 관계 데이터 모델을 사용한다.

관계 DBMS의 테이블 예 : 고객 테이블

관계 데이터 모델은 데이터베이스를 단순하고 이해하기 쉬운 구조로 구성한다는 장점이 있어, 관계 DBMS가 많이 개발되었다.

대표적인 관계 DBMS : 오라클(Oracle), MS SQL 서버(MS SQL Server), 액세스(Access), 인포믹스(Informix), MySQL, 마리아DB(MariaDB) 등

▶ 3세대 데이터베이스 관리 시스템 : 객체지향 · 객체관계 DBMS

  • 객체지향 DBMS : 객체지향 프로그래밍에서 도입한 객체라는 개념을 이용해 데이터베이스를 구성하는 객체지향 데이터 모델을 사용한다.
    더 다양하고 복잡한 응용 분야의 데이터를 관리하려는 사용자 요구를 충족하기 위해 제안되었으며, 새로운 유형의 데이터를 저장하고, 데이터에 대한 복잡한 분석 및 처리를 지원한다.
    대표적인 객체지향 DBMS : 오투(O2), 온투스(ONTOS), 젬스톤(GemStone)
  • 객체관계 DBMS : 관계 데이터 모델에 객체지향 개념을 도입한 객체관계 데이터 모델을 사용한다. (객체지향 DBMS + 관계 DBMS) 관계 DBMS가 객체지향 기능을 지원하면서 객체관계 DBMS로 분류되기도 한다.
    대표적인 객체관계 DBMS : 오라클

▶ 4세대 이후 데이터베이스 관리 시스템 : NoSQL · NewSQL DBSM

객체지향, 객체관계 DBMS 후에도 관계 DBMS가 대표적 DBMS라는 인식이 일반적이었으나, 소셜 네트워크 서비스가 점차 커지면서 사진, 동영상 등과 같은 비정형 데이터가 대량으로 생산되었다. 이에 더해 클라우드 컴퓨팅, 빅데이터의 개념이 등장하면서 관계 DBMS를 사용하는 것이 비효율적이라 판단했고, 새로운 DBMS가 필요했다.

 

이런 시대적 흐름 덕분에 NoSQL DBMS가 등장했다.
NoSQL DBMS는 관계 DBMS의 강점인 안정성과 일관성 유지를 위한 복잡한 기능을 포기하고, 데이터 구조를 미리 정해두지 않아 비정형 데이터를 저장하고 처리하는 데 적합하다. 확장성이 뛰어나 여러 대의 서버 컴퓨터에 데이터를 분산하여 저장하고 처리하는 환경에서 주료 사용한다.

 

대표적인 NoSQL DBMS : 몽고디비(MongoDB), H베이스(HBase), 카산드라(Cassandra), 레디스(Redis), 네오포제이(Neo4j), 오리엔트DB(OrientDB) 등

원래 SQL은 관계 DBMS를 위한 표준 질의어다. NoSQL에서 SQL이 관계 DBMS라고 생각하면 이해하기 쉽다.

 

하지만 일반 기업에서는 관계 DBMS의 안정성과 일관성을 중요하게 생각하고 있고, 정형 데이터를 처리해야 하는 작업도 많았기에 NoSQL이 바로 대중화되진 않았다. 관계 DBMS와 NoSQL DBMS를 같이 써야 하는 상황이 생겨 부담이 컸고, 이런 고민은 NewSQL DBMS의 등장을 이끌었다.

 

NewSQL DBMS는 안정성과 일관성을 유지하면서 SQL을 이용해 다양하고 복잡한 데이터 처리를 편리하게 요청할 수 있다.
즉, 관계 DBMS의 장점과 NoSQL의 확장성 및 유연성을 모두 지원한다.

 

대표적인 NewSQL DBMS : 구글 스패너(Spanner), 볼트 DB(VoltDB), 누오DB(NuoDB) 등

NewSQL DBMS는 시장에 진입한 지 얼마 되지 않아 앞으로 큰 발전이 예상되지만, 관계 DBMS, NoSQL, NewSQL이 상호 보완하면서 공존할 것으로 예상된다.

DBMS의 발전 과정

▶ 그림으로 정리

데이터베이스 관리 시스템 총정리