[데이터베이스] Ch1 Introduction

Junyoung Park·2022년 8월 12일

데이터베이스

목록 보기
1/6
post-thumbnail

Introduction

  • 데이터베이스: 특정 조직에 대한 연관 데이터 집합
  • 데이터베이스 관리 시스템(DBMS): (1). 데이터베이스 저장 및 유지 (2). 사용자의 데이터베이스 접근을 간편하게 만드는 기능 제공
  • 데이터베이스 어플리케이션: DBMS, 데이터베이스를 사용하는 어플리케이션
  • 데이터베이스 시스템: (1). DBMS (2). DBMS + 데이터베이스 + 데이터베이스 어플리케이션

    데이터베이스가 무엇인지 배우고, 이를 사용하는 방법론을 DBMS을 통해 익혀보자! 결과적으로 만들어야 할 건, 데이터베이스 어플리케이션.

데이터베이스 시스템 어플리케이션

  • 데이터를 저장, 관리하는 거의 모든 어플리케이션(은행, 학교 등 모두 포함)

데이터베이스 시스템을 사용하는 이유

  • 초창기 파일 시스템 내에서 곧바로 DB 사용: (1). 데이터 중복 및 불일치 문제 (2). 데이터 접근이 어려워짐

    파일 내부가 아니라 별도의 DB를 사용하는 목적은 이 뿐만이 아니다!

  • 데이터 고립: 여러 개의 파일 및 포맷이 존재하기 때문에 데이터를 분리해야 함
  • 무결성 제약 조건: 특정 파일의 제약조건은 프로그램 소스 코드에서 다루기 힘들고 추가 및 삭제가 어려움
  • 업데이트의 원자성: 특정 메소드는 성공/실패 중 하나여야 하기 때문
  • 다수 사용자의 동시 접근: 동기화 문제 등
  • 안전성 문제: 특정 데이터에 대한 사용자 접근을 막기 위함

데이터 뷰

  • 데이터베이스 시스템: 연관 데이터 모음 + 사용자의 데이터 접근 / 조작 프로그램
  • 데이터의 추상적인 뷰를 사용자에게 제공
  • 데이터 모델: 데이터, 데이터 릴레이션, 데이터 시맨틱, 제약 조건 등

    릴네이셔널 모델. 엔티티-릴레이션십 데이터 모델. 객체 기반 데이터 모델 등 여러 가지 방식이 있다!

  • 데이터 추상화: 데이터 모델의 복잡성을 사용자로부터 숨기는 방법

릴레이셔널 모델

  • 모든 데이터가 여러 개의 테이블에 저장
  • 행/열로 이루어진 이차원 테이블을 통해 기록

추상화 레벨

  • 물리적 레벨: 레코드가 저장되는 방법
  • 논리적 레벨: 데이터베이스 내 데이터 저장 방법, 데이터 간 릴레이션십
  • 뷰 레벨: 어플리케이션으로 인해 데이터 타입의 자세한 정보가 감춰지는 방법. 안전성 이슈에 따라 특정 정보는 분리하기도 함.

인스턴스와 스키마

  • 논리적 스키마: DB 상의 전체적인 논리 구조(프로그래밍 언어의 타입 정보와 유사)
  • 물리적 스키마: DB 상의 전체적인 물리 구조. 논리적 스키마를 바꾸지 않고 물리적 스키마를 변경할 수 있음 → 물리적 데이터 비의존성(physical data independence).
  • 인스턴스: 특정 시점 특정 DB 테이블 상에 존재하는 실제 데이터

데이터베이스 언어

DDl

  • 데이터베이스 스키마를 정의하는 구체적인 방법
  • 데이터 딕셔너리(DB 스키마, 무결성 제약조건, 인증 정보) 안에 저장되는 테이블 템플릿 생성

DML

  • 적절한 데이터 모델이 관리하는 데이터에 접근 및 갱신하는 언어. '쿼리' 언어로도 불림
  • 절차적 DML: 어떤 데이터가 필요하고 어떻게 접근할지 적어야 하는 언어
  • 비절차적/선언적 DML: 조작 방법과는 관계없이 무슨 데이터를 원하는지 적어야 하는 언어

    비철자적 DML이 사용자 친화적이고 간편하다!

SQL Query Language

  • 비절차적 DML
  • 여러 개의 테이블을 입력값으로 받아 하나의 테이블을 리턴

데이터베이스 디자인

  • 논리적 디자인: DB 스키마 결정 과정. 릴레이션 스키마의 좋은 컬렉션이 무엇인지 찾는 과정. DB에 기록해야 하는 어트리뷰트 및 여러 개의 릴레이션 스키마 중 어트리뷰트가 어떻게 분포되어야 효율적인지 확인해야 함
  • 물리적 디자인: DB의 물리적 레이아웃을 결정하는 과정

데이터베이스 엔진

  • DB → 여러 개의 모듈로 분리
  • 스토리지 매니저
  • 쿼리 프로세서 컴포넌트
  • 트랜젝션 매니지먼트 컴포넌트

스토리지 매니저

  • DB에 저장된 로우-레벨 데이터와 시스템에 입력되는 하이-레벨 명령어 및 사용자 접근을 매핑하는 인터페이스
  • OS 파일 매니저와 상호 작용을 통해 효율적으로 데이터를 CRUD함
  • 인증, 무결성 정보, 트랜젝션, 파일, 버퍼 등 관리 (논리적)
  • 데이터 파일, 데이터 딕셔너리, 인덱스 등 관리 (물리적)

쿼리 프로세서

  • DDL 인터프리터: DDL 명령어를 번역해서 데이터 딕셔너리에 해당 정의를 기록
  • DML 컴파일러: DML 명렁어를 쿼리 평가 엔진이 이해 가능한 로우-레벨 단위의 명렁오로 번역. 쿼리 최적화를 통해서 특정 데이터를 쿼리하는 최소 명령어를 리턴함.
  • 쿼리 평가 엔진: DML 컴파일러가 생성한 로우-레벨 단위의 명령어를 실행

트랜젝션 매니지먼트 컴포넌트

  • 트랜젝션: DB 어플리케이션에서 단일한 논리적 함수를 수행하는 연산
  • 시스템/트랜젝션 실패 시 일관된 상태를 시스템이 유지하도록 해야 함
  • 동시성 컨트롤 매니저: 동시성 concurrent을 띤 트랜젝션이 데이터베이스 일관성을 유지할 수 있도록 제어

데이터베이스 구조

  • 중앙 제어: 공유 메모리
  • 클라이언트-서버: 한 개의 서버 머신 대 여러 개의 클라이언트 머신
  • 병렬 데이터베이스: 여러 개의 모델링 가능(공유 정도)
  • 분산 데이터베이스: 지질학적 분산 또는 스키마/데이터 이원성 등 가능

데이터베이스 어플리케이션 및 사용자

  • 2티어 구조: 네트워크를 경계로 사용자 및 어플리케이션 / 데이터베이스 존재
  • 3티어 구조: 데이터베이스 또한 어플리케이션 서버 사용하는 구조
  • 데이터베이스 사용자: 사용 목적, 권한에 따라 다양한 사용자
  • 데이터베이스 관리자: 스키마 정의, 모니터링 등 권한에 따라 달라짐

데이터베이스 시스템의 역사

  • 펀치 카드
  • 하드 디스크, 네트워크, 계층적 데이터 사용
  • SQL 대중화, 병렬 및 분산 DB 시스템, 객체 지향 DB 시스템
  • 대용량 DB 시스템. NoSQL 대중화. 빅데이터
profile
JUST DO IT

0개의 댓글