데이터: 현실 세계에서 수집된 사실이나 값
정보: 데이터의 해석이나 상호간의 관계를 분석하여 획득한 지식
정보는 데이터를 처리하여 얻은 결과임.
정보 시스템을 구현하는 두 가지 방법
파일 시스템을 이용:
데이터를 파일로 저장한다.
어플리케이션 프로그램마다 각각의 파일이 존재한다.
파일 처리 시스템의 단점
데이터 중복성: 동일 의미의 데이터들 사이의 불일치, 저장공간의 낭비 및 비싼 갱신 비용, 동일 데이터의 보안 문제
데이터 종속성: 물리적 구조가 변경되면 프로그램도 변경되어야 함
데이터베이스를 이용:
하나의 데이터베이스에 데이터를 저장하고 어플리케이션 프로그램은 DBMS를 통해 데이터를 가져온다.
이로 인해 데이터 독립성을 가지고,
응용프로그램을 만들기 용이해진다.
(단점: DBMS를 거쳐야 하므로 속도가 느려질 수 있다)
데이터베이스의 특성
-실시간 접근성: 다양한 쿼리에 대해 실시간 응답. 데이터베이스의 성능
-계속적인 변화: 데이터베이스에 저장되는 데이터는 지속적으로 변경.
-동시 공유: 상이한 목적을 가진 사용자들이 동시에 데이터 액세스
-내용에 의한 참조: 데이터의 주소가 아닌 값을 이용한 참조(내용 기반의 질의 언어)
데이터베이스 관리 시스템(DBMS)
응용 프로그램이 데이터베이스를 공유할 수 있도록 관리해주는 시스템 소프트웨어.
DBMS의 목적
- 사용의 편의성: 사용자가 시스템 내부에 대한 지식 없이도 원하는 데이터를 쉽게 읽고 고칠 수 있음
- 관리의 효율성: 데이터를 효율적으로 관리하여 성능과 정확성을 보장함
DBMS의 필수 기능
-정의 기능: 데이터베이스 구조를 정의.
논리적 구조, 물리적 구조 두 구조 사이의 매핑 정의.
DDL에 의해 지원
-조작 기능
데이터 처리 기능(검색,갱신,삭제,추가)
DML에 의해 지원
-제어 기능
데이터에 대한 정확성과 안전성 유지.
트랜잭션, 동시성 제어, 데이터 무결성, 보안 등
DCL에 의해 지원
DBMS의 장점
-데이터 독립성 제공
데이터 중복 최소화
일관성 유지
무결성 유지
DBMS의 단점
운영비의 증가.(DBMS자체의 가격 및 고사양의 운영 HW 필요)
성능상의 문제
3단계 데이터베이스
-물리적 단계
:데이터가 실제로 저장되는 방법 기술.(파일위치, 인덱스 유무, 정렬 여부, 필드 형식 등)
-논리적 단계
: 저장된 데이터의 내용 및 데이터들간의 관계 기술.
-뷰 단계
: 실제 사용자가 보는 데이터베이스의 관점
스키마와 인스턴스
스키마: DB의 구조
인스턴스: 특정 시점에서 DB의 상태(data 값들의 상태)
데이터 독립성(Data Independence)
:데이터의 논리적 구조나 물리적 구조가 변경되더라도 응용 프로그램이 영향을 받지 않도록 함.
물리적 데이터 독립성
:물리적 스키마의 변경에 관련.(데이터 정렬 등)
논리적 데이터 독립성
:논리적 스키마의 변경에 관련(테이블의 분할 등)
1. 정보 시스템
데이터 vs 정보
- 데이터: 현실 세계에서 수집된 사실이나 값
- 정보: 데이터의 해석이나 상호간의 관계를 분석하여 획득한 지식
- 정보는 데이터를 처리하여 얻은 결과입니다.
정보 시스템
정보 시스템: 데이터를 저장, 조직하여 정보를 제공하는 시스템
데이터 처리 시스템: 정보 시스템의 일부분이다. 컴퓨터에 의한 데이터 저장 및 처리 담당.(일괄 처리 시스템, 온라인 처리 시스템, 분산 처리 시스템 종류가 있다.)
2. 데이터베이스의 개념
정보 시스템 구현 방법
1. 파일 시스템
- 데이터를 파일로 저장
- 각 어플리케이션마다 별도의 파일이 존재
파일 처리 시스템의 단점
데이터 중복성: 동일 의미의 데이터들 사이의 불일치, 저장공간의 낭비 및 비싼 갱신 비용, 동일 데이터의 보안 문제
데이터 종속성: 물리적 구조가 변경되면 프로그램도 변경되어야 함
2. 데이터베이스
- 하나의 데이터베이스에 데이터 저장
- 어플리케이션은 DBMS를 통해 데이터 접근
- 데이터 독립성 보장, 응용프로그램 용이성 향상 (속도는 DBMS를 거쳐야 하므로 느릴 수 있음)
데이터베이스의 특성
- 실시간 접근성: 다양한 쿼리에 대해 실시간 응답. 데이터베이스의 성능
- 계속적인 변화: 데이터는 지속적으로 변경됨
- 동시 공유: 여러 사용자가 동시에 데이터 액세스 가능
- 내용에 의한 참조: 값 기반 참조, 주소가 아닌 내용을 기반으로 질의
3. 데이터베이스 관리 시스템(DBMS)
- 응용 프로그램이 데이터베이스를 공유할 수 있도록 관리하는 시스템 소프트웨어
DBMS의 목적
- 사용의 편의성: 사용자가 시스템 내부에 대한 지식 없이 데이터 처리 가능
- 관리의 효율성: 데이터를 효율적으로 관리하여 성능과 정확성을 보장
---용어정리---
데이터베이스: 데이터들의 집합
데이터베이스 시스템: 데이터베이스와 관리시스템을 사용하는 시스템
데이터베이스 관리 시스템: DBMS(Oracle, MySQL 등)
---
DBMS의 필수 기능
- 정의 기능: 데이터베이스 구조 정의, 논리적/물리적 구조 사이의 매핑 정의 (DDL)
- 조작 기능: 데이터 처리 (검색, 갱신, 삭제, 추가) (DML: Data Manipulation Language)
- 제어 기능: 데이터 정확성과 안전성 유지 (트랜잭션, 동시성 제어, 데이터 무결성, 보안) (DCL)
DBMS의 장단점
장점
- 데이터 독립성 제공
- 데이터 중복 최소화
- 일관성 유지
- 무결성 유지
- 데이터의 보안 보장
- 표준화
- 전체적인 데이터 요구의 파악 및 조정
단점
- 운영비 증가 (DBMS 자체의 비용 및 고사양 HW 필요)
- 성능상의 문제
- 자료 처리방법의 복잡화(시스템의 취약성)
4. 3단계 데이터베이스
DBMS의 두가지 목적
1. 데이터가 저장/처리되는 세부 방식 은폐 - 데이터 추상화: 사용자가 원하는 데이터를 쉽게 검색.
2. 데이터의 효율적인 관리 및 처리
데이터 추상화의 단계
- 물리적 단계: 데이터 저장 방법 기술 (파일 위치, 인덱스, 정렬, 필드 형식 등)
- 논리적 단계: 데이터 내용 및 관계 기술. DBA에 의해 사용됨
- 뷰 단계: 사용자가 볼 수 있는 데이터베이스 관점.(물리적/논리적 단계의 정보는 사용자에게 은폐)
데이터베이스의 3단계 구조
1. 물리적 단계 (Physical Level):
- 이 단계에서는 데이터가 실제로 저장되는 방식에 중점을 둡니다.
- 데이터 파일의 위치, 인덱스의 존재 여부, 정렬 방법, 필드의 형식 등이 여기에 해당합니다.
- 예를 들어, 어떤 데이터가 하드 디스크의 어떤 섹터에 저장되는지 등이 물리적 단계의 관심사입니다.
2. 논리적 단계 (Logical Level):
- 이 단계에서는 저장된 데이터의 논리적인 구조와 관계를 정의합니다.
- 테이블, 관계, 제약 조건, 뷰 등이 여기에 해당합니다.
- 예를 들어, 데이터가 테이블로 구성되어 있고, 각 테이블 간에 어떤 관계가 있는지 등이 논리적 단계의 관심사입니다.
3. 뷰 단계 (View Level):
- 이 단계에서는 사용자가 실제로 보는 데이터베이스의 부분을 나타냅니다.
- 뷰는 특정 사용자나 응용 프로그램이 접근할 수 있는 데이터베이스의 일부분입니다.
- 예를 들어, 관리자는 모든 사용자 정보를 볼 수 있지만, 일반 사용자는 자신의 정보만 볼 수 있는 것이 뷰의 예입니다.
이러한 3단계 데이터베이스 접근 방식을 사용하면, 데이터베이스 관리가 더욱 효율적으로 이루어질 수 있습니다. 각 단계는 서로 다른 관점에서 데이터를 다루므로, 데이터베이스 설계와 관리를 보다 체계적으로 할 수 있게 됩니다.
스키마와 인스턴스
- 스키마: 데이터베이스의 구조
- 인스턴스: 특정 시점에서 데이터베이스의 상태 (데이터 값들의 상태) = DB state
3단계 스키마
1. 물리적 스키마 (Internal Schema) - 내부 스키마:
- 데이터가 물리적으로 어떻게 저장되는지에 대한 세부적인 정보를 포함합니다.
- 데이터 파일의 위치, 인덱스의 존재 여부, 정렬 방법, 필드의 형식 등과 같은 물리적인 세부사항을 다룹니다.
- 데이터베이스 시스템 자체가 데이터를 저장하고 관리하는 방식을 정의합니다.
2. 논리적 스키마 (Conceptual Schema):
- 전체 데이터베이스의 논리적 구조와 관계를 정의합니다.
- 모든 사용자나 응용 프로그램이 공통으로 볼 수 있는 데이터베이스의 전체 구조를 나타냅니다.
- 이는 데이터베이스 전체의 논리적인 구조를 설명합니다.
1. 외부 스키마 (External Schema):
- 사용자나 응용 프로그램이 실제로 접근하는 데이터베이스의 일부분입니다.
- 각 사용자나 응용 프로그램마다 다른 뷰(View)를 제공하여 필요한 정보에 접근할 수 있도록 합니다.
- 각각의 외부 스키마는 해당 사용자나 응용 프로그램의 요구사항에 맞게 조정됩니다.
인스턴스 (Instance)
인스턴스는 데이터베이스에 실제로 저장된 데이터의 상태나 값들을 의미합니다. 다르게 말하면, 특정 시점에서 데이터베이스에 실제로 존재하는 데이터를 나타냅니다.
예를 들어, '사용자 정보' 데이터베이스가 있다고 가정해봅시다. 이 데이터베이스의 스키마는 사용자의 이름, 이메일 주소 등을 정의할 것입니다. 이 때, 실제로 사용자 정보 데이터베이스에 저장된 구체적인 사용자 레코드들이 인스턴스입니다.
예시:
- 사용자 테이블의 인스턴스 (레코드):
- 사용자 ID: 101
- 이름: 홍길동
- 이메일: hong@example.com
- 사용자 ID: 102
- 이름: Jane Doe
- 이메일: jane@example.com
이처럼, 인스턴스는 데이터베이스의 스키마를 기반으로 구체적인 데이터를 담고 있습니다. 인스턴스는 데이터베이스가 운영되는 동안 계속해서 변할 수 있습니다. 데이터의 추가, 갱신, 삭제 등이 발생하면 인스턴스도 그에 따라 변합니다.
인스턴스는 사용자나 응용 프로그램이 실제로 데이터를 조회하고 조작하는 대상이며, 데이터베이스의 현재 상태를 나타냅니다.
데이터 독립성(Data Independence)
데이터 독립성은 데이터베이스 시스템에서 중요한 개념으로, 데이터의 논리적 또는 물리적인 구조가 변경되더라도 응용 프로그램이나 사용자에게는 영향을 미치지 않도록 하는 능력을 의미합니다. 이는 데이터베이스 시스템의 유연성과 효율성을 높이는 데 기여합니다.
데이터 독립성은 크게 두 가지 유형으로 나눌 수 있습니다:
1. 물리적 데이터 독립성 (Physical Data Independence):
- 물리적 데이터 독립성은 데이터의 물리적인 구조가 변경되어도 논리적 구조에 영향을 주지 않도록 합니다.
- 예를 들어, 데이터를 저장하는 방식이나 저장 장치가 변경되어도 사용자나 응용 프로그램에게는 변화가 미치지 않습니다.
물리적 데이터 독립성을 예시로 설명해보겠습니다.
**예시: 데이터베이스의 저장 방식 변경**
가정해 봅시다. 우리는 학생 성적을 관리하는 데이터베이스 시스템을 가지고 있습니다. 현재 데이터베이스는 하드 디스크에 저장되어 있습니다.
초기 데이터베이스 구조:
```
| 학번 | 이름 | 수학 성적 | 영어 성적 |
|-------|------|----------|----------|
| 1001 | 홍길동 | 85 | 90 |
| 1002 | 김영희 | 70 | 75 |
```
이후, 데이터베이스 관리자는 성능 향상을 위해 SSD(Solid State Drive)로 저장 방식을 변경하려고 합니다.
변경된 데이터베이스 구조는 여전히 동일합니다:
```
| 학번 | 이름 | 수학 성적 | 영어 성적 |
|-------|------|----------|----------|
| 1001 | 홍길동 | 85 | 90 |
| 1002 | 김영희 | 70 | 75 |
```
물리적 데이터 독립성이 제공된다면, 이 변경은 논리적인 데이터 구조나 응용 프로그램에 영향을 미치지 않습니다. 즉, 데이터가 하드 디스크에서 SSD로 옮겨지더라도 사용자나 응용 프로그램은 변화를 알 수 없습니다.
하지만 만약 물리적 데이터 독립성이 없다면, 이러한 변경은 응용 프로그램이나 쿼리들에 큰 영향을 미칠 수 있습니다. 이에 따라 코드나 쿼리를 수정하거나 재작성해야 할 수도 있습니다.
물리적 데이터 독립성은 데이터의 실제 저장 방식이나 위치가 변경되더라도 논리적인 구조나 응용 프로그램에 영향을 미치지 않도록 보장하는 중요한 특성입니다.
2. 논리적 데이터 독립성 (Logical Data Independence):
- 논리적 데이터 독립성은 데이터의 논리적인 구조가 변경되어도 응용 프로그램에 영향을 주지 않도록 합니다.
- 예를 들어, 테이블의 구조가 변경되더라도 이를 사용하는 응용 프로그램은 수정 없이 계속 사용할 수 있습니다.
**예시: 학생 성적 시스템**
가정해 봅시다. 학교에서 학생들의 성적을 관리하는 시스템이 있습니다.
초기 데이터베이스 구조는 다음과 같습니다:
테이블: `students`
```
| 학번 | 이름 | 수학 성적 | 영어 성적 |
|-------|------|----------|----------|
| 1001 | 홍길동 | 85 | 90 |
| 1002 | 김영희 | 70 | 75 |
```
그러나 학교에서는 새로운 정책으로 "과학 성적"을 추가하게 되어 데이터베이스를 변경하게 되었습니다.
변경된 데이터베이스 구조:
```
| 학번 | 이름 | 수학 성적 | 영어 성적 | 과학 성적 |
|-------|------|----------|----------|----------|
| 1001 | 홍길동 | 85 | 90 | 80 |
| 1002 | 김영희 | 70 | 75 | 60 |
```
이때, 논리적 데이터 독립성이 제공된다면, 이 변경이 응용 프로그램에 영향을 미치지 않습니다. 즉, 기존의 학생 성적을 다루는 프로그램은 수정 없이 그대로 사용할 수 있습니다.
논리적 데이터 독립성이 없다면, 새로운 과목이 추가됨에 따라 기존의 응용 프로그램에서는 해당 과목을 다루기 위한 코드와 UI 등을 추가해야 할 것입니다. 이는 매우 번거로운 일이 될 수 있습니다.
논리적 데이터 독립성은 데이터베이스의 구조가 변경되더라도 응용 프로그램이나 쿼리들이 영향을 받지 않도록 보장하는 중요한 특성입니다.
데이터 독립성은 다양한 이점을 제공합니다:
- 유지보수 용이성: 데이터베이스 구조 변경이 필요할 때, 이로 인해 발생하는 변화가 최소화됩니다. 즉, 응용 프로그램을 변경하지 않고도 데이터의 구조를 업데이트할 수 있습니다.
- 시스템 변경 용이성: 물리적 환경이 변경되어도 논리적 구조는 변하지 않으므로, 하드웨어 또는 운영 체제 변경에 대응하기 용이합니다.
- 보안 강화: 데이터 독립성은 데이터의 논리적 구조를 일관되게 유지하므로, 논리적으로 액세스 권한을 제어할 수 있습니다.
- 성능 향상: 데이터베이스 시스템이 데이터의 물리적 구조를 최적화하여 성능을 향상시킬 수 있습니다.
5. 데이터 모델
데이터 모델은 데이터, 데이터간 관계, 데이터의 의미, 제약조건 등을 표현하는 개념적인 도구이다.
데이터 모델의 세 가지 종류
- 개념적 모델
- 논리적 모델
- 물리적 모델
개념적 모델
: 개념적 데이터베이스 설계 단계에서 주로 사용.
실세계를 파악해서 사용자에게 표현하는 수단으로 사용되기도.
대표적인 개념적 모델
- 개체 관계 모델(Entity-Relationship Model: ER모델)
- 객체 지향 모델(Object-Oriented Model)
개념적 모델을 지원하는 DBMS는 존재하지 않을 수 있음.
개체 관계 모델(ER모델)
개체(entity)와 관계(relationship)로 실세계 표현.
개체: 표현하고자 하는 중요한 개념이나 정보. ex) 계좌, 고객
속성: 개체의 특징이나 상태를 표현 ex)고객 이름, 주민번호
관계: 개체들 간의 관계 ex) 계좌와 고객 사이 예금주 관계
//ER모델 예시 이미지//
논리적 모델
특정 DBMS에 의해 구현되는 것을 가정.
DBMS가 지원하는 모델.
논리적 모델의 종류
-관계형 모델(Relational Model)
- ...
- 객체 관계형 모델(Object-Relational Data Model)
관계형 모델
Entity와 Relationship이 모두 테이블 형태로 표현.
현재 가장 보편적으로 사용되는 모델.
상용 DBMS: Oracle, MySQL, SQL Server, Sybase 등
물리적 모델
물리적 데이터베이스의 구조를 기술.
-저장 레코드의 형식
-저장 순서
-접근 경로
-물리적 저장 장치의 할당 등
6. 데이터베이스 언어
데이터 정의어 DDL: 스키마를 정의/수정/삭제하는 용도
데이터 조작어 DML: 레코드에 대한 검색/삽입/수정/삭제 지원
DML의 사용형태: 질의어(query language), 내장 질의어(embedded query language)- 호스트 프로그램(C,C++,Java..) 속에 삽입됨. JDBC, JPA 등
데이터 제어어 DCL: 트랜잭션 관리, 보안 관리(Commit, Rollback, Grant,Revoke)
7. 저장 시스템
데이터베이스에 저장된 데이터와 응용 프로그램간의 인터페이스 제공
8. 트랜잭션
논리적인 작업의 단위.
트랜잭션의 ACID 속성
- 원자성(Atomicity) : All or nothing
- 일관성(Consistency) : 정확한 프로그램
- 고립성 (Isolation) : 실행 중간의 결과가 외부에 노출되지 않는다.
- 영구성 (Durability) : 트랜잭션이 끝나면 데이터는 영구히 남아있어야 함
온라인 트랜잭션 처리(OLTP)
많은 수의 단순한 트랜잭션들이 동시에 실행되는 데이터베이스 시스템의 전형적인 응용 분야.(인터넷 뱅킹, 주식 거래, 철도 예약 등)
각 ACID 속성을 예시를 들어 설명해보겠습니다.
1. **원자성(Atomicity) - All or Nothing**:
- 예시: 은행 송금
- 설명: 송금 과정에서 송금자의 계좌에서 돈을 빼고, 수취자의 계좌에 돈을 넣는 두 가지 작업이 동시에 일어나야 합니다. 만약 한 작업만 성공하고 다른 작업이 실패하면 문제가 발생할 수 있습니다. 원자성은 이러한 상황에서, 두 작업이 함께 성공하거나 함께 실패해야 한다는 원칙을 나타냅니다.
2. **일관성(Consistency) - 정확한 프로그램**:
- 예시: 은행 계좌 잔고
- 설명: 트랜잭션이 실행된 후에도 데이터는 일관된 상태여야 합니다. 예를 들어, 송금 후에 송금자와 수취자의 계좌 잔고 합이 변하지 않아야 합니다.
3. **고립성(Isolation) - 실행 중간의 결과가 외부에 노출되지 않는다**:
- 예시: 동시에 여러 송금이 발생할 때
- 설명: 여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션은 서로 영향을 주지 않아야 합니다. 예를 들어, 한 트랜잭션에서의 송금이 완료되기 전까지 다른 트랜잭션에서의 송금 결과는 노출되어서는 안 됩니다.
4. **영구성(Durability) - 트랜잭션이 끝나면 데이터는 영구히 남아있어야 함**:
- 예시: 은행 거래 내역
- 설명: 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 저장되어야 합니다. 이후 시스템 장애 또는 중단이 발생해도 데이터는 손실되지 않아야 합니다.
이렇게 ACID 속성은 데이터베이스 시스템에서 데이터의 신뢰성과 안정성을 보장하기 위한 중요한 개념입니다.
데이터베이스 사용자
응용 프로그래머
: DML(데이터 삽입,삭제,수정,조회)을 이용하여 데이터베이스 응용 프로그램 작성.
일반 사용자
: 기존에 작성된 응용 프로그램을 이용하여 데이터베이스 사용
데이터베이스 관리자(DBA: Database Administrator)
: DDL과 DCL을 이용하여 데이터베이스 정의.
데이터베이스 관리와 운영을 책임.
10. 데이터베이스 관리자
DBA: 데이터베이스 시스템의 관리 운영에 대한 모든 책임을 지고 있는 사람.
DBA의 역할
- 데이터베이스 설계와 운영
- 행정 관리 및 불평 해결
- 데이터베이스 시스템 감시 및 성능 분석
- 데이터베이스 스키마 정의
- 저장 구조에 대한 접근 방식 결정
- 보안 및 권한 부여 정책, 데이터의 유효성 검사 방법을 수행
- 예비, 회복 정책 수립
- 무결성 유지를 위한 정책 수립
- 데이터 사전이나 카탈로그를 유지 관리
응용프로그램은 개발 안 한다.
'2023-2 > 데이터베이스' 카테고리의 다른 글
6. ER 모델을 이용한 데이터 모델링 (0) | 2023.10.21 |
---|---|
5. 데이터베이스 응용 개발 (0) | 2023.10.21 |
4. 고급 SQL (0) | 2023.10.12 |
3. SQL (0) | 2023.09.26 |
2. 관계형 모델 (0) | 2023.09.14 |
댓글