Frinee의 코드저장소

데이터베이스 시스템

by Frinee
이 글은 김연희 저 - "데이터베이스 개론 3판"을 공부하고 정리하여 작성하였습니다.

 

1. 데이터베이스 시스템의 정의

1.1. 데이터베이스 시스템

  • 데이터베이스에 데이터를 저장하고, 저장된 데이터를 관리하여 조직에 필요한 정보를 생성해주는 시스템
  • 데이터베이스와 데이터베이스 관리 시스템을 이용해 조직에 필요한 정보를 제공해주는 전체 시스템
    • 데이터베이스: 데이터를 저장해두는 곳
    • 데이터베이스 관리 시스템: 데이터베이스에 저장된 데이터가 일관되고 무결한 상태로 유지되도록 관리하는 역할

1.2. 데이터베이스 시스템 구성

  • 데이터베이스
  • 데이터베이스 관리 시스템
  • 사용자
  • 사용자가 데이터베이스에 접근할 때 사용하는 데이터 언어
  • 데이터베이스와 데이터베이스 관리시스템을 설치하고 데이터 처리 연산을 담당하는 컴퓨터

 

2. 데이터베이스의 구조

2.1. 스키마(schema)

  • 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것을 말함
  • 그리고 정의된 스키마에 따라 데이터베이스에 실제로 저장된 값을 인스턴스라 함
  • 스키마는 한번 정의되면 자주 변경되진 않지만, 인스턴스는 계속 변하는 특성을 지님

2.2. 3단계 데이터베이스 구조

미국의 표준화 기관인 ANSI/SPARC에서 데이터베이스의 복잡한 내부 구조를 감추고 일반 사용자가 데이터베이스를 쉽게 이해하고 이용할 수 있도록 3단계 데이터베이스 구조를 제안

  • 개별 사용자 관점에서 바라보는 외부 단계 → 집주인
  • 조직 전체 관점에서 바라보는 개념 단계 → 관리인
  • 물리적인 저장 장치의 관점에서 바라보는 내부 단계 → 건설 업체
  1. 외부 단계
    • 개별 사용자 관점에서 데이터베이스를 이해하고 표현함
    • 사용자마다 업무 내용과 사용 목적이 달라 필요한 데이터 내용이 다를 수 있음
    • 사용자마다 생각하는 데이터베이스 구조가 다른데 이처럼 외부 단계에서 사용자에게 필요한 데이터베이스를 정의한 것을 외부 스키마(external schema)라 함.
    • 하나의 데이터베이스에는 외부 스키마가 여러 개 존재할 수 있고, 외부 스키마 하나를 사용 목적이 같은 사용자들이 공유할 수 있음
    • 외부 스키마는 전체 데이터베이스 중 사용자가 관심을 가지는 일부분으로 볼 수 있어 서브 스키마(sub schema)라고도 함.
  2. 개념 단계
    • 데이터베이스를 이용하는 사용자들의 관점을 통합하여 데이터베이스를 조직 전체의 관점에서 이해하고 표현함
    • 데이터베이스 관리 시스템이나 관리자의 관점에서 모든 사용자에게 필요한 데이터를 통합하여 전체 데이터베이스의 논리적 구조를 정의하고 이를 개념 스키마(conceptual schema)라 함
    • 개념 스키마는 모든 개별 사용자가 생각하는 데이터베이스의 모습을 하나로 합친 형태
    • 개념 스키마는 전체 데이터베이스에 저장되는 데이터 유형, 데이터 간 관계 및 제약조건에 대한 정의 뿐만 아니라 데이터 보안 정책, 접근 권한에 대한 정의도 포함됨.
    • 데이터를 물리적으로 저장하는 방법이나 데이터 저장 장치와는 독립적
  3. 내부 단계
    • 데이터베이스를 디스크나 테이프 같은 저장장치의 관점에서 이해하고 표현함.
    • 즉, 내부 단계에서는 전체 데이터베이스가 저장 장치에 실제로 저장되는 방법을 정의하며 이를 내부 스키마(internal schema)라 함.
    • 데이터는 저장 장치에 파일 형태로 저장되는데 내부 스키마는 파일에 데이터를 저장하는 레코드의 구조, 레코드를 구성하는 필드 크기, 인덱스를 이용한 레코드 접근 경로 등을 정의함.
    • 내부 스키마는 데이터베이스의 개념 스키마에 대한 물리적 저장 구조를 표현하므로 하나의 데이터베이스에 하나만 존재함.

ex) 쇼핑몰의 데이터베이스

  • 외부 단계
    • 고객 분석팀과 상품 배송팀 사용자가 존재하고 각 팀에 필요한 데이터로 구성된 외부 스키마를 지님
    • 사용자별로 외부 스키마를 정의하여 불필요한 데이터 접근을 사전에 막아 보안 측면에 효과적
  • 개념 단계
    • 고객 데이터베이스 전체에 대한 논리적 구조를 정의하는 개념 스키마가 하나 존재
    • 고객 데이터베이스를 이용하는 모든 사용자에게 필요한 데이터를 종합하여 구성, 각 데이터의 타입도 함께 정의
  • 내부 단계
    • 고객 데이터베이스를 저장 장치에 저장하는 파일의 레코드 구조를 정의한 내부 스키마가 하나 존재
    • 이 내부 스키마는 번호와 연락처 필드에 인덱스를 정의하고 있어, 번호나 연락처 필드 값을 이용해 해당 고객 레코드에 빠르게 접근 가능

2.3. 데이터 독립성

  • 각각 정의한 세가지 스키마 사이에는 유기적인 대응 관계가 성립해야 함.
  • 스키마 사이의 대응 관계를 사상 또는 매핑(mapping)이라 함.
  • 외부 스키마와 개념 스키마는 외부/개념 사상에 의해 대응
  • 개념 스키마와 내부 스키마는 개념/내부 사상에 의해 대응
  • 데이터베이스 관리 시스템은 미리 정의된 외부/개념 사상과 개념/내부 사상 정보를 이용해 사용자가 원하는 데이터에 접근할 수 있음
  • 데이터베이스를 3단계 구조로 나누고, 단계별로 스키마를 유지하며 스키마 사이의 대응 관계를 정의하는 궁극적인 목적은 데이터 독립성을 실현하기 위함.
  • 데이터 독립성은 하위 스키마를 변경하더라도 상위 스키마가 영향을 받지 않는 특성을 말함.
  • 3단계 데이터베이스 구조에는 논리적 데이터 독립성과 물리적 데이터 독립성이 존재
  1. 논리적 데이터 독립성
    • 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것
    • 전체 데이터베이스 논리 구조가 변경되어도 **외부/개념 사상 정보(응용 인터페이스)**만 잘 수정해주면 관련 없는 외부 스키마는 수정할 필요가 없음
    • 개념 스키마에 새로운 내용이 추가되거나 기존 내용이 삭제되는 경우에도 외부 스키마는 영향을 받지 않음
  2. 물리적 데이터 독립성
    • 내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것
    • 물리적 데이터 독립성이 실현되면 데이터베이스 저장 구조가 바뀌어도 관련된 **개념/내부 사상 정보(저장 인터페이스)**만 잘 수정하면 데이터베이스의 논리적 구조는 영향이 없음
    • 내부 스키마에 새로운 인덱스가 추가되거나 기존 인덱스가 삭제되는 경우에도 개념 스키마는 영향을 받지 않음

2.4. 데이터 사전

  • 데이터베이스의 세가지 스키마에 대한 정보와 스키마 간의 사상 정보와 같은 데이터에 관한 정보를 저장하는 곳을 데이터 사전 또는 시스템 카탈로그라고 함.
  • 데이터베이스 내 데이터를 정확하고 효율적으로 사용하기 위한 스키마, 사상 정보, 다양한 제약조건 등이 저장됨
  • 이것도 데이터베이스 일종이기 때문에 시스템 데이터베이스라고도 함.
  • 데이터 사전은 데이터베이스 관리 시스템이 스스로 생성하고 유지하며 일반 사용자도 접근 가능
  • 단, 데이터 사전에 내용을 수정하고 추가하는 건 데이터베이스 관리 시스템만이 할 수 있고 일반 사용자는 조회만 가능함.
  • 데이터 사전에 있는 데이터에 실제 접근하는 데 필요한 위치 정보는 데이터 디렉토리에서 관

 

3. 데이터베이스 사용자

3.1. 데이터베이스 관리자

  • 데이터베이스 시스템을 운영 • 관리하며 조직 내 사용자를 위해 데이터베이스를 설계 및 구축
  • 데이터베이스 운영 • 관리를 책임지므로 컴퓨터 시스템이나 데이터베이스와 관련한 지식과 경험이 필요
  • 주요 업무
    1. 데이터베이스 구성 요소 선정
      • 사용자 요구사항 분석 후 데이터베이스를 구성할 데이터 결정
    2. 데이터베이스 스키마 정의
      • 구성 요소를 토대로 스키마를 설계하고 데이터 정의어를 이용해 설계한 스키마를 데이터베이스 관리 시스템에 설명
    3. 물리적 저장 구조와 접근 방법 결정
      • 데이터베이스를 물리적으로 저장하기 위한 레코드 구조를 설계
      • 레코드들 간의 저장 순서와 레코드에 빠르게 접근하기 위해 인덱스를 만들 기준 필드 등도 결정
    4. 무결성 유지를 위한 제약조건 정의
      • 결함이 없는 데이터만 데이터베이스에 저장할 수 있도록 필요한 규칙 정의
      • 데이터베이스를 이 규칙에 따라 제어하여 데이터의 정확성과 유효성 유지
    5. 보안 및 접근 권한 정책 결정
      • 허가되지 않는 사용자가 데이터베이스에 불법적으로 접근하는 것을 방지
      • 허가된 사용자에게 적절한 권한 부여
    6. 백업 및 회복 기법 정의
      • 시스템 장애에 대비하여 데이터베이스를 백업하거나 손상된 데이터베이스를 일관된 상태로 복구하는 방법을 정의
    7. 시스템 데이터베이스 관리
      • 데이터 사전 같은 시스템 데이터베이스를 관리함
    8. 시스템 성능 감시 및 성능 분석
      • 시스템 성능을 저해하는 병목 현상 등이 발생하지 않는지 확인하고 시스템 자원의 활용도 분석 등을 통해 시스템 성능 감시
    9. 데이터베이스 재구성
      • 사용자 요구사항이나 사용 형태에 따라 데이터베이스를 재구성하여 사용자의 만족도를 높임
      • 시스템 전체 성능 향상 및 시스템 장비 교체 시 데이터베이스 재구성

3.2. 최종사용자

  • 데이터를 조작하기 위해 데이터베이스에 접근하는 사람들
  • 주로 데이터 조작어를 사용함
  • 캐주얼 사용자
    • 데이터베이스에 대한 이론적 지식이 있음
    • 데이터 조작어를 통해 원하는 데이터와 데이터에 대한 처리를 데이터베이스 관리 시스템에 직접 설명
  • 초보 사용자
    • 데이터베이스를 초보 수준으로 이용할 수 있음
    • 메뉴나 GUI 형태의 응용 프로그램을 통해 데이터베이스를 사용

3.3. 응용 프로그래머

  • C 언어, Java와 같은 프로그래밍 언어로 응용 프로그램을 작성할 때 데이터베이스에 접근하는 데이터 조작어를 삽입하는 사용자
  • 데이터 정의어를 삽입하기도 하지만 주로 데이터 조작어를 사용
  • 최종 사용자는 응용 프로그래머가 작성한 응용 프로그램을 이용해 데이터베이스에 접근할 수 있음

 

4. 데이터 언어

  • 사용자가 데이터베이스를 구축하고 접근하기 위해 데이터베이스 관리 시스템과 통신하는 수단
  • 데이터 언어의 종류
    • 데이터 정의어
    • 데이터 조작어
    • 데이터 제어어

4.1. 데이터 정의어(DDL)

  • 새로운 데이터베이스를 구축하기 위해 스키마를 정의하거나 기존의 스키마 정의를 삭제 및 수정하기 위해 사용하는 데이터 언어
  • 데이터베이스 스키마를 설명하거나 스키마의 구조나 제약조건 등을 변경 및 삭제할 때 사용
  • 데이터 정의어로 정의된 스키마는 데이터 사전에 저장되고 수정 및 삭제 시에도 데이터 사전에 반영

4.2. 데이터 조작어(DML)

  • 사용자가 데이터의 삽입•삭제•수정•검색 등의 처리를 데이터베이스 관리 시스템에 요구하기 위해 사용함
  • 사용자가 실제 데이터 값을 활용하기 위해 사용하는 언어
  • 설명 방식에 따라 절차적 데이터 조작어비절차적 데이터 조작어로 나뉨
  • 절차적 데이터 조작어
    • 사용자가 어떤 데이터를 원하고 해당 데이터를 얻으려면 어떻게 처리해야 하는지 설명
  • 비절차적 데이터 조작어
    • 사용자가 어떤 데이터를 원하는지만 설명하고 어떻게 처리하는지는 데이터베이스 관리 시스템에 맡김
    • 사용자가 어떤 데이터를 원하는지만 데이터베이스 관리 시스템에 선언하는 방식이기 때문에 선언적 언어라고 함.

4.3. 데이터 제어어

  • 데이터베이스에 저장된 데이터를 여러 사용자가 무결성과 일관성을 유지하며 문제없이 공유할 수 있도록, 내부적으로 필요한 규칙이나 기법을 정의하는 데 사용하는 데이터 언어
  • 무결성(integrity): 데이터베이스에 정확하고 유효한 데이터만 유지한다.
  • 보안(security): 허가받지 않는 사용자가 데이터에 접근하는 것을 차단하거나, 허가된 사용자가 접근 권한이 있는 데이터에만 접근할 수 있게 한다.
  • 회복(recovery): 장애가 발생해도 데이터의 일관성을 유지한다.
  • 동시성(concurrency): 여러 사용자가 같은 데이터에 동시에 접근하여 처리할 수 있게 한다.

 

5. 데이터베이스 관리 시스템의 구성

  • 데이터베이스를 관리하고 사용자의 데이터 처리 요구를 수행하는 데이터베이스 관리 시스템은 데이터베이스의 시스템의 주요 구성 요소다.
  • 사용자와 데이터베이스 사이에 위치하며, 기능에 따라 크게 질의 처리기저장 데이터 관리자로 구분할 수 있음

5.1. 질의 처리기

  • 사용자의 데이터 처리 요구를 해석하여 처리하는 역할을 담당
  • DDL 컴파일러
    • 데이터 저의어로 작성된 스키마의 정의를 해석함
    • 저장 데이터 관리자의 도움을 받아 새로운 데이터베이스를 구축하고 스키마의 정의를 데이터 사전에 저장
    • 데이터 정의어로 작성된 기존 스키마의 삭제 수정 요청도 처리하고 변경된 내용을 데이터 사전에 적용
  • DML 프리 컴파일러
    • 응용 프로그램에 삽입된 데이터 조작어를 추출하여 DML 컴파일러에 전달
  • DML 컴파일러
    • 데이터 조작어로 작성된 데이터의 처리(삽입•삭제•수정•검색) 요구를 분석하여 런타임 데이터베이스 처리기가 이해할 수 있도록 해석
  • 런타임 데이터베이스 처리기
    • 저장 데이터 관리자를 통해 데이터베이스에 접근하여, DML 컴파일러로부터 전달받은 데이터 처리 요구를 데이터베이스에서 실제로 실행
  • 트랜잭션 관리자
    • 데이터베이스에 접근하는 과정에서 사용자의 접근 권한이 유효한 지를 검사하고, 데이터베이스 무결성 유지를 위한 제약조건 위반 여부를 확인
    • 회복이나 병행 수행과 관련된 작업도 담당

5.2. 저장 데이터 관리자

  • 디스크에 저장된 데이터베이스와 데이터 사전을 관리하고 접근하는 역할
  • 운영체제의 도움을 받아 데이터베이스에 대한 접근을 수행

 

자료

  • 데이터베이스 개론 3판 (김연희 저, 2024.1)

'[컴퓨터 과학자 스터디] > 데이터베이스' 카테고리의 다른 글

관계 데이터 연산  (0) 2024.11.21
관계 데이터 모델  (0) 2024.11.21
데이터 모델링  (1) 2024.11.17
데이터베이스 관리 시스템  (1) 2024.11.14
데이터베이스 기본 개론  (1) 2024.11.14

블로그의 정보

프리니의 코드저장소

Frinee

활동하기