배경
파일 시스템(file system)은 데이터를 파일로 관리하는 소프트웨어이다. 즉 파일을 통해 데이터를 생성, 삭제, 수정, 검색한다. 파일로 데이터를 다루게 되면 응용 프로그램마다 필요한 데이터를 별도의 파일로 관리해야 한다. 따라서 같은 내용의 데이터가 여러 파일에 중복 저장되는 문제가 발생한다. 이것이 문제인 이유는 데이터의 일관성(consistency), 무결성(integrity)을 유지하기 어렵기 때문이다. 또한 응용 프로그램이 데이터 파일에 종속적이게 된다.
결과적으로 파일 시스템으로 데이터를 관리하게 된다면 데이터 파일에 대한 동시 공유, 보안, 회복 기능 부분에서 취약해진다. 데이터 중복 때문에 일관성과 무결성을 유지하기 어렵고, 파일 수정 중 장애 발생 시 데이터가 날아갈 수도 있다. 따라서 이러한 상황에서는 응용 프로그램 개발 역시 쉽지 않다.
이를 극복하기 위해 데이터베이스 관리 시스템(DBMS)가 등장하였다. 필요한 데이터를 데이터베이스에 통합하여 저장하고 관리하는데 이 역할을 DBMS가 수행한다. 데이터를 소유한 쪽을 서버(server), 데이터를 요청하는 쪽을 클라이언트(client)라 하는데, DBMS 서버가 데이터를 다뤄 데이터의 일관성 유지, 복구, 동시 접근 제어 등 기능을 수행하여 데이터 중복을 줄이고, 데이터를 표준화하여 무결성을 유지한다.
간단하게 예를 들어보자. 고객 관리에 고객아이디
, 고객이름
, 연락처
, 주소
, 비밀번호
가 필요하다고 하고, 주문 관리에 주문번호
, 고객아이디
, 고객이름
, 연락처
, 주소
, 제품명
, 수량
이 필요하다고 해보자.
파일 시스템에서 사용하려면 각각 필요한 것들을 고객 관리, 주문 관리로 따로 파일을 만들어 관리할 것이다. 이렇게 되면 겹치는 부분, 즉 고객아이디
, 고객이름
, 연락처
, 주소
에 대한 부분이 변경되었을 때 모든 파일에 적용해야 하는데, 첫째로 모든 파일에 적용하기 쉽지 않고, 둘째로 하나라도 수정이 안되면 문제가 발생할 것이다. 따라서 데이터베이스를 만들고 그 곳에 정보를 통합하여 관리하는 편이 더 사용하기도 좋고 데이터 무결성을 유지하기도 좋다.
데이터베이스 관리 시스템 (DBMS)
데이터베이스 관리 시스템은 데이터베이스라는 데이터의 집합을 만들고, 저장 및 관리할 수 있는 기능들을 제공하는 프로그램이다. 즉, 데이터의 관리에 특화된 프로그램들이라고 생각하면 편하다.
DBMS는 데이터베이스 구조를 정의하거나 수정할 수 있어야 하고, 데이터를 삽입, 삭제, 수정, 검색하는 연산을 지원해야 하며, 데이터를 항상 정확하고 안전하게 유지할 수 있어야 한다. 다르게 말하면 이러한 역할을 수행하기 위해 DBMS가 필요하다.
앞서 언급한 파일 시스템과 다르게 데이터를 DBMS가 제어하기 때문에 데이터가 필요한 프로그램이 데이터에 직접 접근하는 것이 아니라 DBMS에 데이터를 요청하는 방식으로 작동한다. 덕분에 앞서 말한 장점, 즉 데이터 공유를 통한 중복 방지, 이를 통해 따라오는 데이터 일관성과 프로그램의 독립성 유지가 가능해진다. 덕분에 프로그램을 개발할 때 생산성이 향상된다.
그러나 한편으로는 이러한 데이터베이스를 유지하기 위한 비용이 들어갈 것이고, 앞서 말한 무결성, 일관성 유지를 위해 백업, 회복 등 과정에서 복잡한 연산이 발생할 수 있다. 한 곳에 데이터가 몰려 있기 때문에 취약점도 존재한다. 물론 그럼에도 장점이 압도적이라 DBMS는 필수적으로 사용된다.
위와 같이 데이터베이스 시스템이 구성된다. 일반사용자는 데이터를 다루는 업무 담당의 사람이고, 응용프로그래머는 일반 사용자를 위한 프로그램 및 데이터 관리 응용 로직을 개발하는 사람, SQL 사용자는 IT 부서에서 SQL을 이용해 응용 프로그램 외 업무를 처리하는 사람, DBA는 데이터베이스 관리자로 데이터베이스 설계, 운영, 보안, 성능 모니터링 및 관리를 담당하는 사람을 말한다.
종류
파일 시스템에서 데이터베이스 관리 시스템(DBMS)으로 넘어온 이후 당연히도 다양한 DBMS가 나타나고 사용되는 중이다. 간단하게 각 세대별 모델을 소개하면 다음과 같다.
• 1세대 계층형 DBMS (Hierarchical DBMS)
트리 형태로 생긴 DBMS로 상하종속적이다. 부모 테이블은 하나 이상의 자식을 가질 수 있지만, 자식은 오직 하나의 부모 테이블에 종속된다. 상하부에 종속되어 있기에 구조 변경도 어렵고, 최적화 문제도 있지만, 파일 시스템보다는 낫고, 데이터 엑세스 속도가 빠르다는 장점이 있다.
• 1세대 네트워크형 DBMS (Network DBMS)
계층 DBMS의 단점을 보완하고자 만든 모델로 그래프 구조로 연결된 DBMS이다. 노드인 레코드와 간선인 관계로 관리한다. 그래프로 구현하기에 부모, 자식 관계가 일대다만 가능한 계층 DBMS와 다르게 다대다 관계도 지원한다. 덕분에 구조가 더 까다로워졌다.
• 2세대 관계형 DBMS (RDBMS, Relational DBMS)
가장 많이 사용하는 모델로 흔히 테이블이라 부르는 형태로 데이터를 관리한다. 행과 열로 관리하기 때문에 직관적이고 사람이 알아보기 편하다는 장점이 있다. 여러 테이블 간 외래 키(foreign key)를 통해 참조 무결성을 유지한다. 거의 대부분 SQL을 사용하며 덕분에 여러모로 관리가 편리하다는 장점이 있다.
• 3세대 객체형 DBMS (Object DBMS)
객체지향 개념을 도입한 DBMS로 관계형 DBMS의 한계를 극복하고 더 복잡한 구조의 데이터를 다룰 때 유리하다. 단 다른 의미로는 구조가 복잡해졌고, 사용 측면에서도 더 복잡해졌다는 뜻이다. 기존 관계형 DBMS를 뛰어넘을 장점이 그다지 없어 관계형 DBMS가 계속 사용된다. 관계형 DBMS에서 외래 키를 통해 테이블 간 참조했다면 객체형 DBMS에서는 객체식별자를 통해 참조한다.
사용되는 용어도 조금 다르다. 관계형 DBMS에서 관계(relation)라 하던 것이 객체형 DBMS에서는 클래스(Class)로 사용되고, 튜플(tuple)도 인스턴스 오브젝트(instance object)로, 컬럼(column)도 속성(attribute)로 사용된다. 정확히 같은 개념은 아니지만 비슷한 느낌이다.
• 4세대 NoSQL 및 NewSQL DBMS
3세대 DBMS가 자리 잡는데에 실패했지만(그래서 4세대 DBMS를 3세대 DBMS라 부르기도 한다) 그럼에도 여전히 관계형 DBMS에서 표현하기 어려운 구조화되지 않고, 비정형인 데이터를 처리할 수 있는 DBMS에 대한 수요가 있었다. 특히 SNS나 여러 매체의 발달로 비정형 데이터 처리에 대한 수요가 증가하면서 데이터 구조를 미리 정해두지 않아 유연한 Not-Only SQL, 즉 NoSQL DBMS가 등장하였다. NewSQL은 관계형 DBMS의 특성을 유지하면서 NoSQL의 확장성을 결합한 DBMS이다. 그러나 결국 유연하다는 것은 불안정하다는 것이기에 많은 경우 관계형 DBMS가 사용된다.
데이터베이스 시스템 (DBS, Database System)
데이터베이스 시스템은 데이터베이스에 데이터를 저장, 관리 및 필요한 정보를 생성하는 시스템이다. 데이터베이스(DB), 데이터베이스 관리 시스템(DBMS)과 혼동하여 사용하는 용어지만, 데이터베이스 시스템(DBS)은 데이터베이스와 데이터베이스 관리 시스템을 이용하여 데이터를 관리 및 제공하는 전체 시스템을 일컫는 말이다.
'Computer Science and Engineering > Database' 카테고리의 다른 글
[DB] 관계 데이터 모델(relation data model) (0) | 2025.04.01 |
---|---|
[DB] 데이터 모델링(data modeling) 및 표기법(notation) (0) | 2025.03.26 |
[DB] 데이터 정의어(DDL),데이터 조작어(DML), 데이터 제어어(DCL) (0) | 2025.03.19 |
[DB] 데이터베이스 구조 및 구성 (0) | 2025.03.19 |
[DB] 데이터베이스(database) 및 데이터(data) (0) | 2025.03.10 |