데이터베이스 개념
- 데이터베이스
- 개념
- 특정 조직의 업무를 수행하는데 필요한 상호 관련된 데이터들의 모임
- 데이터베이스 정의
- 저장 데이터: 컴퓨터가 접근 가능한 저장 매체에 저장된 데이터
- 공유 데이터: 여러 응용 프로그램들이 공동으로 사용하는 데이터
- 통합 데이터: 검색의 효율성을 위해 중복이 최소화된 데이터의 모임
- 운영 데이터: 조직의 목적을 위해 존재 가치가 확실하고 반드시 필요한 데이터
- 데이터 언어
- DDL(Data Definition Language: 데이터 정의어)
- 개념
- DB의 구조, 데이터 형식, 접근 방식 등 DB의 구축과 변경 목적으로 사용하는 언어
- 스키마에 사용되는 제약 조건을 정의
- 종류
- CREATE
- ALTER
- DROP
- RENAME
- TRUNKATE
- 개념
- DML(Data Manipulation Language: 데이터 조작어)
- 개념
- 데이터 처리를 위한 응용 프로그램과 데이터베이스 관리 시스템 간의 인터페이스를 위한 언어
- 데이터의 검색, 삽입, 갱신, 삭제 연산 등을 포함한 집한
- 종류
- SELECT
- INSERT
- UPDATE
- DELETE
- 개념
- DCL(Data Control Language: 데이터 제어어)
- 개념
- 보안 및 권한 제어, 무결성, 회복, 병행 제어를 위한 언어
- 종류
- GRANT
- REVOKE
- 개념
- TCL(Transaction Control Language: 트랜젝션 제어어)
- 개념
- 트랜잭션의 DML 작업 단위를 제어하는 명령어
- COMMIT
- ROLLBACK
- 개념
- DDL(Data Definition Language: 데이터 정의어)
- 스키마(Schema)
- 정의
- 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것
- 개체, 속성, 관계에 대한 정의와 이들이 유지해야 할 제약조건들을 기술한 것
- 스키마는 데이터 사전(DD, Data Dictionary)에 저장
- 3계층 스키마
- 외부 스키마
- 사용자 뷰
- 데이터베이스의 논리적 구조 정의
- 논리적 독립성
- 개념 스키마가 변경 되어도 외부 스키마에 영향을 끼치지 않는다는 의미
- 개념 스키마
- 전체적인 뷰
- 데이터베이스의 전체적인 논리적 구조
- 물리적 스키마
- 내부 스키마가 변경 되어도 외부, 개념 스키마에 영향을 끼치지 않는다는 의미
- 내부 스키마
- 저장 스키마
- 물리적 저장장치의 입장에서 본 데이터베이스 구조
- 외부 스키마
- 정의
- 개념
- 데이터베이스 관리 시스템
- DBMS의 정의
- DBMS를 통해 데이터베이스를 관리하여 응용 프로그램들이 데이터베이스를 공유하고, 사용할 수 있는 환경을 제공
- DBMS의 기능
- 데이터 정의
- 데이터에 대한 형식, 구조, 제약조건들을 명세하는 기능
- 데이터 조작
- 특정한 데이터를 검색하기 위한 질의, 데이터베이스의 갱신, 보고서 생성 기능
- 데이터 제어
- 데이터 무결성, 보안, 권한 검사, 동시성 제어
- 데이터 정의
- DBMS의 종류
- 계층형(Hierarchical DataBase)
- 데이터 간의 관계가 트리 형태의 구조
- 네트워크형(Network DataBase)
- 계층형 데이터베이스의 단점을 보완하여 데이터 간 N:N 구성이 가능한 망형 모델
- CODASYL이 제안한 것으로 CODASYL DBTG 모델이라고도 한다.
- 관계형(Relational DataBase)
- 키와 값으로 이루어진 데이터들을 행과 열로 구성된 테이블 구조로 단순화시킨 모델
- 객체 지향형(Object-Oriented DataBase)
- 객체지향 프로그래밍 개념에 기반하여 만든 데이터베이스 모델
- 비정형 데이터들을 데이터베이스화할 수 있도록 하기 위해 만들어진 모델
- 객체 관계형(Object-Relational DataBase)
- 관계형 데이터베이스에 객체 지향 개념을 도입하여 만든 데이터베이스 모델
- NoSQL
- Not Only SQL의 줄임말로 SQL + 다양한 특성을 지원
- NewSQL
- RDBMS의 SQL과 NoSQL의 장점을 결합한 관계형 모델
- 계층형(Hierarchical DataBase)
- DBMS의 정의
데이터베이스 설계 단계
- 요구조건 분석
- 데이터베이스의 사용자, 사용목적, 사용범위, 제약조건 등에 대한 내용을 정리하고 명세서를 작성
- 개념적 설계
- 현실세계를 데이터관점으로 추상화 단계
- DBMS에 독립적으로 설계
- 데이터베이스의 개념적 스키마 구성
- ERD
- 개체: 사각형
- 속성: 원
- 관계: 마름모
- 다중 값: 두 개의 원
- 유도 속성: 점선으로 된 원
- 논리적 설계
- 자료를 컴퓨터가 이해할 수 있도록 목표 DBMS의 논리적 자료 구조로 변환하는 과정
- 특정 데이터모델(계층형, 관계형, 객체지향형 등)을 적용한 설계
- 데이터베이스의 논리적 스키마 생성
- 관계형 테이터베이스인 경우 이 단계에서 테이블을 설계하는 정규화 과정 수행
- 트랜잭션 인터페이스 설계
- 물리적 설계
- 특정 DBMS의 물리적 구조와 내부적인 저장구조, 분산형태, 데이터타입의 특징, 인덱스의 특징 등을 구체화하는 설계단계
- 레코드 집중의 분석 및 설계
- 오브젝트, 접근방법, 트랜잭션분석, 인덱스, 뷰, 데이터베이스 용량설계 등을 수행
- 데이터베이스의 물리적 스키마 생성
- 트랜잭션 세부 설계
- 성능 향상을 위한 반정규화
- 데이터모델 구조
- 개체: 저장할 만한 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물 등
- 개체 타입: 개체를 구성하고 있는 속성들의 집합
- 개체 인스턴스: 데이터베이스에 저장되는 구체적인 객체
- 개체 세트: 개체 인스턴스의 집합
- 속성: 데이터의 가장 작은 논리적 단위
- 데이터 모델 표시해야 할 요소
- 구조
- 데이터베이스에 표현될 대상으로서의 개체 타입과 개체 타입들 간의 관계
- 연산
- 데이터베이스에 저장될 실제 데이터를 처리하는 방법
- 제약조건
- 저장될 수 있는 데이터의 논리적인 제약조건
- 구조
- 개체-관계 모델
- 속성
- 속성의 유형
- 단일 값 속성
- 값을 하나만 가질 수 있는 속성
- ex) 이름, 학번
- 다중 값 속성
- 값을 여러 개 가질 수 있는 속성
- ex) 취미
- 단순 속성
- 의미를 더는 분해할 수 없는 속성
- ex) 성별 등
- 복합 속성
- 의미를 분해할 수 있는 속성
- ex) 주소, 생년월일
- 유도 속성
- 기존의 다른 속성의 값에서 유도되어 결정되는 속성
- ex) 성별에 따른 주민번호
- 널 속성
- 아직 결정되지 않은 존재하지 않는 값
- 키 속성
- 각 개체를 식별하는데 사용하는 속성
- 단일 값 속성
- 속성의 유형
- 관계
- 개념
- 서로 다른 개체가 맺고 있는 의미 있는 연관성
- ERD에서는 마름모로 표현
- 개념
- 속성
- 데이터 모델의 품질 기준
- 기준 항목 (정완준최일활)
- 정확성
- 데이터 모델이 표기법에 따라 정확하게 표현되었고, 업무영역 또는 요구사항이 정확하게 반영되었음을 의미
- 완전성
- 데이터 모델의 구성 요소를 정의하는데 있어서 누락을 최소화하고, 요구사항 및 업무 영역 반영에 있어서 누락이 없음을 의미.
- 준거성
- 제반 준수 요건들이 누락 없이 정확하게 준수되었음을 의미
- 최신성
- 데이터 모델이 현행 시스템의 최신 상태를 반영하고 있고, 이슈 사항들이 지체 없이 반영되고 있음을 의미
- 일관성
- 여러 영역에서 공통으로 사용되는 데이터 요소가 전사 수준에서 한 번만 정의되고 이를 여러 다른 영역에서 참조, 활용되면서 모델 표현상의 일관성을 유지하고 있음을 의미
- 활용성
- 작성된 모델과 그 설명 내용이 이해 관계자에게 의미를 충분하게 전달할 수 있으면서, 업무 변화시에 설계 변경이 최소화되도록 유연하게 설계되어 있음을 의미
- 정확성
- 기준 항목 (정완준최일활)
논리 데이터베이스 설계
- 논리적 데이터 모델링
- 개념
- 개념적 설계에서 추출된 실체(ERD)와 속성들의 관계를 구조적으로 설계하는 단계
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계 모델, 계층 모델, 네트워크 모델로 구분
- 개념
- 데이터베이스 정규화
- 정규화 개념
- 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화
- 중복이 많이 발생하게 되면 이상 현상이 발생하게 됨
- 이상 현상(Anomaly) 종류
- 삽입 이상
- 삭제 이상
- 갱신 이상
- 함수적 종속 관계로 정규화를 수행
- 부분 함수 종속과 이행 함수 종속을 제거해서 완전 함수 종속을 만들기 해결
- 종속
- 완전 함수 종속
- 부분 함수 종속
- 이행 함수 종속
- 이상 현상(Anomaly) 종류
- 순서
- 1정규형: 원자성
- 2정규형: 부분함수 종속 제거
- 3정규형: 이행함수 종속 제거
- BCNF: 결정자이면서 후보키 아닌것 제거
- 4정규형: 다치 종속제거
- 5정규형: 조인 종속제거
- 정규화의 장/단점
- 장점
- 데이터 중복 최소화
- 저장 공간의 효율성 사용
- 릴레이션에서 발생 가능한 이상 현상 제거
- 단점
- 실행 속도 저하
- 처리 명령의 복잡성 증가
- 분리된 여러 개의 테이블에서 정보를 취합하기 위한 JOIN 연산이 필요
- 분리된 두 릴레이션 간 참조 무결성 유지를 위한 노력 필요
- 장점
- 정규화 개념
- 이상 현상
- 개념
- 데이터 중복으로 인해 릴레이션 조작 시 예상하지 못한 곤란한 현상이 발생
- 이상 현상 종류
- 삽입 이상
- 데이터를 삽입시 불필요한 데이터가 함께 삽입되는 현상
- 삭제 이상
- 한 튜플에서 삭제를 할 때 연쇄 삭제 현상으로 인해 정보 손실
- 갱신 이상
- 튜플의 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 무결성을 해치는 이상
- 삽입 이상
- 개념
- 함수적 종속
- 개념
- 어떤 릴레이션 R의 X와 Y를 각각 속성의 부분집합이라고 가정했을 때
- X의 값을 알면 Y의 값을 바로 식별할 수 있고, X의 값에 Y의 값이 달라질 때, Y는 X에 함수적 종속이라고 함
- X → Y
- 어떤 릴레이션 R의 X와 Y를 각각 속성의 부분집합이라고 가정했을 때
- 함수적 종속 관계 종류
- 완전 함수적 종속
- 종속자가 기본키에만 종속되며, 기본키가 여러 속성으로 구성되어 있을 때, 기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 종속된 경우
- ex) X의 속성들을 알 때 Y를 알 수 있는 것으로
- 학번과 과목을 알 때 점수를 알 수 있는 것
- 부분 함수적 종속
- 기본키가 여러 속성으로 구성되어 있을 때, 기본키를 구성하는 속성 중 일부만 종속되는 경우
- 부분함수를 완전 함수로 만드는 것을 의미
- ex) 한 릴레이션에 학번, 과목, 점수, 이름이 있을 경우
- 점수는 학번과 과목 두 가지를 알아야 알 수 있지만
- 이름은 학번만 알면 알 수 있기에 부분 함수적 종속이라고 한다.
- 이행적 함수 종속
- X → Y, Y → Z 의 종속 관계가 있을 경우, X → Z가 성립되는 경우
- 완전 함수적 종속
- 개념
물리 데이터베이스 설계
- 물리 데이터베이스 설계 과정
- 사요자 DBMS 결정
- 데이터 타입 크기 결정
- 데이터 용량, 설계 및 업무 프로세스 분석
- 역정규화(반정규화)
- 인덱스 정의
- 데이터베이스 생성
- 반정규화
- 개념
- 시스템의 성능향상과 개발 편의성 등을 위해 정규화에 위배되는 중복을 허용하는 기법
- 반정규화 시 고려사항
- 데이터의 중복이 발생해 데이터 수정 시 무결성이 깨질 수 있다.
- 읽기 속도는 향상되지만, 삽입, 삭제, 수정 속도는 느려진다.
- 저장 공간의 효율이 떨어짐
- 테이블이 크고 복잡해져 유지보수가 어려움
- 과도한 반정규화는 오히려 성능을 저하시킴
- 개념
- 데이터베이스 이중화
- 데이터베이스 이중화 구성
- 장애발생 시 데이터베이스를 보호하기 위한 방법으로 동일한 데이터베이스를 중복시켜 동시에 갱신하여 관리하는 방법
- 고가용성을 위해 사용
- 데이터베이스 이중화의 목적
- 장애 또는 재해 시 빠른 서비스 재개를 위함
- 원활한 서비스의 성능을 보장하기 위함
- 데이터베이스 이중화의 분류
- Eager 기법
- 트랜잭션 수행 중에 발생한 변경은 발생 즉시 모든 이중화서버로 전달하여 변경 내용 반영
- Lazy 기법
- 트랜잭션의 수행이 완전히 완료된 후에 변경 사실에 대한 새로운 트랜잭션을 작성하여 각 노드에게 전달하는 기법
- Eager 기법
- 데이터베이스 이중화의 종류
- Active-Active
- 다중화된 장비가 모두 가동되는 방식
- Active-StandBy
- 두 대 중 하나는 가동이 되고, 하나는 장애 상황의 경우를 대비해서 준비 상태로 대기
- Active-StandBy 타입
- Hot StandBy
- StandBy 장비가 가동되었을 때 즉시 사용가능
- Warm StandBy
- StandBy 장비가 가동되었을 때 설정에 대한 준비 시간이 필요함
- Cold StandBy
- StandBy 장비를 평소에는 정지시켜두며 필요에 따라서 직접 켜서 구성을 함
- Hot StandBy
- Active-Active
- 데이터베이스 이중화 구성
- 데이터베이스 백업
- 개념
- 정전, 사이버 공격 및 다른 중단 사태에 대비하여 복구를 진행할 수 있도록 데이터를 주기적으로 복사하는 것을 의미
- 백업 방식
- 전체 백업: 특정 날에 전체 백업
- 차등 백업: 전체 백업 이후 변경된 모든 것을 백업
- 증분 백업: 전체 백업 이후 변경된 Data 만 백업
- 실시간 백업: 즉각적으로 모든 변경사항을 분리된 스토리지 디바이스에 복사
- 트랜잭션 로그 백업: 데이터베이스에서 실행되는 모든 SQL 문을 기록한 로그
- REDO
- UNDO
- 합성 백업: 전체 백업본과 여러 개의 증분 백업을 합해 새로운 전체 백업을 만드는 작업
- 복구 시간 목표/복구 시점 목표
- 복구 시간 목표(RTO)
- 서비스 중단 시점과 서비스 복원 시점 간에 허용되는 최대 지연 시간
- 서비스를 사용할 수 없는 상태로 허용되는 시간
- 즉, 복구까지 중간의 걸리는 시간
- 복구 시점 목표(RPO)
- 마지막 데이터 복구 시점 이후 허용되는 최대 시간
- 마지막 복구 시점과 서비스 중단 시점 사이에 허용되는 데이터 손실량
- 즉, 손실된 데이터 량
- 복구 시간 목표(RTO)
- 개념
- 데이터베이스 암호화
- 개념
- 데이터베이스의 내용을 암호화하는 것
- 데이터베이스 암호화 방식
- API 방식
- 애플리케이션에서 데이터의 암/복호화를 수행
- Plug-In 방식
- 데이터베이스 서버에 제품을 설치→ 암/복호화 수행
- TDE(Transparent Data Encryption) 방식
- DBMS에 내장 또는 옵션으로 제공되는 암 호화 기능을 이용하는 방식
- 파일 암호화 방식
- 하드웨어 방식
- API 방식
- 개념
데이터베이스 물리 속성 설계
- 파티셔닝
- 개념
- 데이터베이스를 여러 부분으로 분할하는 것
- 샤딩(Sharding)
- 하나의 거대한 데이터베이스나 네트워크 시스템을 여러 개의 작은 조각으로 나누어 분산 저장하여 관리하는 것
- 파티셔닝 종류
- 수평 분할
- 하나의 테이블의 각 행들을 분할
- 수직 분할
- 테이블의 일부를 컬럼을 기준으로 분할
- 수평 분할
- 파티셔능 분할 기준
- 범위 분할(Range Partitioning)
- Partition Key의 연속된 범위로 파티션을 정의
- ex) 월별, 분기별 등
- 해시 분할(Hash Partitioning)
- Partition Key값에 해시 함수를 적용하고, 거기서 반환된 값으로 Partition Mapping
- 목록 분할(List Partitioning)
- 특정 Partition에 저장될 Data에 대한 명시적 제어
- ex) [한국, 일본, 중국 → 아시아]
- 합성 분할(Composite Partitioning)
- 다른 분할 기법들을 복합적으로 사용하는 방식
- 라운드 로빈 분할(Round Robin Partitioning)
- 데이터를 균일하게 분배해서 저장하는 방식
- 범위 분할(Range Partitioning)
- 개념
- 클러스터 설계
- 개념
- 디스크로부터 데이터를 읽어오는 시간을 줄이기 위해서 조인이나 자주 사용되는 테이블의 데이터를 디스크의 같은 위치에 저장시키는 방법
- 클러스터 대상 테이블
- 분포도가 넓은 테이블
- 대량의 범위를 자주 조회하는 테이블
- 입력, 수정, 삭제가 자주 발생하지 않는 테이블
- 자주 JOIN 되어 사용되는 테이블
- ORDER BY, GROUP BY, UNION이 빈번한 테이블
- 개념
- 인덱스
- 개념
- 추가적인 저장 공간을 활용해 데이터베이스 테이블의 검색 속도를 향상 시키기 위한 자료구조
- 인덱스 종류
- 클러스터 인덱스
- 데이블당 1개만 허용되며, 해당 컬럼으 기준으로 테이블이 물리적으로 정렬
- 넌클러스터 인덱스
- 테이블당 약 240개의 인덱스 생성 가능
- 레코드의 원본은 정렬되지 않고, 인덱스 페이지만 정렬
- 밀집 인덱스
- 데이터 레코드 각각에 대해 하나의 인덱스가 만들어짐
- 희소 인덱스
- 레코드 그룹 또는 데이터 블록에 대해 하나의 인덱스가 만들어짐
- 클러스터 인덱스
- 개념
- 뷰
- 개념
- 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블
- 장점
- 논리적 데이터 독립성을 제공한다
- 동일 데이터에 대해 동시에 여러 사용자의 상이한 요구를 지원해준다.
- 접근 제어를 통한 자동 보안이 제공된다.
- 단점
- 독립적인 인덱스를 가질 수 없다.
- ALTER VIEW문을 사용할 수 없다
- 개념
- 시스템 카탈로그
- 개념
- 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 대한 정보가 수록되어 있는 시스템 테이블
- 시스템 카탈로그를 데이터 사전(DD)이라고도 한다.
- 특징
- 시스템 카탈로그 자체도 시스템 테이블로 구성되어 있어 사용자가 SQL문을 이용해 내용을 검색해 볼 수 있다.
- 시스템 카탈로그는 데이터베이스 관리 시스템에 의해 생성되고 유지된다.
- 개념
'정보처리기사' 카테고리의 다른 글
[정보처리기사] 운영체제 (0) | 2023.07.07 |
---|---|
[정보처리기사] 데이터베이스 구축 (2) (0) | 2023.07.07 |
[정보처리기사] 소프트웨어 구축 (7) (0) | 2023.07.06 |
[정보처리기사] 소프트웨어 구축 (6) (0) | 2023.07.05 |
[정보처리기사] 소프트웨어 구축 (5) (0) | 2023.07.05 |