Chapter 0. 수업에서 배울 내용들
Chapter 0. 수업에서 배울 내용들

Chapter 0. 수업에서 배울 내용들

Description
Date
Sep 5, 2023
URL
상태
Done
Tags
Database
Oracle SQL
Back-end
 
 

데이터베이스 사용하는 이유

데이터베이스(DB)의 유법성

  • 모든 성공적인 웹사이트 뒤에는 강력한 데이터베이스가 있음
  • 예시
    • UPS / FedEx 추적 시스템
    • 아마존/이베이 웹사이트
    • 월마트의 재고 관리 시스템
    • 델의 주문 시스템
    • 구글 검색 엔진
    • ...
 

데이터 관리 예시

  • 시나리오
    • 당신은 영화 대여 스타트업을 운영하고 있음 (또는 넷플릭스 소유자?!)
    • 고객들은 영화의 DVD 복사본을 대여함
    • 각 영화의 여러 복사본이 있음
  • 필요사항
    • 어떤 블루레이 디스크를 고객이 대여했는지?
    • 어떤 디스크가 연체되었는지?
    • 어떤 디스크가 사용 가능해질 예정인지?
    • ...
 

해결책: “파일 기반” 시스템

  • rented.txt 파일을 생성(또는 편집)
    • 고객: Young Suh, 대여한 영화: 어벤져스, 반납일: 2022년 9월 3일
  • 장점?
    • 텍스트 편집기를 사용하기 쉬움
    • 레코드를 삽입하는 것이 간단함
    • 레코드를 삭제하는 것이 간단함
 

부작용: 질의 (1/9)

  • 필요사항을 해결하지 않음
    • 질의 1: ‘홍길동’이 어떤 영화를 대여했는지?
    • 질의 2: 어떤 디스크가 연체되었는지?
  • 필요사항
    • 강력한 쿼리 언어
    • 데이터 조직과 데이터의 명확한 분리
    • ...
💡
DBMS 개념
  • 스키마
  • 데이터 조작 언어
  • 구조적 질의 언어
 

부작용: 무결성 (2/9)

  • 데이터 무결성과 일관성이 부족함
    • 잘못된 값/필드 입력
    • 잘못된 값, 같은 값에 대한 다른 입력
    • 필드를 잊거나 추가/순서 변경
  • 요구사항
    • 유효한 정보만 입력하도록 제약조건 적용 필요
💡
DBMS 개념
  • 무결성 제약조건
  • 타입
 
 

부작용: 갱신 (3/9)

  • 모든 레코드에 필드를 추가 / 삭제 / 갱신
    • 레코드 저장 위치 기록
    • 고객의 이름을 성과 이름으로 수정
  • 새로운 정보 컬렉션 추가/삭제/갱신
  • 요구사항
    • 데이터 조직화 방식 조작 능력 필요
💡
DBMS 개념
  • 데이터 정의 언어
 
 

부작용: 다중 사용자 (4/9)

  • 두 사람이 동시에 rented.txt 파일을 편집
      1. 철수가 rented.txt를 편집하기 시작하여 메모리에 읽어옴
      1. 영희가 rented.txt를 편집하기 시작함
      1. 철수가 레코드를 추가함
      1. 철수가 rented.txt를 디스크에 저장함
      1. 영희가 rented.txt를 디스크에 저장함
    • 문제점은?
  • 요구사항
    • 여러 읽기 및 쓰기 작업을 지원해야 함
    • 데이터 갱신은 연속된 순서로 이루어져야 함
💡
DBMS 개념
  • 직렬화
  • 동시성 제어
 

부작용: 충돌 (5/9)

  • 업데이트 중 크래시는 데이터의 부적절한 상태로 이어질 수 있음
  • 요구사항
    • 모든 것 또는 없음의 기준으로 갱신해야 함 (원자성)
    • 필요한 경우 커밋 또는 롤백으로 구현
💡
DBMS 개념
  • 트랜잭션
  • 커밋
  • 롤백
  • 복구
 

부작용: 물리적으로 떨어진 데이터 (6/9)

  • '어벤져스: 엔드게임' 영화에 대한 정보를 팬들에게 전달하려는 필요성
  • 문제점
    • 텍스트 편집기로는 이러한 병합을 할 수 없음(프로그램을 작성해야 함)
    • 여러 명의 홍길동이 있다면?
    • 일부 고객들에 대한 정보가 없다면?
  • 요구사항
    • 각 고객을 고유하게 식별
    • 영화를 대여하는 고객에 대한 정보 확보
💡
DBMS 개념
  • 조인
  • 외래키
  • 참조 무결성
 

부작용: 보안 (7/9)

  • 고객들은 영화가 몇 번 대여되었는지 알고 싶어함
    • rented.txt에 대한 접근 권한을 제공하지만, 고객 필드는 제외하려면 편집기에서 어떻게 해야 할지?
  • 19세 미만의 직원들은 미성년자 관람불가 영화의 대여 내역을 볼 수 없어야 함
    • 대여 목록을 두 개로 유지해야 하는지?
  • 요구 사항
    • 누가 어떤 정보에 접근할 수 있는지 제어할 수 있는 능력
💡
DBMS 개념
  • 보안
 

부작용: 효율성 (8/9)

  • 고객 목록이 엄청나게 증가함
    • rented.txt 파일이 매우 크게 늘어남 (테라바이트, 페타바이트 혹은 그 이상의 데이터)
    • 편집하기 느려짐
    • 고객 정보를 조회하는 속도가 느려짐
  • 요구 사항
    • 쿼리 성능을 향상시키기 위한 새로운 데이터 구조가 필요함
    • 시스템은 자동으로 쿼리를 수정하여 속도를 향상시킴
    • 거대한 데이터셋을 처리하기 위한 시스템의 확장 능력이 필요함
💡
DBMS 개념
  • 색인
  • 쿼리 최적화
  • 데이터베이스 튜닝
 

부작용: 새로운 요구사항 (9/9)

  • 어떤 영화 쌍이 함께 빌려지는 경우가 많은지?
    • 영화 조합의 확률을 계산함
  • 어디에서든 '어벤져스' 영화의 복사본이 더 필요한지?
    • 매장 지역별로 '어벤져스'의 대여 기록을 시각화함
  • 요구 사항
    • 요약 데이터를 수집하고 분석함
    • 컴퓨터를 사용해 흥미로운 추세를 찾아내고 미래의 추세를 예측함
    • 세련된 프로그램으로 데이터에 접근하는 것을 지원함
💡
DBMS 개념
  • 데이터 마이닝
  • 빅 데이터 분석
  • 데이터 웨어하우스
  • 데이터베이스 API
 
파일 기반 시스템의 한계
프로그램은 다음을 구현해야 함
  • 보안
  • 동시성 제어
  • 스키마 재구성 지원
  • 성능 향상을 위한 데이터 구조
    • 예) 인덱스
  • 관찰
    • 많은 애플리케이션이 이러한 서비스와 높은 성능을 필요로 함
  • 솔루션
    • 해당 서비스를 제공하는 소프트웨어 시스템을 구축하고 판매하는 것은 무엇인지?
 

수업 개요

관계형 모델

  • 정의
  • 무결성 제약조건
  • ER 스키마를 테이블(관계)로 매핑하기
 

관계형 쿼리 언어

  • 관계형 대수
  • 관계형 계산: 도메인 및 튜플
 

SQL DDL 및 DML: 실습을 통한 Oracle 사용

  • 스키마 정의
  • 쿼리
  • 수정
  • 뷰 (읽기 전용)
  • 임베디드 SQL / (Oracle) PLSQL
  • 트랜잭션 관리
 

웹/데이터베이스 연결: 프로젝트를 통해

  • HTTP
  • 정적 데이터베이스 접근
  • 동적 데이터베이스 접근
 

데이터베이스 응용 프로그램 설계 및 구현

  • 직접적인 데이터베이스 인터페이스 (SQL*PLUS/SQLDeveloper 또는 그 외를 통해)
  • 간접 인터페이스: JDBC/cx_Oracle (Oracle 연결을 위한 파이썬 확장 모듈)
  • 웹 인터페이스: JSP, Node.js, ...
 

논리 데이터베이스 설계

  • 좋은 설계의 특성
  • 함수 종속성 및 키
  • 정규 형태: 1NF, 2NF, 3NF, BCNF
  • 분해 알고리즘
 

물리 데이터베이스 설계

  • 관계형 구조: 힙, 정렬, 해시, 트리 구조, ...
  • 색인: 기본, 클러스터링 및 보조, B+-트리
 

최신 주제 (시간이 허락되면)

  • 데이터 모델: 비구조화된 데이터, 키-값 쌍, ...
  • 차세대 DB 기술: Hadoop, NoSQL, 칼럼 지향 ...
  • NL2SQL 엔진 ...