데이터베이스 시스템 구조

Hyungseop Lee·2023년 9월 16일
0

[INU, 3-2] Database

목록 보기
2/7
post-thumbnail

Data Model

  • model : 실제에서 관심있는 것만 추상화한 것

    • Map is a model of world
    • UML model : class diagram
  • data model : data들의 관계와 구조를 DB에서 표현하기 위해서 사용되는 개념과 방법의 집합

    • hierarchical(계층적) data model (많이 씀)
    • relational(관계) data model (가장 많이 씀)
    • object(객체) data model
    • network data model
    • ...
  • data modeling : 현실 세계에서 존재하는 정보를 computer의 DB로 옮기는 과정

계층적 data model

  • data를 tree 형태의 계층으로 표현
  • 대표적인 예는 XML, JSON을 이용해서 data를 조직화

관계 data model

  • 데이터를 관계(table)들의 집합으로 표현
  • 우리가 사용하는 대부분의 관계형 DB는 관계 data model을 사용함.

data model의 분류

개념적(고수준) data model

  • Computer와는 상관없이 data들의 관계를 개념적으로 표현. (스케치)
  • HW에 독립적, 일반인의 이해가 쉬움
  • ex) Entity Relationship Diagram(ERD) : 개체, 속성 관계 ➡️ model 자체의 구현은 어려움

표현(구현) data model

  • 실제로 computer 상에서 표현하기 위해 만드는 model
  • 고수준 model과 저수준 model 사이에 존재
  • ex) relational model, XML model

물리적(저수준) data model

  • data가 computer에 어떻게 저장되는지의 세부 사항을 명시하는 개념을 제공 (memory의 주소 또는 disk의 sector, block, offset 등)
  • HW에 의존적, 일반인의 이해가 어려움
  • record 형식, 순서, 접근경로 정의(인덱스, 물리적 배치 등)

Schema, Instance, Snapshot

  • DB Schema :
    DB 구조에 대해서 기술하는 설계도.
    DB 설계 과정에서 명시하며 자주 변경되지 않음

  • Schema Diagram
    : DB schema를 도식화한 것

  • Schema evolution :
    새로운 field를 추가하거나, 필요 없는 field를 삭제하는 과정.
    대부분 DBMS는 system 운영 중에 schema evolution이 허용되도록 지원함.
    ex) 시간이 지남에 따라 휴대폰 보급이 많이 되었다. 그래서 "휴대폰 번호" field를 추가해야 하는 상황.

  • Instance = occurrence : DB에 있는 data들

  • Snapshot :
    schema는 계속해서 유지되지만, instance는 계속해서 바뀜.
    어떤 특정 시점에 DB에 들어 있는 instance를 snapshot이라고 함.

three-schema architecture

  • DB의 주요 특징 3가지
    1. program과 data 분리
    2. 다중 view 지원
    3. catalog에 meta data 저장/관리
  • 3가지 주요 특징을 잘 반영하기 위한 architecture?
    ➡️ three-schema architecture = 3 level database architecture
    • 외부 단계 schema : 사용자 관점
      똑같은 DB schema에서 user별로(위 예제에서는 "고객 분석팀"과 "상품 배송팀")에게
      다른 Table이 보여지도록 하는 것.
    • 개념 단계 schema : 조직 전체 관점
    • 내부 단계 schema :
      "번호"를 갖고 빠르게 접근하고 싶으면, "번호"에 대한 index를 만들어 놓는다.
      index로 B - tree(Balanced Tree) 또는 B+ tree 이용하여 빠르게 Disk로 찾아감.
      ➡️ DBMS가 내부적으로 하는 일이다.
      우리는 어떤 field("번호"? "이름"?)를 index로 쓸 것인지 정해줘야 한다.

목적, Data independence

  • 3단계 스키마의 목적은?
    외부, 개념, 내부 단계 schema로 module화 하여
    하위 단계의 내용을 추상화하여 상위 단계에서 그 세부사항을 감춤으로써,
    한단계 내의 변경이 다른 단계에 영향을 주지 않도록 하는 것.
    • 만약 개념 schema에 "email" record를 새로 추가한다면 외부 schema에서는 물론 새로운 record가 추가되었기 때문에 수정은 필요하겠지만 여전히 똑같은 view를 보여주며 동작에 는 아무런 영향이 없다.
      ➡️ 이렇게 개념 schema가 수정이 되더라고 외부 view에는 영향이 없다는 특성을
      논리적 데이터 독립성 (logical data independence)라고 한다.
    • 또한 예를 들어,
      내부 단계 schema에서 "번호"를 index로 사용했었는데 공간을 많이 차지해서 지워버렸다.
      "번호"를 index에서 지웠다고 해서 개념 단계 schema가 바껴야 하는 것은 아니다.
      사용자 입장에서는 "번호"를 index로 사용했었을 때와 검색 속도 차이 등이 있을 수는 있지만,
      system 동작에는 아무런 영향이 없다.
      ➡️ 이렇게 실제로 disk상의 data의 location이 변하고, indexing 방법이 달라지고 하는 내부 단계 schema의 변화가 개념 단계 schema의 변화에 독립적인 특성을
      물리적 데이터 독립성 (physical data independence)라고 한다.

DBMS Language

  • DDL(Data Definition Language) :
    스키마(내부, 개념, 외부 스키마)를 정의할 때 쓰는 언어
  • DML(Data Manipulation Language) : data를 select, insert, delete, update 하기 위한 조작 언어
  • SQL 언어에 DDL, DML 등이 포함되어 있다.
    SQL은 어떻게 동작될까?
    1. Java(Host 언어)에서 SQL AIP를 제공하여 원하는 DBMS와 connection.
      • Host 언어 : DML 명령어는 범용 프로그래밍 언어에 삽입되어 사용될 수 있으며, 이 때 범용 프로그래밍 언어를 host 언어라고 한다.
    2. SQL code를 DBMS에 전달.

Interface

1. 중앙집중식 DBMS architecture

  • 중앙집중식 DBMS architecture :
    옛날 방식임.
    중앙에 있는 "main frame"이라는 고성능 computer에 DBMS SW가 들어감.
    main frame에 terminal(monitor, keyboard만 있는 processing기능이 없는 computer)들이 전용선으로 연결되어 있음.

2. Client/Server architecture

  • Client/Server architecture :
    중앙집중식 DBMS architecture를 사용하던 시절에는 computer의 가격이 비쌌고,
    시간이 지나면서 개개인의 computer들의 성능이 좋아져서
    main frame 대신에 Server라는 computer,
    Terminal 대신에 PC, 노트북, 스마트폰(Clients)
    전용선 대신에 인터넷(TCP/IP)

    (ODBC : C/C++를 쓰기 위한 API)
    (JDBC : Java DB Connectivity, Java에서 DB에 접속할 수 있도록 하는 API)

3. 웹 응용 위한 3-층 Client/Server architecture

  • 3계층 Client/Server :
    요즘 많이 사용하는 architecture.
    중간에 web server, application server가 있고,
    그 server를 통해서 DB에 접속하는 형태.
    web server, app server에 돌아가는 program을 짜는 것,
    즉 web/application를 만드는 것을 ASP.NET, JSP, PHP, Python Flask, Django 등을 이용한다.
    예를 들어, Django로 web application을 짰으면 web server나 app server에서 도는 것이다.
    우리가 작성한 web application이 DB의 data를 read/write하는 것이다.
    (쿠팡 웹사이트에서 click하면 쿠팡의 web application이 돌면서 DB의 값을 사용하는 것이다.)

4. 내장형(embedded) DB

  • 내장형(embedded) DB :
    지금까지의 DB는 Server(Computer)라는 형태로 존재했는데,
    DB가 작거나 사용자가 거의 없는 경우, database가 응용프로그램에 library 형태로 내장되어 작동시키는 DB.
    (SQL은 표준이기 때문에 여기서도 SQL을 사용한다.)
profile
Efficient Deep Learning Model

0개의 댓글