[데이터베이스] 데이터베이스 기본 개념
1. 데이터베이스 시스템
1.1 데이터베이스 관리 시스템(DBMS)
- •
서로 관계 있는 데이터들의 모임과 그 데이터에 접근하기 위한 프로그램의 집합으로 구성됨
- •
DBMS의 목적: 데이터베이스에 정보를 저장하고 이를 검색하기 위한 편리하고도 효율적인 환경 제공
2. 데이터베이스 시스템의 응용
2.1 최초의 데이터베이스 시스템
- •
1960년대: 상업용 데이터 관리 목적으로 개발
- •
초기 응용: 단순하고 구조화된 데이터(structured data)
2.2 최신 데이터베이스 응용
- •
세계적인 기업에서 사용
- •
복잡한 관계와 다양한 구조의 데이터 → 약하게 구조화된 데이터와 매우 가변적인 형태
대표적인 데이터베이스 응용:
- •
기업 정보: 판매, 회계, 인적 자원
- •
은행 업무 및 재무: 계좌, 대출, 신용카드, 주식 거래
- •
대학: 학생 정보, 수강 신청, 학점 관리
- •
항공: 예약 및 비행 스케줄
- •
통신: 통화 내역, 통신비 산정
- •
웹 기반 서비스: 소셜 미디어, 온라인 소매, 온라인 광고
- •
문서 데이터베이스: 뉴스 기사, 특허, 논문
- •
내비게이션 시스템: 도로, 철도, 관심 지역 정보
2.3 데이터베이스 두 가지 사용 모드
- 1
온라인 트랜잭션 처리 (OLTP) 지원 모드
- •
대규모 사용자들이 동시에 데이터베이스 사용
- •
각 사용자는 비교적 적은 양의 데이터를 검색하거나 갱신
- 2
데이터 분석 (Data Analysis) 지원 모드
- •
비즈니스 결정을 위해 데이터 분석, 규칙 추론, 예측 모델 생성
- •
데이터 마이닝: 인공지능 연구자와 통계학자들의 지식 탐사 기법을 대규모 데이터베이스에 활용
3. 데이터베이스 시스템의 목적
3.1 기존 파일 처리 시스템의 한계
문제점:
- •
데이터 중복과 비일관성:
- ◦
여러 파일에 동일 정보 중복 저장 → 정보가 서로 다른 값을 보유할 수 있음
- •
데이터 접근의 어려움:
- ◦
새로운 질의 요청 시, 새로운 응용 프로그램을 개발해야 함
- •
데이터 고립:
- ◦
데이터가 여러 파일에 흩어져 있고 형식이 다름
- •
무결성 문제:
- ◦
예: 학과 계좌 잔고가 0 이하가 되지 않도록 해야 함 → 각 프로그램마다 따로 처리
- •
원자성 문제:
- ◦
시스템 고장 시 출금만 되고 입금 안 되는 경우 발생 가능 → 모든 작업이 완전히 수행되거나 수행되지 않아야 함
- •
동시 접근 문제:
- ◦
예: 두 학생이 동시에 수강 신청 → 인원 제한 위반 가능성
- •
보안 문제:
- ◦
사용자마다 접근 권한을 다르게 설정하기 어려움
4. 데이터의 관점
4.1 데이터 추상화
추상화 단계:
- 1
물리적 단계 (Physical Level):
- •
데이터가 어떻게 저장되는지 기술
- 2
논리적 단계 (Logical Level):
- •
어떤 데이터가 저장되고, 데이터 간의 관계를 기술
- 3
뷰 단계 (View Level):
- •
전체 데이터베이스의 일부분만 사용자에게 제공
4.2 데이터베이스 스키마와 인스턴스
- •
스키마 (Schema): 데이터베이스의 전체 설계
- •
인스턴스 (Instance): 특정 시점에 데이터베이스에 저장된 데이터
- •
스키마의 종류:
- ◦
물리적 스키마: 물리적 단계 설계
- ◦
논리적 스키마: 논리적 단계 설계
- ◦
서브 스키마: 뷰 단계에서의 설계
5. 데이터베이스 언어
5.1 데이터 정의 언어 (DDL)
- •
데이터베이스 스키마 정의
- •
무결성 제약조건, 접근 권한 정의
예시:
CREATE TABLE department (
dept_name CHAR(20),
building CHAR(15),
budget NUMERIC(12,2)
);
5.2 데이터 조작 언어 (DML)
- •
데이터 검색, 삽입, 삭제, 수정
- •
절차적 DML: 데이터 어떻게 구할지 명시
- •
선언적 DML: 어떤 데이터가 필요한지만 명시
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
일반 사용자:
- •
웹/모바일 응용을 통해 데이터베이스와 상호작용
- •
예: 학생이 웹 인터페이스로 수강 신청
- 2
응용 프로그래머:
- •
응용 프로그램을 작성
- 3
능숙한 사용자:
- •
질의어(SQL) 또는 분석 도구 사용
- •
예: 데이터 분석가
9.2 데이터베이스 관리자 (DBA)
역할:
- 1
스키마 정의:
- •
DDL로 데이터베이스 최초 스키마 생성
- 2
저장 구조 및 접근 방법 정의:
- •
데이터 저장 방식, 인덱스 생성 등
- 3
스키마 및 물리 구조 수정:
- •
요구 변화나 성능 향상을 위해 수정
- 4
데이터 접근 권한 인정:
- •
사용자의 권한을 관리
- 5
일상적인 유지 보수:
- •
백업, 디스크 공간 확보, 시스템 모니터링