[DB] Chapter 2 : Database System Concepts and Architecture

2023. 10. 12. 00:56

Data Models, Schemas And Instances

Data Models

데이터 추상화를 달성하기 위한 필수적인 의미로 structure, operations, constraints를 정의해 표현한다.

  • structure 
    data type, relationships, constraints
  • operations 
    database에서 값을 가져오고 update를 할 수 있어야한다.
    기본적인 연산과 사용자가 정의한 연산(ex. 학점 계산)도 포함한다. 
  • constraints 
    Valid data에 대한 제약조건을 만든다. DB는 유효한 데이터만 저장할 수 있으며 이 제약 조건은 '항상' 지켜져야한다. 

 

Categories of Data Models

  1. Conceptual data models (High Level)
    (최종) 사용자가 인식하는 데이터와 가까운 개념을 제공한다. ( entity, attribute, relationship 등)
    Entity-based (ER model) 또는 objected-based data model이라고 부른다. 
  2. Physical data models (low-level, internal)
    데이터가 컴퓨터 저장소에 어떻게 저장되는지에 대한 세부사항을 묘사하는 단계
    DBMS에 따라 physical data model은 결정이 된다.
  3. Implementation data models ( representational, logical)
    위 두 개 (1,2) 사이의 단계로 많은 상업용 DBMS 구현에 사용된다. 
    relational data models, network/hierarchical models

 

+) Self-Describing data models
문서 하나에 모든 정보를 가지고 있다. (XML, Json 등) => NoSQL

 

Schema vs Instance

Database Schema (intension)
데이터 베이스의 요약 정보
한번 설정되면 잘 바뀌지 않는다. 때로 schema evolution이 일어날 수 있지만, 그런 경우는 너무 스키마가 오래되어 업데이트 해야하거나 다시 만들 때 등 특수한 경우이다. 

Database State (extension)
특정한 순간에 데이터베이스에 저장되어 있는 실제 데이터이다. 그래서 database instance라고 부르기도 한다. 
state는 스키마와는 다르게 시간에 따라 변경된다. 

 

DB를 처음 만들때 우리는 DB schema를 DBMS에 구체화한다. 이때, database state는 데이터가 없는 empty state를 제작한다. 그리고 update 등의 연산을 거치면서 database state를 변경하는 방식으로 작동한다. 

=> DBMS는 모든 state를 valid state(구조, 제약조건을 충족한 상태)로 유지해아한다. 

 

Three-Schema Architecture And Data Independence

Three-Schema Architecture

Database system을 위한 구조이며, user application과 physical database를 분리될 수 있도록 하는 구조이다. 

 

  1. Internal Level (internal schema)
    실제 데이터베이스의 물리적인 저장 구조를 표현한다. physical data model을 내부 스키마로 사용한다. 
    데이터 저장이 어떻게 되는지 데이터 베이스에 접근하는 경로는 어떻게 되는지 등을 묘사한다.
  2. Conceptual level (conceptural schema)
    사용자들을 위한 전체 데이터베이스에 대한 구조, 제약조건을 설명한다. 
    물리적인 데이터 구조를 감춰서 데이터베이스의 구조에 집중하며, conceptual 또는 implementation data model을 사용한다.

  3. External schema (external level)
    다양한 유저 view를 제공한다. 각각의 external schema는 DB의 한 부분을 특정한 사용자들에게 필요한 정보만 보여준다.

이러한 level을 mapping을 통해 연결되어 정보를 주고 받는다. 

이렇게 구현하는 이유는 각 단계를 '독립적으로' 유지하기 위함이다. ( 아래 Data independence 참고 )

따라서 사용자에게 data 를 접근하기 위해서는 external level -> conceptual level -> internal level을 거쳐 물리적인 저장소에 도달해야한다. 

 

Data Independence

DB 시스템의 한 단계의 schema가 변경되었을 때 더 높은 level의 schema의 변경이 없어야한다.

  • Logical data independence
    conceptual(logical) schema가 변경될 때, external schema가 변경되지 않아야한다.
  • Physical data independence
    internal(physical) schema가 변경될 때, conceptual(logical) schema가 변경되지 않아야한다.

더 낮은 level의 스키마가 변경되었을 때, schema 사이의 mapping만 변경해도 작동해야한다.

 

Database Languages And Interfaces

DBMS languages

  • Data Definition Language(DDL)
    DB의 conceptual schema를 정의한다.

    three-Schema architecture 구조에 따라 S(torage)DL 과 V(iew)DL도 있음. 하지만, SDL은 대부분의 DBMS 명령어를 통해 구현되면서 현재는 사용하지 않는다.
    user view를 구현하기 위한 VDL은 최근 DDL에서 conceptual과 external schema 모두 정의하는데 사용한다.

  • Data Manipulation Language(DML)
    데이터베이스 검색 및 업데이트를 지정하는 데 사용한다. 
    DML 명령어는 일반적으로 사용하는 프로그래밍 언어에 내장되어 있다. 

    1. High-level or non procedural languages : 선언적이다. 데이터가 무엇을 검색하는지 정의한다. 
      set-at-a-time(일시에 설정하는) 또는 set-oriented DML 로 불린다.

      +) 선언적이라는 것 : "나는 Student table에 ID가 필요하다" 라고 선언만 하지 어떻게 가져올지에 대해서는 정의하지 않음 => 사용자 입장에서 굉장히 편리함.

    2. Low-level or procedural Language : 프로그래밍 언어에 내장되어있어야 한다. 
      record-at-a-time(일시에 기록하는) DML 이라고 불린다. 여러개의 record를 할 때에는 loop 가 필요하다.

 

DBMS interfaces

  1. Stand-alone(독립 실행형) query language interfaces (SQL*Plus)
  2. 프로그래밍 언어 속 embedding DML을 위한 프로그래머 인터페이스
    • Embedded Approach : embedded SQL, SQLJ
    • Procedure Call Approach : JDBC(Java), ODBC(C) 등 다른 언어를 위한 API
    • Database Programming Language Approach : 독자적으로 작동하는 언어 (Oracle)
    • Scripting Language : PHP, Python 등  
  3. 사용자 친화적인 인터페이스 (SQLDeveloper)
  4. 모바일 인터페이스

 

The Database System Environment

DBMS Component Modules

위 사진은 DBMS의 전형적인 구성요소이다. 위쪽 부분은 다양한 데이터베이스 유저들의 환경과 그들의 인터페이스를 나타낸다. 아래쪽 부분은 DBMS의 내부 모듈을 보여준다. 

disk에는 저장된 데이터베이스와 DBMS catalog가 저장되어 있다. disk에 대한 접근은 OS가 처리한다.

대부분의 DBMS는 자신만의 버퍼와 buffer manager를 가지고 있고, disk I/O 의 시간 단축은 성능 향상에 큰 영향을 미친다. high-level stored data manager는 DBMS가 디스크의 정보 접근하는 것을 제어할 수 있다. 

 

 

BELATED ARTICLES

more