임용/데이터베이스

Chapter 03 데이터베이스 시스템의 구성

뚜비히히 2023. 4. 12. 19:20

3.1 3단계 데이터베이스

  • 데이터베이스 구조(structure)와 제약조건(constraints)에 대한 명세(specification)를 기술한 것을 스키마(schema)라 한다.
  • 스키마에는 데이터 구조를 표현하는 데이터 객체(data object), 즉 개체(entity), 개체의 특성을 표현하는 속성(attribute), 이들 간에 존재하는 관계(relationship)에 대한 정의와 이들이 유지해야 될 제약조건(constraints)이 포함되는 것이다.
  • 데이터베이스 관리 측면에서는 데이터를 이용하는 각 개인의 뷰(view), 이런 각 개인의 모든 뷰가 종합된 기관 전체의 뷰, 그리고 시스템 즉 물리적 저장 장치의 입장에서 보는 각 저장 장치의 뷰 등 세 단계로 구별하여 데이터베이스를 기술하고 이들 간의 관계를 정의하고 있다. 이 세 단계를 보통 외부 단계(external level), 개념 단계(conceptual level), 내부 단계(internal level)라 한다.

(1) 외부 스키마

  • 외부 단게는 개별적 사용자 단계로서 개개 사용자가 생각하는 개인적 데이터베이스 구조에 관한 것이다. 따라서 이 외부 단계에는 개개 사용자를 위한 여러 형태의 외부 스키마가 있게 된다.
    외부 스키마(external schema)는 데이터베이스의 개개 사용자나 응용 프로그래머가 접근하는 데이터베이스를 정의한 것이다.
    보통 데이터베이스 전체의 한 논리적 부분이 되는 것이기 때문에 서브 스키마(sub schema)라고도 한다.

(2) 개념 스키마

  • 개념 단계에는 하나의 개념 스키마(conceptual schema)가 있는데 이것은 범 기관적 입장에서 데이터베이스를 정의한 것이다.
  • 여기서 개념적(conceptual)이란 의미는 추상적인 것이 아니라 전체적이고 종합적이란 뜻이다.
  • 모든 응용 시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스를 기술한 것이다.
    개념 스키마를 단순히 스키마(schema)라고도 한다.

(3) 내부 스키마

  • 내부 단계에는 하나의 내부 스키마가 있다.
  • 내부 스키마(internal schema)는 저장장치(storage)의 입장에서 데이터베이스 전체가 저장되는 방법을 명세한 것이다. 즉, 개념 스키마에 대한 저장 구조를 정의한 것이다. 

3단계 학생(STUDENT) 데이터베이스 예

사상의 개념 

  1. 외부/개념 사상(external/conceptual mapping)은 어느 특정 외부 스키마와 개념 스키마간의 대응 관계를 정의하는데, 이를 응용 인터페이스(application interface)라 한다. 응용 프로그램을 변경시키지 않고도 개념 스키마를 변경시킬 수 있으므로 논리적 데이터 독립성을 제공해 주는 것이 된다. 
  2. 개념/내부 사상(conceptual / internal mapping)은 개념 스키마와 내부 스키마간의 대응 관계를 정의하는 것인데 이것을 저장 인터페이스(storage interface)라고 한다. 내부 스키마를 변경시키더라도 사상을 이용하면 개념 스키마에 아무런 영향을 주지 않게 되고 따라서 응용 프로그램에도 아무런 영향을 미치지 않게 되므로 결국 물리적 데이터 독립성을 제공해 주는 것이 된다. 

각 단계의 사상

  • 시스템 카탈로그(system catalog)는 데이터 사전(data dictionary)이라고도 하는데 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대해 정의나 명세에 관한 정보를 유지 관리하고 있는 시스템이다. 
  • 시스템 카탈로그는 그 자체가 하나의 데이터베이스로 간주되기도 하지만 사용자가 이용하는 데이터베이스와는 구별되는 시스템이 사용하는 시스템 데이터베이스(system database)이다.
  • 데이터베이스에 수록된 데이터를 실제로 접근하는 데 필요한 위치 정보를 관리하는 시스템을 데이터 디렉터리(data directory)라 한다. 

3.2 DBMS

  • 데이터베이스 관리 시스템(DBMS)은 사용자와 데이터베이스 사이에 위치하여 데이터베이스를 관리하고 사용자가 요구하는 연산을 수행해서 정보를 생성해 주는 소프트웨어이다. 
  • DBMS는 데이터베이스 사용자가 표현한 데이터베이스 접근 요구(access requset)를 접수해서 이것을 조사 분석한 뒤 컴퓨터가 이해할 수 있는 형태로 변환(transform)한다. 
  • DBMS는 사용자의 해당 외부 스키마, 외부/개념 사상, 개념 스키마, 개념/내부 사상, 내부 스키마, 그리고 저장 구조를 통해 목표 데이터에 접근하여 연산을 실행한다. 

DBMS의 구성요소

  • DDL 컴파일러(DDL compiler) 또는 DDL 처리기(DDL processor)는 DDL로 명세된 스키마 정의를 내부 형태로 변화하여 시스템 카탈로그에 저장한다. 카탈로그에 있는 데이터를 메타데이터(metadata), 즉 데이터의 데이터라 한다. 
  • 질의어 처리기(query processor)는 질의문을 파싱(parsing)하고 분석해서 컴파일 한다. 그리고 효율적인 데이터베이스 접근을 할 수 있도록 코드를 생성한 뒤에 런타임 데이터베이스 처리기(runtime database processor)로 보내 이 코드를 실행시킨다. 
  • DML 예비 컴파일러(precompiler)는 호스트 프로그래밍 언어로 작성된 응용 프로그램 속에 삽입되어 있는 DML 명령어문들을 추출하고 그 자리에는 함수 호출문(call statement)을 삽입한다. 이 추출된 명령문들은 데이터베이스 접근을 위한 목적 코드로 컴파일 되도록 DML 컴파일러에 보내진다. 나머지 수정된 응용 프로그램은 호스트 프로그래밍 언어의 컴파일러에 보내진다. 
  • DML 컴파일러(DML compiler) 또는 DML 처리기(DML processor)는 DML 예비 컴파일러가 넘겨진 DML 예비 컴파일러가 넘겨준 DML 명령문을 파싱하고 컴파일하여 효율적인 목적 코드를 생성한다. 
  • 런타임 데이터베이스 처리기(run-time database processor)는 실행 시간에 데이터베이스 접근을 관리한다. 검색이나 갱신과 같은 데이터베이스 연산을 저장 데이터 관리자(stored data manger)를 통해 디스크에 저장된 데이터베이스에 실행시킨다. 
  • 트랜잭션 관리자(transaction manager)는 데이터베이스를 접근하는 과정에서 무결성 제약조건이 만족하는지, 사용자가 데이터를 접근할 수 있는 권한을 가지고 있는지 권한 검사(authorization check)를 한다. 또한 여러 사용자의 요구를 동시에 처리할 수 있도록 트랜잭션의 병행 제어(concurrency control)나 장애 발생시 회복(recovery) 작업도 수행한다. 이러한 작업은 모두 트랜잭션 단위로 이루어진다.
  • 저장 데이터 관리자(stored data manager)는 디스크에 저장되어 있는 사용자 데이터베이스나 시스템 카탈로그 접근을 책임진다. 디스크에 저장되어 있는 저장 레코드의 접근 요청은 파일 관리자(file manager)가 먼저 어떤 파일의 어떤 페이지인가를 결정하고 실제로 디스크와 메인 메모리 버퍼 사이의 데이터 전송을 책임지고 있는 디스크 관리자(disk masnager)로 하여금 수행케 한다. 이 기능은 부분 운영 체제(operating system)의 기본 모듈에 해당된다. 일단 메인 메모리의 데이터 버퍼에 전송된 데이터는 버퍼 고나리자(buffer manager)가 데이터 처리를 위해 관리한다. 

3.3. 데이터 언어 

데이터베이스를 정의하고 접근하기 위해서는 데이터베이스 관리 시스템과의 통신 수단이 필요한데 이것이 데이터 언어(data language)이다. 

 

3.3.1 데이터 정의어

  • 데이터 정의어(DDL : Data Definition Language)는 데이터베이스를 정의하거나 그 정의를 수정할 목적으로 사용하는 언어이다.
  • 데이터베이스 스키마는 통상 DDL 컴파일러가 컴파일하여 시스템 카탈로그(system catalog)에 저장하여 놓고 필요한 경우에 시스템이 활용하는 것이다.
  • 데이터베이스를 3단계로 엄격히 구분하는 시스템에서는 당연히 외부 스키마 정의어, 개념 스키마 정의어, 그리고 내부 스키마 정의어가 있어야 된다. 
  • 데이터베이스를 3단계롤 엄격히 구분하지 않는 시스템에서는 각 스키마에 사용되는 개체의 정의, 속성, 개체간의 관계, 그리고 인스턴스들에 존재하는 제약조건뿐만 아니라 스키마 간에 존재하는 사상(mapping)의 명세도 포함한다. 

3.2.2 데이터 조작어

  • 데이터 조작어(DML:Data Maniplation Language)는 사용자가 DBMS로 하여금 원하는 데이터를 처리하게끔 명세하는 도구로서 사용자(응용 프로그램)와 DBMS간의 인터페이스를 제공한다.
  • 기본적인 데이터 처리는 데이터의 검색, 삽입, 삭제, 변경 등을 포함한다. 

(1) 절차적 데이터 조작어

  • 절차적 데이터 조작어(procedural DML)는 사용자가 무슨 데이터(what data)를 원하며 어떻게(how) 그것을 접근하여 처리해야 되는지를 명세해야 되는 저급 데이터 언어이다. 
  • 데이터 조작어는 데이터베이스로부터 한 번에 하나의 레코드(one-record-at-a-time)를 검색해서 호스트 언어(해당 응용 프로그램을 작성하는 데 사용된 범용 프로그래밍 언어)와 함께 처리하는 특성을 가지고 있다.
  • 독자적으로 사용하지 못하고 호스트 프로그래밍 언어로 작성된 응용 프로그램 속에 삽입(embedded)되어 사용된다. 
  • DML은 통상 일반 프로시저 호출(call)문 형식으로 표현되는데 이것은 DML 먼저 DML 예비 컴파일러에 의해 추출되어 컴파일된 뒤에 호스트 프로그래밍 언어 컴파일러로 컴파일된 나머지 프로그램과 연결되어 실행된다.

(2) 비절차적 데이터 조작어

  • 비 절차적 데이터 조작어(nonprocedural DML)는 사용자가 무슨 데이터(what data)를 원하는지만 명세하고 그것을 어떻게(how) 접근하여 처리할 것인가에 대해서는 명세할 필요 없이 데이터베이스 관리 시스템에 위임하는 고급 데이터 언어이다. 
  • 선언적 언어(declarative language)라고도 한다.
  • 데이터베이스로부터 보통 한 번에 여러 개의 레코드(set-of-records-at-a-time)를 검색해서 처리하는 특성을 가지고 있다. 
  • 호스트 프로그램 속에 삽입되어 사용되는 DML 명령어들을 데이터 부속어(DSL : Data SubLangage)라고 한다.
  • 데이터 언어의 완전성(completeness of data langage)이란 사용자가 원하는 데이터베이스의 어떤 객체도 추출할 수 있고 처리할 수 있으며 어떤 연산도 표현할 수 있는 데이터 언어의 능력을 말한다. 

3.3.3 데이터 제어어

  • 데이터 제어에 관해 정의하고 기술하는 언어를 데이터 제어어(DCL : Data Control Language)라 한다.
  • 데이터 제어어는 불법적인 사용자로부터 데이터를 보호하기 위한 데이터 보안(security), 데이터 정확성 유지를 위한 무결성(integrity), 시스템 장애에 대비한 데이터 회복(recovery)과 데이터베이스의 동시 접근을 가능하게 하는 병행 수행 제어(concurrency control)를 명세할 수 있는 명령어를 포함한다.
  • 데이터 제어어는 주로 데이터 관리 목적으로 데이터베이스 관리자(database administrator)가 사용한다. 

3.4 사용자

데이터베이스를 이용하기 위해 접근하는 사람은 모두 사용자(user)가 된다. 

 

(1) 일반 사용자

  • 보통 터미널에서 질의어(query language)를 이용해서 데이터베이스를 접근하는 사용자들을 일반 사용자(end users), 보통 사용자(casual user), 터미널 사용자(terminal user)라 한다. 
  • 접근 목적은 데이터의 단순한 검색뿐만 아니라 데이터의 삽입, 삭제, 갱신 작업을 모두 포함한다.
  • DBMS는 일반 사용자들이 보다 편리하게 데이터베이스를 접근할 수 있도록 메뉴, 양식(form), 그래픽스 등 편리한 사용자 인터페이스(user interface)를 개발하여 지원하고 있다.

(2) 응용 프로그래머

  • 일반 호스트 프로그래밍 언어로 응용 프로그램을 작성할 때 데이터 조작어(DML), 즉 데이터 부속어(DSL)를 삽입시켜 데이터베이스를 접근하는 사람을 응용 프로그래머(application programmer)라고 한다.
  • PL/I, COBOL, C, Java와 같은 범용 호스트 프로그래밍 언어로 프로그램을 작성할 수 있는 능력이다. 

(3) 데이터베이스 관리자

  • 데이터 정의어(DDL)와 데이터 제어어(DCL)를 사용하여 데이터베이스를 DBMS에 기술해 주고 저장된 데이터를 제어할 목적으로 데이터베이스를 접근하는 사람을 데이터베이스 관리자(DBA)라고 한다.

3.5 데이터베이스 관리자

데이터베이스 관리자(DBA : DataBase Administrator)는 데이터베이스 시스템의 관리 운영에 대한 모든 책임을 지고 있는 사람을 말한다.

(1) 데이터베이스 설계와 운영 

  1. 데이터베이스의 구성요소를 결정한다. 
  2. 스키마를 정의한다.
  3. 저장 구조와 접근 방법을 결정한다.
  4. 보안 및 권한 부여 정책, 데이터의 유효성 검사 방법을 수립한다.
  5. 백업(backup), 회복(recovery) 절차를 수집한다.
  6. 데이터베이스의 무결성(integrity)을 유지하기 위한 대책을 수립한다. 
  7. 시스템의 성능 향상과 새로운 요구에 대응하기 위해 필요한 경우 데이터베이스를 재구성한다. 
  8. 시스템 카탈로그를 유지 관리한다.

(2)  행정 관리 및 불평 해결 

  1. 데이터의 표현이나 시스템의 문서화에 표준을 정하여 시행한다.
  2. 사용자의 요구와 불평을 청취하고 해결한다. 

(3) 시스템 감시 및 성능 분석

  1. 시스템 자원의 이용도, 병목 현상(bottleneck), 장비 및 시스템 성능을 감시(monitor)한다. 
  2. 데이터 접근 방법과 저장 구조, 재구성의 요인이 되는 사용자 요구의 변화, 데이터의 이용 추세, 그리고 각종 통계 등을 종합하고 분석한다. 

'임용 > 데이터베이스' 카테고리의 다른 글

Chapter 06 SQL  (0) 2023.04.17
Chapter 05 관계 대수와 관계 해석  (1) 2023.04.13
Chapter 04 관계 데이터베이스  (0) 2023.04.12
Chapter 02 데이터베이스 관리 시스템  (0) 2023.04.11
Chapter 01 정보 환경  (0) 2023.04.10