김연희, 『데이터베이스 개론』, 한빛아카데미(2022.07.20), Chpater 03
Ch3. 데이터베이스 시스템
데이터베이스, 데이터베이스 관리 시스템 개념을 바탕으로 데이터베이스 시스템에 관해 알아본다.
3.1. 데이터베이스 시스템의 정의
데이터베이스 시스템
: 데이터베이스에 데이터를 저장하고, 저장된 데이터를 관리하여 조직에 필요한 정보를 생성해주는 시스템.
용어 구분
- 데이터베이스: 데이터를 저장해두는 곳
- 데이터베이스 관리 시스템: 데이터베이스에 저장된 데이터를 관리해주는 프로그램
- 데이터베이스 시스템: 데이터베이스와 데이터베이스 관리 시스템을 이용해 조직에 필요한 정보르르 제공해주는 전체 시스템
- 데이터베이스 시스템에는 데이터베이스와 DBMS외에도 데이터언어(SQL)과 데이터 처리 연산을 담당하는 컴퓨터로 구성된다.
3.2. 데이터베이스의 구조
스키마와 3단계 데이터베이스 구조를 알아본다.
3.2.1. 스키마
스키마(Schema)
: 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것
3.2.2. 3단계 데이터베이스 구조
미국의 표준화 기관인 ANSI/SPARC에서는 데이터베이스의 복잡한 내부 구조를 감추고 일반 사용자가 데이터베이스를 쉽게 이해하고 이용할 수 있도록, 단계별로 추상화한 3단계 데이터베이스 구조를 제안한다.
3단계
외부 단계
- 개별 사용자의 관점에서 데이터베이스를 표현한다.
- 외부 스키마: 각 사용자의 요구에 맞춰 데이터베이스 구조의 일부분을 표현한 것
- 약간 Serializer라고 생각할 수 있겠음
개념 단계
- 조직 전체의 관점에서 데이터베이스를 표현한다.
- 개념 스키마: 전체 데이터베이스의 구조와 상호 관계, 그리고 데이터에 대한 보안 정책이나 접근권한의 정보도 포함한다. 하나의 db에는 하나의 개념 스키마가 존재한다.
- models.py과 views.py(접근권한 등)라고 생각할 수 있겠음
내부 단계
- 저장장치의 관점에서 데이터베이스를 표현한다.
- 내부 스키마: 데이터베이스가 실제 저장장치에 저장되는 방법을 정의한 것. 개념 스키마에 대한 물리적인 저장구조로써, 하나의 db에는 하나의 내부 스키마가 존재한다.
3.2.3. 데이터 독립성
외부 스키마 / 개념 스키마 / 내부 스키마는 모두 하나의 데이터베이스를 표현하기 때문에 서로 매핑이 가능하다. 따라서 외부 스키마를 통해 실제 저장장치에 담긴 데이터까지 접근이 가능하다.
굳이 하나의 데이터베이스를 3단계로 나눠서 표현한 것은, 데이터의 독립성을 유지하기 우해서다. ==데이터 독립성은 하위 스키마를 변경하더라도 상위 스키마가 영향을 받지 않는 특성이다.==
논리적 데이터 독립성
- 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것.
- 개념 스키마가 변경되더라도 외부/개념 매핑 정보(application interface)만 적절히 수정해주면, 사용자 입장에서 외부 스키마를 변경할 필요 없다.
물리적 데이터 독립성
- 내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것.
- 데이터베이스의 저장 구조가 변경되어도 개념/내부 매핑 정보(storage interface)만 적절히 수정해주면, 데이터베이스의 논리적 구조는 영향을 받지 않는다.
3.2.4. 데이터 사전
DB 메타 데이터
: 스키마와 스키마 간 매핑 정보와 같이 데이터베이스 운영을 위한 실제 데이터 외의 부가정보
데이터 사전(data dictionary)
: 메타 데이터를 저장하는 곳. 시스템 카탈로그(system catalog) 혹은 시스템 데이터베이스(system database)라고도 한다.
시스템 카탈로그도 테이블로 구성되어 있어서 SELECT 구문을 통해 접근할 수는 있지만, 수정 및 삭제는 시스템만 가능하다.
- 데이터 디렉터리(data directory)
데이터 사전에 있는 데이터의 실제 위치 정보로써, 역시 시스템만 접근할 수 있다.(시스템만 접근할 수 있다는게 도대체 무슨 소리...)
3.3. 데이터베이스 사용자
사용자 또한 데이터베이스 시스템을 구성하는 중요한 요소로써, 데이터베이스에 접근하는 모든 사람을 의미한다.
3.3.1. 데이터베이스 관리자
데이터베이스 관리자(DBA: DataBase Administrator)
: 데이터베이스 시스템을 운영하는 사용자. 데이터베이스를 설계하고 적절히 서비스 될 수 있도록 제어한다. 데이터베이스 설계자가 포함된다.
역할
- 데이터베이스 구성 요소 선정
- DB를 구성할 데이터를 결정한다
- 데이터베이스 스키마 정의
- DB 구성 요소를 토대로 스키마를 설계한다.
- 물리적 저장 구조와 접근 방법 결정
- 레코드의 저장 순서와 접근을 위한 인덱스 기준 필드 등을 결정한다.
- 무결성 유지를 위한 제약조건 정의
- 저장할 수 있는 데이터의 제약조건을 걸어 데이터의 무결성을 유지한다.
- 보안 및 접근 권한 정책
- 데이터베이스 접근에 대한 사용자 권한 부여 정책을 결정한다.
- 백업 및 회복 기법 정의
- 시스템 장애에 대한 데이터베이스 복구 방법을 정의한다.
- 시스템 데이터베이스 관리
- 시스템 데이터베이스를 관리한다.
- 시스템 성능 감시 및 성능 분석
- 시스템 성능을 추적하고 개선한다.
- 데이터베이스 재구성
- 필요한 경우 데이터베이스를 재구성한다.
3.3.2. 응용 프로그래머
응용 프로그래머(application programmer)
: 최종 사용자를 위한 응용 프로그램을 작성할 때, 데이터베이스로부터 서비스 운용을 필요한 데이터를 얻기 위해 필요한 데이터 조작어를 삽입한다.
3.3.3. 최종 사용자
최종 사용자(end useer)
: 데이터를 위해 데이터베이스 접근하는 일반 사람들
구분
- 캐주얼 사용자
- 데이터 조작어를 이용해 원하는 데이터에 대한 처리를 DBMS에 요구한다.
- 초보 사용자
- GUI나 응용프로그램을 통해 데이터베이스에 접근한다.
3.4. 데이터 언어
데이터 언어
: DBMS에 데이터 처리를 위해 내리는 명령어
3.4.1. 데이터 정의어(DDL)
데이터 정의어(DDL: Data Definition Language)
: DB 구축을 위해 ==스키마==를 정의하거나, ==스키마==를 수정 및 삭제하기 위해 사용되는 언어. DDL로 조작된 기록들은 데이터 사전에 반영된다.
3.4.2. 데이터 조작어(DML)
데이터 조작어(DML: Data Manipulation Language)
: 사용자가 ==데이터==의 CRDU 등의 처리를 위해 사용되는 언어. DML에 따라 테이블에 저장된 ==실제 데이터값(인스턴스)==이 수정된다.
구분
- 비절차적 데이터 조작어
- 어떤 데이터를 원하는지만 명시해주면 된다. 현재 DBMS에서 주로 사용되는 형태의 언어이며, SQL이 이에 해당된다.
- 절차적 데이터 조작어
- 어떻게 데이터에 접근할지를 함께 명시해줘야 한다. 현재 DBMS 주로 이용되지는 않지만, 고급 프로그래밍 언어에 관련 기능들이 장착되어 있다.
3.4.3. 데이터 제어어(DCL)
데이터 제어어(DML: Data Control Language)
: 데이터의 무결성과 일관성을 유지하며 여러 사용자에게 데이터베이스를 공유할 수 있도록, 내부적으로 필요한 규칙을 정의하는 데 사용되는 언어. 예시
DCL 기능
- 무결성(integrity): DB에 유효한 데이터만을 유지한다.
- 보안(security): 접근권한이 있는 사용자만 데이터에 접근하게 한다.
- 회복(recovery): 장애가 발생해도 데이터의 일관성을 유지한다.
- 동시성(concurrency): 여러 사용자가 같은 데이터에 동시 접근이 가능하다.
3.5. 데이터베이스 관리 시스템의 구성
DBMS는 사용자와 DB 사이에 위치하며, 기능에 따라 질의 처리기와 저장 데이터 관리자로 구분된다.
3.5.1. 질의 처리기
질의 처리기(query processor)
: 사용자의 데이터 처리 요구를 해석하여 처리한다.
구성
- DDL 컴파일러(DDL compiler)
- DDL을 해석하고 이를 저장 데이터 관리자의 도움을 받아 처리한다. 또한 처리 내용을 데이터 사전에 적용한다.
- DML 프리 컴파일러(DML precompiler)
- 응용프로그램의 코드에서 DML을 추출하여 DML 컴파일러에 전달한다.
- DML 컴파일러(DML compiler)
- DML을 런타임 데이터베이스 처리기가 이용할 수 있도록 해석한다.
- 런타임 데이터베이스 처리기(run-time databse processor)
- 저장 데이터 관리자를 통해 DML 컴파일로부터 전달받은 처리 요구를 실행한다.
- 트랜잭션 관리자(transaction manager)
- 데이터베이스에 접근하는 사용자의 접근 권한이 유효한지 검사하고, 데이터의 제약조건의 위변 여부를 확인한다. 또한 회복이나 병행 수행과 관련된 작업을 담당한다.
3.5.2. 저장 데이터 관리자
저장 데이터 관리자(stored data manager)
: 데이터베이스와 데이터 사전에 실제로 접근하고 관리한다. 단, 디스크에 접근하는 것은 운영체제의 기본 기능이므로 운영체제의 도움을 받는다.
'CS > Database' 카테고리의 다른 글
Ch 06. 관계 데이터 연산 (0) | 2022.10.25 |
---|---|
Ch 05. 관계 데이터 모델 (0) | 2022.10.24 |
Ch 04. 데이터 모델링 (1) | 2022.10.21 |
Ch 02. 데이터베이스 관리 시스템 (0) | 2022.10.19 |
Ch 01. 데이터베이스 기본 개념 (0) | 2022.10.19 |