멈추지 않고 끈질기게
[DB] 데이터베이스 관리 시스템(DBMS) 본문
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다.
※ 해당 포스팅은 하기 출처들을 참조하였습니다.
- 김연희, 데이터베이스 개론, 한빛아카데미, 2022
이번 포스팅에서는 데이터베이스 관리 시스템에 대해 알아보겠습니다.
1. 데이터베이스 관리 시스템(DBMS, Data Base Management System)
기존에는 데이터를 OS와 함께 설치되는 파일 시스템을 통해 관리하였습니다. 파일 시스템은 파일의 생성, 삭제, 수정, 검색 기능을 제공하며, 응용 프로그램마다 필요한 데이터를 별도의 파일로 관리합니다. 다만 기존의 파일 시스템에는 다음과 같은 단점들이 있습니다.
같은 데이터의 중복 저장
파일 시스템에서는 응용 프로그램마다 데이터를 파일에 저장하므로 같은 데이터가 여러개의 파일에 중복되어 저장될 수 있습니다. 데이터 중복 저장 시 저장 공간이 낭비되며, 데이터의 일관성과 무결성을 유지하기도 어렵다는 문제가 있습니다.
예를 들어 작년 매출에 관한 데이터를 어떤 파일에서 수정했을 경우, 해당 파일의 매출 데이터와 다른 파일에 저장된 매출 데이터가 상이해지므로 데이터의 일관성이 깨지게 됩니다. 또한 매출 데이터를 만원 단위로 저장하려고 한다면(ex. 2,000,000 -> 200) 매출 데이터를 저장하고 있는 모든 파일에 해당 규칙을 적용해주어야 합니다. 중복으로 저장하고 있는 파일이 많을수록 이를 놓치기 쉬울 것이며, 따라서 데이터 무결성을 유지하기 어렵습니다.
프로그램이 데이터 파일에 종속적
프로그램이 파일에 직접 접근하여 데이터를 처리하므로, 파일의 구조가 변경되면 이를 사용하는 프로그램의 접근 방법도 변경되어야 하며 이를 데이터 종속성이라 합니다. 한 파일에 접근하는 프로그램이 여러개 존재하거나, 파일의 구조가 자주 변경될 경우 이러한 문제는 더욱 커집니다.
데이터 파일에 대한 동시 공유, 보안, 회복 기능 부족
파일 시스템은 한 프로그램이 사용중인 파일을 다른 프로그램이 동시에 접근하여 사용하는 동시 공유 기능을 제공하지 않습니다. 해당 파일을 중복으로 생성하여 프로그램마다 사용하게 할 수도 있지만, 이는 데이터 중복으로 인한 문제를 더 크게 발생시킬 수 있습니다.
또한 파일 단위로 읽기, 수정, 실행 등의 권한을 부여하기 때문에, 파일 안의 데이터 단위로 접근 권한 등을 지정할 수 없습니다. 데이터 중복 저장 때문에 같은 데이터에 모두 같은 보안 레벨을 설정하는 것도 어려움이 따릅니다. 데이터 수정 중에 장애가 발생한 경우 데이터의 일관성을 회복하기 어렵다는 문제도 있습니다.
응용 프로그램 개발 난이도
파일 시스템에서는 새로운 응용 프로그램을 개발하려면 데이터 읽기, 삽입하기, 기존 데이터 삭제 등의 기본적인 데이터 관리 기능을 프로그램이 모두 포함하고 있어야 합니다. 따라서 사용자 요구에 맞는 프로그램 개발의 난이도가 높아지는 경향이 있습니다.
데이터베이스 관리 시스템(이하 DBMS)은 이러한 문제점들을 해결하기 위해 등장한 소프트웨어입니다. 각종 데이터들을 데이터베이스에 저장하고, 이를 DBMS가 통합하여 관리함으로서 기존의 데이터 중복과 종속성 문제를 해결합니다. 데이터베이스의 생성 및 접근, 관리 모두 DBMS에서 담당하며, 사용자는 원하는 데이터를 DBMS를 통해 요청하기만 하면 됩니다. 따라서 사용자가 데이터베이스의 물리적 구조나 접근 및 처리 방법 등에 대해 자세히 알지 못해도 이용할 수 있으며, 데이터베이스의 구조나 접근 방법이 변경되더라도 응용 프로그램을 변경할 필요가 없기에 데이터 독립성이 보장됩니다.
DBMS의 주요 기능은 크게 정의 기능, 조작 기능, 제어 기능으로 구분할 수 있습니다.
정의 기능 : 새로운 데이터베이스 정의 or 이미 정의된 데이터베이스의 구조 수정
조작 기능 : 데이터베이스에 저장된 데이터에 접근하여 조작(삽입, 삭제, 수정, 검색)
제어 기능 : 데이터를 여러 사용자가 공유해도 정확하고 안전하게 유지하는 기능
- 데이터 조작 후에도 데이터의 일관성, 무결성 유지
- 장애 발생 시 회복
- 사용자 권한에 따른 데이터 접근 허용
- 여러 사용자의 데이터베이스 동시 접근 시 데이터 처리 제어
2. 데이터베이스 관리 시스템의 장단점
DBMS가 가지는 대표적인 장점들은 다음과 같습니다.
데이터 중복 방지
DBMS는 데이터를 데이터베이스에 통합하여 관리하므로 기존의 파일 시스템의 데이터 중복에 따른 문제를 해결하고 데이터의 일관성을 보장합니다. 효율성 문제로 데이터 중복을 일부 허용하는 경우도 있으나, 가급적 최소한으로 통제하므로 일관성을 해치지 않습니다.
데이터의 독립성 확보
데이터베이스에 접근하고 이를 관리하는 모든 책임을 DBMS가 담당하기 때문에, 데이터베이스의 구조가 변경되어도 이를 사용하는 응용 프로그램은 영향을 받지 않습니다. 한마디로 응용 프로그램의 데이터 종속성이 해결됩니다.
데이터 동시 공유
DBMS는 동일한 데이터를 프로그램(사용자)의 요구에 따라 다양한 구조로 제공할 수 있으며, 동시 접근을 제어하는 기능을 보유하고 있습니다. 따라서 DBMS는 동시에 여러 응용 프로그램이 같은 데이터에 접근할 수 있도록 하는 동시 공유 기능을 제공합니다. 동시 공유가 가능하기 때문에 불필요한 데이터 중복을 제한할 수 있기도 합니다.
데이터 무결성 유지
데이터의 무결성을 유지하려면 기존 데이터 수정 혹은 새로운 데이터 삽입 시마다 데이터 유효성 검사를 해야 합니다. 파일 시스템에서는 데이터가 중복 저장되므로 쉽지 않은 일이나, DBMS는 데이터 관리를 전담하며 데이터 연산 수행 시마다 유효성 검사를 실시하여 데이터 무결성을 유지시켜줍니다.
물론 DBMS가 모든 방면에서 반드시 우수한 것은 아닙니다. DBMS가 가지는 단점들은 다음과 같습니다.
높은 비용
보통 OS와 함께 설치되는 파일 시스템과 달리 DBMS는 따로 구매해야 하므로 초기 비용이 발생하며, 특히 동시 접근을 많이 허용하는 제품일수록 가격이 높습니다. 가격 외에도 DBMS는 복잡하고 다양한 기능을 제공하는 대신 컴퓨터 자원을 많이 소모하는 단점이 있습니다.
백업 및 회복 기능의 복잡성
데이터베이스는 데이터를 통합하여 관리하는 만큼 많은 데이터를 저장하기 위해 복잡한 구조로 되어있어, 데이터 백업 과정이 상대적으로 복잡합니다. 또한 동시 공유를 지원하기에 오류 발생 시 정확한 원인을 파악하기 어렵고, 따라서 데이터 일관성이 유지되도록 회복하는 방법이 복잡할 수 밖에 없습니다.
중앙 관리로 인한 취약점
파일 시스템에서는 특정 파일에 오류가 발생하여도, 해당 파일을 이용하는 프로그램만 영향을 받습니다. 허나 모든 데이터를 데이터베이스에 저장하고 이를 DBMS가 전담하여 관리하는 중앙 관리 시스템에서는, 데이터베이스나 DBMS에 문제가 생길 경우 전체 시스템이 중단될 위험이 있습니다.
DBMS에도 이처럼 단점들이 존재하지만, 데이터 일관성 및 무결성을 유지하며 동시 공유를 지원하는 등의 장점이 크기 때문에 특히 방대한 양의 데이터를 다루는 곳에서는 대부분 DBMS를 사용합니다.
3. 데이터베이스 관리 시스템의 역사
DBMS는 발전 과정에 따라 다음과 같은 4세대로 나눌 수 있습니다.
1세대 - 네트워크 / 계층 DBMS
데이터베이스를 노드와 간선을 이용한 그래프 형태로 구성하는 네트워크 데이터 모델을 사용하는 DBMS를 네트워크 DBMS라 합니다. 간선을 통해 데이터의 관계를 표현하기 때문에 구조가 복잡해지기 쉽고 변경이 어렵다는 문제점이 있습니다. 대표적으로는 IDS(Integrated Data Store)가 있습니다.
데이터베이스를 트리 형태로 구성하는 계층 데이터 모델을 사용하는 DBMS를 계층 DBMS라 합니다. 네트워크 모델에 비해서는 구조가 단순하지만, 복잡한 데이터들을 계층이 명확한 트리 형태로 표현하기 힘들다는 단점이 있으며 구조 변경은 여전히 어렵습니다. 대표적으로는 IMS(Information Management System)가 있습니다.
2세대 - 관계 DBMS
데이터베이스를 테이블 형태로 구성하는 관계 데이터 모델을 사용하는 DBMS 입니다. 관계 데이터 모델은 엑셀 시트와 같은 모습을 띄며, 단순하고 사용자가 이해하기 쉬운 구조가 장점으로 꼽힙니다. 따라서 여러 관계 DBMS가 개발되었으며 지금도 널리 사용되고 있습니다. 대표적으로는 오라클(Oracle), MySQL 등이 있습니다.
3세대 - 객체지향 / 객체관계 DBMS
객체지향 프로그래밍에서 도입한 '객체'라는 개념을 이용해 데이터베이스를 구성하는 객체지향 데이터 모델을 사용하는 DBMS입니다. 더욱 다양하고 복잡한 응용 분야의 데이터를 관리하기 위해 제안되었으며, 새로운 유형의 데이터를 저장하고 이에 대한 복잡한 분석 및 처리를 지원합니다. 대표적으로는 온투스(ONTOS), 젬스톤(GemStone) 등이 있습니다.
4세대 이후 - NoSQL, NewSQL DBMS
관계 DBMS의 강점인 데이터의 안정성, 일관성 유지를 위한 기능을 포기하고, 데이터 구조를 미리 정해두지 않는 독특한 DBMS 입니다. SNS의 폭발적인 성장으로 인해 사진이나 동영상과 같은 관계 DBMS로 처리하기 어려운 비정형 데이터가 크게 늘어났고, 이를 저장하고 처리하는데 적합한 NoSQL(Not Only SQL) DBMS가 등장한 것입니다.
다만 기업에서 다루는 데이터 중에는 여전히 정형 데이터의 비중도 높고, 관계 DBMS의 데이터 안정성, 일관성 유지라는 강점은 무시할 수 없기에 완전히 NoSQL DBMS로 교체하는 것은 어렵습니다. 이 때 등장한 것이 NewSQL로, 데이터의 안정성 및 일관성은 유지하면서 SQL을 통해 다양하고 복잡한 데이터 처리를 요청할 수 있습니다. 한마디로 관계 DBMS의 장점과 NoSQL의 확장성 및 유연성을 합친 것으로, 정형 데이터와 비정형 데이터 모두 안정적이고 빠르게 처리할 수 있습니다.
이렇듯 DBMS도 시대에 맞춰 계속 발전되어 왔으나, 무조건 최신 DBMS가 좋다고 보기는 어렵습니다. 당장 2세대에 속하는 관계 DBMS가 널리 사용되고 있으며, NoSQL이나 NewSQL과 공존하고 있습니다. 시스템이 다뤄야 할 주요 데이터의 형태와 업무 성격 등을 고려하여 적절한 DBMS를 선택해야 하겠습니다.
'DB' 카테고리의 다른 글
[DB][SQL] 데이터의 검색 (0) | 2023.05.02 |
---|---|
[DB] 관계 데이터 모델 (0) | 2023.04.22 |
[DB] 데이터 모델링 (0) | 2023.04.17 |
[DB] 트랜잭션(Transaction) (0) | 2023.04.04 |
[DB] 데이터베이스의 정의 (0) | 2023.02.26 |