DataBase/RDB

[RDB] Database System - Introduction

:) :) 2023. 4. 8. 02:38

https://www.db-book.com/

 

Database System Concepts - 7th edition

 

www.db-book.com

< 인터넷에 제공되어있는 Avi Silberschatz 외 2인, Database System Concepts - 7th edition, McGraw-Hill, 2019 에 관한 자료를 참조 >

 

 

0. Preface

 데이터베이스와 관련된 책을 공부하며 알게된 내용을 정리 및 포스팅 하는 목적에서 시작했다.

남에게 지식을 정확히 전달할 때 배움은 완성된다고 믿기에 최대한 자신이 이해한 내용을 바탕으로 타인도 이해할 수 있게 설명해 보겠습니다.

 

1. Goals

  • Database(이하 DB) system의 특징과 목적 preview
  • DB가 사용자에게 무엇을 제공하는가
  • DB 개념이 어떻게  발전되어 왔는가
  • DB가 OS, 운영체제와 어떻게 상호작용(interface)하는가

 

2. Applications of DataBase

  • 기업 정보
    • 판매 : 고객, 상품, 구매 데이터
    • 회계 : 지불, 영수증, 자산 데이터
    • HR : 피고용인, 연봉 데이터
  • 제조 : 생산, 주문, 재고, 공급망 관리
  • 은행 : 고객 정보, 계좌, 대출, 은행업무와 관련된 트랜잭션
  • 대학 :  등록, 학점
  • 항공, 통신, 재무, 웹 기반 서비스, 문서, 네비게이션까지 다양한 분야가 데이터베이스를 응용하여 사용하고 있다.

 

3. 데이터베이스 시스템의 목적

 파일 시스템 상에서 데이터 관리 시 발생했던 문제들을 해결하기 위해 DB 시스템을 고안하였다.

파일 시스템 상에서 보였던 문제는 다음과 같다.

 

  • 데이터의 중복성, 비일관성의 문제
    • 파일 시스템 상에서 동일한 데이터가 여러 장소에 흩어져 저장되어있는 경우가 더러 있고, 원본 데이터 수정 시 수정되지 않은 데이터가 존재할 수 있어 일관성이 깨지는 문제가 발생한다.
  • 특정 데이터 접근의 어려움(낮은 가용성)의 문제
    • 한 데이터 집합에서 다양한 통계량을 뽑아내고 싶은 상황에서, 파일 시스템 상에서는 그때마다 요구에 맞는 프로그램을 직접 개발하거나 손으로 계산해야 했다.
  • 데이터 보안의 문제
    • 여러 사람이 필요 이상의 데이터 접근 권한을 가지면서 생겼다.
  • 원자성 유지의 문제
    • 계좌 입출금 같이 여러 곳에서 '동시에' 일어나야 하는 작업에 대해 이 동시성이 깨질 수 있는 문제
  • 데이터 고립의 문제
    • 데이터가 파일 시스템 상에서 여러 곳에 흩어져 있어 쉽게 찾을 수 없는 문제
  • 무결성 문제
    • 데이터의 무결성 제약 - 데이터가 무조건 지켜야 하는 조건 - 이 깨질수도 있는 문제
  • 동시 접근 문제
    • 다수의 사용자가 동시에 데이터에 접근했을 때 일관성이 깨질 수 있는 문제

 

데이터 베이스는 이 모든 문제를 해결할 수 있고, 그러기 위해 고안되었다.

 

 

4. 데이터의 관점(View of Data)

 크게 3가지로 나눌 수 있다. Physical level, Logical level, view level로 말이다.

이는 데이터에 대한 관점을 추상화 한 것이라 생각할 수 있고, 이에 따른 각 스키마(Schema)가 여러 개 존재한다.

  • Physical level
    • 데이터가 어떻게 저장되고 유지되는지에 대한 명세를 담고 있는 단계다.
  • Logical level
    • 데이터의 각 제약(무결성 제약, 도메인 제약, assertion 등)이 담겨져 있는 단계다.
  • view level
    • 사용자가 쉽게 접근할 수 있는 단계다.

* instance - 특정 시점에서 DB에 저장되어있는 정보의 모임 : 변수에 저장된 값으로 비유

* schema - DB의 전체적인 설계 : 변수의 자료형 선언으로 비유

 

4-1. Physical data independence - 물리적 데이터 독립성

 이 시스템에서 가장 상위의 응용프로그램(application)은 대부분 논리적 스키마 위에서 만들어지고, 물리적 스키마에는 거의 영향을 받지 않는다. 따라서, 물리적 스키마를 수정해도 app.에는 영향을 거의 미치지 않는다.

 

이는 물리적 스키마 수정시 응용프로그램까지 수정할 필요가 없다는 점을 알려준다. 이를 물리적 데이터 독립성이라 한다.

 

5. Database Language

 데이터베이스에서 사용되는 언어는 2가지 성향으로 나눌 수 있다.

  • DDL - Data Definition Language - 데이터 정의어
    • 스키마를 정의한다.
  • DML - Data Manipulation Launguage - 데이터 조작어
    • DB에 쿼리문(질의어)을 날릴 수 있다.

 사실 DDL과 DML은 경계가 명확히 구분되어있지 않다. 이 둘을 모두 포괄하고 있는 언어인 SQL이 존재하고, 따라서 SQL을 통해 DDL 및 DML을 이용할 수 있고, 따라서 DB를 정의 및 조작할 수 있다.

 

5-1. DDL

 DB schema를 구체화하는 언어다.

DDL에는 아래와 같은 다양한 일관성 제약조건을 정할 수 있다.

  • 도메인 제약
    • 테이블의 필드 선언 시 지정할 수 있는 자료형이 가지는 제약 조건을 의미한다. integer로 제약했다면 그 필드의 모든 자료는 정수형이 되어야 한다.
  • 참조 무결성 제약
    • 테이블간 참조에 관한 제약이다.
  • 주장(Assertion)
    • 도메인, 참조 무결성 제약과 같은 제약을 포함하는 일반적인 개념의 제약이다. 실제로 요구되는 상황에 기반한 모든 제약을 의미한다.
  • 권한(Authorization)
    • 데이터를 생성 / 접근 / 수정 / 삭제할 수 있는 권한의 부여 및 회수를 의미한다.

 

5-2. DML

 DB에 Query를 전달할 때 사용하는 언어이다. Query Launguage, 질의어라고도 한다.

크게 절차적 DML과 선언적 DML로 나뉜다.

  • Procedural DML
    • 절차적 DML이다. '어떠한 데이터를' + '어떻게 구해서' - 말 그대로, 어떠한 데이터를 찾을지, 그런 데이터를 어떻게 구할지의 방법까지 요구하는 DML이다. 따라서 아래의 선언적 DML보다 상대적으로 어렵다.
  • Declarative DML(Non-procedural DML)
    • 선언적(비절차적) DML이다. '어떠한 데이터를' 대상으로 찾을지에 대한 연산만 하면 된다. 따라서 절차적 DML보다 상대적으로 쉽다. SQL은 선언적 DML이다.

 

6. Database Design, DB 설계

 크게 5가지 단계로 나눌 수 있다.

요구 분석 -> 개념적 설계 -> 논리적 설계 -> 물리적 설계 -> 구현으로 나뉜다.

 

 

7. Database Engine

 DB system은 크게 두 가지(또는 세 가지) 모듈로 나눌 수 있다.

  • Storage Manager - 저장장치 관리자
  • Query Processor - 질의 처리기
  • (Transaction management) - 트랜잭션 관리

 

7-1. Storage Manager

 Storage Manager는 데이터가 실제로 저장되는 부분을 관리한다. OS의 file system과 밀접하게 연관되어 있으며, 데이터를 효율적으로 저장, 검색, 갱신해야 하는 책임이 있다.

 다시말해 DB에 저장된 저수준의 데이터와 App 및 system에 제출된 질의 사이에 interface를 제공하는 프로그램이다.

 

Storage Manager의 구성요소는 다음과 같다.

  • Authorization and intergrity manager
    • 권한 및 무결성 관리자
  • Transaction manager
    • 트랜잭션 관리자
  • File manger
    • OS에서 구현된 파일 시스템에서 어떻게 데이터를 저장할 건지에 대한 관리자
  • Buffer manger
    • 대량의 데이터를 처리할 때, 해당 컴퓨터의 메인 메모리에 옮겼다가 뺐다가 해야하는데 이때 버퍼 관리자가 사용된다.

 

물리적 시스템 구현의 일환으로, 저장장치 관리자는 다음을 구현한다.

  • Data files
    • 데이터가 저장되는 실제 위치의 파일이다.
  • Data dictionary
    • 데이터를 설명하는 데이터, 즉 메타데이터들을 모아놓은 데이터 사전이다. 데이터가 조작될 때 이곳을 참조한다(무결성 제약조건들도 여기에 있어서).
  • Indices
    • 수없이 많은 데이터베이스에서 자주 접근하는 데이터들의 index를 따로 모아놓은 곳이다. 해싱기법을 이용해 대부분 빠른시간 내에 접근가능하다.

 

7-2. Query Processor

 Query를 처리하는 부분이다. DDL interpreter와 DML complier로 나뉜다.

  • DDL interpreter
    • DDL을 해독(해석)하여 Data dictionary에 기록하는 처리를 담당한다.
  • DML complier
    • SQL을 통해 전달된 Query를 Query evaluation engine이 수행할 수 있도록 컴파일해준다. 동일한 결과를 수행하는 여러 계획들이 나올 수 있는데, 이때 query optimization(쿼리 최적화)를 수행해 가장 낮은 비용의 계획을 선택한다.
    • Query Evaluation Engine
      • dml complier가 생성한 하위 단계 명령을 실행을 담당.

 

7-3. Transaction Management

Transaction, 트랜잭션이란 - 하나의 논리적 작업을 위한 여러 연산의 집합을 의미한다. 보통 작업의 원자성을 보존하려 할 때 사용한다. 트랜잭션은 아래 3가지를 만족해야 한다.

  • atomicity(원자성) - 모두 수행 혹은 실패시 모두 수행하지 않음
  • consistency(일관성) - 수행 전과 후의 데이터 쌍들에 일관성이 존재해야 함
  • durability(영구성) - 수행 후 변경된 데이터가 영구적으로 저장되어야 함

 

다중 트랜잭션이 수행될 때, 트랜잭션 간 상호작용을 제어할 필요가 있다.

이를

Concurrency - control manager : 동시성 제어 관리자

라고 한다.

 

8. 데이터 마이닝

 머신러닝이나 통계분석과 달리 주로 "디스크에 저장된", 즉 DB 상에서의 지식 탐사를 다루는 분야이다.

 

 

 

 

9. 데이터 웨어하우스

 여러 곳에 존재하는 다양한 데이터들을, 통일된 하나의 스키마로 단일의 장소에 모음으로써 사용자에게 일관된 하나의 인터페이스를 제공해준다. 데이터 전처리와 정제?에 가까운 느낌인 듯 싶다.

 

 

 

 

10. DB Users

 DB와 연관된 사람들을 크게 두 가지 역할로 나눌 수 있다. DB를 사용하는 User, DB를 관리하는 Administrator이다.

 

User에는

  • naive(일반적) user
  • DB system programmer
  • 보다 능숙하고 복잡한 작업을 하는 사람
  • 관리자

등이 있다.

 

 

 

11. Administrator

 DBMS(DataBase Management System)도입의 주된 목적 중 하나는 바로 데이터와 데이터 접근 프로그램 모두에 중앙제어를 가하는 것이다. 이 중앙제어를 관리자, administrator가 하게 된다.

 

DBA - DataBase Administrator는 다음과 같은 역할을 해야 한다.

  • 스키마 정의
  • 저장공간 및 접근 방법 정의
  • 스키마 및 물리적 조직 수정
  • 데이터 접근 권한 부여
  • 주기적 항상성 유지 - 주기적 백업, 공간확보, 모니터링

등이 있다.

 

 

 

0. References

  • Avi Silberschatz 외 2인, Database System Concepts - 7th edition, McGraw-Hill, 2019
  • Avi Silberschatz 외 2인, 데이터베이스 설계(7판), 김형주, 교보문고(McGraw-Hill KOREA), 2010