[데이터베이스] 데이터베이스 기본 개념

2025-04-22
#데이터베이스
3

1. 데이터베이스 시스템

1.1 데이터베이스 관리 시스템(DBMS)

  • 서로 관계 있는 데이터들의 모임과 그 데이터에 접근하기 위한 프로그램의 집합으로 구성됨

  • DBMS의 목적: 데이터베이스에 정보를 저장하고 이를 검색하기 위한 편리하고도 효율적인 환경 제공


2. 데이터베이스 시스템의 응용

2.1 최초의 데이터베이스 시스템

  • 1960년대: 상업용 데이터 관리 목적으로 개발

  • 초기 응용: 단순하고 구조화된 데이터(structured data)

2.2 최신 데이터베이스 응용

  • 세계적인 기업에서 사용

  • 복잡한 관계와 다양한 구조의 데이터 → 약하게 구조화된 데이터와 매우 가변적인 형태

대표적인 데이터베이스 응용:

  • 기업 정보: 판매, 회계, 인적 자원

  • 은행 업무 및 재무: 계좌, 대출, 신용카드, 주식 거래

  • 대학: 학생 정보, 수강 신청, 학점 관리

  • 항공: 예약 및 비행 스케줄

  • 통신: 통화 내역, 통신비 산정

  • 웹 기반 서비스: 소셜 미디어, 온라인 소매, 온라인 광고

  • 문서 데이터베이스: 뉴스 기사, 특허, 논문

  • 내비게이션 시스템: 도로, 철도, 관심 지역 정보


2.3 데이터베이스 두 가지 사용 모드

  1. 1

    온라인 트랜잭션 처리 (OLTP) 지원 모드

    • 대규모 사용자들이 동시에 데이터베이스 사용

    • 각 사용자는 비교적 적은 양의 데이터를 검색하거나 갱신

  1. 2

    데이터 분석 (Data Analysis) 지원 모드

    • 비즈니스 결정을 위해 데이터 분석, 규칙 추론, 예측 모델 생성

    • 데이터 마이닝: 인공지능 연구자와 통계학자들의 지식 탐사 기법을 대규모 데이터베이스에 활용


3. 데이터베이스 시스템의 목적

3.1 기존 파일 처리 시스템의 한계

문제점:

  • 데이터 중복과 비일관성:

    • 여러 파일에 동일 정보 중복 저장 → 정보가 서로 다른 값을 보유할 수 있음

  • 데이터 접근의 어려움:

    • 새로운 질의 요청 시, 새로운 응용 프로그램을 개발해야 함

  • 데이터 고립:

    • 데이터가 여러 파일에 흩어져 있고 형식이 다름

  • 무결성 문제:

    • 예: 학과 계좌 잔고가 0 이하가 되지 않도록 해야 함 → 각 프로그램마다 따로 처리

  • 원자성 문제:

    • 시스템 고장 시 출금만 되고 입금 안 되는 경우 발생 가능 → 모든 작업이 완전히 수행되거나 수행되지 않아야

  • 동시 접근 문제:

    • 예: 두 학생이 동시에 수강 신청 → 인원 제한 위반 가능성

  • 보안 문제:

    • 사용자마다 접근 권한을 다르게 설정하기 어려움


4. 데이터의 관점

4.1 데이터 추상화

추상화 단계:

  1. 1

    물리적 단계 (Physical Level):

    • 데이터가 어떻게 저장되는지 기술

  1. 2

    논리적 단계 (Logical Level):

    • 어떤 데이터가 저장되고, 데이터 간의 관계를 기술

  1. 3

    뷰 단계 (View Level):

    • 전체 데이터베이스의 일부분만 사용자에게 제공


4.2 데이터베이스 스키마와 인스턴스

  • 스키마 (Schema): 데이터베이스의 전체 설계

  • 인스턴스 (Instance): 특정 시점에 데이터베이스에 저장된 데이터

  • 스키마의 종류:

    • 물리적 스키마: 물리적 단계 설계

    • 논리적 스키마: 논리적 단계 설계

    • 서브 스키마: 뷰 단계에서의 설계


5. 데이터베이스 언어

5.1 데이터 정의 언어 (DDL)

  • 데이터베이스 스키마 정의

  • 무결성 제약조건, 접근 권한 정의

예시:

Sql
CREATE TABLE department ( dept_name CHAR(20), building CHAR(15), budget NUMERIC(12,2) );

5.2 데이터 조작 언어 (DML)

  • 데이터 검색, 삽입, 삭제, 수정

  • 절차적 DML: 데이터 어떻게 구할지 명시

  • 선언적 DML: 어떤 데이터가 필요한지만 명시

SQL 예시:

Sql
SELECT instructor.name FROM instructor WHERE instructor.dept_name = 'History';

6. 데이터베이스 설계

6.1 데이터베이스 설계 개요

  • 데이터베이스 시스템: 많은 양의 정보를 효율적으로 관리하기 위해 설계됨.

  • 데이터는 기업/조직 운영에 필요한 자료.

  • 데이터베이스 설계: 데이터베이스 스키마 설계와 관련.

  • 설계 시 고려사항:

    • 데이터베이스 사용자의 데이터 요구 조건을 만족.

    • 상위 데이터 모델을 통해 설계자는 요구 조건을 개념적으로 표현.


6.2 데이터베이스 설계 과정

1단계: 요구 사항 분석

  • 장래 사용자가 필요로 하는 데이터를 명확히 규정.

  • 전문가 및 사용자와 상호작용.

  • 결과물: 사용자의 요구 명세서 (specification of use requirements).


2단계: 개념적 설계

  • 사용자 요구를 개념적 데이터 모델로 변환 → 개념적 스키마 생성.

  • 스키마 재검토중복 제거.

  • E-R 다이어그램으로 데이터와 관계를 표현.


3단계: 논리적 설계

  • 개념적 스키마논리적 데이터 모델 (릴레이션 스키마)로 변환.


4단계: 물리적 설계

  • 물리적 속성 (파일 구성 형식, 저장 구조)을 구체화.


5단계: 구현

  • 설계한 스키마를 SQL 문으로 실행하여 DBMS에서 데이터베이스 생성.


7. 데이터베이스 엔진

7.1 데이터베이스 시스템 구성

  • 데이터베이스 시스템은 여러 모듈로 구성되며, 각 모듈은 데이터베이스의 여러 책무를 나눠 맡음

  • 기능적 구성:

    • 저장 장치 관리자 (Storage Manager)

    • 질의 처리기 (Query Processor)

  • 기업 데이터베이스 용량:

    • 보통 기가바이트~테라바이트, 일부는 페타바이트 규모

  • 디스크 저장:

    • 메인 메모리에 저장할 수 없으므로 데이터는 디스크에 저장

    • SSD 사용 시 전통 디스크보다 빠르지만 더 비쌈


7.2 저장 장치 관리자 (Storage Manager)

  • 저장된 데이터와 응용 프로그램/질의 사이의 인터페이스 제공

구성요소:

  • 권한과 무결성 관리자:

    • 무결성 제약조건 검사, 사용자 권한 확인

  • 트랜잭션 관리자:

    • 시스템 고장 시 데이터베이스가 일관성 유지

    • 동시 실행되는 트랜잭션 충돌 방지

  • 파일 관리자:

    • 디스크 공간 할당 및 저장 정보 표현

  • 버퍼 관리자:

    • 디스크↔메인 메모리 간 데이터 이동 결정

    • 메인 메모리보다 큰 데이터베이스를 처리 가능하게 함


저장 구조:

  • 데이터 파일: 데이터베이스 자체를 저장

  • 데이터 사전 (Data Dictionary):

    • 메타데이터 저장 (예: 스키마)

  • 인덱스: 특정 값의 데이터 항목에 빠르게 접근 (예: 교수 ID 찾기)


7.3 질의 처리기 (Query Processor)

구성요소:

  • DDL 인터프리터:

    • DDL 문을 해독하여 데이터 사전에 기록

  • DML 컴파일러:

    • DML 문질의 평가 계획으로 변환

    • 질의 최적화: 여러 평가 계획 중 가장 낮은 비용 선택

  • 질의 평가 엔진:

    • 하위 단계 명령어를 실행


8. 데이터베이스 및 응용 구조

8.1 시스템 구조

  • 중앙화된 서버에서 데이터베이스 시스템 실행

구성:

  • 공유 메모리 (Shared Memory) 서버 구조:

    • 다수의 CPU 병렬 처리

    • 모든 CPU가 공통 메모리에 접근

  • 병렬 데이터베이스 (Parallel Database):

    • 다수의 기계 클러스터에서 실행

  • 분산 데이터베이스 (Distributed Database):

    • 지리적으로 분리된 여러 기계에서 데이터 저장 및 질의 처리


8.2 응용 구조

2계층 구조 (Two-tier Architecture):

  • 초기 데이터베이스 응용에서 사용

  • 클라이언트에서 응용 프로그램 실행 → 서버의 데이터베이스와 직접 통신


3계층 구조 (Three-tier Architecture):

  • 클라이언트 (프론트엔드)응용 서버 (Application Server)와 통신

  • 응용 서버가 데이터베이스 시스템과 직접 통신

  • 비즈니스 로직은 응용 서버에 위치 → 보안과 성능 향상


9. 데이터베이스 사용자와 관리자

9.1 사용자 유형

  1. 1

    일반 사용자:

    • 웹/모바일 응용을 통해 데이터베이스와 상호작용

    • 예: 학생이 웹 인터페이스로 수강 신청

  1. 2

    응용 프로그래머:

    • 응용 프로그램을 작성

  1. 3

    능숙한 사용자:

    • 질의어(SQL) 또는 분석 도구 사용

    • 예: 데이터 분석가


9.2 데이터베이스 관리자 (DBA)

역할:

  1. 1

    스키마 정의:

    • DDL로 데이터베이스 최초 스키마 생성

  1. 2

    저장 구조 및 접근 방법 정의:

    • 데이터 저장 방식, 인덱스 생성

  1. 3

    스키마 및 물리 구조 수정:

    • 요구 변화성능 향상을 위해 수정

  1. 4

    데이터 접근 권한 인정:

    • 사용자의 권한을 관리

  1. 5

    일상적인 유지 보수:

    • 백업, 디스크 공간 확보, 시스템 모니터링