데이터베이스(ORACLE)[1]

1. Prevalence of Databases (DBs)


  • 성공적인 웹사이트 뒤에는 강력한 데이터베이스가 있다
    • 아마존/ 이베이 웹사이트
    • 월마트 창고 시스템
    • 델 주문 시스템
    • 구글 검색 엔진

2. Data Management Example


  • 시나리오
    • 영화 대여 스타트업을 운영한다고 가정하자
    • 고객이 영화 DVD를 대여한다고 해보자
    • 영화당 여러개의 DVD 복제품이 존재한다
  • 필요한 것
    • 어느 DVD를 고객이 빌렸는지?
    • 어느 DVD들이 연체되었는지?
    • 언제 DVD들을 빌릴 수 있는지?

3. Solution: A "Flie-based" System


  • rented.txt 파일을 만들어 편집하기
    • Customer: Young Suh, Rented: WWE, Due: Sep. 3, 2020
  • 이점
    • 텍스트 에디터는 쓰기 쉽다
    • record를 삽입하기 쉽다
    • record를 지우기 쉽다
  • 단점
    • 접근하거나 기간계산하려면 코딩해야함(시스템 프로그래밍)

4. Complication: Queries(질의)?-(1 / 9)


  • address가 필요없다
    • Query1 : 홍 길동이 무슨 영화를 빌렸는가?
      • Execute (not quite right): Search for ‘Gildong Hong’.
      • Execute: Search for
        ^\s+Customer:\sGildong\s+Hong\s,\s+Rented:
    • Query2 : 연체된 디스크들이 있는가?
      • Excute : 어떻게 이런 쿼리를 만들 것인가?
  • 필요한 것들
    • Robust, sophisticated query language (견고하고 정교한 질의 언어가 필요하다)
    • 데이터 구성(스키마)와 데이터의 명확한 분리가 필요하다

5. Complication: Integrity(무결성)-(2 / 9)


  • 데이터의 무결성(integrity)일관성(consistency) 부족(아래 상황에서 발생한다)
    • 직원이 값/필드에 오타를 냈을 때
      • Customer: Young Suk, Rented: Eraserhead, Deu: Sep. 3, 2020
    • 잘못된 값을 입력하거나, 같은 값을 다르게 입력했을 때
      • Customer: Young Suh, Rented: The Eraserhead, Due: Oct. 35, 2020
    • 필드를 잊어버리거나, 추가하거나, 재배치할 때
      • Terms: weekly special Due: Sep. 3, 2020, Rented: Eraserhead
  • 필요한 것들
    • 유효한 정보만 입력할 수 있도록 제약 조건(constraints)을 적용하도록 강제해야한다.

6. Complication: Update(갱신)-(3 / 9)


  • 모든 레코드의 필드에 대해 Add(추가)/Delete(삭제)/Update(갱신)
    • 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(갱신)
    • 새로운 정보를 기록하기 위한 customer.txt file
      • Customer: Young Suh, Phone: 557-3344
  • 필요한 것들
    • Ability to manipulate the way data is organized.
    • 데이터가 구성되는 방식을 조작하는 능력
      - 필드 추가/갱신 때 자동으로 반영해줌

7. Complication: Multiple Users(다중 사용자)-(4 / 9)


  • 두명의 직원이 동시에 rented.txt를 수정한다면?
    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.
    • 해당 시나리오에서 어떤 문제가 발생하는가?
      • 철수가 남긴 기록이 사라지게 된다
  • 필요한 것들
    • 다중 reader와 writer를 지원해야한다
    • 데이터 업데이트는 직렬 순서(serial order)로 발생해야 합니다.
    • transection을 허용/관리 해야한다
    • 트랜잭션(Transaction): 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산

8. Complication: Crashes (크래시)-(5 / 9)


  • 업데이트 중 발생하는 충돌(crash)은 일관성 없는 상태(inconsistent state)로 이어질 수 있다
    • 철수는 500개 중 250개를 수정하여 'Jane Doe'를 자신이 선호하는 이름인 'Jan Doe'로 변경했다
    • 철수가 저장하기 전에, window/linux는 충돌이 발생한다 ⇒ 복구 쉽지 않다
  • 필요한 것들
    • 전부 또는 all-or-none(A.k.a, 원자성;atomicity) 기준으로 업데이트해야 한다
    • 필요한 경우 커밋(commit) 또는 롤백(rollback)으로 구현해야 한다
      • rollback: 기존 내 작업을 cancle해달라 ⇒ crash 이전으로 돌릴 수 있다

9. Complication: Data Physically Separate

(물리적으로떨어져 있는데이터) (6 / 9)


  • Need : 어벤져스 팬들에게 '어벤져스: 엔드게임' 영화에 대해 알리고 싶습니다.
  • 방법(method):
    • customer.txt는 고객의 주소를 포함합니다.
    • 메일링 리스트를 생성하려면 rented.txt와 병합해야 합니다.
  • 문제점(problems):
    • 이러한 병합이 불가능한 텍스트 편집기(프로그램을 작성해야 함)
    • 홍길동이 여러 명이라면?
    • 일부 고객에 대한 정보가 없다면!?
  • 필요한 것들(Requirements)
    • 각 고객을 고유하게 식별해야 한다
    • 영화를 대여한 고객에 대한 정보가 있는지 확인을 해야한다

10. Complication: Security (보안) (7 / 9)


  • 고객은 영화를 대여한 횟수를 알고 싶어 합니다.
    • rented.txt에 대한 액세스를 제공하지만 고객 필드에 대한 액세스는 제공하지 않고 싶을 때, 편집기에서 어떻게 할까?
  • 만 19세 미만의 점원은 R등급 렌탈(미성년자 서울불가 영화 렌탈) 이력을 볼 수 없습니다.
    • 두 개의 retal list를 보관해야할까?
  • 필요한 것
    • 누가 어떤 정보에 액세스할 수 있는지 제어하는 기능.
    • view ⇒ 데이터를 볼 수 있는 권한 부여(분리)

11. Complication: Efficiency (효율성) (8 / 9)


  • 고객 목록이 엄청나게 늘어났다면?
    • rented.txt 파일의 크기가 커지게 된다(테라바이트, 페타바이트 또는 그 이상의 데이터).
    • 편집 속도가 느리다
    • 고객 정보를 쿼리하는 속도가 느리다
  • 필요한 것
    • 쿼리 성능을 향상시키기 위한 새로운 자료 구조
    • 시스템은 속도를 향상시키기 위해 쿼리를 자동으로 수정해야한다
    • 방대한 데이터 세트(datasets)를 처리할 수 있도록 시스템을 확장할 수 있는 능력

12. Complication: New Needs (9 / 9)


  • 자주 함께 대여되는 영화는 무엇입니까?
    • 영화 조합(movie combinations)의 확률을 계산해야 한다
  • 어벤져스 영화의 복사본이 더 필요합니까?
    • 매장 지역별 어벤져스 대여 내역을 시각화해야 한다. ⇒ 새로운 패턴을 찾고 싶을 때
  • 필요한 것
    • 요약 데이터(요약 데이터)를 수집하고 분석합니다.
    • 컴퓨터를 사용하여 흥미로운 추세를 찾고 미래 추세를 예측해야 한다.
      (흥미로운 트렌드를 캐거나 예측) → 통계적인 내장함수 지원
    • 정교한 프로그램을 통해 데이터에 접근할 수 있도록 지원해야 한다

13. Limitations of File-based Systems


  • Program must implement
    • Security (보안)
    • Concurrency control (동시성 제어)
    • Support for schema reorganization (스키마 재구성)
    • Data structures for performance improvement (성능 향상을 위한데이터 구조): e.g. indexes (색인)
  • 관찰(Observation)
    • 많은 응용 프로그램에는 고성능의 이러한 서비스가 필요하다
  • 해결책
    • 서비스를 제공하기 위해 소프트웨어 시스템을 구축하고 판매하는 것, 그것은 무엇인가?! ⇒ 데이터베이스

좋은 웹페이지 즐겨찾기