2. Database System Concepts and Architecture

jisu_log·2024년 10월 12일

Database

목록 보기
2/5

- Data Models

* Data abstraction, 데이터 추상화

  • DBMS의 구현 세부사항을 숨기고(suppression), 중요 기능을 강조

* Data Model

  • DB의 structure를 설명하기 위한 개념들의 집합, 이러한 구조를 조작하는 operations(작업), DB가 따라야 할 특정 constraints(제약 조건)을 의미

  • Constructs(구조체)는 DB의 구조를 정의하는 데 사용됨

  • Constructs는 일반적으로 elements(및 해당 data types) 뿐만 아니라 요소 그룹(ex. entity, record, table)과 그러한 그룹간의 relationships이 포함됨

  • Constraints(제약조건)은 유효한 데이터에 대한 일부 제한을 지정하며, 이러한 제약 조건은 항상 강제되어야 함

  • Operation은 데이터 모델의 구조를 참조하여 DB retrievals 및 updates를 지정하는 데 사용됨

<Operation 종류>

  • basic model operations(insert, delete, update, retrieve)
  • user-defined operations

<Data Model의 종류>

1) Conceptual (high-level, semantic(의미적), entity-based, object-based) data models

  • 많은 사용자가 데이터를 인식하는(perceive) 방식과 가까운 개념 제공

2) Physical (low-level, internal(내부)) data models

  • 데이터가 컴퓨터에 어떻게 저장되는지에 대한 세부 사항을 설명하는 개념 제공
  • 일반적으로 최종 사용자(end users)가 아닌 컴퓨터 전문가를 위함

3) Implementation구현 (representational) data models

  • 위의 두 가지 모델 사이에 속하는 개념
  • 많은 상용 DBMS 구현에서 사용됨
    ex) relational data model, legacy network and hierarchical model

4) Self-Describing data models, 자기 기술적

  • 데이터 값과 함께 데이터의 설명을 결합
    ex) XML, key-value stores, NoSQL systems

- Schemas vs Instances vs state

* Database Schema

  • DB의 설명(description)
  • DB 구조, data types, constraints에 대한 설명을 포함

* Schema Diagram

  • 데이터베이스 스키마의 illustrative(시각적인) display

* Schema Construct, 스키마 구성요소

  • 스키마의 component(구성요소) 또는 스키마 내의 객체
    ex) STUDENT, COURSE

* Database State(or Database instance or occurrence or snapshot)

  • 특정 시점(particular moment in time)에 DB에 저장된 실제 데이터, DB 내용을 의미함
  • DB 내의 모든 데이터를 포함
    -> 'instance'라는 용어는 개별 DB 구성 요소에도 적용됨. 레코드 인스턴스, 테이블 인스턴스, 엔터티 인스턴스...

* Initial Database State

  • 시스템에 처음 로드되었을 때의 DB 상태를 의미

* Valid State

  • DB의 구조와 constraints을 만족하는 상태를 의미

<Schema와 State의 차이점>

  • DB Schema는 매우 드물게 변경됨
  • DB State는 DB가 업데이트될 때마다 변경됨

- Three-Schema Architecture

1) Internal schema (내부 스키마)

  • 내부 수준에서 물리적 저장 구조와 접근 경로(ex. index)를 설명
    -> 일반적으로 physical data model 사용

2) Conceptual schema (개념적 스키마)

  • 개념적 수준에서 사용자 커뮤니티를 위한 전체 DB의 구조와 제약 조건을 설명
    -> Logical data model 사용

3) External schema (외부 스키마)

  • 외부 수준에서 다양한 사용자 views(뷰)를 설명, 정의
    -> 각 외부 스키마는 DB의 일부분을 설명
    -> 보통 Logical data model 사용

*View : 하나 이상의 table로부터 선택된 데이터의 가상 table

  • 스키마 수준 간 매핑은 요청과 데이터를 변환하기 위해 필요함
    -> 프로그램은 외부 스키마를 참조하며, DBMS에 의해 실행을 위해 내부 스키마로 매핑됨
    -> 내부 DBMS 수준에서 추출된 데이터는 사용자의 외부 뷰에 맞게 재구성됨 (예: SQL 쿼리 결과를 웹 페이지에 표시하기 위해 포맷팅)

- Data Independence

* Logical Data Independence

  • conceptual schema를 변경하더라도 external schema와 관련된 애플리케이션 프로그램을 변경할 필요가 없는 능력

* Physical Data Independence

  • internal schema를 변경하더라도 conceptual schema를 변경할 필요가 없는 능력

external
|
conceptual (logical)
|
internal (physical)


- DBMS Languages

* Data Definition Language(DDL)

  • DBA와 데이터베이스 설계자가 데이터베이스의 개념적 스키마를 정의하는 데 사용됨
  • 많은 DBMS에서는 DDL을 사용하여 내부 스키마와 외부 스키마(뷰)도 정의함
  • 일부 DBMS에서는 저장 정의 언어(SDL)뷰 정의 언어(VDL)가 내부 스키마와 외부 스키마를 정의하기 위해 별도로 사용됨
    -> SDL은 일반적으로 DBA와 데이터베이스 설계자에게 제공되는 DBMS 명령을 통해 구현됨

* Data Manipulation(조작) Language(DML)

  • 데이터베이스의 검색(retrievals) 및 업데이트를 지정하는 데 사용됨
  • DML 명령(데이터 하위 언어)은 COBOL, C, C++, Java와 같은 범용 프로그래밍 언어(호스트 언어)에 내장될 수 있음
    -> 프로그래밍 언어에서 DBMS에 접근하기 위한 함수 라이브러리도 제공될 수 있음
  • 또는 독립 실행형 DML 명령(stand-alone DML commands)을 직접 적용할 수도 있으며, 이를 쿼리 언어라고 부름

<DML의 종류>

  • 고수준 or 비절차적 언어(= declarative languages, 선언형 언어)
    -> 집합 지향적이며 데이터를 어떻게 가져올지가 아닌 어떤 데이터를 가져올지를 지정함
    -> 관계형 언어인 SQL을 포함함

  • 저수준 or 절차적 언어
    -> 이 언어는 반드시 프로그래밍 언어에 내장되어 사용됨
    -> 데이터를 한 번에 하나의 레코드씩 검색함


- DBMS Programming Language Interfaces

  • 프로그래밍 언어에 DML을 내장하기 위한 프로그래머 인터페이스

* Embedded Approach

: ex) embedded SQL(C, C++ 등에서 사용), SQLJ(Java용)

* Procedure Call Approach

-> DB와 상호작용하기 위해 API를 사용하는 방식 (쉽게 연결 가능, 범용적 사용가능, 유연성 높음)
-> API를 통해 DB 연결을 관리, 쿼리를 실행함
-> 자주 사용하는 방식!
: ex) Java용 JDBC(Java Database Connectivity), 기타 프로그래밍 언어에서 사용하는 ODBC(Open Database Connectivity)와 같은 API(응용 프로그램 인터페이스)

* Database Programming Language Approach

: ex) ORACLE의 PL/SQL, SQL을 기반으로 한 프로그래밍 언어. 이 언어는 SQL과 그 데이터 유형을 필수 구성 요소로 통합함

* Scripting Langauges

: ex) PHP(클라이언트 측 스크립팅), Python(서버 측 스크립팅)은 데이터베이스 프로그램 작성에 사용됨


< User-Friendly DBMS Interfaces>

  • 메뉴 기반 (웹 기반):
    웹에서 탐색할 때 많이 사용됨

  • 폼 기반:
    양식을 작성하는 데 익숙한 비전문 사용자들을 위해 설계됨

  • 그래픽 기반:
    포인트 앤 클릭(Point and Click), 드래그 앤 드롭(Drag and Drop) 등 사용
    스키마 다이어그램에서 쿼리를 지정할 수 있음

  • 자연어:
    영어와 같은 자연어로 요청 작성

  • 위의 방식들의 조합:
    예를 들어, 웹 데이터베이스 인터페이스에서는 메뉴와 폼을 광범위하게 사용함

< Other DBMS Interfaces>

  • 자연어: 자유 텍스트를 쿼리로 사용

  • 음성: 음성으로 쿼리를 입력하고 응답을 출력

  • 웹 브라우저: 키워드 검색을 통한 쿼리

  • 매개변수 기반 인터페이스: 예를 들어, 은행 직원이 기능 키를 사용하는 경우

  • DBA를 위한 인터페이스:
    사용자 계정 생성
    권한 부여
    시스템 매개변수 설정
    스키마 또는 접근 경로 변경


< Typical DBMS Component Modules>


- Centralized and Client-Server DBMS Architectures

* Centralized DBMS, 중앙 집중식 DBMS

  • 모든 것을 하나의 시스템에 통합함 – DBMS 소프트웨어, 하드웨어, 애플리케이션 프로그램, 사용자 인터페이스 처리 소프트웨어를 포함

  • 사용자는 원격 터미널을 통해 연결할 수 있지만, 모든 처리는 중앙 사이트에서 수행됨

< A Physical Centralized Architecture>

- Basic 2-tier Client-Server Architectures

  • 특수화된 기능을 가진 서버들
    -> 프린트 서버
    -> 파일 서버
    -> DBMS 서버
    -> 웹 서버
    -> 이메일 서버

  • 클라이언트는 필요에 따라 이러한 특수화된 서버에 접근할 수 있음

< Logical 2-tier client server architecture>

* Client

  • 다양한 서버 자원에 접근하고 활용할 수 있도록 클라이언트 소프트웨어 모듈을 통해 적절한 인터페이스 제공
  • 클라이언트는 디스크가 없는 기기이거나, 클라이언트 소프트웨어만 설치된 디스크가 있는 PC 또는 워크스테이션일 수 있음
  • 클라이언트는 LAN(로컬 네트워크), 무선 네트워크 등 어떤 형태의 네트워크를 통해 서버에 연결됨

* DBMS Server

  • 클라이언트에 DB query 및 transaction service를 제공

  • 관계형 DBMS 서버는 종종 SQL 서버, 쿼리 서버, 또는 트랜잭션 서버라고 불림

  • 클라이언트에서 실행되는 애플리케이션은 API(응용 프로그램 인터페이스)를 사용해 표준 인터페이스를 통해 서버 데이터베이스에 접근함

  • ODBC: Open Database Connectivity 표준

  • JDBC: Java 프로그래밍을 위한 접근 인터페이스

< Three Tier Client-Server Architecture>

  • 웹 애플리케이션에서 흔히 사용됨

  • 중간 계층(intermediate layer)은 Application Server 또는 Web Server라고 불림
    -> 웹 연결 소프트웨어와 비즈니스 로직 부분을 저장하며, 데이터베이스 서버에서 데이터를 접근하기 위해 사용됨
    -> 데이터베이스 서버와 클라이언트 간에 부분적으로 처리된 데이터를 전달하는 중계 역할을 함

  • Three Tier 아키텍처는 보안을 강화할 수 있음:
    -> 데이터베이스 서버는 중간 계층을 통해서만 접근 가능
    -> 클라이언트는 데이터베이스 서버에 직접 접근할 수 없음
    -> 클라이언트는 사용자 인터페이스와 웹 브라우저를 포함함
    -> 클라이언트는 일반적으로 웹에 연결된 PC 또는 모바일 장치임

- Classification of DBMSs

  • 사용되는 데이터 모델에 따른 분류
    -> 레거시 시스템: 네트워크형, 계층형
    -> 현재 사용되는 모델: 관계형, 객체 지향형, 객체-관계형
    -> 최신 기술: key-value 저장 시스템
    -> NoSQL 시스템: 문서 기반, 열 기반, 그래프 기반, 키-값 기반, 네이티브 XML DBMS

  • 기타 분류
    -> 단일 사용자 (주로 개인용 컴퓨터에서 사용) vs. 다중 사용자 (대부분의 DBMS)
    -> 중앙 집중형 (하나의 컴퓨터와 데이터베이스 사용) vs. 분산형 (여러 컴퓨터와 여러 데이터베이스 사용)

0개의 댓글