본문 바로가기
데이터베이스

Database System Concepts and Architecture

by kwon5346 2024. 4. 8.
반응형

Data Models

Data Model

데이터베이스의 주요 특징은 데이터 저장 구조의 세부 사항을 사용자들로부터 은닉함으로써 어느 정도 데이터 추상화를 제공한다. 데이터 모델은 추상화를 제공하기 위한 주요 도구이다.

데이터베이스의 structure, 이러한 구조들을 조작하는 operations, 데이터베이스가 따라야 하는 constraints(제약 조건)을 표현한다.

Data Model Structure and Constraints

  • Constructs는 데이터베이스 구조를 정의하기 위해 사용된다.
  • Constructs는 전형적으로 elements(and their data types)뿐만 아니라 groups of elements(e.g entity,record,table도 포함한다. 또한 이러한 group들 간의 relationship도 포함한다.
  • Constraints는 valid data에 대한 몇몇 제한사항들을 명시한다. 이 제한사항들은 항상 지켜져야한다.


Categories of Data Models

  • Conceptual(high-level,semantic)data models(개념적 데이터 모델)
    • 많은 user가 데이터를 인지하는 방식으로 concept을 제공한다.
    • Also called entity-based or object-based data models.
  • Physical(low-level,internal)data models
    • 데이터가 어떻게 컴퓨터에 저장될지에 대한 설명을 명시한다.
  • Implementatioin(representational)data models
    • 위 두가지 모델을 완충한 data model이다. relational data model과 같은 상업적 DBMS 구현에 많이 사용된다.
  • Self-Describing data models
    • data values와 data의 description이 결합된 형태이다.
    • XML,key-value stores,NOSQL systems


Schemas versus Instances

  • Database Schema
    • 데이터베이스의 기술(description)과 데이터베이스 자체를 구별하는 것은 중요하다.
    • 데이터베이스의 description을 데이터베이스 스키마 라고 한다.
  • Schema Diagram
    • 도식화된 스키마
  • Schema Construct
    • 스키마의 각 객체 또는 요소를 스키마 구조물이라 한다.
  • Database State(snapshot)
    • 어떤 특정 시점에 데이터베이스에 들어 있는 데이터를 데이터베이스 state 또는 snapshot이라 한다.
    • occurence 또는 instance라고도 한다.


Database Schema vs. Database State

  • Database State
    • 한 시점의 database의 내용
  • Initial Database State
    • system에 처음 로드되었을 때의 database state
  • Valid State
    • 데이터베이스의 제한사항과 구조를 만족하고 있는 state
  • Distinction
    • database schema는 매우 드물게 변한다.(거의 변하지 않는다)
    • database state는 데이터베이스가 update 될때마다 변한다.


Three-Schema Architecture

three-schema architecture의 목적은 물리적 DB에서부터 사용자 application들을 분리시키는 것이다. 다음과 같은 세 단계로 정의된다.

  • Internal level(내부 단계)은 내부 스키마를 가지며, 내부 스키마는 데이터베이스의 물리적 저장 구조를 기술한다.
    • 일반적으로 physical data model에 사용된다. 데이터 저장 구조의 detail과 접근경로들을 기술한다.
  • Conceptual level(개념 단계)은 개념 스키마를 가지며, 모든 사용자들을 위한 전체 데이터베이스의 구조를 기술한다.
    • 물리적인 구조에 대한 detail은 숨기고, entity, data type, 제약 조건들을 나타내는데 중점을 둔다.
  • External level(외부 단계)은 많은 외부 스키마나 사양자 뷰들을 포함한다.
    • 특정 사용자 그룹이 관심을 갖는 데이터베이스의 부분을 기술한다.
    • 일반적으로 conceptual data model을 사용하여 구현된다.

세 개의 스키마는 단지 데이터에 대한 기술임을 주의해야 한다. 실제로 데이터는 물리적 단계에만 위치한다.
만일 요구가 데이터베이스 검색이라면, 저장된 데이터베이스로부터 추출된 데이터는 사용자의 외부 뷰와 일치하도록 재구성되어야 한다.

단계들 간에 요구와 접근 결과를 변환하는 과정을 Mapping(사상)이라고 부른다.



Data Independence

데이터 독립성은 고수준의 스키마를 변경할 필요 없이 데이터베이스 시스템의 어떤 단계에서 스키마를 변경할 수 있는 능력이다.

  • Logical Data Independence(논리적 데이터 독립성)
    • 외부 스키마나 application들을 변경하지 않으면서 개념 스키마를 변경하는 능력.
  • Physical Data Independence
    • 개념 스키마를 변경하지 않으면서 내부 스키마를 변경할 수 있음을 말한다.


DBMS Languages

  • Data Definition Language(DDL)
    • 데이터베이스의 Internal schema와 external schema간의 mapping을 정의할때 사용.
    • 내부 스키마와 외부 스키마를 정의하는데 SDL(storage definition language)과 VDL(view definition language)가 사용된다.
  • Data Manipulation Language(DML)
    • 데이터에 대한 검색, 삽입, 삭제, 수정 등 database를 조작할 때 사용한다.
    • 통합된 포괄적인 언어의 대표적인 예는 SQL 관계 데이터베이스 언어이다.


Types of DML

  • High Level or Non-procedural Language

    • For example, SQL
    • 고수준 데이터 조작어의 질의는 어떻게 검색할 것인가 보다는 어떤 데이터를 추출할 것인가를 명시하기 때문에, 이러한 언어를 declarative이라고 한다.
    • set-oriented 데이터 조작어 라고도 한다.
  • Low Level or Procedural Language

    • 한번에 한 레코드를 검색한다.
    • 레코드들의 집합으로부터 각 레코드별로 검색하여 처리하기 위해 반복문 등을 이용할 필요가 있다.

고수준이든 저수준이든 프로그래밍 언어 내에 데이터 조작이 명령이 삽입된 경우에 host language라 부르고, 데이터 조작어는 data sublanguage라고 부른다. 한편 데이터 조작어가 그 자체로 대화식으로 사용되면 query language라고 부른다.



DBMS Programming Language Interfaces

Programmer interfaces for embedding DML in programming language(=host language)

  • Embedded Approach
  • Procedure Call Approach
  • Database Programming Language Approach
  • Scripting Languages


Database System Environment

DBMS Component Modules

  • DDL Compiler(데이터 정의 언어 컴파일러)
    • 데이터 정의 언어로 명시된 스키마 정의들을 처리
    • 스키마들에 대한 정보를 DBMS 카탈로그 안에 저장함
  • Query Compiler(질의 컴파일러)
    • 대화식으로 입력된 고수준 질의들을 파싱하여 연산과 데이터 요소들이 정확한지 분석하고 내부 형태로 컴파일한다.
  • Query Optimizer(질의 최적화기)
    • 질의 컴파일러에 의해 생성된 내부 형태는 질의 최적화를 거친다.
    • 응답시간을 향상시키도록 연산들을 재배치하고 중복이 존재하면 제거, 수행시 사용할 알고리즘과 인덱스를 선택한다.
  • Precompiler(프리컴파일러)
    • C++,Java등의 host 프로그래밍 언어로 작성된 application에서 데이터 조작 명령들을 추출한다.
    • 추출된 데이터 조작 명령들은 데이터베이스 접근을 위한 object code로 컴파일하기 위해 데이터 조작어 컴파일러로 보내진다.
    • 조작어 명령을 제외한 나머지 부분은 호스트 언어 컴파일러로 보낸다.
    • 두 Object code가 link되어 런타임 데이터베이스 처리기를 호출 등을 포함하는 object code로 이루어진 미리 작성된 trnasaction이 된다.
  • DML Compiler(데이터 조작 언어 컴파일러)
    • 데이터 조작 명령들을 데이터베이스 접근을 위한 objecg code로 컴파일 함.
  • Host Language Compiler(호스트 언어 컴파일러)
    • 데이터 조작 명령이 제거된 application의 나머지 부분을 object code로 컴파일 함.
  • Runtime Database Processor(런타임 데이터베이스 처리기)
    • 수행 시 실제 데이터베이스 접근을 처리
    • DBA의 특권 명령, 실행 가능한 query 계획, 런타임 시 매개변수를 받는 미리 작성된 transaction 등을 수행한다.
    • catalog와 연동하여 동작하며, 동시성 제어/백업/회복 system은 transaction 관리를 위해 런타임 데이터베이스 처리기와 통합되어 동작한다.
  • Stored Data Manager(저장 데이터 관리자)
    • 디스크와 주기억장치 간의 저수준 입출력 연산들을 수행하기 위해서 운영체제의 기본 서비를 이용한다.
    • 주기억장치 내의 버퍼관리 같은 데이터 전송 관련 기능도 수행한다.


Centralized and Client-Server DBMS Architecture

Centralized DBMS(중앙집중식 아키텍처)

  • 하나의 시스템에 DBMS 소프트웨어, 하드웨어, application, 사용자 인터페이스 소프트웨어 등 데이터베이스 관련 모든 것들을 모아놓은 구조
  • 사용자는 여전히 터미널을 사용하여 연결할 수 있지만, 모든 processing은 centralized site에서 수행

Basic 2-tier Client-Server Architectures

  • 특정한 기능을 갖는 서버를 지정한다.
    • print server, file server, DBMS server, Web server, Email server
  • 클라이언트는 자신의 application을 수행하기 위한 처리 기능뿐 아니라 서버를 이용하기 위한 interface를 제공한다.

Clients

  • 사용자 인터페이스와 자체 처리 능력을 제공하는 사용자 컴퓨터.
  • 클라이언트는 디스크가 없는 기계 또는 클라이언트 소프트웨어만 설치된 디스크가 있는 PC 또는 워크스테이션일 수 있다.
  • 어떤 형태의 네트워크를 통해 서버에 연결된다. (LAN: 로컬 영역 네트워크, 무선 네트워크 등)

DBMS Server

  • 클라이언트에 데이터베이스 쿼리 및 트랜잭션 서비스 제공.
  • 관계형 DBMS 서버는 흔히 SQL 서버, 쿼리 서버 또는 트랜잭션 서버라고 불린다.
  • 클라이언트에서 실행되는 애플리케이션은 API(응용 프로그램 인터페이스)를 사용하여 다음과 같은 표준 인터페이스를 통해 서버 데이터베이스에 액세스한다.
    • ODBC: 오픈 데이터베이스 connectivity 표준
    • JDBC: Java 프로그래밍 액세스용

Three-tier Architecture Can Enhance Security

  • 많은 웹 애플리케이션에 사용한다.
  • 애플리케이션 서버 또는 웹 서버라고 하는 중간 계층:
    • 데이터베이스 서버에서 해당 데이터에 액세스하는 데 사용되는 애플리케이션의 웹 연결 소프트웨어 및 비즈니스 로직 부분을 저장합니다.
    • 데이터베이스 서버와 클라이언트 간에 부분적으로 처리된 데이터를 전송하는 통로와 같은 역할을 합니다.
  • 데이터베이스 서버는 중간 계층을 통해서만 접근 가능(클라이언트가 직접 서버 접속 불가)


Classification of DBMSs

Based on the data model used

  • 현재 사용 중: 관계형, 객체 지향, 객체 관계형
  • Recent Technologies
    • key-value storage 시스템,
    • NOSQL 시스템: 문서 기반, 열 기반, 그래프 기반, 키-값 기반, native XML DBMS

Other classifications

  • Single-user(일반적으로 개인용 컴퓨터에서 사용) vs multi-user(most DBMSs)
  • Centralized (단일 컴퓨터에서 하나의 데이터베이스 사용) vs distributed(여러 컴퓨터, 여러 DB)


반응형

'데이터베이스' 카테고리의 다른 글

More SQL  (0) 2024.04.22
Basic SQL  (0) 2024.04.16
The Relational Data Model  (0) 2024.04.15
Entity-Relationship Model  (0) 2024.04.09
Databases and Database Users  (0) 2024.04.07