데이터베이스 개념 정리
기본 개념
- 데이터(Data): 기록할 수 있는 알려진 사실
- 데이터베이스(DB): 관련 데이터의 모음. 현실 세계의 일부를 반영하며 특정 목적을 위해 설계됨
- DBMS(Database Management System): 데이터를 생성하고 유지하는 프로그램의 집합
- DB 시스템(DB System): 데이터베이스(DB) + DBMS
데이터베이스 유형 및 응용 분야
- 전통적 DB: 숫자 및 텍스트 기반 데이터 저장
- 멀티미디어 DB: 이미지, 오디오, 비디오 저장
- 실시간 및 활성 DB: 즉각적인 업데이트 및 반응 필요
- 웹 DB: 인터넷을 통해 접근 가능한 DB
- 지리정보 시스템(GIS) DB
- 데이터 웨어하우스: 의사결정 지원을 위한 데이터 저장소
- OLAP (Online Analytical Processing): 다차원 분석 가능
DB 예시
대학교 학사 관리 시스템
개체(Entity)
- 학생
- 수업
- 전공
- 강사
관계(Relation)
- 학생 - 수업: 학생은 여러 수업을 수강할 수 있고, 각 수업에는 여러 학생이 등록될 수 있음
- 수업 - 강사: 각 수업은 한 명의 강사가 담당하며, 강사는 여러 수업을 가르칠 수 있음
- 학생 - 전공: 각 학생은 하나의 전공에 소속되며, 전공은 여러 학생을 가질 수 있음
예시) 수강 목록 DB
학생 ID | 이름 | 전공 | 수업 코드 | 수업명 | 강사명 |
---|---|---|---|---|---|
2019001 | 홍길동 | 컴퓨터공학 | CS1234 | 자료구조 | 김교수 |
2020002 | 이영희 | 경제학 | EC5678 | 경제원론 | 이교수 |
2021002 | 김철수 | 언어학 | LN2000 | 통사론 | 박교수 |
2019001 | 홍길동 | 컴퓨터공학 | LN2000 | 통사론 | 김교수 |
2021002 | 김철수 | 언어학 | CS5678 | 인공지능 | 김교수 |
DB 접근법의 특징
- 전통적 파일 처리 방식: 사용자별 개별 파일 유지
- DB 접근 방식: 데이터가 한 저장소에서 유지 및 공유됨
Self-Describing Nature
메타데이터가 포함되어 데이터 구조 및 제약 조건을 설명
column_name | data_type | belongs_to |
---|---|---|
학생 ID | 정수 | 학생 |
이름 | 문자열 | 학생 |
전공 | 문자열 | 학생 |
수업 코드 | 문자열 | 수업 |
수업명 | 문자열 | 수업 |
강사명 | 문자열 | 수업 |
Insulation between Programs & Data
데이터 파일 구조가 애플리케이션 코드와 분리됨
Multiple Views
사용자별 맞춤형 데이터 제공 가능
예시) 홍길동 학생의 수강 목록 view
수업 코드 | 수업명 | 강사명 |
---|---|---|
CS1234 | 자료구조 | 김교수 |
LN2000 | 통사론 | 김교수 |
view와 DB 구조는 대부분의 경우에서 다름
Multi-User Support
여러 사용자가 동시에 데이터를 공유 가능
DB 사용자 및 역할
- DB 관리자(DBA): 보안, 성능 모니터링 및 유지관리 담당
- DB 설계자: 데이터 모델링 및 구조 정의
- 소프트웨어 분석가: 사용자 요구사항 분석
- 애플리케이션 프로그래머: DB 기반 애플리케이션 개발
- 일반 사용자: 질의(Query), 데이터 조회, 보고서 생성 등
DB 접근법의 이점
- 데이터 중복 최소화 (Controlling Redundancy)
- 보안 및 접근 제한 (Security & Authorization)
- 효율적인 질의 처리 (Efficient Query Processing)
- 백업 및 복구 지원 (Backup & Recovery)
- 데이터 무결성 유지 (Integrity Constraints)
- 복잡한 관계 데이터 표현 가능
- 규칙 기반 데이터 관리 (Deductive & Active DB 지원)
DB 기술 발전 과정
- 계층형 모델(Hierarchical Model)
- 데이터가 트리 구조로 조직되어 부모-자식 관계로 데이터가 연결됨
- 1965년 IBM & North American Rockwell 협업으로 개발
- 예시: IMS (Information Management System)
- 네트워크 모델(Network Model)
- 데이터가 그래프 구조로 조직됨
- 1964-65년 Honeywell의 IDS System에서 최초 구현
- 예시: IDMS (Integrated Database Management System)
- 관계형 모델(Relational Model)
- 1970년 E.F. Codd (IBM) 가 처음 제안.
- 주요 특징:
- 데이터의 물리적 저장 방식과 논리적 구조를 분리
- 집합 이론과 1차 술어 논리(first-order predicate logic) 에 기반
- 고급 질의 언어(SQL) 지원
- 1980년대 이후 DB2, ORACLE, SQL Server, SYBASE, INFORMIX 등 상용 제품 등장
- 객체지향 모델(Object-Oriented DBMS)
- 1980년대 후반~1990년대 초반에 등장
- CAD (Computer-Aided Design) 및 복잡한 데이터 처리에 적합
- 기존 관계형 모델이 표현하기 어려운 객체(Object), 상속(Inheritance), 다형성(Polymorphism) 지원
- 예시: OBJECTSTORE (C++), GEMSTONE (Smalltalk), O2, ORION, IRIS (HP)
- 객체-관계형 모델 (Object-Relational Model)
- 관계형 DB의 확장형 모델로 개발됨
- 관계형 모델의 안정성과 객체지향 개념의 유연성을 결합
- 관계형 모델에서 부족했던 멀티미디어 데이터, 복잡한 데이터 타입 지원
- 예시: Informix Universal Server, Oracle 11g, DB2, SQL Server 최신 버전
- 최신 DB 기술 (Web, NoSQL, Big Data)
- 웹 데이터 교환 (Web Data Exchange)
웹에서는 HTML 기반의 비구조적 데이터가 대부분
XML (eXtensible Markup Language)이 등장하며 데이터 교환 표준으로 자리 잡음
XML 기반 데이터베이스 개발이 진행됨 - 인메모리 DBMS (In-Memory DBMS)
RAM을 활용하여 초고속 데이터 처리 가능 - 빅데이터 & NoSQL
Hadoop 기반 파일 시스템과 NoSQL의 등장
- NoSQL (Not Only SQL) DBMS: MongoDB, Cassandra, HBase
- Column-Oriented DBMS
- 웹 데이터 교환 (Web Data Exchange)
데이터베이스 기능 확장
현대 DBMS는 기존의 관계형 모델을 확장하여 다양한 새로운 기능을 추가하고 있음
- 과학 데이터 관리 (대량 데이터 저장 및 처리)
- 이미지 저장 및 검색 (멀티미디어 DB 지원)
- 오디오 및 비디오 데이터 관리
- 데이터 마이닝 (Data Mining) (패턴 분석 및 예측)
- 공간 데이터 관리 (GIS, Geographic Information Systems)
- 시계열 데이터 및 역사적 데이터 관리
기존 관계형 DBMS는 이러한 확장된 기능을 지원하는 데 한계를 보임
DBMS가 필요하지 않은 경우
DBMS가 모든 시스템에서 적합한 것은 아님
DBMS의 주요 단점
- 초기 투자 비용이 높음
- DBMS의 일반성이 성능 저하를 초래할 수 있음 (특정 작업에 특화된 데이터 구조가 더 좋은 성능을 가질 수 있음)
- 보안, 동시성 제어, 복구 기능 등으로 인한 오버헤드
DBMS가 불필요한 경우
- 간단한 데이터 및 응용프로그램
- 실시간 시스템
DBMS의 오버헤드로 인해 실시간 요구사항을 충족하지 못할 수 있음 - 단일 사용자 시스템 여러 사용자가 동시에 데이터를 접근할 필요가 없을 경우
데이터베이스(DB) vs 정보 검색(IR)
데이터베이스(DB) 기술
- 구조화된 데이터(Structured Data) 관리에 초점
- 정형 데이터(Formatted Data)를 효율적으로 저장, 검색, 관리
- 주로 정부, 기업, 산업 분야에서 사용됨
정보 검색(IR) 기술
- 비정형 데이터(Unstructured Data) 관리에 초점
- 문서, 도서, 기사, 논문 등의 텍스트 기반 검색을 수행
- 키워드 검색에 사용
- 웹 검색 엔진(Google, Bing 등)과 같은 시스템에서 사용됨
웹 정보 검색 (Web IR)
- 현대 웹에서는 DB 기술과 IR 기술이 결합됨
- 웹 페이지는 텍스트, 이미지, 동영상 등 다양한 데이터 유형을 포함하기에 구조화된 데이터(DB)와 비구조화된 데이터(IR)를 함께 활용하는 접근법이 필요
주요 DBMS: Oracle & MySQL
Oracle
- 세계에서 가장 널리 사용되는 상용 DBMS
- 유지보수 및 운영 비용이 높음
- Oracle이 선호되는 이유
- 데이터베이스 크기는 절대 줄어들지 않음 → 안정적인 시스템 필요
- 중요 데이터를 안전하게 관리할 수 있는 기능 제공
MySQL
- 세계에서 가장 많이 사용되는 오픈 소스 DBMS
- 상대적으로 가볍고, 무료 사용 가능
- MySQL 역사
- MySQL AB라는 회사에서 개발
- 스웨덴과 핀란드 개발자들에 의해 설립됨
- 2008년 Sun Microsystems에 인수됨
- 2009년 Sun이 Oracle에 인수되면서 Oracle 소유가 됨
데이터 모델
- 데이터 모델: 데이터의 구조, 관계 및 제약 조건을 정의하는 개념적 틀
- 데이터 추상화: 사용자가 데이터 저장 방식의 세부 사항을 몰라도 데이터를 다룰 수 있도록 함
데이터 모델의 분류
- 개념적 데이터 모델 (Conceptual Model)
- 사용자 관점에서 데이터 표현
- 엔터티(Entity), 속성(Attribute), 관계(Relationship) 등의 개념 사용
- 물리적 데이터 모델 (Physical Model)
- 데이터베이스 관리 시스템(DBMS)이 컴퓨터에 데이터를 저장하는 방식을 자세히 기술
- 파일 구조, 인덱스 등
- 표현(구현) 모델 (Representational(Implementation) Model)
- 사용자 관점과 컴퓨터 내부 저장 방식 간의 균형을 맞춘 데이터 모델
- 사용자가 데이터를 이해할 수 있도록 설계된 구현 모델
- 관계형 모델, 네트워크 모델, 계층형 모델
데이터베이스 스키마와 상태 (Schema vs State)
데이터베이스 스키마 (Database Schema)
- DB의 구조와 제약 조건을 정의하는 설계 문서
- DB가 운영 중일 때도 적용 가능한 스키마 변경 연산을 포함함(컬럼 추가 삭제 등)
- 보통 변하지 않음(Static)
- 예시: 테이블 설계 (학생, 강의 등)
데이터베이스 상태 (Database State)
- DB에 저장된 실제 데이터의 현재 상태
- 데이터 삽입, 삭제, 업데이트에 따라 시간에 따라 변경됨(Dynamic)
- valid state: 데이터가 구조와 제약을 만족하고있는 상태
3-스키마 아키텍처 (Three-Schema Architecture)
DBMS는 데이터를 유저의 응용에서 분리시키기 위해 3-스키마 구조를 가짐
내부 스키마 (Internal Schema)
- 물리적 저장 구조를 정의
- 데이터를 파일, 인덱스, 저장 형식 등으로 관리
개념적 스키마 (Conceptual Schema)
- 전체 데이터베이스의 논리적 구조를 정의
- 데이터 모델의 개념(Entity, Relation, Atrributes, 제약 조건 등)을 포함
외부 스키마 (External Schema)
- 사용자별 필요한 데이터 뷰(View)를 제공
- 특정 사용자 그룹이 필요한 데이터만 볼 수 있도록 제한
데이터 독립성 (Data Independence)
데이터베이스 시스템에서 스키마 변경이 응용 프로그램에 미치는 영향을 최소화하는 개념. 데이터 저장 방식이나 구조가 변경되더라도, 상위 레벨의 스키마가 영향을 받지 않도록 하는 것이 목표
논리적 데이터 독립성 (Logical Data Independence)
개념적 스키마(Conceptual Schema)를 변경해도, 외부 스키마(사용자 뷰)나 애플리케이션이 영향을 받지 않음
예시)
1
SELECT 이름, 전공 FROM 수강목록;
수강목록 테이블에 새로운 속성(학기)을 추가하거나 속성 이름을 변경해도 기존 프로그램이 정상 작동해야 함
물리적 데이터 독립성 (Physical Data Independence) 데이터의 물리적 저장 방식을 변경해도, 개념적 스키마(Conceptual Schema)와 응용 프로그램이 영향을 받지 않음
예시)
데이터를 기존에는 B-트리 인덱스를 사용해 저장했으나, 더 빠른 조회를 위해 해시 인덱스로 변경해도 동일한 SQL 쿼리를 통해 원하는 데이터를 불러올 수 있음
DBMS 언어
DDL: Data Definition Language
- DBA(Database Administrator)와 DB 설계자가 사용하여 데이터베이스의 스키마를 정의하는 언어
- 개념적(Conceptual), 내부(Internal), 외부(External) 스키마를 정의
SDL: Storage Definition Language
- 내부 스키마를 정의하는 언어
- 파일 구조, 인덱스 생성 방식 등을 설정
VDL: View Definition Language
- 외부 스키마와 개념적 스키마 간의 매핑을 정의하는 언어
DML: Data Manipulation Language
- DB에서 데이터를 조회, 삽입, 수정, 삭제하는 데 사용되는 언어
- 고수준 DML: 사용자가 직접 쿼리를 실행하여 데이터를 처리
- 저수준 DML: 일반적인 프로그래밍 언어에서 DBMS와 연동하여 사용
SQL: Structured Query Language
- SQL은 DDL, DML, VDL을 포함하는 종합적인 언어
- 제약 조건 설정, 스키마 변경, 데이터 조회 및 조작 기능을 모두 포함
DB System Utilities & Tools
주요 DBMS 시스템 유틸리티
유틸리티 | 설명 |
---|---|
데이터 로딩 (Data Loading) | 파일에서 DB로 데이터를 불러오는 기능 |
백업 & 복구 (Backup & Recovery) | DB 데이터를 주기적으로 백업하고 복구 |
DB 파일 구조 재구성 (Reorganizing DB Files) | DB 파일 최적화 및 정리 |
보고서 생성 (Report Generation) | 데이터 분석을 위한 보고서 생성 |
성능 모니터링 (Performance Monitoring) | 질의 실행 속도 및 성능 분석 |
API 인터페이스 (API Interface) | 응용 프로그램과 DBMS 간의 통신 지원 |
CASE 도구 (Computer-Aided Software Engineering Tools) | DB 설계, 질의 작성 및 애플리케이션 개발 도구 제공 |
중앙 집중식 & 클라이언트-서버 아키텍처
- 중앙 집중식 DBMS (Centralized DBMS)
- 모든 데이터와 애플리케이션이 하나의 서버에서 실행됨
- 클라이언트-서버 아키텍처 (Client-Server Architecture)
- 데이터베이스 처리를 클라이언트(사용자)와 서버(DBMS)로 분리
- 클라이언트는 사용자 인터페이스(UI)를 제공, 서버는 데이터 처리
2-티어 클라이언트-서버 아키텍처
- 클라이언트 (Client Layer): 사용자 인터페이스(UI) 및 애플리케이션 실행
- 서버 (Server Layer): DBMS가 SQL 질의를 처리하고 트랜잭션 수행
- ODBC (Open Database Connectivity)
ODBC는 클라이언트와 DBMS 간의 API를 제공
3-티어 클라이언트-서버 아키텍처
웹 기반 애플리케이션에서는 3-티어 아키텍처가 일반적
- 프레젠테이션 계층 (Presentation Layer): UI 제공 (HTML, JavaScript, React 등)
- 애플리케이션 계층 (Application Layer): 비즈니스 로직(안, 세션 관리, 트랜잭션 처리 등) 처리
- 데이터 계층 (Data Layer): 데이터베이스 관리 (MySQL, Oracle)
해당 포스트는 서울대학교 산업공학과 박종헌 교수님의 데이터관리와 분석 25-1학기 강의를 정리한 내용입니다.