[데이터 베이스] ch1.Databases and Database Users
INTRODUCTION
Basic Definitions- 기본 정의
"데이터"란 무엇인가?
->기록될 수 있고 암묵적인 의미를 가질 수 있는 알려진 사실.
"데이터베이스"란 무엇입니까?
->관련 데이터의 (n)(조직화) 모음입니다.
데이터베이스 관리 시스템(DBMS)?
->사용자가 DB를 작성하고 유지관리할 수 있도록 하는 "소프트웨어 패키지/시스템"
데이터베이스 시스템?
->DB + DBMS (+ DB 어플리케이션)
데이터베이스 및 데이터베이스 응용프로그램 유형
기존 및 최신 애플리케이션
최근 개발: NoSQL DB (1/2)
SQL 없음
는 다양한 특징과 기능을 가진 광범위한 데이터 관리 기술 그룹에 사용되는 용어이다
SQL DB는 Concrete한 개념이지만, NoSQL은 그렇지 않다.
특징들
1. 고성능 쓰기 및 대규모 확장성
2. Data를 쓰는 데 있어 정의된 Schema를 요구하지 않는다.
3. 기본적으로 최종적으로 일치합니다.
4. 현대 프로그래밍 언어의 넓은 영역 지원(python, Scala, Go 등)
5. 주로 분산 컴퓨팅에 대해 fault tolerance 지원
최근 개발: NoSQL DB (2/2)
ex) MongoDB -> 문서 데이터 모델 사용
데이터베이스 시스템 환경
"간편화"된 데이터베이스 시스템 환경
1) Applications와 DB는 아래의 두 요소를 생성함으로써 서로 상호작용한다:
Query: 일반적으로 어떤 데이터가 검색되도록 함
Transaction: 일부 데이터가 database에 atomically 하게(더 이상 쪼개질 수 없는) 읽히거나 쓰이도록 함
2) Applications는 인증되지 않은 사용자가 데이터에 접근하는 것을 허용하지 않는다: 데이터 보호 제공
3) Applications는 DB에 대한 사용자의 요구사항에 대응해야 한다: 암호 정책 변경, 권한 변경
일반적인 DBMS 기능
1) 특정 데이터베이스 를 정의하는데, 그것의 데이터 유형, 구조물 그리고 제약 의 관점에서 정의한다.
2) "2차" 저장 매체 인 HDD, SSD 와 같은 저장소에 초기 데이터베이스 컨텐츠 를 구성하거나 로드한다.
3) 데이터베이스 를 조작한다:
검색: 쿼리 중, 보고서 생성
수정: 내용에 대한 삽입, 삭제 및 업데이트
액세스: 웹 응용프로그램은 데이터베이스 에 대한 접근 권한을 가진다를 를 통해합니다.
4) 모든 data이 유효성과 일관성은 유지하면서, 동시 사용자와 application programs의 집합 단위로 Processing가 sharing을 수행한다.
데이터베이스 예제(개념 데이터 모델 포함)
-예를 들어 미니월드: 대학 환경
1)일부 미니월드 엔티티(개체/엔티티):
학생들
코스
섹션(물론)(분반)
학과
강사들
...
2)일부 미니월드는 실체들 간의 관계를 갖는다:
섹션은 특정 코스입니다
학생들은 섹션을 듣는다
코스에는 필수 코스가 있습니다
강사가 섹션을 가르칩니다
각 부서에서 강좌를 제공합니다
학과를 전공하는 학생들
...
3)위의 "entities" 와 "관계" 는 일반적으로 개념적 데이터 모델 에서 표현된다.
데이터베이스 설계 단계
Stage 1 : 요구사양 및 분석
Stage 2: 개념 설계(데이터베이스 구현으로 쉽게 변환 가능)
Stage 3: 논리 설계(DBMS에서 구현된 데이터 모델의 경우)
Stage 4 : 물리적 설계 (데이터베이스 저장 및 접근용)
데이터베이스 접근방식의 주요 특성
DB접근방식의 주요 특징(1/5)
(1) DB 시스템의 특성을 직접 설명합니다:
DB 시스템 은 DB 자체뿐만 아니라 DB 구조, 종류 및 제약 조건 의 완전 정의(또는 설명) 를 포함한다.
카탈로그: 특정 DB의 메타데이터라는 설명을 저장합니다
일부 최신 시스템(일부 NoSQL 시스템: MongoDB, 카산드라, 레디스)은 메타데이터가 필요하지 않습니다.
- data definition을 그 구조안에 바로 저장하는 방식으로 self-describing을 구현 (e.g. 'key': 'value')
DB접근방식의 주요 특징 (2/5)
(2-1) 프로그램과 데이터 간의 절연:
프로그램-데이터 독립성이라고 합니다
DBMS 접근 프로그램 없이도 데이터 구조 와 스토리지 조직 을 변경할 수 있다.
file-processing systems에서는 프로그램에 의해 접근되는 파일의 구조가 변경되면 프로그램을 변경해야 한다.
- 만약 STUDENT record에 Birth_Date이라는 attribute를 삽입하려고 한다면 어떻게 될까 ?
- Birth_Date 40 4 정도가 들어갈려나
DB접근방식의 주요 특징(3/5)
(2-2) 자료추상:
프로그램-데이터 와 프로그램-작업(객체에) 독립성
data model의 비공식적인 정의: data 추상화의 유형
저장소 상세 내역 를 숨기고 DB 를 사용자의 개념도
data가 어떻게 저장되고 접근되는지는 알 필요가 없음 => Declarative property
응용 프로그램은 데이터 저장 세부 정보보다는 데이터 모델 구성을 참조한다를 는한다.
DB접근방식의 주요 특징(4/5)
(3) 데이터의 여러 보기 지원:
각 유저는 DBMS의 서로 다른 view를 볼 것이다.
그렇다면 각 유저는 해당 유저가 관심있는 data만을 볼 것이다.
Ex 1) 어떤 사용자는 각 학생들의 성적표를 확인하고 인쇄하는 것에만 관심이 있다.
Ex 2) 또 다른 사용자는 학생이 등록한 각 강의에 대해서 해당 학생이 모든 선수과목을 수강하였는지 여부에 대해서만 관심이 있다.
DB접근방식의 주요 특징(5/5)
(4) 데이터 공유 및 다중 사용자 트랜잭션 처리:
동시 사용자 의 집합이 DB 로부터 데이터를 검색하고 DB 를 갱신하는 것을 가능하게 한다 예: U1(읽기) - U2(쓰기) - U3(읽기) - U4(업데이트)...
DBMS의 동시성 제어는 각 transaction이 정상적인 경우에는 정확하게 실행되고, 이상이 있는 경우에는 중단되도록 보장한다.
Transaction: DB 접근을 포함하는 일련의 statements로 구성되어 실행중인 프로그램이나 프로세스
ACID(원자성, 일관성, 격리, 내구성) 특성을 만족해야 한다.
Recovery subsystem은 완료된 각 transaction이 DB에 영구적으로 기록되는 것을 보장한다.
OLTP(Online Transaction Processing) 은 DB 응용프로그램 이 주요 파트이다.
매 초단위로 수 백개의 동시적인 transactions가 실행되도록 한다.
DB접근방식의 장점
Controlling redundancy (중복 제어)-이중화 제어(중복 제어)
data storage와 개발/보수 작업 절약 가능
이상적으로, 각 논리적 data item(e.g., a student's name or birth date)을 DB의 한 곳에만 저장하도록 DB를 설계해야 한다. 이를 Data normalization(데이터 정규화)라고 한다.
Providing persistent storage for program objects (영속 저장)-프로그램 개체에 대한 영구 저장소 제공(영속 저장)
OO(Object-oriented) DBMes 는 프로그램 개체(C++ 또는 Java로 작성) 를 영구화할 수 있다.
자바에서의 C.f. 클래스 객체 출력 스트림
Impedence mismatch problem: (traditional) DBMS가 제공하는 data 구조가 해당 프로그래밍 언어의 data 구조와 호환되지 않는다는 것을 의미한다. 하지만 이는 OODBMS(객체지향 데이터베이스)로 해결된다. (대부분의 이러한 Impedence mismatch problem은 관계형 데이터베이스에서 발생한다 ?)
Providing storage structures (e.g., indexes) for efficient query processing (효율적 질의 처리를 위한 저장 구조 제공)
-효율적인 쿼리 처리를 위한 스토리지 구조(예: 인덱스) 제공(효율적 질의 처리를 위한 저장 구조 제공)
주어진 query에 대응되는 목표 records에 대한 disk search의 속도를 향상시키기 위함이다.
DBMS는 효율적인 search를 위해 indexes (보조 파일에 저장됨)를 활용한다.
트리 기반 또는 해시 기반 는 디스크 블록 에 최적화되어있다.
또한 DB는 스스로의 buffering/caching을 사용할 수 있다.
?) 왜 OS의 버퍼링이나 캐싱은 사용하지 않는가 ?
1k 버퍼 페이지 로 1M 디스크 블록 크기 를 스캔 하는 경우 순차 플러딩 발생!
Besides, a lot of benefits:그 외에도 많은 이점이 있습니다:
효율적인 프로세싱을 위한 query 최적화
백업과 recovery 서비스 지원
다양한 클래스의 사용자에 대한 multiple interface 지원
데이터 간의 복잡한 관계 간의 복잡한
DB의 일관성과 무결성을 위해 무결성 제약 조건 적용
참조 무결성 제약조건, 고유 제약 조건
Triggers: table의 갱신으로 인해 동작되는 규칙의 한 형태로서, 다른 tables에 대한 추가적인 operations를 발생시킨다.
+) 특정 테이블에 INSERT, DELETE, UPDATE 같은 DML 문이 수행되었을 때, DB에서 자동으로 동작하도록 작성된 프로그램입니다. 사용자가 직접 호출하는 것이 아니라, DB에서 자동적으로 호출하는 것이 가장 큰 특징이다.
DBMS를 사용하지 않을 때
DBMS 미사용 시 (1/2)
DBMS 사용에 따른 오버헤드 비용:
SW, HW and traing에 있어 비싼 초기 개발 비용
data를 정의하고 처리하기 위해 DBMS가 제공하는 generality
보안, 동시성 제어, 복구 및 무결성 기능 제공의 오버헤드
DBMS가 불필요한 경우:
DB와 Application이 간단하거나, 잘 정의되어서, 변경이 없을 것으로 예상되는 경우
data에 대한 Multiple user의 접근이 없는 경우
DBMS를 실행할 수 없는 경우:
제한된 storage 용량을 가진 임베디드 시스템의 경우, 범용 DBMS를 사용할 수 없다. 이런 경우에는 SQLite를 사용할 수 있다.
DBMS 미사용 시 (2/2)
범용 DBMS가 필요 없을 때:
(1) DBMS 의 오버헤드 로 인해 몇몇 응용 프로그램 요구사항이 충족되지 않을 수 있다 실시간 의 엄격한.
(2) 모델링 제한 사항 으로 인해 DB 시스템 이 데이터
예를 들어 복잡한 게놈 및 단백질 데이터베이스에서
(3) DBMS 가 지원하지 않는 특수 연산 를 필요로 하는 경우(예: GIS 및 위치기반 서비스): R-tree index를 이용한 공간 DBMS 산출