데이터베이스 사용하는 이유데이터베이스(DB)의 유법성데이터 관리 예시해결책: “파일 기반” 시스템부작용: 질의 (1/9)부작용: 무결성 (2/9)부작용: 갱신 (3/9)부작용: 다중 사용자 (4/9)부작용: 충돌 (5/9)부작용: 물리적으로 떨어진 데이터 (6/9)부작용: 보안 (7/9)부작용: 효율성 (8/9)부작용: 새로운 요구사항 (9/9)수업 개요관계형 모델관계형 쿼리 언어SQL DDL 및 DML: 실습을 통한 Oracle 사용웹/데이터베이스 연결: 프로젝트를 통해데이터베이스 응용 프로그램 설계 및 구현논리 데이터베이스 설계물리 데이터베이스 설계최신 주제 (시간이 허락되면)
데이터베이스 사용하는 이유
데이터베이스(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 파일을 편집
- 철수가 rented.txt를 편집하기 시작하여 메모리에 읽어옴
- 영희가 rented.txt를 편집하기 시작함
- 철수가 레코드를 추가함
- 철수가 rented.txt를 디스크에 저장함
- 영희가 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 엔진 ...
