※ DBMS
: 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어이다.
[DBMS의 필수 기능 3가지]
기능 | 설명 |
정의(Definition) 기능 | 데이터의 형(Type)과 구조에 대한 정의, 이용 방식, 제약 조건 등을 명시하는 기능 |
조작(Manipulation) 기능 | 데이터 검색, 갱신, 삽입, 삭제 등을 위해 인터페이스 수단을 제공하는 기능 |
제어(Control) 기능 | 데이터의 무결성, 보안, 권한 검사, 병행 제어를 제공하는 기능 |
※ 스키마
: 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 것
종 류 | 내 용 |
외부 스키마 | - 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것 |
개념 스키마 | - 데이터베이스의 전체적인 논리적 구조 - 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 찍 전체의 데이터베이스로, 하나만 존재함 |
내부 스키마 | - 물리적 저장장치의 입장에서 본 데이터베이스 구조 - 실제로 저장될 레코드의 형식, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타냄 |
※ 데이터베이스 설계 순서
- 요구 조건 분석 : 요구 조건 명세서 작성
- 개념적 설계 : 개념 스키마, 트랜잭션 모델링, E-R 모델
- 논리적 설계 : 목표 DBMS에 맞는 논리 스키마 설계, 트랜잭션 인터페이스 설계
- 물리적 설계 : 목표 DBMS에 맞는 물리적 구조의 데이터로 변환
- 구현 : 목표 DBMS의 DDL로 데이터 베이스 생성, 트랜잭션 작성
※ 개념적 설계
: 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념적 설계에서는 개념 스키마 모델링과 트랜잭션 모델링을 병행 수행한다.
- 개념적 설계에서는 요구 분석에서 나온 결과인 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성한다.
※ 논리적 설계
: 현실 세계에서 발생하는 자료를 특정 DBMS가 지원하는 논리적 자료 구조로 변환(mapping)시키는 과정
- 개념 설계의 데이터를 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계로 표현되는 논리적 구조의 데이터로 모델화한다.
※ 물리적 설계
: 논리적 설계에서 논리적 구조로 표현된 데이터를 물리적 구조의 데이터로 변환하는 과정
- 다양한 데이터베이스 응용에 대해 처리 성능을 얻기 위해 데이터베이스 파일의 저장 구조 및 액세스 경로를 결정한다.
※ 데이터 모델
: 현실 세계의 정보들을 체계적으로 표현한 개념적 모형이다.
[데이터 모델에 표시할 요소]
요 소 | 내 용 |
구조 [Structure] | 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현 |
연산 [Operation] | 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구 |
제약 조건 [Constraint] | 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건 |
※ E-R 모델
: 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법으로, 피터 첸(Peter Chen)이 제안
※ 관계형 데이터베이스의 릴레이션 구조
고객 ID | 고객명 | 지역 |
SN1 | 이순신 | 서울 |
SN2 | 강감찬 | 경기 |
SN3 | 김동준 | 인천 |
SN4 | 홍길동 | 서울 |
SN5 | 이대로 | 경기 |
- 릴레이션 : 1
- 애트리뷰트 : 3
- 튜플 : 5
※ 튜플
: 릴레이션을 구성하는 각각의 행을 말함
- 튜플은 속성의 모임으로 구성
- 파일 구조에서 레코드와 같은 의미
- 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 함
※ 속성
: 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체의 특성을 기술한다
- 속성의 수를 디그리(Degree) 또는 차수라고 한다
※ 도메인
: 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
※ 후보키
: 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들
- 유일성과 최소상을 모두 만족시켜야 한다.
※ 기본키
: 후보키 중에서 특별히 선정된 주키(Main Key)
- 중복된 값을 가질 수 없다
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- 기본키는 Null값을 가질 수 없다.
※ 대체키
: 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미하며 보조키라고도 함
※ 슈퍼키
: 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키를 말함
- 슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족하지 못한다
※ 외래키
: 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미
※ 무결성
: 데이터베이스에 저장딘 데이터 값과 현실 세계의 실제값이 일치하는 정확성을 의미
- 개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정
- 참조 무결성 : 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 함. 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
※ 관계대수
: 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어이며 주어진 릴레이션 조작을 위한 연산의 집합
※ 순수 관계 연산자
- Select : ∂
- Project : ∏
- Join : ▷◁
- Division : ÷
※ 일반 집합 연산자
- 합집합 [UNION]
- 교집합 [INTERSECTION]
- 차집합 [DIFFERENCE]
- 교차곱 [CARTESIAN PROJECT]
※ 관계해석
: 관계 대이터의 연산을 표현하는 방법
- E. F. Codd가 제안
- 원하는 정보가 무엇인지라는 것만 정의하는 비절차적 특성을 지니며, 질의어로 표현
※ 이상 [Anomaly]
: 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 않게 발생하는 곤란한 션상을 의미
- 삽입 이상(Insertion Anomaly) : 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상(Deletion Anomaly) : 테이블에서 튜플을 삭제할 때 의도와는 상관 없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발생하는 현상
- 갱신 이상(Update Anomaly) : 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성(Inconsistency)이 생기는 현상
※ 정규화
: 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정이다.
- 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것
※ 정규화 과정 정리
비정규 릴레이션 → 1NF → 2NF → 3NF → BCNF → 4NF → 5NF
차례로,
- 도메인이 원자값
- 부분적 함수 종속 제거
- 이행적 함수 종속 제거
- 결정자이면서 후보키가 아닌 것 제거
- 다치 종속 제거
- 조인 종속성 이용
→ 두부이걸다줘로 암기한다.
※ 반정규화
: 시스템 성능을 향상하고 개발 및 운영의 편의성 등을 높이기 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위이다.
※ 중복 테이블 추가
: 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
[중복 테이블 추가 방법]
테이블 추가 | 내용 |
집계 테이블의 추가 | 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거(Trigger)를 설정하여 사용하는 것 |
진행 테이블의 추가 | 이력 관리 등의 목적으로 추가하는 테이블 |
특정 부분만을 포함하는 테이블의 추가 | 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성 |
※ 시스템 카탈로그
: 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블이다.
- 카탈로그들이 생성되면 데이터 사전(Data Dictionary)에 저장되기 때문에 좁은 의미로는 카랄로그를 데이터 사전이라고도 한다.
※ 트랜잭션
: 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.
- 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용된다.
- 트랜잭션은 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용된다.
※ 트랜잭션의 특성
특 성 | 의 미 |
Atomicity (원자성) | 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(Rollback) 되어야 함 |
Consistency (일관성) | 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함 |
Isolation (격리성) | 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음 |
Durability (영속성) | 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함 |
※ 인덱스
: 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조
※ 클러스터드 / 넌클러스터드 인덱스
클러스터드 인덱스 [Clusterd Index]
- 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식
- 실제 데이터가 순서대로 저장되어 있어 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있다.
넌클러스터드 인덱스 [Non-Clustered Index]
- 인덱스의 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
- 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬해야 한다.
※ 뷰
: 하나 이상의 기본 테이블로부터 유도된 가상 테이블이다.
- 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.
- 뷰를 정의할 때는 CREATE문, 제거할 때는 DROP문을 사용한다.
※ 파티션
: 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
[파티션 종류]
파티션 | 내 용 |
범위 분할 [Range] | - 지정한 열의 값을 기준으로 분할 |
해시 분할 [Hash] | - 해시 함수를 적용한 결과 값에 따라 데이터를 분할함 |
조합 분할 [Composite] | - 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식 |
※ 분산 데이터베이스의 목표
위치 투명성
: 액세스하려는 데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적인 명칭만으로 액세스 할 수 있음
중복 투명성
: 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업 수행
병행 투명성
: 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않음
장애 투명성
: 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리함
※ RTO / RPO
종 류 | 내 용 |
RTO [Recovery Time Objective, 목표 복구 시간] | 비상사태 또는 업무 중단 시점으로부터 복구되어 가동될 때까지의 소요 시간을 의미함 |
RPO [Recovery Point Objective, 목표 복구 시점] | 비상사태 또는 업무 중단 시점으로부터 데이터를 복구할 수 있는 기준점을 의미 |
※ 임의 접근 통제 [DAC : Discretionary Access Control]
: 데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식
- 데이터 소유자가 접근 통제 권한을 지정하고 제어
- 객체를 생성한 사용자가 생성된 객체에 대한 모든 권한을 부여받고, 부여된 권한을 다른 사용자에게 허가할 수도 있다.
※ 강제 접근 통제 [MAC : Mandatory Access Control]
: 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- 시스템이 접근 통제 권한을 지정
- 데이터베이스 객체 별로 보안 등급을 부여할 수 있다
- 사용자 별로 인가 등급을 부여할 수 있다
※ 스토리지 [Storage]
: 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
ex) DAS, NAS, SAN
※ DAS [Direct Attached Storage]
: 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
- 일반 가정에서 컴퓨터에 외장하드를 연결하는 것이 여기에 해당
- 직접 연결 방식이므로 다른 서버에서 접근할 수 없고 파일을 공유할 수 없다
※ NAS [Network Attached Storage]
: 서버와 저장장치를 네트워크를 통해 연결하는 방식
- 별도의 파일 관리 기능이 있는 NAS Storage가 내장된 저장장치를 직접 관리
- Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근할 수 있어 파일 공유가 가능
※ SAN [Storage Area Network]
: DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합한 방식으로, 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 파이버 채널(Fibre Channel, 광 채널) 스위치를 이용하여 네트워크를 구성
- 파이버 채널 스위치는 서버와 저장장치를 광케이블로 연결하므로 처리 속도가 빠르다
- 서버들이 저장장치 및 파일을 공유할 수 있다
'CS > CS' 카테고리의 다른 글
[1장] 요구사항 확인 (0) | 2023.07.17 |
---|---|
[4장] 서버 프로그램 구현 (0) | 2023.07.16 |
[5, 6장] 인터페이스 구현 / 화면 설계 (0) | 2023.07.16 |
[12장] 제품 소프트웨어 패키징 (0) | 2023.07.16 |
[11장] 응용 SW 기초 기술 활용 (2) (1) | 2023.07.16 |