Chapter 1: 데이터 베이스 시스템 개요
- 데이터와 정보
- 정보 시스템
- 데이터 베이스(DB)
- 데이이터 베이스 관리 시스템(DBMS)
- 데이터 베이스 관리 시스템의 기능
Chapter 2: 데이터베이스 관리 시스템 (DBMS)
- 파일 시스템과 DBMS
- DBMS에서 데이터의 명세 및 저장
- 데이터 모델
- 데이터 독립성
- 데이터 베이스 Query
- 트랜잭션
- DBMS의 구조
- DBMS의 장점
Chapter 1: 데이터 베이스 시스템 개요
Database: 하나 or 하나 이상의 조직과 관련된 데이터의 집합체.
DBMS: 데이터의 방대한 집합체를 유지하고 이용하는데 도움을 주도록 설계된 SW.
데이터와 정보
- Data: 현실 세계로부터 단순한 관찰이나 측정을 통해서 수집된 fact/value.
- Structed data: Data model(데이터 or 정보를 설명하기 위한 표기법)을 정의하고, 이 model을 기반으로 조직된 데이터.
- Unstructed data: Structed data가 아닌 나머지 data.
(Text Mining이 사용됨 -> 비정형 텍스트를 정형화해서 의미있는 패턴과 새로운 인사이트를 찾아내는 프로세스) - Semi-structed data: Structed data의 data model, 형식(schema)를 준수하지 않는 data
* schema(스키마): 데이터가 저장되기 위해서 지켜야 하는 형식.
- Information: Data를 처리해서 얻어진 결과, 모든 종류의 자료 또는 지식.
- Information = Processor(Data)
정보 시스템 (Information System)
- 조직의 활동에 필요한 데이터를 수집, 저장해 두었다가 필요할 때 처리해서 의사 결정에 유효한 정보를 생성하고 분배하는 도구.
ex) MIS - 경영 정보 시스템, ERP - 전사적 자원 관리, CRM - 고객 관계 관리, SCM - 공급 사슬 관리 ...- OLTP(Online Transaction Processing): 실시간 data 분석.
- OLAP(Online Analytical Processing): 저장된 데이터를 가져와서 분석하는 시스템.
데이터 베이스(DB)
- 정의
- 통합된 데이터 (Integrated Data)
- 저장된 데이터 (Stored Data)
- 운영 데이터 (Operational Data)
- 공용 데이터 (Shared Data)
- 특징
- 실시간 접근성 (Real-time Accessibility)
- 지속적인 변화 (Continuous Evolution)
- 동시 사용 (Concurrent Sharing)
- 내용 참조 (Content Reference)
데이터 베이스 관리 시스템(DBMS)
- 데이터의 방대한 집합체를 유지하고 이용하는데 도움을 주도록 설계된 SW.
- DB의 구성, 접근 방법, 관리 유지에 대한 모든 책임을 가진다.(조직/접근/통제)
- 응용 프로그램은 DB에 대해서 자세히 관련할 필요없이 원하는 data와 처리 작업을 DBMS에 요청만 하면 되는 구조.
데이터 베이스 관리 시스템(DBMS)의 기능
- 데이터 정의 기능 - Data Definition
- 다양한 응용 프로그램과 DB가 서로 interface 할 수 있는 다양한 방법을 제공.
- 데이터 조작 기능 - Data Manipulation
- 사용자와 DB 사이의 interface를 위한 수단 제공.
- 데이터 제어 기능 - Data Control
- 관리되는 DB의 내용에 대해 항상 정확성과 안정성을 유지할 수 있는 제어 기능을 가지고 있어야 한다.
Chapter 2: 데이터베이스 관리 시스템 (DBMS)
파일 시스템과 DBMS
- 만약 1PB의 데이터를 파일에 저장하면, 이 데이터를 모두 메모리에 올려놓는 것은 불가능하다. 이를 DBMS에 저장하면 복잡한 작업들을 SW에서 직접 고려할 필요 없이 DBMS가 제공하는 기능들을 이용하여 처리할 수 있다.
DBMS에서 데이터의 명세 및 저장
- DBMS: 시스템이 저장하고 관리할 데이터에 대한 지정된 데이터 모델을 사용하도록 설계된 SW.
- DBMS는 저장될 데이터를 데이터 모델 형식으로 정의.
데이터 모델
- 데이터 또는 정보를 설명하기 위한 표기법.
- 데이터의 구조 (Structure of the Data)
- 데이터에 대한 작업 (Operations on the Dta)
- 데이터에 대한 제약 조건 (Constraints on the Data)
데이터 독립성
- DBMS의 data는 3단계의 추상화로 표현
- 각 추상화 단계 별로 응용 프로그램의 데이터 구성 및 저장 방식으로부터 격리.
- 논리적 데이터 독립성 (Logical Data Independency): 데이터의 논리적인 구조, 저장 방식/공간의 변화로부터 보호.
- 물리적 데이터 독립성 (Physical Data Independency): 디스크 파일 내부에서 데이터가 실제로 어떻게 배치되어 있는지 등을 감춤.
- schema: 데이터 구조와 제약조건에 대한 정의.
- 외부 스키마 (view로 구현)
- 각각의 사용자 수준에서 데이터 접근을 개별화하기 위한 권한을 부여.
(각 개인의 입장에서 필요로 하는 DB의 논리적 구조를 정의한 것)
- 각각의 사용자 수준에서 데이터 접근을 개별화하기 위한 권한을 부여.
- 논리적 스키마
- 해당 DBMS의 데이터 모델이 따라 저장될 데이터를 기술하는 스키마. (DB의 전체적인 논리적 구조)
- Entity-Relational Model을 사용하여 DB를 설계한다.
- Relational DBMS의 개념 스키마에는 DB에 저장된 모든 테이블에 대한 명세 정보가 있다.
ex) 학교
학과(학과 번호: 정수, 학과 이름: 문자열)
학생(학번: 정수, 이름: 문자열, 나이: 정수)
- 물리적 스키마
- 논리적(개념) 스키마에 명세되어 있는 테이블들이 디스크에 실제로 어떻게 저장될 지를 정의.
- 특정 DB에 맞는 스키마로 설계하여 어떤 형식으로 저장될 것인지, 각 필드는 어떤 타입이 될 것인지를 결정.
ex) 학생(학번: 정수, 이름: 문자열, 나이: 정수), 학생 스키마의 각 필드 타입 결정하고, 테이블이 저장된 자료구조 형태를 결정.
CREATE TABLE [학생] (
[학번] int,
[이름] nvarchar(12) NOT NULL,
[나이] int NOT NULL
)
데이터 베이스 Query
- DBMS는 DB에 저장된 데이터에 대해 다양한 방식으로 질의(Query)를 수행할 수 있는 방법(Query Language)을 제공.
(Relational DB에서 정의된 Query: SQL - Structed Query Language) - DML: Data Manipulation Language - 데이터 조작어: 정의된 DB에 입력된 data를 조회, 수정, 삭제, 입력하는데 사용.
- DDL: Data Definition Language - 데이터 정의어: data의 schema를 정의하여 데이터가 저장되는 형식을 정의하는데 사용.
- DCL: Data Control Language - 데이터 제어어: data에 대한 접근 권한을 허가하고 박탈하는데 사용.
트랜잭션 (Transaction)
- DB 시스템에서 하나의 논리적인 작업 단위.
- 분해가 불가능한 프로그램의 실행 단위.
- DBMS에 요구되는 동시 접근 제어와 복구에 관련된 문제를 해결하기 위해 구현.
- ACID (트랜잭션이 만족해야 하는 성질)
- Atomicity(원자성): 관련 작업이 전부 처리되거나, 아예 처리되지 않아야 함. -> Log와 Write Log Ahead 사용.
- Consistency(일관성): 트랜잭션 이전과 이후의 DB의 상태는 이전과 같이 유효해야 함. -> 제약 조건(Constraint) 사용
- Isolation(격리성): 모든 트랜잭션은 다른 transactions로부터 독립되어 동작해야 함. -> Locking Protocol 사용.
- Durability(지속성): 트랜잭션이 성공적으로 수행되었다면 완료의 효과는 지속되어야 함. -> Log와 Write Log Ahead 사용.
DBMS의 구조
DBMS의 장점
- 데이터 독립성
- 효율적인 데이터 접근
- 데이터 무결성과 보안성
- 데이터 관리
- 동시성 제어 및 장애 복구
- 응용 프로그램 개발 시간 감소
출처: https://github.com/gikpreet/class-relational_database
GitHub - gikpreet/class-relational_database
Contribute to gikpreet/class-relational_database development by creating an account on GitHub.
github.com
'DB' 카테고리의 다른 글
[Relational database] 04. 파일 조직과 인덱스 (1) | 2024.10.03 |
---|---|
[Relational database] DB 확장 - Scale Up vs Scale Out (2) | 2024.10.03 |
[Relational database] 03. 디스크와 파일 (1) | 2024.10.03 |
[Relational database] DDL, DML, DCL, TCL (0) | 2024.10.01 |
[Relational database] 02. 관계형 모델 (Relational model) *제약조건 (1) | 2024.10.01 |