1. 데이터베이스 관리 시스템의 구성
가. DBMS 구성 모듈
1) 데이터 정의 언어 컴파일러(DDL Compiler)
데이터 정의 언어로 명시된 스키마 정의들을 처리
스키마들에 대한 정보(메타 데이터)를 DBMS 카탈로그 안에 저장함.
카탈로그는 파일의 이름과 크기, 데이터 항목의 이름과 데이터 타입, 각 파일의 저장 형태, 스키마 사이의 사상 정보, 제약 조건들에 대한 정보 등을 포함
다른 모듈들은 이런 정보가 필요할 때 마다 카탈로그에 접근
2) 질의 컴파일러(Query Compiler)
대화식으로 입력된 고수준 질의들을 파싱하여 연산과 데이터 요소들이 정확한가를 분석하고 내부 형태로 컴파일 함.
3) 질의 최적화기(Query Optimizer)
질의 컴파일러에 의해 생성된 내부 형태는 질의 최적화기를 거치게 됨.
질의 최적화기는 연산들을 재배치하고, 연산들의 순서를 바꾸고, 중복이 존재하면 제거하고, 수행 시 사용할 정확한 알고리즘과 인덱스를 선택함.
4) 프리컴파일러(Precompiler)
Java, C, C++ 등의 호스트 프로그래밍 언어로 작성된 응용 프로그램에서 데이터 조작 명령들을 추출
추출된 데이터 조작 명령들은 데이터 조작어 컴파일러로 보내져 목적 코드로 컴파일 됨.
응용 프로그램의 나머지 부분은 호스트 언어 컴파일러로 보내져 목적 코드로 컴파일 됨.
두 목적 코드가 링크되어 런타임 데이터베이스 처리기의 호출 등을 포함하는 실행 코드로 이루어진 미리 작성된 트랜잭션이 됨.
5) 데이터 조작 언어 컴파일러(DML Compiler)
데이터 조작 명령들을 데이터베이스 접근을 위한 목적 코드로 컴파일 함.
6) 호스트 언어 컴파일러(Host Language Compiler)
데이터 조작 명령이 제거된 응용 프로그램의 나머지 부분을 목적 코드로 컴파일 함.
7) 런타임 데이터베이스 처리기(Runtime Database Processor)
수행 시 실제 데이터베이스 접근을 처리
DBA의 특권 명령(DBA Commands), 실행 가능한 질의 계획(Queries), 런타임 시 매개 변수를 받는 미리 작성된 트랜잭션(Transactions) 등을 수행
동시성 제어/백업/회복 서브시스템은 트랜잭션 관리를 위해 런타임 데이터베이스 처리기와 통합되어 동작됨.
8) 저장 데이터 관리자(Stored Data Manager)
디스크와 주기억장치 간의 저수준 입출력 연산들을 수행하기 위해 운영체제의 기본 서비스를 사용함.
주기억장치 내의 버퍼 관리와 같은 데이터 전송 관련 기능도 수행
나. 데이터베이스 시스템 유틸리티
구성 모듈들 외에도 DBMS는 데이터베이스 관리자의 데이터베이스 시스템 운영을 도와주는 유틸리티들을 가짐.
통신 소프트웨어와 통신 장비를 사용하여 데이터베이스 시스템 사이트로부터 멀리 떨어진 컴퓨터 터미널, 워크스테이션, 마이크로 컴퓨터나 소형 컴퓨터에서 데이터베이스를 접근하는 것이 가능함.
1) 적재 유틸리티
텍스트 파일이나 순차 파일과 같은 데이터 파일들을 자동적으로 데이터베이스 파일 형식으로 변환해서 저장함.
2) 백업 유틸리티
전체 데이터베이스를 테이프 장치나 디스크 장치에 복사하여 데이터베이스의 백업 사본을 만듦.
3) 파일 재조직 유틸리티
성능 향상을 위해 데이터베이스 파일 구조를 다른 파일 구조로 재조직함.
4) 성능 모니터링 유틸리티
데이터베이스의 사용을 모니터해서 사용 통계를 데이터베이스 관리자에게 제공함.
이 정보는 관리자가 데이터베이스 성능을 향상시키기 위해서 파일들을 재조직할 것인지를 결정하는데 사용됨.
5) 데이터 사전 시스템(Data dictionary system)
스키마와 제약 조건들에 관한 카탈로그 정보와 설계 결정, 사용 표준, 응용 프로그램 기술, 사용자 정보 등과 같은 정보를 저장
DBMS 카탈로그와 유사하나 더 다양한 정보를 가짐.
DBMS 소프트웨어보다는 주로 사용자가 접근
데이터 저장소(Data repository system) 혹은 정보 저장소(Information repository)라고도 함.
6) CASE/응용개발 환경
데이터베이스 시스템을 설계하는 과정에서 사용되는 툴로는 ER Win, Toad for Data Modeler 등이 있음.
응용 개발 환경으로는 PowerBuilder(Sybase), JBuilder(Borland), JDeveloper 10G(Oracle) 등이 있음.
2. 서버-클라이언트 아키텍처
가. 중앙집중식 아키텍처
하나의 시스템에 DBMS 소프트웨어, 하드웨어, 응용 프로그램, 사용자 인터페이스 소프트웨어 등 데이터베이스 관련 모든 것들을 모아 놓은 구조
사용자는 터미널을 사용하여 연결할 수 있지만, 모든 처리는 집중화된 단일 시스템에서 수행
나. 기본적인 2-tier 서버-클라이언트 아키텍처
1) 클라이언트-서버 아키텍처
특정 기능을 갖는 특별한 서버를 지정
DBMS 서버, 파일 서버, 프린트 서버, 웹 서버, 전자 우편 서버 등
클라이언트는 자신의 응용들을 수행하기 위한 처리 기능 뿐만 아니라 서버들을 이용하기 위한 인터페이스 제공
2) 서버
질의 서버, 트랜잭션 서버, SQL 서버
질의 처리와 트랜잭션 서비스를 클라이언트에게 제공함.
클라이언트 상에서 수행되는 응용들은 ODBC, JDBC와 같은 표준 인터페이스에서 제공하는 API를 사용하여 데이터베이스 서버에 접근함.
3) 클라이언트
사용자 인터페이스 프로그램과 응용 프로그램 수행
다. 웹 응용을 위한 3-tier 서버-클라이언트 아키텍처
클라이언트와 데이터베이스 서버 사이에 응용 서버 또는 웹 서버를 추가
이 서버는 웹으로 연결할 수 있도록 하고, 비즈니스 규칙 들을 저장함으로써 중간 역할을 수행함.
클라이언트가 직접 데이터베이스 서버에 접속하지 못하도록 하고 중간 층을 통해서만 데이터베이스 서버에 접근하도록 함으로써 보안을 강화할 수 있음.
3. 데이터베이스 관리 시스템의 분류
가. DBMS의 분류 기준
1) 데이터 모델
관계, 네트워크, 계층, 객체지향, 객체관계 등
2) 사용자 수
단일 사용자, 다수 사용자 시스템
3) 사이트 수
중앙집중식, 분산 DBMS(동질 분산 DBMS 또는 이질 분산 DBMS)
4) DBMS 비용, 접근 경로 유형, 범용 또는 특수 목적용
나. DBMS의 분류
1) 관계 모델을 지원하는 RDBMS
데이터베이스를 테이블들의 모임으로 구성
고급 질의어를 제공하고 제한된 형태의 사용자 뷰를 지원
2) 객체지향 모델을 지원하는 OODBMS
객체, 속성, 연산으로 데이터베이스를 정의
같은 구조와 행위를 갖는 객체들은 한 클래스에 속하고 클래스들은 계층 또는 비 순환 그래프로 조직됨.
메소드라고 하는 미리 정의된 프로시저들이 클래스의 연산을 나타냄.
3) 객체-관계 모델을 지원하는 ORDBMS
관계 모델에 객체지향 모델의 개념을 일부 도입하여 확장한 모델
현대적 DBMS들은 거의 모두 ORDBMS임.