데이터베이스 시스템 개념

HyungSeop Lee·2023년 9월 16일
0

[INU, 3-2] Database

목록 보기
1/7
post-thumbnail

DB 개요

Data

  • 컴퓨터에 저장된 의미 있는 정보들
  • 행정 데이터, 의료 데이터, 성적 데이터, 실험 데이터, ...

컴퓨터에서 데이터는 어떻게 존재하나?

  • 메모리에 저장되는 형태
    • 변수 : numbers, strings
    • 구조체 : lists, dictionaries, objects, ...
  • 지속적인 형태
    • Disk : text, XML, JSON, ...
    • Database
      • key-value store
      • 객체(Ojbect) DB
      • 관계형(Relational) DB

text file에 data를 저장할 때의 문제점?

1. 검색이 어렵다
2. 동시접근이 어렵다

➡️ 그래서 DB를 사용한다


DB

  • DB(Database) : 검색과 동시접근이 효과적이도록 조직화된 데이터들의 집합
    • 데이터를 조직화하는 방법에 따라 여러 종류로 분류된다
      (Key-value DB, 관계형 DB, 객체 DB)

DB 예제

  • Amazon의 2000만개 이상의 품목을 2TB DB에 저장한다고 가정.
    2 TB를 하나의 Computer에 모두 저장하면 안되는 이유?
    ➡️ 동시접속자가 많기 때문에 computer가 down될 수 있음.
    그래서 2TB를 복사하여 여러 Computer에 저장한다.
    이렇게 여러 Computer에 복사하여 부하가 적은 곳으로 할당 한다.(Load Balancing)
    그런데 이렇게 복사하면 문제가 없을까?
    ➡️ 동기화 문제

    ➡️ 그래서 read only의 특성을 가진 상품 정보와 수시로 update가 필요한 결제, 등의 여러 DB들을 따로 만들어서 관리한다.

DB Management System

  • DBMS(Database Management System) : DB의 생성, 검색, 관리를 도와주는 SW
    • 대표적 DBMS : Oracle DBMS, MySQL, SQLite, Mongo DB, ...
  • OS와 하는 일이 거의 비슷하다.
    OS는 사용자에게 HW 자원들을 추상화시켜 사용하기 편하도록 한다.
    DBMS는 detail한 HW(Low level)몰라도 쓸 수 있도록 Table 형태로 추상화시켜 보여준다.
  • SQL(표준 발음 : 시퀄)을 이용하여 DBMS를 통해 DB에 query(질의), update(갱신) 등의 연산을 수행한다.

DB System

  • DB 자체와 이를 관리하는 SW(DBMS + 응용 프로그램)을 모두 총칭하는 용어


DB의 특징

1. 자기 기술성 (self-describing)

  • 자기 기술성 : 자기가 자기 자신에 대해서 어떤 data를 어떤 형태로 갖고 있는지 말해줄 수 있다.
  • DB catalog에는 meta-data가 저장되어 있다.
    meta-data란?
    ➡️ Table 구조, Table이 저장된 위치, 인덱스 형성 체계 등 DB 자체에 대한 내부적 정보 관리
    ➡️ 실제 data들이 어떤 형태로 있는지 한 차원 위에서 내려다보는 것
    위 그림에서 catalog라고 가리키고 있는 DB는 catalog DB이다.
    catalog DB : meta-data를 담고 있는 DB이다.

2. Program-Data 독립성

  • 위 사진에서 볼 수 있듯이,
    DBMS가 User Program과 DB 사이에서 DB를 추상화시켜준다 = program과 data가 독립되어 있다

3. Data에 대한 다양한 View 제공 & 추상화

  • Data 추상화 : 2.(Program-Data 독립성)과 같은 내용으로,
    Database에 대한 복잡한 구조를 몰라도 Table 형태로 추상화해준다.

  • View : 가상의 Table.
    Table을 모든 사용자에게 똑같이 보여줄 필요 없으니, Database에 대한 정보를 조합하여 가상의 Table을 만들어서 보여줄 수 있다.

4. Data 공유와 다수 사용자 트랜잭션 처리

  • 여러 사용자가 동시에 동일한 DB를 공유하도록 지원
  • 동시에 사용하더라고 일관성을 보장하기 위한 동시성 제어 기능 제공
  • 트랜잭션 : DB 작업을 수행하는 단위 process(예 : 좌석예약)
    ➡️ 여러명이 한꺼번에 접속했을 때, 순차적으로 처리하지 않은 듯 보이면서도 순차적으로 처리한 것과 같은 효과를 줄 수 있도록 하는 것
    ex) 비행기 좌석 예약시, 한 좌석은 한 사람에게만 배정되어야 함.
    ➡️ How?
    여러 명이 완전히 똑같은 data에 대해 동시에 update할 것 같으면
    즉, 충돌이 될 것 같으면 미리 감지하여 순차적으로 처리시킨다.
    만약 충돌이 안될 것 같으면 동시에 처리시킨다.

DB 사용자의 분류

1. DB 설계자

  • 요구 분석 과정을 거쳐서 관리할 데이터를 선정하고, 저장할 구조를 결정.
  • 실세계 현상을 모델링하는 기술이 요구됨 (ERD, FD, 관계형 데이터베이스 이해)

2. DB 응용 개발자

  • 사용자를 위하여 잘 정의된 기능의 응용을 분석/설계하고 구현하는 사람
  • SQL과 programming 능력이 중요.
    SQL을 통해 DBMS와 소통하여 app에 있는 data들을 update

3. DB 관리자

  • DBA(DB Administrator) :
    DB system 관리 총괄.
    DB 성능 모니터링 ➡️ 튜닝, 사용자 권리(접근 권한)
    ➡️ system에 대한 전체적 이해 필요(지식, 경험 중요)
    python, go, bash(shell script : 자동화 능력) 등 script 개발 경험

4. DB 사용자

  • DB에 대하여 query, update, 보고서를 작성하는 사람

DBMS의 장점

  • 데이터 중복성 제어 및 중복 최소화

  • 보안 기능 :
    권한 설정 가능 (DBA의 역할)

  • 지속성 기억 공간 제공

  • 효율적 질의처리를 위한 저장 구조 제공

  • 백업과 회복 기능 제공
    : 정전되었을 때, DBMS는 1) 완전히 처음으로, 2) 중단지점에서 자동으로 완료해줌 중 하나

  • 다수의 사용자 인터페이스 제공

  • 데이터 간 복잡한 체계적 표현

  • DB의 무결성(integrity) 제약 조건의 시행 :
    각 속성 값이 가져야 하는 제약 조건 (ex. 나이는 0~120세)
    테이블간의 가져야 하는 제약 조건

  • 동시성 제어 기능 제공(트랜잭션 개념)

  • 데이터 독립성 제공 (데이터와 프로그램의 분리)


DB를 사용하지 않아도 좋은 경우

  • DBMS를 사용하면 비용이 높아짐
    회사의 support없이 스스로 문제를 해결해야 하기 때문에 보통 오픈소스 DBMS는 사용하지 않는다.

  • 언제 DBMS가 필요치 않은가?

    • DB와 응용이 단순하고 잘 정의되어 있으며, 변경될 가능성이 적을 경우.
    • DBMS overhead로 인해 실시간 data 처리 요구사항을 만족시키기 힘든 경우.
      (최근 이러한 경우 실시간 DBMS 활용 가능)
profile
efficient computer vision

0개의 댓글