본문 바로가기

Database [DB]

[DB] 01. Introduction to Databases

Databases

데이터베이스 : 서로 연관 있는 데이터의 모임

데이터베이스 관리 시스템 (DBMS, Database Management System) : 데이터베이스를 관리하는 소프트웨어

DBMS는 데이터베이스를 정의, 생성, 조직하며 여러 의미 있는 기능을 제공함

데이터베이스 시스템 (DBS, Database System) : DB + DBMS

 

DBMS의 장점

  • 데이터 추상화
  • 데이터 접근의 용이성 : 데이터 접근을 위한 언어 제공, 편리한 사용자 인터페이스 제공
  • 데이터 중복 및 불일치성에 대한 제어 용이
  • 데이터 무결성 제약 조건 강화 : Integrity Constraint(IC) 강화 용이 (add, update, delete 등)
  • 갱신 원자성 제공 (Atomicity of updates) : 고장이 발생하더라도 저장된 데이터를 일관성 있게 보장 (all or nothing property 사용)
  • 여러 사용자의 동시 접근
  • 데이터 보호 (Data Security)
  • 데이터 백업과 복원

화일 시스템 (File Systems)

  • 일반적으로 운영체제의 기능 중 하나 (ex : UNIX의 ‘filesystem’)
  • 보통 DBMS는 운영체제가 제공하는 화일 시스템을 활용하여 구현 (실질적으로 제약이 많아 효율적으론 불가능)

Data AbstractionData Model

Schema

  • 데이터베이스의 어떤 논리적 / 물리적 구조
  • 프로그래밍 언어의 ‘변수 타입’과 유사한 개념
  • View Schema, Logical Schema, Physical Schema

Instance

  • 특정 시점에서 데이터베이스 Schema의 실제 값
  • 프로그래밍 언어의 ‘변수값’과 유사한 개념

Abstraction (추상화)

  • 특정 인스턴스에서 중요한 아이디어를 분리하는 과정
  • 사용자가 인간 수준에 가깝게 작업할 수 있도록 일반적인 패턴에서 세부 사항을 추출 
  • 실제로 중요하지만 문제 해결에 관련 없는 세부 사항은 무시
  • 시스템은 여러 추상화 계층을 가짐
  • 계층에 따라 사용자에게 노출되는 세부 사항의 의미와 양이 달라짐

데이터 추상화 레벨

  • 물리적 레벨 : 레코드가 물리적으로 어떻게 저장되는지 설명
  • 논리적 레벨 : 저장된 데이터와 데이터 사이의 관계를 설명
  • 뷰 레벨 : 사용자가 관심 있는 특정 데이터베이스 부분을 설명 (나머지 데이터베이스는 보안 목적으로 숨김)

3단계 추상화 구조 (좌) / 3단계 스키마 구조 (우)

 

데이터 독립성 (Data Independence)

  • 물리적 데이터 독립성 : 논리적 스키마로의 변경 없이 물리적 스키마를 수정할 수 있는 능력
  • 논리적 데이터 독립성 : 뷰 스키마로의 변경 없이 논리적 스키마를 수정할 수 있는 능력
  • 애플리케이션은 뷰 스키마에 의존
  • 다양한 레벨과 구성 요소 사이의 인터페이스는 일부의 변화가 다른 부분에 심각한 영향을 미치지 않도록 잘 정의되어야 함

Data Model

실제 데이터는 저장 장치에 무작위로 분산되어서 데이터 위치를 설명하기 어려움 => 데이터 추상화 필요

 

데이터 모델

  • 데이터를 개념적으로 추상화하여 데이터를 개념적으로 설명/조작할 수 있게 함
  • 데이터, 데이터 사이 관계, 데이터 의미, 데이터 제약 조건 등을 기술하는 명세 또는 개념적 도구

관계형 데이터 모델 (Relation data model)

  • 가장 많이 사용
  • 일반적인 테이블 형식

객체 관계형 데이터 모델 (Object-relational data model)

  • 관계형 데이터 모델을 확장하여 객체 지향성과 추가된 데이터 타입을 처리하는 구조를 포함
  • 튜플의 속성이 복잡한 타입을 가지도록 허용 (중첩 관계와 같은 원자가 아닌 값(non-atomic values)을 포함)
  • 모델링 능력을 확장하면서 관계형 기초를 유지 (특히 데이터에 대한 선언적 접근)
  • 기존 관계형 언어와 상위 호환성을 제공

객체 지향 데이터 모델 (Object-oriented data model)

  • 개체-관계 데이터 모델 (Entity-Relationship data model)
  • 데이터베이스 디자인 용도

XML 데이터 모델

  • Semi-Structured data 용도
  • 새로운 태그를 지정하고 중첩 태그 구조를 만들 수 있는 능력 -> XML을 데이터 교환에 좋은 방법으로 만듦
  • 데이터(문서) 교환에서 기술적 문제를 해결
  • XML 문서/데이터를 분석, 탐색. 질의(query)하는 다양한 도구를 사용 가능

계층적 데이터 모델 (Hierarchical data model)

 

네트워크 데이터 모델 (Network data model)


데이터베이스 설계

  • 데이터베이스의 일반적인 구조를 디자인하는 과정
  • 논리적 디자인은 데이터베이스 스키마를 결정하는 것 (논리적 스키마, 뷰 스키마)
  • 물리적 디자인은 데이터베이스의 물리적 레이아웃을 결정하는 것 (물리적 스키마)
  • 데이터베이스 스키마는 데이터베이스 시스템의 성능에 중요

Entity Relationship Model (개체-관계 모델)

  • 개체와 관계의 모음으로 모델링
  • 개체-관계 다이어그램으로 도식적으로 표현
  • 개체-관계 다이어그램을 타겟 DBMS 스키마로 매핑

Normalization Theory (정규화 이론)

  • 어떤 디자인이 나쁜지 형식화 / 좋은 스키마를 얻는 방법

Database Systems

데이터베이스 언어

  • DBMS는 사용자가 데이터베이스로 원하는 것을 표현할 수 있게 데이터베이스 언어를 지원
  • SQL, QUEL, 관계 대수, query-by-example, LDL 등 (SQL이 가장 유명)

SQL 예제
1. ID가 22222인 교수의 이름 검색

     Select name
     from professor
     where pID = ‘22222’;
2. ID가 22222인 교수가 강의하는 과목명 검색

     Select title
     from teaches, course
     where teaches.cID=course.cID and pID = ‘22222’;

 

애플리케이션이 일반적으로 데이터베이스에 접근하는 방법

  1. SQL의 절차적 확장
  2. Host 프로그램 언어에 SQL을 포함
  3. API 활용 (ODBC, JDBC 등)

DBMS 구성 요소

  • DBMS는 매우 크고 복잡한 소프트웨어 / 2가지 주요 구성 요소를 가짐
  • Query processor : 쿼리 처리, 권한 부여, 인증 등
  • Storage manager : 데이터의 효율적인 저장, 검색, 업데이트 담당 / 화일 조직, 인덱싱, 해싱 / 트랜잭션 관리

 

<데이터베이스 시스템 단순 구조도>

  • Query Processor : 질의어 처리기
  • Storage Manager : 저장 관리기
     -> 디스크에 존재하는 데이터베이스와 데이터 사전을 관리
  • 데이터베이스 시스템은 동시에 여러 사용자가 사용

 

 

 

데이터 사전 (Data Dictionary)

  • 데이터 사전은 메타 데이터를 저장하는 장소 (메타 데이터 : 데이터에 관한 데이터)
  • 데이터베이스 스키마
  • 제약 조건에 대한 데이터
  • 접근 권한에 대한 데이터
  • 통계 데이터
  • DBMS는 데이터베이스 언어를 처리하기 위해 데이터 사전을 참조함

트랜잭션 관리 (Transaction Management)

  • 트랜잭션 : 데이터베이스 애플리케이션에서 하나의 논리적 기능을 수행하는 데이터베이스 연산 과정

트랜잭션 관리의 2가지 구성 요소

 1. 동시성 제어 관리 (Concurrency control manager)

     동시에 실행되는 트랜잭션 간의 상호 작용을 제어, 데이터베이스 일관성을 보장
 2. 복구 관리자 (Recovery manager) 

     실패에도 불구하고 데이터베이스가 일관성 있게 남아있도록 보장

 

데이터베이스 사용자

  • 시스템과의 상호 작용 방식에 따라서 구분됨
  • Naïve users (일반 사용자) : 웹을 통해 데이터베이스에 접근하는 사람들, 은행 직원, 사무직 스태프 등
     - 이전에 작성된 영구적인 애플리케이션 프로그램을 호출
  • Application programmers 응용 프로그래머
  • Database designers 데이터베이스 디자이너
  • Database analysts 데이터베이스 분석가
  • Database administrator (DBA) 데이터베이스 관리자

데이터베이스 관리자

  • 데이터베이스 시스템의 모든 활동을 조율
  • 스키마 정의
  • 저장 구조 및 접근 방법 정의
  • 스키마와 물리적 구성 변경
  • 데이터베이스에 접근할 수 있게 사용자에게 권한 부여
  • 무결성 제약 조건 명시 (Specifying Integrity Constraints)
  • 사용자와 연락 (Acting as liaison with users)
  • 시스템 성능 모니터링

데이터베이스 시스템 구조

데이터베이스 시스템의 아키텍처는 데이터베이스가 실행되는 컴퓨터 시스템의 영향을 받음

  • Centralized
  • Distributed
  • Client-Server
  • Parallel (multi-processor)

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

  • 50/60년대 : 저장용으로 자기 테이프, 입력용으로 구멍 뚫린 카드 사용 / 하드 디스크로 직접 데이터 액세스 가능
  • 70년대 : 네트워크 및 계층형 데이터 모델이 널리 사용 / 관계형 데이터 모델이 정의
  • 80년대 : 상업용 관계형 시스템 / 고성능 트랜잭션 처리 / 병렬 및 분산 데이터베이스 시스템 / 객체 지향 데이터베이스 시스템
  • 90년대 : 대규모 의사결정 지원 / 데이터 마이닝 애플리케이션 / 대규모 멀티 테라바이트 데이터 웨어하우스 /웹 상거래 등장
  • 00년대 : XML 표준 / 자동 데이터베이스 관리
  • 10년대 : 빅 데이터 시대 / 거대한 데이터 저장 시스템 (Google BigTable, Amazon) / NoSQL 데이터베이스

'Database [DB]' 카테고리의 다른 글

[DB] 06. Application Development  (1) 2024.01.08
[DB] 05. Major Functionalities of Database Systems  (3) 2024.01.08
[DB] 04. SQL 2  (0) 2024.01.07
[DB] 03. SQL 1  (1) 2024.01.07
[DB] 02. Relational Data Model  (0) 2024.01.06