간단 지식/Database

02. DB를 관리하는 DBMS

납작한돌맹이 2020. 1. 14. 16:18
반응형

대부분의 기술이 그렇듯 데이터베이스와 같은 핵심 기술은 관리자가 필요하다. 이것을 Database Management System(DBMS)라고 부른다. DBMS 구조는 심플하고 효율적이다. 단번에 이해를 돕기 위해 그림을 하나 준비해봤다.

응용 프로그램과 데이터 간의 중재자로, 모든 응용 프로그램이 데이터베이스를 공용할 수 있게 관리하는 범용 소프트웨어 시스템

초창기 DBMS라는 개념이 없을 시절, OS가 지원하는 파일 중심 데이터 처리 시스템을 사용했다.

 

파일 중심 데이터 처리 시스템

- 각 응용 프로그램이 논리적 파일 구조를 정의하고 직접 물리적 파일 구조를 구현

- 각 응용 프로그램이 물리적 데이터 구조에 대한 접근 방법을 구현

- 각 사용자가 데이터와 이를 처리하는 프로그램을 모두 관리

- 응용 프로그램 간의 데이터 공용이 불가능

 

즉 DBMS와 다르게 각 응용 프로그램이 개별적으로 data file을 갖는 구조인 시스템이다.

이 시스템은 데이터 종속성과 데이터 중복성이라는 치명적인 단점이 존재한다.

데이터 종속성은 응용 프로그램과 데이터 간의 dependency를 말한다. 쉽게 말하자면 데이터 구성 또는 접근 방식이 변경되면 관련된 모든 응용 프로그램도 변경해야 하는 문제를 말한다. 

데이터 중복성은 한 시스템 내의 여러 데이터 파일에 같은 내용의 데이터가 중복 저장되는 문제를 말한다. 별 것 아니라고 생각할지 모르겠지만 이 문제는 일관성, 보안성, 경제성, 무결성 문제로 확장된다.

 

반면에 DBMS는 어떤 응용 프로그램이든 DBMS를 거치기만 하면 data file에 저장된 어떤 데이터든 사용할 수 있게 해주는 훌륭한 시스템이다. 이런 DBMS를 만들기 위한 조건은 굳이 말 안 해도 까다로울 것이라는 건 모두 예상할 수 있을 것이다. DBMS의 필수 조건은

1. 정의 기능

2. 조작 기능

3, 제어 기능 

이 있다.

정의 기능은 데이터를 조직하는 기능인데 어떻게 조직하느냐가 중요하다. 바로 하나의 저장구조로 여러 사용자의 요구를 지원가능하게 조직해야 한다. 또한 만족해야 하는 요건이 2가지가 있다. '데이터의 논리적, 물리적 구조를 명세'하고 '논리적, 물리적 사상을 명세'해야 한다는 점이다. 사상에 대해서는 뒤에서 설명하겠다.

조작 기능은 체계적으로 데이터베이스에 접근, 조작할 수 있게 해주는 기능이다. 여기서 말하는 조작이란 insert, delete, search, update를 말한다. 이 기능은 사용자와 데이터베이스 간의 인터페이스를 위한 수단이라고 말한다.

제어 기능은 데이터의 정확성과 보안성을 유지하는 기능으로 4가지 요건이 있다. 1. 무결성 유지(integrity), 2. 보안, 권한 검사(security&authority), 3. 병행수행 제어(concurrency control), 4. 복구(recovery)


이렇게 까다로운 조건을 만족해야하는 DBMS가 궁극적으로 목표하는 바는 '데이터의 독립성' 이다. 이는 논리적 데이터 독립성과 물리적 데이터 독립성으로 구분된다.

논리적 데이터 독립성은 응용 프로그램에 영향을 주지 않고 논리적 데이터 구조를 변경할 수 있음을 의미한다. 이것이 만족되면 응용 프로그램의 효율적인 개발이 가능하다.

물리적 데이터 독립성은 응용 프로그램과 논리적 데이터 구조에 영향을 주지 않고 물리적 데이터 구조를 변경할 수 있음을 의미한다. 이것이 만족되면 저장장치의 효율적인 개발이 가능하다.

 

데이터의 독립성을 구현하는 기법이 아까 위에서 잠깐 언급한 '사상'(mapping)이다. 사상에 대해서는 글로 주저리 설명하기보단 그림으로 한 번에 이해하는 편이 쉽다.


DBMS는 1세대, 2세대를 걸쳐 이제는 3세대까지 왔다고 본다. 각 발전과정에 대해 깊게 알고 싶은 사람은 나중에 댓글로 달아주면 알려주겠다. 마지막으로 DBMS의 장점과 단점에 대해서 말해보겠다.

사실 장점은 모두 위에서 말했듯

- 데이터 중복의 최소화(redundancy)

- 데이터의 공용(sharing)

- 일관성 유지(consistency)

- 무결성 유지(integrity)

- 보안 보장(security)

- 표준화 용이(standardization)

등이 있는데 좀 더 주목하고자 하는 것은 단점이다.

- 운영비의 오버헤드

- 특정 응용 프로그램의 복잡화

- 복잡한 백업과 리커버리

- 시스템의 취약성

참고로 마지막 항목인 시스템의 취약성은 보안적인 부분이 아니라 표준화에 의한 취약성이므로 넘어가도 좋다. DBMS는 분명 지금 그 자체로도 문제없이 서비스를 제공하고 있다고 생각하지만 위 항목들을 보완할 필요가 있다고 생각한다. 현제 3세대 DBMS는 객체지향 DBMS가 될 거라고 교수님이 그러셨다. 만일 그렇게 된다면 사용자의 여러 요구사항 및 현재 table구조에 저장하기 어려운 엔지니어링 또는 이미지/비디오 또는 데이터 마이닝에 필요한 데이터들을 저장할 수 있는 data model을 기반으로 개발되지 않을까 싶다.


다음 글에서는 DBMS의 구조와 이를 구성하는 요소들에 대해 설명하겠다. 

 

(이 글이 도움이 됐다면 광고 한번씩만 클릭 해주시면 감사드립니다, 더 좋은 정보글 작성하도록 노력하겠습니다 :) )

반응형