데이터베이스 관리 시스템의 등장 배경
과거에는 데이터를 관리하기 위해 "파일 시스템"을 사용해왔다. 이는 데이터를 파일로 관리할 수 있도록 파일을 생성, 삭제, 수정, 검색하는 기능을 제공하며, 응용 프로그램별로 필요한 데이터를 별도의 파일로 관리한다.
파일 시스템은 구매 비용이 들지 않는다는 장점이 있으나, 응용 프로그램별로 파일을 따로 유지하기에 여러 단점들이 발생한다.
- 같은 내용의 데이터가 여러 파일에 중복 저장된다.
- 응용 프로그램이 데이터 파일에 종속적이다.
- 데이터 파일에 대한 동시 공유, 보안, 회복 기능이 부족하다.
- 응용 프로그램을 개발하기 쉽지 않다.
파일 시스템의 근본적인 문제는 "데이터 중복성"과 "데이터 종속성"이다. 이를 해결하기 위해서는 데이터를 통합하여 저장해야 하며, 또한 통합 저장된 데이터를 관리하고, 처리하며, 여러 기능을 제공해야 한다. 그 대안으로 등장한 것이 바로 "데이터베이스 관리 시스템(DataBase Management System: DBMS)"이다.
데이터베이스 관리 시스템의 정의
데이터베이스 관리 시스템(DBMS)은 파일 시스템의 데이터 중복과 데이터 종속 문제를 해결하기 위해 제시된 소프트웨어로, 조직에 필요한 데이터를 데이터베이스에 통합하여 저장하고, 관리를 담당한다. 데이터베이스 관리 시스템이 데이터베이스에 들어있는 데이터를 삽입/삭제/수정/검색하고, 모든 응용 프로그램이 데이터베이스를 공유하도록 한다. 데이터베이스 관리 시스템이 제공하는 주요 기능은 다음과 같다.
- 정의 기능(Definition): 조직에 필요한 데이터를 저장하기 적합한 데이터베이스 구조를 정의하거나, 정의된 구조를 수정할 수 있다.
- 조작 기능(Manipulation): 데이터베이스에 저장된 데이터에 접근하여 사용할 수 있는 기능(데이터 삽입/삭제/수정/검색)을 제공한다.
- 제어 기능(Control): 데이터 내용이 일관되면서 무결성을 유지하게 하고, 장애가 발생하더라도 회복이 가능하게 제어하며, 보안이 유지되도록 제어한다. 데이터를 여러 사용자가 공유하더라도 항상 정확하고 안전하게 유지하는 기능을 제공한다.
데이터베이스 관리 시스템의 장단점
과거에 데이터를 관리하던 방법인 파일 시스템과 비교했을 때, 데이터베이스 관리 시스템은 다음의 장단점을 가진다.
데이터베이스 관리 시스템의 장점
데이터베이스 관리 시스템의 장점은 다음과 같다.
- 데이터 중복을 통제할 수 있다.
- 데이터 독립성이 확보된다.
- 데이터를 동시 공유할 수 있다.
- 데이터 보안이 향상된다.
- 데이터 무결성을 유지할 수 있다.
- 표준화할 수 있다.
- 장애 발생 시 회복이 가능하다.
- 응용 프로그램 개발 비용이 감소한다.
데이터베이스 관리 시스템의 단점
데이터베이스 관리 시스템에도 단점이 있기에, 모든 상황에 적합한 것은 아니다. 데이터베이스 관리 시스템의 단점은 다음과 같다.
- 데이터베이스 관리 시스템은 따로 설치하기에 구매 비용이 많이 든다.
- 백업과 회복 방법이 복잡하다.
- 중앙 집중 관리로 인한 취약점이 존재한다.
데이터베이스 관리 시스템의 발전 과정
데이터베이스 관리 시스템은 현재까지도 발전하고 있다. 사용하는 데이터 모델에 따라 "네트워크 DBMS", "계층 DBMS", "관계 DBMS", "객체지향 DBMS", "객체관계 DBMS"로 구분이 가능하다. 이때, 데이터 모델이란 데이터를 데이터베이스에 저장하는 구조를 의미한다.
데이터베이스 관리 시스템은 발전 과정에 따라 총 4세대로 나눌 수 있다.
1세대 데이터베이스 관리 시스템: 네트워크/계층 DBMS
1960~1970년대에 사용된 "네트워크 DBMS", "계층 DBMS"가 1세대에 속한다.
네트워크 DBMS는 데이터베이스를 노드와 간선을 이용한 그래프 형태로 구성하는 네트워크 데이터 모델을 사용한다. 네트워크 DBMS는 간선을 이용하여 데이터 간의 관계를 표현하기에 데이터베이스의 구조가 복잡하고 변경하기 어렵다. IDS(Integrated Data Store)가 대표적인 네트워크 DBMS이다.
계층 DBMS는 데이터베이스를 트리 형태로 구성하는 계층 데이터 모델을 사용한다. 계층 DBMS는 네트워크 DBMS보다 구조가 단순하지만, 복잡한 현실 세계를 트리 형태만으로는 표현하기 어렵고 구조 변경이 어렵다. IMS(Information Management System)가 대표적인 계층 DBMS이다.
2세대 데이터베이스 관리 시스템: 관계 DBMS
1980년대부터 사용된 "관계 DBMS"가 2세대에 속한다.
관계 DBMS는 데이터베이스를 테이블 형태로 구성하는 관계 데이터 모델을 사용한다. 관계 데이터 모델은 데이터베이스를 단순한 구조로 구성하기에 많이 개발되었다. 관계 DBMS는 1980년대부터 계속해서 발전되고 확장되어 성능이 향상되었고 지금까지도 널리 사용된다. 오라클(Oracle), MS SQL 서버, 엑세스, MySQL, 마리아DB(MariaDB), 인포믹스(Informix) 등이 대표적인 관계 DBMS이다.
3세대 데이터베이스 관리 시스템: 객체지향/객체관계 DBMS
1980년대~1990년대에 등장한 "객체지향 DBMS"와 "객체관계 DBMS"가 3세대에 속한다.
객체지향 DBMS는 객체 개념을 이용하여 데이터베이스를 구성하는 객체지향 데이터 모델을 사용하며, 이 시스템은 새로운 유형의 데이터를 저장하고, 데이터에 대한 복잡한 분석과 처리를 지원한다. 오투(o2), 온투스(ONTOS), 젬스톤(GemStone) 등이 대표적인 객체지향 DBMS이다.
객체관계 DBMS는 관계 데이터 모델에 객체지향 개념을 도입한 객체관계 데이터 모델을 사용한다. 관계 DBMS로 분류된 제품들이 객체지향 기능을 지원하며 객체관계 DBMS로 분류되기도 하는데 대표적으로 오라클(Oracle)이 있다.
4세대 데이터베이스 관리 시스템: NoSQL/NewSQL DBMS
객체지향/객체관계 DBMS가 등장한 이후에도, 여전히 관계 DBMS가 우세했다. 그러나 많은 사람들이 SNS를 폭발적으로 이용하며 사진, 동영상과 같은 비정형 데이터가 대량으로 생산되고, 클라우드 컴퓨팅, 빅데이터 개념이 등장하며 관계 DBMS는 점점 흔들리기 시작했다. 관계 DBMS는 비정형 데이터를 처리하는데 비효율적이기 때문이다.
이러한 시대적 흐름은 NoSQL DBMS의 등장을 이끌었다.
NoSQL DBMS는 안정성과 일관성 유지를 위한 복잡한 기능을 포기했지만, 비정형 데이터를 저장하고 처리하는데 매우 적합한 형태이다. 확장성이 뛰어나기에 여러 서버 컴퓨터에 데이터를 분산 저장하고 처리하는 환경에서 주로 사용되었다. 대표적인 NoSQL DBMS로는 몽고디비(MongoDB), H베이스(HBase), 카산드라(Cassandra), 레디스(Redis), 네오포제이(Neo4j), 오리엔트DB(OrientDB) 등이 있다.
NoSQL이 많은 장점을 지니고 있으나, 관계 DBMS를 온전하게 대체하는 것은 어려웠다. 관계 DBMS가 제공하는 안정성과 일관성은 중요하게 평가받고 기업에서 처리하는 데이터 중 정형 데이터가 차지하는 비율이 높기 때문이다. 결국 기존의 관계 DBMS는 유지하며 비정형 데이터를 처리하기 위해 NoSQL을 추가로 도입해야 하는 문제가 발생했는데, 이는 NewSQL DBMS의 등장을 이끌었다.
NewSQL DBMS는 안정성과 일관성을 유지하며 SQL을 이용해 다양하고 복잡한 데이터를 편리하게 요청할 수 있다. 따라서 정형 데이터와 비정형 데이터를 안정적이고 빠르게 처리할 수 있다. 대표적인 NewSQL DBMS로는 구글 스패너(Spanner), 볼트DB(VoltDB), 누오DB(NuoDB) 등이 대표적이다. 다만, NewSQl은 시장에 진입한 지 얼마 되지 않았기에 여전히 관계 DBMS, NoSQL, NewSQL이 상호 보완하며 공존할 것이다.