본문 바로가기

데이터베이스기초

[데이타베이스기초] 데이타베이스 시스템의 구성

데이타베이스 시스템

  • 데이타를 데이타베이스로 저장하고 관리해서 필요한 정보를 생성하는 컴퓨터 중심의 시스템
  • 데이타베이스나 DBMS가 데이타베이스 시스템을 구성하는 주요 요소들의 일부가 됨

1. 구성요소

  • 3단계 데이타베이스
  • 데이타 언어
  • 사용자
  • DBMS
  • DBA(데이타베이스 관리자)
  • DBC(데이타베이스 컴퓨터)

3단계 데이타베이스(DB)

  • 데이타베이스 시스템의 구성요소인 사용자가 공용 가능한 데이타의 집합인 데이타베이스는 3단계로 나눌 수 있습니다.
  • 외부스키마와 내부스키마는 사상할 수 없습니다.

1. 데이타베이스의 3단계 표현( -> View 관점에서 3개의 스키마로 나뉨)

  • 데이타베이스 시스템의 기초로 하고 있는 가장 기본적인 요소는 DB !!
  • 데이타베이스는 스키마들의 집합입니다.
  • 스키마란? 테이블(데이타)들을 비슷한 것끼리 묶어두고 구조를 정의한 것!!
  • DB에 대한 3단계 관점(View)
  • 개인 -> 외부 단계
  • 기관 전체 -> 개념 단계
  • 저장 장치 -> 내부 단계

2. 스키마?(DB의 구조+제약조건)

  • 데이타베이스의 구조(개체, 관계, 속성)와 제약 조건을 명합니다.(메타데이터의 집합)
  • 데이타베이스는 개체(속성의 집합)와 관계로 이루어진다고 했죠?? 그러니깐 개체, 관계, 속성 정의하면 구조 정의!! + 이들을 유지할 제약 조건 정의~~~~~
  • DB내에 어떤 구조로 데이터가 저장되는가를 나타내는 데이터베이스 구조
  • 컴파일되어 카탈로그(데이타 사전)에 저장됩니다.(데이터 항목들에 대한 정보를 지정한 중앙 저장소)
  • 메타데이터(meta data) : 데이터에 대한 데이터로, 어떤 목적을 가지고 만들어진 데이터로 정의됨.
  • 3단계 DB 구조에 기반을 둡니다
  • 스키마를 그래픽 형태로 표현한 것이 스키마 다이어그램
  • 데이타베이스 스키마를 정의하기 위한 언어는 DDL, DML

DB의 구조와 제약조건에 대해 명세해두었음 !! = 스키마!!

(1) 외부스키마 

  • 서브 스키마
  •  사용자 뷰
  • 사용자나 응용 프로그래머가 개인의 입장에서 필요한 데이터베이스의 논리적 구조를 정의
  • 전체 DB의 한 논리적인 부분
  • 교무처, 학생처 등등...

(2) 개념 스키마 

  • 전체적인 View
  • 조직체 전체(범 기관적인 관점)를 관장하는 입장에서 DB를 정의한 것
  • 조직의 모든 응용시스템에서 필요로 하는 개체 관계, 그리고 제약조건들을 포함
  • 모든 응용에 대한 전체적인 통합된 데이타 구조
  • 개념스키마를 ‘스키마’ 라고 칭하기도 함
  • DB전체를 기술한 것이기 때문에 DB당 한 개 존재
  • 서울여대

(3) 내부 스키마

  • 물리적인 저장장치 입장에서 DB가 저장되는 방법을 기술한 것
  • 개념 스키마에 대한 저장구조를 정의

3.  3단계간의 사상(MAPPING)

  • 구체적인 데이타 독립성의 구현 방법입니다.

(1) 외부/개념 단계 간의 사상

  • 외부 스키마와 개념 스키마간의 대응 관계를 정의
  • 응용 인터페이스
  • 논리적 데이타 독립성을 제공(개념 단계의 논리적 구조 DB 바꿔 -> 외부 사용자의 응프에 영향 X)
  • 개념 단계의 DB는 논리적 구조로 저장되어있음(개념적 단계)

(2) 개념/내부 단계 간의 사상

  • 개념 스키마와 내부 스키마간의 대응 관계를 정의
  • 저장 인터페이스
  • 물리적 데이타 독립성을 제공(저장장치에 저장된 물리적 구조 DB 바꿔 -> 외부 사용자의 응프에 영향 X)
  • 내부 단계의 DB는 물리적 구조로 저장되어있음

4. 카탈로그와 데이타 디렉토리

(1) 카탈로그

  • 사용자가 이용하는 데이타베이스와는 구별되는 시스템이 사용하는 시스템 DB
  • 데이타에 관한 데이타(메타 데이타베이스)
  • DB관리자(DBA)가 사용하는 도구 -> DB의 구조와 제약조건 확인하기 위해서! 안에 스키마들 있으니깐.
  • 시스템 내의 모든 객체들에 대한 정의나 명세에 대한 정보 수록
  • 사용자와 시스템(관리자) 모두 사용
  • 데이타 사전이라고도 함
  • 단순 데이타를 저장하는 것이 아니라 스키마를 포함 !!

(2) 데이타 디렉토리

  • DB에 저장된 데이타를 실제로 접근하는데 필요한 위치 정보를 관리하는 시스템
  • 시스템(관리자)만 사용

 

이제 본격적으로 DBS의 구성요소에 대해 차근차근 알아봅시다. 앞에서 일단 DB에 대해서는 알아봤습니다.

 

데이타 언어(사용자-데이타언어-DBMS-DB)

  • 데이타베이스를 정의, 조작, 제어하기 위한 시스템과의 통신 수단

1. 데이타 정의어

  • DDL
  • 데이타베이스 구조를 정의하고 변경하는데 사용(CREATE TABLE, DROP TABLE)
  • 정의내용
  • => 논리적 데이타 구조의 정의(스키마(개념, 한 기관의 관점), 외부 스키마(개개인의 관점) 명세)
  • => 물리적 데이타 구조의 정의(내부 스키마(저장 장치 관점))
  • => 논리적 데이타 구조와 물리적 데이터 구조 간의 사상을 정의
  • 개념 스키마는 논리적 구조이고, 외부 스키마는 개념 스키마의 일부니깐 얘도 논리적 구조, 내부 스키마는 저장 장치 관점의 물리적 구조임!!

2. 데이타 조작어(절차적 DML, 비절차적 DML)

  • DML
  • 사용자(응용 프로그램)와 DBMS 사이의 통신 수단
  • 데이타 처리 연산의 집합, 데이타의 검색(SELECT), 삽입(INSERT), 삭제(DELETE), 변경 연산 가능하다. SQL 생각하기
  • 절차적 DML과 비절차적 DML로 나뉜다.(SQL은 그냥 결과 내줘!라고 선언만 하면 알아서 절차만들어주는 비절차적 DML)

(1) 절차적 DML

  • 저급 데이타 언어
  • WHAT과 HOW를 명세(내용과 절차 다 명세)
  • 한번에 하나의 레코드만 처리
  • 응용 프로그램 속에 삽입되어서 사용
  • DML 예비 컴파일러에 의해서 처리

(2) 비절차적 DML = SQL

  • 고급 데이타 언어
  • 내용에 의한 참조
  • WHAT만 명세(내용, 너가 찾고 싶은 것)하고 HOW는 시스템에게 위임(시스템이 알아서) - 선언적 언어
  • 한번에 여러 개의 레코드를 처리(행 단위)
  • 질의어(질문만 하면 여러 개의 레코드를 지가 알아서 처리해서 가져다줌. 우리는 의문만 제시 -> 결과 알아서 가져다줌 ~ 쏘 편리편리 ~)
  • -> 독자적이고 대화식: COMMAND 타입, 프로그램의 추상적 표현(구체적인 방법 명시 X, DBMS가 알아서 처리)
  • -> 우리가 질의문으로 데이터베이스에 대한 명령 또는 요청을 표현하죠? 그걸 COMMAND 타입이라고 해요!

**데이타 부속어란?

  • 응용 프로그램(host program) 속에 삽입되어 사용되는 DML
  • 비절차적 또는 절차적 DML
  • 여기서 중요한 것 !! 절차적 DML은 반드시 응용 프로그램 속에 삽입되어 사용되어야 합니다!!
  • 일반적으로 절차적 DML은 응용 프로그램 속에 삽입되어 사용되는 것이 일반적입니다.
  • 비절차적 DML은 삽입되어도 되고, 안 되어도 되는데 거의 안 함 !!(비절차적 언어인 SQL 응프에 삽입 가능하긴 함!)
  • 반면에, 비절차적 DML은 일반적으로 응용 프로그램 속에 삽입되지 않고, 사용자가 직접 데이터베이스에 대한 질의를 수행하는 형태로 사용됩니다.(질의문 제공 !!) 일반사용자는 대화식으로 사용하는게 보통이지만, 삽입시켜서 사용하기도 함.
  • DML 명령어가 고급이든 초급이든 호스트 프로그램에 삽입되어 사용하는 DML 명령어=데이터 종속언어DSL

**데이타 언어의 완전성

  • 사용자가 원하면 어떤 객체도 추출할 수 있고, 관계도 표현할 수 있는 능력

3. 데이타 제어어

  • DCL
  • 공용 데이타베이스 관리를 위해 데이타 제어를 정의하고 기술
  • 데이타 제어 내용: 데이타 보안, 데이타 무결성, 데이타 회복, 병행 수행
  • DB 관리 목적으로 DBA가 사용

사용자

  • 데이타베이스를 이용하기 위해 접근하는 사람
  • DB에 접근하는 방법에 따라서 3가지로 나뉜다.

1. 일반 사용자

  • 비절차적 DML을 통해서 데이타베이스를 접근합니다.(SQL로 해봤죠??? SELECT, INSERT 등등....)
  • 데이타의 삽입, 삭제, 갱신, 검색이 가능합니다.  BY 비절차적인 DML 

2. 응용 프로그래머

  • 응용 프로그램(host 언어 + DML(DSL, 데이타 부속어))를 통해서 DB에 접근
  • HOST 언어=PL/I, COBOL, PASCAL, C, Java...(절차적인 언어들이죠?)

3. DBA(DB 관리자)

  • DDL과 DCL을 통해 DB를 정의하고 제어하는 사람

 

DBMS

  • DBMS는 데이타베이스를 관리하고 사용자가 요구하는 모든 연산을 수행합니다. 
  • 데이타 언어를 통해 사용자가 연산 요구 -> 데이타 베이스에 실행 !!
  • 크게 4단계로 나뉩니다.

1. 사용자의 접근 요구를 접수/분석 (우리가 데이타 언어로 작성했어)

2. 시스템이 이해할 수 있는 형태로 사용자 요구를 반환 (그 작성한 데이타 언어를 컴퓨터가 알아들을 수 있게 바꿔)

3. 외부/개념/내부/저장 구조 간의 사상을 수행하여 저장 데이타를 접근 (이제 그 바꾼 걸 바탕으로 DB에 접근했어. DB는 3단계로 이루어져있지?? 저장 데이타는 3단계 매핑 후에 실제로 데이타를 저장하는 부분이야. 처리할 부분을 가져와야겠지??)

4. 저장 DB에 대해 필요한 연산을 수행 (런타임 데이타베이스 처리기에서 수행을 해!! 저장 데이타 관리자가 연산할 DB 제공하면 !사용자가 요구했던 연산을 실제 데이타에 적용하는 과정, 저장, 검색 등등...)

 

DBMS의 구성요소

 

1. DDL 컴파일러 

  • DDL로 명세된 스키마(DB구조+제약조건 명세)를 내부 형태로 변환하여 카탈로그에 저장
  • DBA 측면에서 데이타베이스 구조와 제약조건 명세하기 위해서 사용.. 데이타베이스 관리하는 사람 구조부터 세워야 함

2. 질의어 처리기

  • 질의어 = 비절차적 DML = SQL
  • 일반 사용자가 측면에서 사용
  • 질의문을 문법적 오류, 분석, 컴파일하여 DB에 접근하기 위한 목적 코드를 생성

3. 예비 컴파일러

  • 응용 프로그램에 삽입된 DML(DSL, 데이타 부속어)를 추출하고 그 자리에 프로시저 콜로 대체
  • 추출된 DML은 DML 컴파일러로 전달
  • 수정된 응용 프로그램(DML 주석처리)은 host 프로그램 컴파일러로 전달
  • 응용프로그래머 측면에서 사용

4. DML 컴파일러

  • 응용프로그래머 측면에서 사용
  • DML 명령어를 목적 코드로 변환(컴퓨터가 알아들을 수 있게)

5. 런타임 데이타베이스 처리기

  • 실행 시간에 데이타베이스에 접근
  • DB 연산을 저장 데이타 관리자를 통해 수행(저장 데이타 관리자가 연산할 데이타를 보내줌)
  • 런타임 데이터베이스 처리기는 저장 데이터 관리자와 협력하여 데이터베이스의 데이터 처리를 수행
  • 데이터를 입력, 조회, 수정, 삭제하는 등의 작업을 수행한다. 실제로 사용자가 요구했던 연산 이루어지는 곳 !!
  • 트랜잭션 관리: 런타임 데이터베이스 처리기는 데이터베이스의 트랜잭션을 관리하고, 트랜잭션의 원자성, 일관성, 격리성, 지속성(ACID) 등을 보장합니다. 이를 통해 데이터의 일관성과 무결성을 유지할 수 있습니다.

6. 트랜잭션 관리자

  • 트랜잭션 단위로 작업을 수행
  • DB 접근 과정에서 무결성과 권한 제어, 병행 제어와 회복 작업

7. 저장 데이터 관리자

  • 디스크에 있는 사용자 DB(저장 DB)나 카탈로그 접근을 제어
  • 기본 OS 모듈(file manager, disk manager)을 이용 -> 파일 매니저는 화일의 페이지 결정, 디스크 매니저는 데이타 전송 수행
  • 메모리 내에서는 buffer manager가 관리

데이타베이스 처리 시스템 실행 과정이다.

 

데이타베이스 관리자(DBA)

  • 데이타베이스 시스템의 관리, 운영에 대한 모든 책임을 지는 사람
  • 트랜잭션 설계 X, 응용 프로그램 관련 업무 X
  • 데이터베이스에 대한 최적의 물리적 저장구조 뿐 아니라 물리적 저장매체 선택(데이터베이스 시스템의 성능과 안정성을 극대화할 수 있는 적절한)

1. DBA의 업무

(1) DB 설계와 운영 - DDL, DCL

  • DB의 구성요소를 결정
  • 스키마 정의
  • 저장 구조와 접근 방법 설정(스키마)
  • 보안 정책 수립, 권한부여, 유효성 검사(DCL)
  • 백업, 회복 절차의 수립
  • DB의 무결성 유지
  • 성능 향상과 새로운 요구에 대응한 DB의 재구성
  • 카탈로그의 유지 관리 (스키마들이 모인 곳)

(2) 행정 및 불평 해결

  • 데이타의 표현과 시스템의 문서화에 표준 설정
  • 사용자의 요구 및 불평 해결

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

  • 시스템 성능의 청취
  • 자원의 이용도, 병목현상, 장비 성능 등
  • 사용자 요구의 변화, 데이타 사용 추세, 각종 통계의 종합 분석

하드웨어: 데이타베이스 컴퓨터(DBC)

  • 대규모 데이타베이스를 관리하고 운용하기 위해 고성능의 장치가 요구된다.
  • DB 기능만을 효율적으로 수행하기 위한 특수 목적의 하드웨어이다.
  • 후위컴퓨터!!! 후위 프로세서랑 다르다
  • 지능형 저장장치
  • 내용식 메모리
  • 병렬 처리
  • 데이타베이스 처리기+디스크관리자+메모리로 구성되어있다.

.