이전 포스팅에서 데이터베이스에 대한 기본 개념을 알아보았다.
이번 포스팅에서는 DBMS의 정의와 특징, 발전 과정을 알아본다.
DBMS
데이터 베이스를 관리하는 소프트웨어 패키지. 아래의 동작을 수행한다.
사용자가 새로운 데이터 베이스를 생성할 수 있게 한다.
사용자가 데이터 베이스의 구조를 명시할 수 있게 한다.
사용자가 데이터를 효율적으로 질의하고 수정할 수 있게 한다.
시스템의 고장, 권한이 없는 사용자로부터 데이터를 안전하게 보호한다.
동시에 여러 사용자가 데이터베이스에 접근하는 것을 관리한다.
'데이터베이스 언어'를 한 개 이상 제공한다. (프로그래밍 언어)
대표적인 데이터베이스 언어로는 SQL, NoSQL 등이 있다. SQL은 여러 DBMS가 제공하는 사실상의 표준 데이터베이스 언어이다.
File system vs DBMS
데이터베이스 시스템의 요구사항
- 데이터 독립성
데이터와 데이터를 다루는 프로그램의 독립성을 의미한다. 프로그램에 따라 데이터가 달라지면 프로그램 변경 시 데이터도 모두 변경해야 하기 때문에 비효율적이다.
- 효율적인 데이터 접근
- 데이터에 대한 동시 접근
여러 사용자가 동시에 접근해야 하므로 이를 관리해야 한다.
예를 들어 한 기업의 인사팀과 개발팀은 동시에 회사의 DB에 접근해 사원 정보를 확인하고 수정해야 하는 상황이 생길 수 있다.
- 백업과 회복
백업: 지금 상태를 본 떠 두었다가 그대로 가져오기
회복: 로그를 기록해두고 문제가 발생했을 시 복구하기
- 중복을 줄이거나 제어하면서 일관성을 유지
- 데이터 무결성
데이터 무결성: 데이터와 자료형, 타입등이 잘못 매핑되지 않은 상태
- 데이터 보안
- 쉬운 질의어
- 다양한 사용자 인터페이스 (UI)
위의 요구사항을 만족하기 위해서는 file system 보다 DBMS를 사용하는 것이 유리하다.
File system을 사용한 기존의 데이터 관리
File system
파일시스템은 1960년대부터 사용했던 방식이다.
파일을 접근하는 방식은 응용프로그램마다 달랐기 때문에 응용프로그램에 대한 의존도가 높았다.
즉, 1번 파일에 접근하기 위해서는 1번 프로그램을, 2번 파일에 접근하기 위해서는 2번 프로그램을 써야 하니 언어를 여러개 배워야 하는 비효율이 발생했다. 더불어 두 파일을 합칠 때에는 호환성을 맞추는 작업이 필요해 역시 비효율적이었다.
또한 데이터가 많은 화일에 중복으로 저장된다.
file system은 또한 다음의 단점을 가지고 있다.
- 다수의 사용자가 동시에 사용할 때 동시성 제어를 하지 못함
- 검색하려는 데이터를 쉽게 나타내는 질의어가 없음
- 보안조치 미흡
- 회복 기능 없음
- 프로그램-데이터 독립성이 없으므로 유지 보수 비용 많이 발생 (프로그램이 바뀔 때 마다 데이터 변경)
- 데이터를 다루는 절차가 상대적으로 복잡 -> 프로그래머의 생산성 낮음
- 데이터 공유와 융통성 부족
DBMS를 이용한 데이터 처리
DBMS
DBMS는 여러 응용 프로그램들이 데이터 베이스를 공유해서 사용하게 된다. 사용자 질의는 DBMS가 빠르게 수행할 수 있는 인덱스 등의 경로를 자동으로 선택해주어 수행된다. 권한이 없는 사용자는 데이터베이스에 접근이 불가능하다. DBMS는 여러 사용자에 알맞는 다양한 인터페이스를 제공하며 데이터 간의 복잡한 관계를 표현해준다.
무결성 제약조건은 DBMS가 자동적으로 관리해준다. 이때 무결성 제약조건이란 정확성, 일관성을 보장하기 위해 저장, 삭제, 수정 등을 제약하기 위한 조건이다. 시스템이 고장나면 DBMS는 데이터베이스를 고장 전의 일관된 상태로 회복시킨다. 따라서 프로그램에 영향을 주지 않으면서 데이터베이스 구조 변경이 가능하다. 이를 프로그램 -데이터 독립성(program - data indepedence)라고 한다.
따라서 DBMS의 장점은 다음과 같다.
- 중복성과 불일치 감소
- 시스템 개발, 유지 비용 감소
- 표준화 시행 용이
- 보안 향상
- 무결성 향상
- 조직체의 요구사항 식별 가능
- 다양한 유형의 고장으로부터 DB 회복 가능
- DB의 공유, 동시 접근 가능
그러나 DBMS도 단점이 있다.
- 추가적인 하드웨어 구입 비용 필요
- DBMS 자체도 비쌈
- 직원들의 교육 비용 필요
- 비밀, 프라이버시 노출 가능성
보안이 장점인데 어떻게 이런 단점이 존재하는가?
취약하다는 의미가 아니라 가능성은 있다는 의미
따라서 초기 투자비용이 너무 클 때, 오버헤드 클 때, 응용이 단순하고 잘 정리되어 있으며 잘 변경되지 않을 것 같을 때, 엄격한 실시간 처리를 해야할 때, 데이터를 다수가 접근할 필요가 없을 때는 DBMS를 사용하지 않는 것이 바람직하다.
데이터 모델
데이터베이스의 구조를 기술하는데 사용되는 개념들의 집합. 이 개념 위에서 동작하는 연산자, 무결성 제약조건 등을 뜻한다. 사용자에게 저장을 어떻게 했는지 등의 세세한 사항을 숨기고 데이터에 대한 직관적인 뷰를 제공한다.
데이터를 추상화해서 표현한 것이다.
데이터 모델의 분류
1. 고수준 / 개념적 데이터 모델 (conceptual data model)
- 사람이 인식하는 것과 유사하게 DB의 전체적인 논리 구조를 명시
ex) 엔티티 관계 (Entity - Relationship): 데이터 모델과 객체 지향 데이터 모델
2. 표현 데이터 모델 (representation ( implementation ) data model)
- 최종사용자가 이해하는 개념. 컴퓨터 내에서 조직되는 방식과 멀리 떨어져있지는 않음
ex) 관계 데이터 모델(relational data model), 계층 데이터 모델, 네트워크 데이터 모델 ...
3. 저수준 또는 물리적 데이터 모델(physical data model)
- 데이터가 어떻게 저장되는가를 기술
계층 데이터 모델
1960년대 후반 최초의 계층 DBMS 등장. (ex. IBM사의 IMS)
트리 구조를 기반
장점
- 어떤 유형의 응용에 대해서는 빠른 속도와 높은 효율성
단점
- 위의 어떤 유형에 해당하는 유형이 적음
- 어떻게 데이터 접근할 지 미리 응용 프로그램에 정의해야 함
- 데이터 베이스가 생성될 때 각각의 관계를 명시적으로 정의해야 함
- 레코드들이 링크로 연결되어 있어 레코드 구조 변경이 어려움
네트워크 데이터 모델
1960년대 초 개발 (하니웰 사의 IDS)
레코드 -> 노드, 레코드 사이의 관계 -> 간선으로 표현되는 그래프 기반 모델
레코드들이 링크로 연결돼서 레코드 구조 변경 어려움
관계 데이터 모델
1970년 IBM 연구소에서 제안
모델이 간단해 이해하기가 쉽고, 사용자는 자신이 원하는 것만 명시하면 데이터가 어디에 있는지, 어떻게 접근하는지는 DBMS가 결정해준다.
오라클, MS SQL Server, Sybase, DB2, Informix 등이 있다.
객체 지향 데이터 모델
1980년대 후반에 들어서 객체 지향 데이터 모델 등장
데이터와 프로그램 그룹화
복잡한 객체 이해 쉬움
유지와 변경 용이
ONTOS, OpenODB, GemStone 등이 있다.
객체 관계 데이터 모델
1990년대 후반 관계 DBMS와 객체 지향 개념을 합친 객체 관계 데이터 모델 제안
오라클, Informix Univeral Server등이 있다.
사진 자료 출처:
데이터베이스 배움터 / 홍의경 / 생능출판사 /2014 |
'데이터 베이스' 카테고리의 다른 글
데이터베이스 - DBMS[2] (0) | 2023.10.21 |
---|---|
데이터베이스 - 데이터베이스 시스템 (3) | 2023.10.20 |