데이터베이스 시스템은 여러 모듈로 구성된다. 기능적인 관점에서 봤을 때, 크게 두 부분으로 나뉜다.
저장장치 관리자(storage manager)
데이터베이스는 본질적으로 대량의 기억 공간을 필요로 하므로 저장장치 관리자의 역할은 매우 중요하다. 최근에는 TB 혹은 그 이상의 데이터들을 저장해야하기 때문이다. 디스크 I/O는 CPU 속도에 비해 매우 느리기 때문에 디스크와 메인 메모리 사이의 데이터 이동이 최소화되도록 데이터를 구조화한다.
다양한 DML 문을 하위 단계의 파일 시스템으로 변환한다. DB 내의 데이터를 저장하고 검색하며, 갱신하는 책임이 있다. 또한 물리적 시스템 구현의 일부로서, 저장 장치 관리자는 데이터 파일, 데이터 사전, 색인을 구현한다.
구성 요소
1. 권한과 무결성에 관한 관리자
무결정 제약조건이 만족하는지 검사, 사용자 권한 검사
2. 트랜잭션 관리자
시스템이 고장나도 DB가 일관성 있는 정확한 상태를 유지하도록 보장, 동시에 일어나는 트랜잭션의 충돌 방지
3. 파일 관리자
디스크 공간의 할당과 저장된 정보 표현을 위해 자료 구조 관리
4. 버퍼 관리자
디스크로부터 메인 메모리로 데이터를 인출하는 과정, 메인 메모리에서 캐시로 보낼 데이터를 결정하는 것에 대한 책임
메인 메모리보다 훨씬 큰 데이터베이스 내의 데이터를 메인 메모리에서 처리가능하게 하는 역할
질의 처리기(Query Processor)
데이터에 접근하는 과정을 단순화하고 효율적으로 만드는 역할을 한다.
구성 요소
1. DDL 인터프리터
DDL문을 해독하여 데이터 사전 내에 기록한다.
2. DML 컴파일러
질의어 내의 DML 문을 질의 평가 엔진이 이해할 수 있는 하위 단계 명령어로 구성된 질의 수행 계획으로 바꾼다. 여러 질의 수행 계획 중 가장 낮은 비용의 계획을 선택해주는 질의 최적화를 수행한다.
3. 질의 평가 엔진(query evaluation engine)
DML 컴파일러가 생성한 하위 단계 명령을 실행한다.
트랜잭션 관리
트랜잭션(transaction)은 데이터베이스 응용 프로그램에서 하나의 논리적 기능을 수행하는 연산들의 모임이다. 트랜잭션은 어떤 데이터베이스 일관성 제약조건도 위반해서는 안 된다. (원자성, 일관성, 지속성 등)
원자성과 지속성을 보장하는 것은 데이터베이스 시스템 중 복구 관리자(recovery manager)의 책임이다. 고장이 없다면 데이터베이스를 관리하기 편하겠지만 다양한 종류의 고장들이 빈번하게 발생하기 때문에 실패 복구를 수행해야한다. 또한 동시 실행 트랜잭션들 간의 상호 작용을 제어하는 것은 동시성 제어관리자(concurrency-control manager)의 책임이다. 트랜잭션 관리자는 동시성 제어관리자와 복구 관리자로 구성된다.
데이터베이스 구조
데이터베이스 시스템은 동작하는 컴퓨터 시스템에 의해 크게 영향을 받는다. 중앙 집중 방식 또는 클라이언트-서버 방식이 있을 수 있고 병렬 컴퓨터 구조를 이용하는 설계가 있을 수 있다. 분산 데이터베이스는 여러 개의 지리적으로 분리된 컴퓨터 시스템에서 작동한다.
대부분의 데이터베이스 시스템 사용자들은 시스템에서 작업하기보다는 대개 네트워크를 통해 데이터베이스에 접속한다.
클라이언트 : 원격으로 데이터베이스에 접속하여 작업
서버 : 데이터베이스 시스템이 실제로 설치되어 있는 곳
2-계층 구조 : 응용 프로그램이 클라이언트 상에 존재, 질의문을 보냄으로써 서버에 있는 데이터베이스 시스템의 기능을 불러온다. 이때 ODBC나 JDBC와 같은 응용 프로그램 인터페이스 표준이 사용된다.
3-계층 구조 : 클라이언트는 어떤 데이터베이스 호출도 직접적으로 수행하지 않고 단지 전처리 시스템으로부터 역할만 한다. 웹이나 대규모의 응용 프로그램에 적합하다.
데이터베이스 사용자와 관리자
1. 일반 사용자
일반적으로 응용 프로그램을 이용하여 시스템을 사용한다. 시스템이 익숙하지 않은 사용자 층이다.
2. 응용 프로그램 프로그래머
컴퓨터 전문가이며, 응용 프로그램을 작성한다.
3. 능숙한 사용자
프로그램을 작성하지는 않으나, 시스템에 직접 액세스하는 사용자이다. 데이터베이스 내의 데이터를 조사하기 위한 질의를 제시하는 분석가 등이 있다.
4. 특수 사용자
전통적인 데이터 처리 방식과는 다른 특수한 데이터베이스 응용 프로그램을 작성하는 능숙한 사용자이다. 응용 프로그램에는 컴퓨터 지원 설계 시스템, 지식-기반 시스템, 전문가 시스템 복잡한 형의 데이터를 저장하는 시스템 및 환경 모델링 시스템 등이 있다.
5. 데이터베이스 관리자 (database administrator : DBA)
DBMS를 사용하는 이유 중 하나는 데이터와 액세스하는 프로그램들 모두 중앙에서 제어를 하는 것이다.
- 스키마 정의
- 저장 구조와 액세스 방법의 정의
- 스키마 및 물리 구조의 수정
- 데이터 액세스 권한의 인정
- 루틴 유지 및 관리
데이터베이스 시스템의 역사
1950년대 ~ 60년대 초반
자기 테이프를 사용하여 데이터 저장하였다. 테이프는 천공 카를 통해 입력된다. 순차적으로만 읽을 수 있다.
1960년대 후반 ~ 1970년대
60년대 후반에 하드디스크가 데이터 처리 과정을 획기적으로 변화시켰다. 순차적으로 기록해야하는 제약이 사라졌으며 저장 공간 안에 트리나 리스트 같은 자료 구조를 이용하는 네트워크형 데이터베이스나 계층형 데이터베이스가 등장하였다.
70년 Codd가 관계형 모델을 정의하고 비절차적 질의하는 방식을 제안하였고 관계형 데이터베이스가 등장하게되었다. 이를 통해 Codd는 튜링상을 수상하였다.
1980년대
관계형 데이터베이스가 나왔지만 네트워크형, 계층형 데이터베이스보다 성능이 좋지 않았끼 때문에 주목은 받았으나 실제 사용은 하지 못했다. 이에 IBM 연구 그룹에서 수행한 프로젝트 시스템 R에서 첫 번째 관계형 데이터베이스 산출물인 SQL/DS를 탄생시켰다. 이와 동시에 Ingres시스템이 캘리포니아대학교 버클리 캠퍼스에서 개발되었고 IBM DB2, Oracle, Ingres, DEC Rdb 등 선언적 질의를 효율적으로 처리하는 기법들을 발전시키는 데 공언하였다. 비로소 관계형 데이터베이스가 성능적인 측면에서도 경쟁력을 갖추게 되었고 사용하기 쉬웠기 때문에 제왕적 위치에 오르게 되었다.
1990년대 초반
질의 위주의 SQL이 고안되었으나 80년대 데이터베이스 연구의 주류는 아직 갱신 위주의 트랜잭션 처리 응용 프로그램에 집중되어 있었다. 후에 의사 결정 시스템과 질의 처리가 주요 응용으로 부상하였고 발달하게 되었다. 이 시기에 많은 데이터 베이스 업체들은 병렬 데이터베이스를 내 놓았다.
1990년대
월드 와이드 웹이 폭발적인 성장을 하면서 데이터베이스도 비약적으로 성장하였다. 초고속으로 트랜잭션을 처리할 수 있었으며 신뢰성을 확보하였다. 24X7 가용성을 갖추었다고도 하는 데 하루 중 24시간, 일주일 중 7일 가용하다는 뜻으로 유지 보수를 위한 정지 시간이 없다는 것이다. 이 시기의 데이터베이스는 웹 인터페이스를 갖추게 되었다.
2000년대
초반에는 XML과 이에 연관된 질의 언어인 XQuery가 나타났다. 시스템 관리자의 역할을 최소한으로 하는 "자동 컴퓨팅/자동 관리자"의 성장이 있었다.
후반에는 데이터 분석을 위한, 테이블의 각 열을 분리된 행렬로써 효과적으로 저자하는 열-저장과 같은 전문화된 데이터베이스나 대용량의 데이터 집합을 분석하기 위해 설계된 병렬 데이터베이스 시스템이 성장기에 있다.
최근에는 NoSQL 등 빅데이터를 위한 데이터베이스가 등장하고 있다.
'컴퓨터공학 > 데이터베이스 설계' 카테고리의 다른 글
SQL 기본 구문 (0) | 2018.10.28 |
---|---|
관계형 모델 (수학적, 키) (0) | 2018.09.13 |
데이터베이스 설계단계 & 정규화 (0) | 2018.09.09 |
데이터베이스 구성 및 언어 (0) | 2018.09.09 |
[Intro] 데이터베이스 및 DBMS가 나온 이유? (1) | 2018.09.09 |
댓글