이번 포스트에서는 데이터베이스 관리 시스템에 대해 정리하겠습니다.
데이터베이스 관리 시스템의 등장 배경
[ 파일 시스템 ]
오래 전부터 데이터를 관리하기 위해 사용하던 소프트웨어. 데이터를 파일로 관리할 수 있도록 파일을 생성, 삭제, 수정, 검색하는 기능을 제공하며, 운영체제와 함께 설치됨.
[ 파일 시스템의 문제점]
1. 같은 내용의 데이터가 여러 파일에 중복 저장된다.
데이터 중복성 문제 때문에 데이터 일관성을 유지하기 어렵다.
-> 예를 들면, 한 고객의 연락처가 변경되어 고객 데이터 파일만 수정하고 실수로 주문 데이터 파일을 수정하지 않는 경우.
2. 응용 프로그램이 데이터 파일에 종속적이다.
데이터 중복성 문제 때문에 데이터 무결성을 유지하기 어렵다. -> 같이 사용하는 파일의 구조를 변경하면 응용 프로그램도 함께 변경해야 하는데 이러한 특징을 데이터 종속성이라고 한다.
3. 데이터 파일에 대한 동시 공유, 보안, 회복 기능이 부족하다.
동시 공유 기능을 제공하지 않는다. -> 일반 파일 시스템에서는 응용 프로그램 하나가 사용 중인 파일을 다른 프로그램이 접근하여 사용할 수 없다.
보안 기능을 제공하지 않는다. -> 파일 시스템에서는 사용자에게 보통 파일 단위로 읽기, 수정, 실행 권한을 부여하는 방식으로 데이터의 접근을 통제한다. 하지만, 데이터 보안에 대한 요구가 더욱 세분화되고 있어 파일안의 레코드나 필드 같은 더 작은 단위에 대한 접근 통제와 더 구체적인 권한 부여를 할 수 없다.
데이터 회복 기능이 없다. -> 파일 시스템에서는 응용 프로그램이 파일을 사용하는 도중에 장애가 발생하면 데이터를 일관된 상태로 회복하기 어렵다. 특히 데이터를 수정하는 도중에 장애가 발생한 경우에는 더 어렵다.
4. 응용 프로그램을 개발하기 쉽지 않다.
사용자 요구에 맞는 새로운 응용 프로그램을 개발하기 어렵다. -> 파일 시스템에서는 파일에 접근하여 데이터를 관리하는 모든 작업을 응용 프로그램이 담당해야 하기 때문에 사용자 요구에 맞는 응용 프로그램을 개발하기 어렵다. 예를 들면, 새로운 응용 프로그램을 개발하려면 파일에서 데이터 읽기, 데이터 삽입하기, 기존 데이터 삭제하기 등의 기본적인 데이터 관리 기능을 포함해야 한다.
데이터베이스 관리 시스템의 정의(DBMS)
[ 데이터 베이스 관리 시스템(DBMS) ]
파일 시스템의 데이터 중복와 데이터 종속 문제를 해결하기 위해 제시된 소프트웨어이다.
조직에 필요한 데이터를 데이터베이스에 통합하여 저장하고 이에 대한 관리를 집중적으로 담당한다. 또한, 응용 프로그램을 대신하여 데이터베이스에 들어 있는 데이터를 삽입, 삭제, 수정, 검색하고 모든 응용 프로그램이 데이터베이스를 공유할 수 있게 한다.
위 그림을 보면 고객아이디, 고객명, 연락처, 주소 데이터는 데이터베이스에 통합되어 저장된다.
데이터베이스 관리 시스템(DBMS)은 고객 관리 응용 프로그램과 주문 관리 응용 프로그램이 동시에 데이터베이스를 사용할 때 발생할 수 있는 모든 분쟁을 중재해주기 때문에 데이터 중복으로 인한 여러 문제가 해결된다.
데이터베이스 관리 시스템(DBMS)은 데이터베이스를 생성하고 접근하며 관리하는 일을 모두 담당한다. 사용자는 직접 또는 응용 프로그램을 통해 원하는 데이터가 무엇이며, 어떤 처리를 원하는지만 데이터베이스 관리 시스템에 요청하면 된다.
-> 데이터베이스 구조나 접근 방법 등이 변경되어도, 사용자가 알거나 응용 프로그램을 변경할 필요가 없어 데이터 독립성이 확보된다.
데이터베이스 관리 시스템(DBMS)이 제공하는 주요 기능은 아래와 같이 있다.
정의 기능 -> 데이터베이스 구조를 정의하거나 수정할 수 있다. 데이터베이스 관리 시스템은 조작에 필요한 데이터를 저장하기 적합한 데이터베이스 구조를 정의하거나, 이미 정의된 구조를 수정할 수 있다.
조작 기능 -> 데이터를 삽입, 삭제, 수정, 검색하는 연산을 할 수 있다. 데이터베이스 관리 시스템은 데이터베이스에 저장된 데이터에 접근하여 사용할 수 있는 기능을 제공한다. 즉, 사용자 요구에 따라 데이터를 삽입, 삭제, 수정, 검색하는 연산을 효율적으로 처리한다.
제어 기능 -> 데이터를 항상 정확하고 안전하게 유지할 수 있다. 데이터베이스 관리 시스템은 데이터를 여러 사용자가 공유해도 항상 정확하고 안전하게 유지하는 기능을 제공한다.
[ 데이터베이스 관리 시스템의 장점]
1. 데이터 중복을 통제할 수 있다. -> 데이터베이스 관리 시스템은 데이터베이스에 데이터를 통합하여 관리하므로 데이터 중복 문제를 해결할 수 있다.
2. 데이터 독립성이 확보된다. -> 데이터베이스 관리 시스템은 응용 프로그램을 대신해서 데이터베이스에 접근하고 이를 관리하는 모든 책임을 지기 때문에 데이터베이스 구조가 변경되어도 응용 프로그램이 영향을 받지 않는다.
3. 데이터를 동시 공유할 수 있다. -> 데이터베이스 관리 시스템은 데이터베이스에 통합된 데이터를 여러 응용 프로그램이 공유하여 같은 데이터를 동시 접근할 수 있도록 지원한다.
4. 데이터 보안이 향상된다. -> 데이터베이스 관리 시스템은 데이터베이스를 이용해 데이터를 중앙 집중식으로 관리하므로 데이터에 대한 효율적인 접근 제어가 가능하다.
5. 데이터 무결성을 유지할 수 있다. -> 데이터 무결성은 저장된 데이터 값의 정확성을 의미한다. 예를 들면, 학생의 성적이 100점인데 10점으로 잘못 저장했다면 무결성을 위반했다고 할 수 있다. 이러한 문제를 데이터베이스 관리 시스템이 관리하면서 유효성 검사를 수행하여 무결성을 유지해준다.
6. 표준화할 수 있다. -> 데이터에 대한 모든 접근이 데이터베이스 관리 시스템을 통해 이루어지기 때문에 데이터에 접근하는 방법, 데이터 형식과 구조 등을 표준화하기 쉽다.
7. 장애 발생 시 회복이 가능하다. -> 데이터베이스 관리 시스템은 장애가 발생해도 데이터 일관성과 무결성을 유지하면서 데이터를 장애가 발생하기 이전 상태로 복구하는 회복 기능을 지원한다.
8. 응용 프로그램 개발 비용이 줄어든다. -> 데이터에 대한 모든 관리를 응용 프로그램 대신 데이터베이스 관리 시스템이 담당하기 때문에 파일 시스템을 사용할 때보다 응용 프로그램 개발 비용이 적게 든다.
[ 데이터베이스 관리 시스템의 단점 ]
1. 비용이 많이 든다. -> 파일 시스템은 운영체제와 함께 설치되므로 따로 구매 비용이 들지 않지만, 데이터베이스 관리 시스템은 따로 설치해야 하므로 구매 비용이 많이 든다.
2. 백업과 회복 방법이 복잡하다. -> 데이터베이스는 데이터양이 많아 구조가 복잡하고, 여러 사용자의 동시 공유를 지원하므로 장애가 발생했을 때 원인과 상태를 정확히 파악하기 어렵다.
3. 중앙 집중 관리로 인한 취약점이 존재한다. -> 모든 데이터가 데이터베이스에 통합되어 있고 이에 대한 관리 책임이 데이터베이스 관리 시스템에 집중되어, 데이터베이스나 데이터베이스 관리 시스템에 장애가 발생하면 전체 시스템의 업무 처리가 중단된다.
데이터베이스 관리 시스템의 발전 과정
[ 1세대 데이터베이스 관리 시스템: 네트워크, 계층 DBMS ]
네트워크 DBMS -> 데이터베이스를 노드와 간선을 이용한 그래프 형태로 구성하는 네트워크 데이터 모델을 사용한다. 단점은 간선을 이용해 데이터 간의 관계를 표현하기 때문에 데이터베이스의 구조가 복잡하고 변경하기 어렵다.
계층 DBMS -> 데이터베이스를 트리 형태로 구성하는 계층 데이터 모델을 사용. 단점은 현실 세계의 모습을 부모 자식 관계가 명확한 트리 형태만으로 표현하기가 힘들고, 구조 변경이 어렵다.
[ 2세대 데이터베이스 관리 시스템: 관계 DBMS ]
관계 DBMS -> 데이터베이스를 단순하고 이해하기 쉬운 구조로 구성한다는 장점이 있고 지금도 널리 사용되고 있다. ex) 오라클, MySQL 서버, 액세스, 인포믹스, MySQL, 마리아DB
[ 3세대 데이터베이스 관리 시스템: 객체지향, 객체관계 DBMS ]
객체지향 DBMS -> 객체지향 프로그래밍에서 도입한 객체라는 개념을 이용해 데이터베이스를 구성하는 개체지향 데이터 모델을 사용. 더 다양하고 복잡한 응용 분야의 데이터를 관리하는 사용자 요구를 충족시키기 위해 제안됨. 이 시스템은 새로운 유형의 데이터를 저장하고, 데이터에 대한 복잡한 분석 및 처리를 지원한다. ex) 오투(O2), 온투스, 젬스톤
객체관계 DBMS -> 관계 데이터 모델에 객체지향 개념을 도입한 객체관계 데이터 모델을 사용. 객체지향 DBMS와 관계 DBMS의 개념을 통합한 것. 일반적으로 단순하고 이해하기 쉬운 구조인 관계 DBMS가 많이 사용되지만, 객체관계 DBMS의 사용도 늘고 있어 최근에는 2세대와 3세대 DBMS가 공존한다. ex) 오라클
[4 세대 이후 데이터베이스 관리 시스템: NoSQL, NewSQL DBMS ]
관계 DBMS는 빠른 속도로 증가하는 대량의 비정형 데이터를 처리하는 데는 비효율적이므로 관계 DBMS는 그대로 유지한 채 CPU나 메모리 같은 하드웨어 장치의 성능을 향상하는 것만으로는 문제를 해결할 수 없기 때문에 NoSQL, NewSQL DBMS가 등장하였다
NoSQL DBMS -> 관계 DBMS가 강점으로 제시하던 안정성과 일관성 유지를 위한 복잡성 기능을 포기하고, 데이터 구조를 미리 정해두지 않기 때문에 비정형 데이터를 저장하고 처리하는 데 적합하다. 그리고 확장성이 뛰어나 여러 대의 서버 컴퓨터에 데이터를 분산하여 저장하고 처리하는 환경에서 주로 사용한다. Not Only SQL의 약자이며, 관계 DBMS를 적용하기 어려운 환경에서 선택할 수 있는 대안으로서의 의미를 가지게 되었다. ex) 몽고디비, H베이스, 카산드라, 레디스, 네오포제이, 오리엔트
NewSQL DBMS -> 관계 DBMS가 제공하는 안정성과 일관성을 유지하면서 SQL을 이용해 다양하고 복잡한 데이터 처리를 편하게 요청할 수 있다. 즉, 관계 DBMS의 장점과 NoSQL의 확장성 및 유연성을 모두 지원한다. 따라서, 정형 및 비정형 데이터를 안정적이고 빠르게 처리할 수 있다. ex) 구글 스패너, 볼트DB, 누오DB
하지만, NewSQL이 관계 DBMS나 NoSQL을 완전히 대신하기에는 아직 시기상조이다. NewSQL은 시장에 진입한지 얼마 되지 않았으므로 앞으로 더 큰 발전이 기대되지만 당분간 관계 DBMS, NoSQL, NewSQL이 상호 보완하면서 공존할 것으로 예상된다.
References
데이터베이스 개론, 김연희(2022)