업데이트:

태그: ,

카테고리:

REF: fundamentals of database systems 7th edition

Data Model, Schemas, Instances, States

  • DB접근방식은 DB유저들에게 필요없는 세부적인 정보를 추상화의 단계를 통해 숨긴다.
  • 다양한 용어가 나오니, 이에 대해 숙지해야한다.

Data Model

정의

  • 데이터베이스 구조(structure of database) : 데이터 형, 관계, 데이터의 제약조건 정의
  • Data Model : collection of concepts for describing data
    • 데이터베이스 구조 + basic operation
      • basic operation : user-defined operation + generic operation
        • user-defined operation : 학생의 GPA를 구해라 등
        • generic operation : insert, delete, modify, retrieve 등

분류

  • 개념적 데이터 모델(high-level, conceptual data model)
    • 사용자가 이해하는 데이터베이스 구조
    • miniworld를 개체, 속성, 관계로 표현한다.
    • DB 설계자(designer)가 사용자와 인터뷰, 문서화한다.
  • 구현 데이터 모델(representational, implementation data model)
    • DBMS가 사용하는 모델
    • 개념적과 물리적의 사이에 존재
      • 사용자가 이해할 수 있고, 컴퓨터가 데이터를 구성하는 방식과 비슷하기때문.
    • 물리적인 저장방식은 추상화하지만, 컴퓨터에 바로 구현될 수 있는 모델임
  • 물리적 데이터 모델(low-level, physical data model)
    • 컴퓨터에 가까운 형태, 디스크, 파일 레벨에서 데이터를 바라본다.
    • 데이터 저장방법, 레코드 포맷/순서, 레코드 찾아가는 포인터 구조 등에 대해 다른다.
  • 오늘날에는 구현 데이터 모델은 relational data model이 가장 많이 사용된다.
    • 레코드와 필드를 가진 테이블간의 관계로 데이터를 표현한다.
    • 모든 테이블은 필드를 묘사하는 스키마를 가진다.(테이블의 1행, 가장 윗줄을 의미한다.)


DB Schema(meta-data)

  • data model은 DB를 묘사하는 부분과 Date자체로 나뉘는데,DB를 묘사하는 DB schema를 알아야한다.

  • DB스키마는 오늘날 사용되는 관계형 데이터 모델의 relation을 의미한다.

정의

  • DB schema : 실제 저장데이터가 아닌, 데이터베이스에 대한 설명

  • DB설계자가 설계시 정의, 지주 변경되지 않음.
  • system catalog에 저장된다.
  • 형태, 관계, 제약 등에 대해 정의.

schema diagram

  • 스키마를 표현하는 그림
  • 제한된 정보를 표현한다.(형태, 관계, 제약을 표현하지 않는다.) Screen Shot 2022-09-12 at 12 06 45 PM


DB State와 Instance

정의

  • Instance : 저장된 데이터 자체
  • DB State : 특정 시점의 DB안의 데이터를 의미.
    • 또는, 데이터베이스의 현재 occurence, instance들의 집합이라고도 한다.
    • DB내부의 실제 데이터들은 insert, delete등에 의해 바뀔때마다 다른 state를 가지게된다.
    • 이는 곧, 각 state마다 스키마 구조는 자신만의 현재 instance 집합을 가진다는 것을 의미한다.

DB스키마, DB state구분

  • 새로운 DB를 정의할때, DBMS에 DB스키마를 정의하게된다.
  • 이때, 상응하는 DB state는 empty state를 가진다.
  • 이후에 DB의 데이터를 조작할때마다 다른 DB state를 가지게된다.

DBMS validation

  • DBMS는 모든 state가 valid state인지 검사한다.
  • DB를 조작해 state가 변이하면, system catalog에 저장되어있는 DB 스키마와 비교해 valid한지 검증한다.



3단계 스키마 구조

Screen Shot 2022-09-12 at 12 23 15 PM

  • 3단계 스키마 구조는 사용자 응용프로그램과 물리적 데이터베이스를 구분하기위함이다.
  • 사용자는 응용프로그램

구조

⭐️내부 단계

  • 내부 스키마로 물리적 저장 구조 기술
  • 물리적 데이터 모델을 사용한다.

⭐️개념적 단계

  • 개념적 스키마로 데이터베이스의 구조를 기술하고, 물리적 저장구조는 숨긴다.
  • entities, types, constraints, relationships, operations 등
  • 개넘적 데이터 모델(ER 모델) 구현 데이터 모델을 사용한다.

⭐️외부 단계(View Level)

  • 여러개의 외부 스키마와 사용자 view들로 표현한다.
  • 사용자 그룹가 관심으로하는 정보만을 기술하고, 나머지 부분은 숨긴다..
  • 개넘적 데이터 모델(ER 모델) 구현 데이터 모델을 사용한다.

Data Independence

⭐️논리적 데이터 독립성

  • 개념적 스키마를 변경하더라도, 윗단계인 외부 스키마, 응용프로그램에는 영향을 주지 않는 특성
  • 핸드폰 번호에 대한 스키마가 추가된다고 해도, 기존 응용 프로그램은 해당 정보 없이도 사용할 수 있다.
  • 또한, 특정 스키마가 삭제되었을때는, 해당 스키마를 사용하는 외부 스키마를 제외하고는 영향을 받지 않는다.
  • 이는 모두 논리적 데이터 독립성을 지원하는 DBMS애서는 view정의와 mapping만이 바뀌기 때문이다.

⭐️물리적 데이터 독립성

  • 내부 스키마를 변경하더라도, 윗단계인 외부 스키마와 개념적 스키마에는 영향을 주지않는 특성
  • 저장 장치를 추가해 기존 데이터를 옮긴다고 하더라도, 내부 스키마와 개념적 스키마 사이의 mapping만을 수정하므로, 개념적 스키마와 외부 스키마에는 아무런 영향이 없다.


⭐️mapping

  • ⭐️데이터 독립성(data independence)를 가능하게 해준다.
  • 예시
    • 각 유저는 자신이 볼 수 있는 view(외부 스키마)만을 참조할 수 있다.(외부단계 참고)
      • request
        • 따라서 외부스키마에서 지정된 요청은 내부스키마의 요청으로 변환되어야한다.
      • result
        • 만약 데이터를 받는 요청이라면 데이터를 저장공간에서 가져와서 사용자의 외부 관점에 맞게 결과를 형식을 재지정해줘야한다.
  • 단계 사이에서 발생하는 이런 변환을 ⭐️mapping이라고 한다.
  • 외부 단계와 개념적 단계 사이의 매핑을 ⭐️external/conceptual mapping, 개념적 단계외 내부단계 사이의 매핑을 ⭐️conceptual/internal mapping이라고 한다.

  • multiple-level DBMS에서, system catalog는 다양한 단계 사이에서 들어오는 요청들을 mapping하게된다.
  • DBMS는 이런 mapping을 하기위해 추가적인 소프트웨어를 사용한다.
  • ⭐️만약 특정 단계에서 스키마가 변경되어도, 윗 단계의 스키마는 변경되지 않는 이유가 두 단계 사이의 mapping만 변경되면 되기때문이다.



DBMS언어, 인터페이스

DBMS 언어

DDL

  • Database Definition Language
  • 개념적 스키마의 매핑 및 정의
  • DBA, DB designer가 사용한다.
  • 설계된 DB구조를 DBMS catalog에 입력할때 사용된다.
  • DDL Compiler
    • DDL statement를 처리하기위해 DBMS에 있는 DDL compiler

DML

  • Database Manipulation Language
  • DDL로 DB스키마가 컴파일되고, DB가 데이터로 채워지면 사용자는 database를 조작할 수단이 필요하다.
  • DBMS는 이를 위해 DML을 제공한다.
  • 대부분 DDL과 DML이 통합된 언어인 SQL을 사용한다.

  • high-level : what to get
    • nonprocedural DML(declarative언어) : 무엇을 처리할 것인지에 대해서 다루기때문
    • SQL이 대표적(RDBMS) : 4세대 선언적 언어라 쉽고, 질의 최적화 가능
    • set-at-a-time DML: 1줄의 DML로 많은 record를 받을 수 있음
    • DML statement는 precomiler에의해 추출되어 DBMS가 처리할 수 있어야한다.
    • 터미널 환경에서 사용 or 범용목적 프로그래밍 언어에 탑재해서 사용
  • low-level : how to get
    • procedural DML
    • 네트워크, 계층형 모델(3세대)
    • record-at-a-time: 1개의 record씩을 메모리에 올려서 처리한다.
    • 범용목적 프로그래밍 언어에 탑재되어야만한다.

DML embeded in general purpose programming lang

  • js, java등의 범용목적 프로그래밍 언어를 통해 Database를 조작하는 코드를 작성했다고 생각해보자.
  • 이때, DB를 조작하는 DML이 java, js 등의 언어 안에서 함수의 형태로 embeded된 상태로 사용된다.

  • host language
    • DML명령어가 범용목적 프로그래밍언어에 탑재되었을때, 범용목적 프로그래밍 언어(general-purpose programming language)를 host language라고 한다.
  • data sublanguage
    • 위의 경우에, DML은 data sublanguage라고 불린다.
    • 보통, host 언어에서 static binding(host 언어가 컴파일될 때 binding)된 형태로 사용한다.

DML used interactively

  • Query Language
    • high-level, declartive, nonprocedural, set-at-a-time DML이 상호작용적으로 사용될때(terminal로 사용)를 의미.
    • dynamic binding(runtime에 바로바로 결과 얻음)으로 데이터를 전달한다.

Interface

  • User-friendly interface
    • 보통 GUI를 의미. 스키마를 보여준다.
  • natural language interface
    • 자연어를 통해 high-level DML을 생성한다.
  • interface for parametric users(은행원)
    • 최소화된 키입력을 주어 반복적인 작업을 쉽게해준다.
  • interface for DBA(privileged command)
    • 계정관리, 스키마 변경, 저장 구조 재조직화 등



DB system environment

️️️️️️️️️️️⭐️DBMS Component Modules

Screen Shot 2022-09-13 at 1 55 30 PM

  • 1장과 2장의 내용을 포함하는 그림이다.
  • DBMS사용자 군에 따라서 사용하는 DBMS컴포넌트 모듈이 다르다.

⭐️️️️️️️DBA staff

  • DBMS는 DBA에게 2가지의 기능을 제공한다.

  • 데이터 구조 정의
    1. DBA는 DB Designer가 정의한 스키마와 DBA로써 필요한 스키마에 해당하는 데이터 구조를 DDL STATEMENT로 입력
    2. DBMS의 DDL compiler가 파싱해서 해당하는 테이블 구조를 system catalog/data dictionary에 작성한다.
  • 관리자 명령어
    1. 계정만들고, 인덱스를 만들고, 데이터 옮기고, 파일을 삭제하는 등의 일을 하는 Previleged Command를 DBA가 입력하면
    2. Runtime Database Processor를 호출해 처리한다.

️⭐️Casual Users

  • 가끔 사용하지만, 다양하고 복잡한 정보를 원하는 유저들이다.(중간, 상위 관리자와 브라우저)
  • DML을 사용해 데이터를 가져온다.(sqlite3를 터미널에서 실행해 select * from table을 하는 것 같은 작업)
  1. Interactive Query라고 부르는 interactive 환경의 DML(터미널)을 통해 수정, 삭제, 조회 등의 작업을 한다.
  2. 1번에서 DML로 들어온 쿼리는 Query compiler가 처리하는데, 이때 작성된 쿼리의 테이블, 속성 등이 DDL에 정의되어있는지 등의 문법오류를 체크한다.
  3. 이후 Runtime Database ProcessorStored Database에서 데이터를 가져온다.

⭐️Application Programmer

  • 웹 어플리케이션을 작성하면 소스코드에는 Host Language(java, js 등)와 데이터를 조작하는 명령인 DML Statement가 함께 작성된다.
  1. precompilerhost languageDML을 분리한다.
  2. host language는 host language compiler에 의해, DML Statement는 DML compiler에 의해 각각 컴파일된다.
  3. 이때, DML compiler는 Query compiler와 마찬가지로 system catalog/data dictionary를 통해 DML 문장의 문법오류를 체크한다.
  4. 이렇게 컴파일된 각 코드를 합쳐 Compiled Transactions라고 불리는 실행파일을 만들게된다.
  5. Compiled TransactionRuntime Database Processor를 통해 데이터를 처리하게된다.
  • 만들어진 실행파일은 나중에 parametric end user가 사용하게된다.

⭐️Parametric End user

  1. Application Programmer가 작성한 프로그램을 사용한다.
  2. 해당 프로그램이 바로 위의 Compiled Transaction이다.
  3. Compiled TransactionRuntime processor를 통해 데이터를 처리한다.

⭐️Query comiler, DML compiler

  • casual end user의 interactive query를 컴파일하는 query compiler는 interactive 환경에서 빠르게 결과를 보여줘야하기때문에 full optimization을 하지 않는다.

  • Application Programmer가 사용하는 호스트 언어에 탑재된 DML statement를 컴파일하는 DML Compiler는 full optimization을 한다.

  • 둘 다 DML을 컴파일 해야하기 때문에, system catalog/data dictionary를 통해 문법오류를 확인한다.

submodules

  • Stored data manager
    • 디스크 접근 제어
    • database/catalog는 disk에 저장된다.
    • OS의 I/O를 사용해 메모리 버퍼, 데이터 전송 조절을 한다.
  • DDL compiler
    • 스키마 정의를 처리하고, DBMS catalog에 저장한다.
    • 저장하기전에, stored data manager에 의해 디스크 접근이 제어된다.
  • run-time database processor
    • runtime에 database에 접근한다.
    • 명령을 받아 수행하기위해 disk에 접근할때, stored data manager를 통해 접근한다.
  • query compiler
    • interactive 환경에서 high-level query를 처리할때 사용되는 컴파일러.
    • 이 또한 stored data manager에 의해 접근이 제어된다.
  • pre-compiler
    • host language로 작성된 코드에서 DML statement를 분리한다.
    • 분리된 host language와 DML statement는 각각 host language compiler와 DML compiler가 컴파일하게된다.
    • 분리 컴파일된 코드는 compiled transaction으로 실행파일로 만들어진다.
  • Database System Utilities
    • DBA가 DB 시스템을 잘 관리하게끔 해주는 도구들
      1. Loading : 파일을 database로 변환해 넣어주는 역할
      2. backup : 전체 database의 복사본을 만들어 불상사에 대비한다.
      3. reorganization : DB파일을 성능 향상을 위해 다른 조직으로 옮길 수 있게 해준다.
      4. performance monitoring
  • Communication Facilities
    • 통신을 위한 H/W + S/W + DB systems
    • 분산형 DB 시스템을 위함
    • client-server 구조로 되어있다.



DBMS 구조

Screen Shot 2022-09-13 at 3 03 23 PM

  • DB에는 실제 데이터 + 데이터 구조가 저장된다.
  • 이는 실제 저장소에서 OS가 관리하게되는데, DBMS는 OS의 Files and Access Methods, Buufer Management, Disk Space Management기능을 사용한다.
  • 쿼리최적화는 4세대 언어 (high level, nonprocedural, set-at-a-time, decalative)에서만 사용한다. (계층, 네트워크 모델은 최적화기능 없다.)



DBMS 분류 방법

데이터모델에 의한 분류

  • 관계형(relational) DBMS
  • 네트워크(network) DBMS
  • 계층(hierarchical) DBMS
  • 객체지향형(object-oriented) DBMS

사용자 수에 의한 분류

  • single user system : 거의 안씀
  • multiuser systems : 다중 사용자가 동시성 있게 접속

사이트 수에 의한 분류

  • 중앙집중식(centralized) : 한 컴퓨터에 DBMS와 모든 database 있다.
  • 분산(distributed) : 컴퓨터망으로 연결된 여러개의 사이트에 DBMS와 데이터베이스가 분산된다.
    • homogeneous DBMS : 모든 사이트가 동일한 DBMS사용
    • heterogeneous DBMS : 사이트마다 다른 DBMS시용

목적에따른 분류

  • 범용목적 DBMS : oracle, mysql

  • 특수목적 DBMS : 실시간 DB, 전화번호부 등

댓글남기기