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 ?
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
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(색인)