[DB] 0. Why Database?

SUbbb·2021년 9월 26일
0

DataBase

목록 보기
1/15
post-thumbnail

Why use a Database ?

Prevalence of Databases (DBs)

  • 성공적인 웹사이트에는 Powerful한 Database가 존재
  • ex. UPS/Fedex tracking, Amazon's/eBay's websites, Google's search engine, ...

Data Management Example

Scenarios

  • movie rental startup의 경우
  • 고객들이 영화 DVD를 대여하고 각 영화마다의 DVD를 관리해야 함

Needs

  • 어떤 DVD를 대여해갔는지 ?
  • 연체된 DVD가 있는지 ?

Solution: A "File-based" System

  • Edit rented.txt file
  • Advantages ?
    • 사용의 편리함, record의 insert와 delete가 간단함

과연 Panacea(만병통치약)인가 ?

Complication: Queries ? (1/9)

Does not address needs

  • Query1: What movies has "Gildong Hong" rented ?
    • Execute: Search for "Gildong Hong" or
      Search for ^\s+Customer:\s*Gildong\s+Hong\s*,\s+Rented:
  • Query2: Are any disks overdue ?
    • Execute: HOW ?

Requirements

  • Data와 Data Schema 사이의 정교한 query language가 필요

Complication: Integrity ? (2/9)

Lacks data integrity(무결성), consistency(일관성)

  • Clerk misspell value/field
    Customer: Young Suk, Rented: Eraserhead, Deu: Sep. 3, 2020
  • Inputs improper value, same value differently
    Customer: Young Suh, Rented: The Eraserhead, Due: Oct. 35, 2020
  • Forgets/adds/reorders field
    Terms: weekly special Due: Sep. 3, 2020, Rented: Eraserhead

Requirements

  • input으로 valid한 정보만을 수용하기 위해 enforce constraints(제약조건)

Complication: Update (3/9)

Add/delete/update fields in every record

  • Record Store location
    Customer: Young Suh, Rented: WWE, Due: Sep. 3, 2020, Store: Bukgu
  • Modify customer to first and last name
    First: Young, Last: Suh, Rented: WWE, Due: Sep. 3, 2020, Store: Bukgu

Add/delete/update new information collections

  • customer.txt file to record information
    Customer: Young Suh, Phone: 557-3344

Requirements

  • Data 구성 방식을 조작할 수 있는 능력

Complication: Multiple Users (4/9)

Two clerks edit rented.txt file at the same time

1) 철수 starts to edit rented.txt, reads it into memory.
2) 영희 starts to edit rented.txt.
3) 철수 adds a record.
4) 철수 saves rented.txt to disk.
5) 영희 saves rented.txt to disk.
=> 메모리 충돌로 인해 원하는 결과를 얻을 수 없음

  • 위와 같이 비행기를 예매하는 상황에서, 한 자리에 대해 여러 명의 사용자가 예매를 원하는 경우가 생기면 충돌이 발생하고, 이를 통제할 수 있어야 함

Requirements

  • Multiple readers & writers에 대한 support
  • Data의 update는 serial order로 이루어져야 함

Complication: Crashes (5/9)

Crash during update may lead to inconsistent state

  • 철수 makes 250 of 500 edits to change ‘Jane Doe’ to her preferred name ‘Jan Doe’.
  • 철수가 저장하기 전, Windows, Linux는 충돌

Requirements

  • all-or-none basis에 기초하여 update가 이루어져야 함(atomicity)
  • commit or rollback 구현

Complication: Data Physically Separate (6/9)

Need

  • want to infor Avengers' fans about the 'Avengers: End Game' movie.

Method

  • customer.txt 는 customers의 address 저장
  • mailing list 생성을 위해 rented.txt 와 MERGE 필요

Problems ?

  • 위와 같은 merge를 수행하지 못하는 text editors의 문제
  • 여러 명의 홍길동이 존재하는 경우 (중복 데이터)
  • 몇몇 customers의 정보가 없는 경우

Requirements

  • Unique하게 각 customer를 식별할 수 있어야 함
  • Customer에 대한 정보의 확보를 확실히 해야 함

Complication: Security (7/9)

Customer가 해당 영화의 rented 횟수를 알고 싶은 경우

  • rented.txt 에 대한 접근은 허용하지만, 그 중 customer field 는 허용하지 않아야 함
    • 이를 text editor에서 어떻게 처리할 지 ?

19세 미만의 clerk 경우, R-rated rentals에 대한 기록을 볼 수 없음

  • 그렇다면 rental list 를 2개 둬야 하는지 ?

Requirements

  • 어떤 information에 대해 누가 접근할 수 있는지 통제할 수 있는 능력

Complication: Efficiency (8/9)

customer list는 계속해서 증가

  • rented.txt file의 크기가 증가
  • 이에 따라 edit와 query의 속도가 감소

Requirements

  • query 성능 향상을 위한 새로운 자료구조
  • 속도 향상을 위해 자동으로 query를 수정하는 system
  • 거대한 dataset을 통제하는 system의 능력

Complication: New Needs (9/9)

movie combination의 확률 계산

어떤 영화에 대해 더 많은 수량이 필요한가 ?

  • 상점별 영화 대여 기록 시각화
    Requirements
  • 요약 데이터 수집 및 분석, 트렌드 조사 및 예측
  • 정교한 프로그램을 통한 Data 접근 지원

Limitations of File-based Systems

Program의 필수 구현 요소

  • Security, Concurrency control(동시성 제어), Support for schema reorganization(스키마 재구성), Data structures for performance improvement(성능 향상을 위한 데이터 구조) ex. indexes(색인)
profile
배우고 정리하고 공유하기

0개의 댓글